-CREATE TABLE staff (
- id TEXT NOT NULL,
- staffnumber TEXT,
- prename TEXT,
- surname TEXT,
- pin TEXT,
- rfid TEXT,
- isblocked BOOLEAN,
- isdisabled BOOLEAN,
- isdeleted BOOLEAN,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- PRIMARY KEY (id)
-);
-CREATE TABLE timetracks (
- id text not null,
- id_staff TEXT,
- daydate date,
- stamp_in DATETIME,
- stamp_out DATETIME,
- tracktype TEXT,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id)
-);
-CREATE TABLE fingerprints (
- id_staff TEXT,
- fingerhash TEXT,
- fingertype integer,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id_staff,fingerhash)
-);
-CREATE TABLE staffworktimes (
- id TEXT not null,
- id_staff TEXT,
- daydate date,
- starttime1 TEXT,
- endtime1 TEXT,
- starttime2 TEXT,
- endtime2 TEXT,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id)
-);
-CREATE TRIGGER trg_staff_upd UPDATE ON staff
- BEGIN
- UPDATE staff SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
-CREATE TRIGGER trg_timetracks_upd UPDATE ON staff
- BEGIN
- UPDATE timetracks SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
-CREATE TRIGGER trg_staffworktimes_upd UPDATE ON staff
- BEGIN
- UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
- CREATE TRIGGER trg_fingerprints_upd UPDATE ON staff
- BEGIN
- UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id_staff = NEW.id_staff and fingertype= NEW.fingertype;
- END;
+CREATE TABLE staff (\r
+ id TEXT NOT NULL,\r
+ staffnumber TEXT,\r
+ prename TEXT,\r
+ surname TEXT,\r
+ pin TEXT,\r
+ rfid TEXT,\r
+ isblocked BOOLEAN,\r
+ isdisabled BOOLEAN,\r
+ isdeleted BOOLEAN,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ PRIMARY KEY (id)\r
+);\r
+CREATE TABLE timetracks (\r
+ id text not null,\r
+ id_staff TEXT,\r
+ daydate date,\r
+ stamp_in DATETIME,\r
+ stamp_out DATETIME,\r
+ tracktype TEXT,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ primary key (id)\r
+);\r
+CREATE TABLE fingerprints (\r
+ id_staff TEXT,\r
+ fingerhash TEXT,\r
+ fingertype integer,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')), \r
+ primary key (id_staff,fingerhash)\r
+);\r
+CREATE TABLE staffworktimes (\r
+ id TEXT not null,\r
+ id_staff TEXT,\r
+ daydate date,\r
+ starttime1 TEXT,\r
+ endtime1 TEXT,\r
+ starttime2 TEXT,\r
+ endtime2 TEXT,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ primary key (id)\r
+);\r
+CREATE TRIGGER trg_staff_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staff SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+CREATE TRIGGER trg_timetracks_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE timetracks SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+CREATE TRIGGER trg_staffworktimes_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+ CREATE TRIGGER trg_fingerprints_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id_staff = NEW.id_staff and fingertype= NEW.fingertype;\r
+ END;\r
-USERAGENT=POT Hourtrax
-POTAPIKEY=6b9c80d2-9153-11eb-8558-efa3f9982293
-POTAPIURL=http://app.pot.lan/potapp/api.php
-POTSCHEMA=alicehartmann
-POTLASTSYNCFROMSERVER=
-POTLASTSYNCTOSERVER=
+USERAGENT=POT Hourtrax\r
+POTAPIKEY=6b9c80d2-9153-11eb-8558-efa3f9982293\r
+POTAPIURL=http://app.pot.lan/potapp/api.php\r
+POTSCHEMA=alicehartmann\r
+POTLASTSYNCFROMSERVER=\r
+POTLASTSYNCTOSERVER=\r
-
-{
- "name": "htx-test",
- "scheme": "sftp",
- "context": "bin/",
- "host": "dhart-pot02",
- "username": "pot",
- "password": "sai4seip",
- "port":3587,
- "remotePath": "/home/pot/bin/"
-}
+\r
+{\r
+ "name": "htx-test",\r
+ "scheme": "sftp",\r
+ "context": "bin/",\r
+ "host": "dhart-hourtrax01",\r
+ "username": "pot",\r
+ "password": "sai4seip",\r
+ "port":3587,\r
+ "remotePath": "/home/pot/bin/"\r
+}\r
--- /dev/null
+#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+use strict;
+use FindBin qw($Bin);
+# use lib ('CGI/api/lib/perl5');
+# use lib ('CGI/api/lib');
+use lib ($Bin.'/CGI/api/lib/perl5');
+use lib ($Bin.'/CGI/api/lib');
+use CGI;
+use CGI::Cookie;
+# use CGI::Carp qw/fatalsToBrowser/;
+use File::Basename;
+use JSON::PP;
+#use UUID::Tiny ':std';
+use dksconfig qw/$sitecfg/;
+use dksdb;
+
+# use session;
+#use sendemail;
+my $cgi = new CGI();
+my $scriptpath = $cgi->url(-absolute => 1);
+my $p = ();
+my @params = $cgi->param();
+foreach my $pe (@params){
+ $p->{$pe} = $cgi->param($pe);
+}
+my $html->{result} = ();
+# $p->{sid} = $cgi->cookie($sitecfg->{cookiename});
+# my $se = session->new();
+# my $sess = $se->getsession($p->{sid});
+print $cgi->header(-type=>"application/json", -charset => "utf-8");
+my $dbredirect = {};
+if ($sitecfg->{dbtype} eq "SQLite"){
+ if (exists($p->{db})){
+ $dbredirect->{dsn} = "DBI:SQLite:dbname=".$sitecfg->{datapath}.'/'.$p->{db}.'.sqlite';
+ }
+}
+$html->{conn} = $dbredirect;
+# if ($sess == undef){
+# $html->{error} = "No Authorisation";
+# print JSON::PP::encode_json($html);
+# exit(0);
+# }
+# $html->{p} = $p;
+# $html->{sess} =$sess;
+#my $datapath = $ENV{"DOCUMENT_ROOT"}.dirname(dirname($scriptpath)).'/data/';
+if (($cgi->request_method() eq "GET") || ($cgi->request_method() eq "POST")){
+
+ # my @params = $cgi->param();
+ # foreach my $pp (@params){
+ # $p->{$pp} = $cgi->param($pp);
+ # }
+ my $db = dksdb->new($dbredirect);
+ if (exists($p->{get})){
+ my $sql = "select * from vw_".$p->{get};
+ if (exists($p->{fields}) ){
+ $sql = "select ".$p->{fields}." from vw_".$p->{get};
+ }
+ if (exists($p->{filter})){
+ $sql .= " WHERE ".$p->{filter}.";";
+ }
+ $html->{result}->{sqldata} = $db->query($sql);
+ }
+ elsif (exists($p->{set})){
+ my $type = "ins";
+ foreach my $x (keys(%{$p})){
+ if ($x =~ /^ident_/ ){
+ if ($p->{$x} ne ""){
+ $type = "upd";
+ } else {
+ my $uuid = create_uuid(UUID_TIME);
+ my $uuid_str=uuid_to_string($uuid);
+ $p->{$x} = $uuid_str;
+ }
+
+ }
+ }
+
+ my $x = $p;
+ delete $x->{sid};
+ delete $x->{set};
+ my @sql = ();
+
+ if ($type eq "ins"){
+
+ @sql = $db->create_ddl_insert($x);
+ }else {
+ @sql = $db->create_ddl_update($x);
+ }
+ if (scalar(@sql) > 0 ){
+ my $rid = $db->query($sql[0]);
+ if (keys(%{$rid}) > 0 ){
+ $html->{result} = $rid->{0};
+ }
+ }
+ }
+ elsif (exists($p->{del})){
+ my $x = $p;
+ delete $x->{sid};
+ delete $x->{del};
+ my @sql = $db->create_ddl_delete($x);
+ if (scalar(@sql) > 0 ){
+ my $rid = $db->exec($sql[0]);
+ if (keys(%{$rid}) > 0 ){
+ $html->{result} = $rid->{0};
+ }
+ }
+ }
+ elsif (exists($p->{sql})){
+ if (exists($p->{key})){
+ $html->{result} = $db->querybykey($p->{key},$p->{sql});
+ }
+ if ((lc($p->{sql}) =~ /^insert/) || (lc($p->{sql}) =~ /^update/) || (lc($p->{sql}) =~ /^delete/)){
+ $html->{result} = $db->exec($p->{sql});
+ }
+ else {
+ $html->{result} = $db->query($p->{sql});
+ }
+ }
+ elsif (exists($p->{ddl})){
+ $html->{result} = $db->exec($p->{sql});
+ }
+}
+print JSON::PP::encode_json($html);
+# for my $e ( keys %ENV ) {
+# print "$e: $ENV{$e}<br/>";
+# }
\ No newline at end of file
--- /dev/null
+#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+use strict;
+use FindBin qw($Bin);
+# use lib ('CGI/api/lib/perl5');
+# use lib ('CGI/api/lib');
+use lib ($Bin.'/CGI/api/lib/perl5');
+use lib ($Bin.'/CGI/api/lib');
+use CGI;
+use CGI::Cookie;
+# use CGI::Carp qw/fatalsToBrowser/;
+use File::Basename;
+use JSON::PP;
+
+use dksconfig qw/$sitecfg/;
+use dksdb;
+my $cgi = new CGI();
+my $scriptpath = $cgi->url(-absolute => 1);
+my $p = ();
+my @params = $cgi->param();
+foreach my $pe (@params){
+ $p->{$pe} = $cgi->param($pe);
+}
+my $html->{result} = ();
+# $p->{sid} = $cgi->cookie($sitecfg->{cookiename});
+# my $se = session->new();
+# my $sess = $se->getsession($p->{sid});
+if (exists($p->{fn}) ){
+ if (exists($p->{id_user})){
+ if ($p->{fn} eq "new"){
+ my $cmd ='/usr/bin/python2 '.dirname($0).'/tools/fingerledon.py';
+ my $res = `$cmd`;
+ chomp($res);
+ if ($res eq ''){
+ $cmd ='/usr/bin/python2 '.dirname($0).'/tools/fingerenroll.py';
+ my $res = `$cmd`;
+ }
+
+
+
+ } elsif ($p->{fn} eq "check"){
+ my $cmd ='sudo /usr/bin/python '.dirname($0).'/tools/fingersearch.py';
+ my $res = `$cmd`;
+ chomp($res);
+ if ($res =~ /POS:.*HASH:/){
+ my ($pos,$hash) = $res =~ m/.*POS:(\d+);HASH:(.+)\s*$/;
+ $html->{result}->{pos} = $pos;
+ $html->{result}->{hash} = $hash;
+ if (length($pos) > 0 && length($hash) > 0){
+ my $sql = "select id,fingerpos,fingerhash from staff where id=".$p->{id_user}." and fingerpos=".$pos." and fingerhash='".$hash."';";
+ my $db = dksdb->new();
+ $html->{result}->{sql} = $sql;
+ my @rdb = $db->query($sql);
+ if (scalar(@rdb) > 0 ){
+ $html->{result}->{status} ="OK";
+ $html->{result}->{db} = \@rdb;
+ $cmd ='/usr/bin/python2 '.dirname($0).'/tools/fingerledoff.py';
+ $res = `$cmd`;
+ }
+ }
+
+ } else {
+ $html->{result}->{status} = $res;
+ }
+ }
+ }
+ elsif($p->{fn} eq "unload"){
+ my $cmd = 'ps ax | grep "tools/finger" | awk \'{ print \$ }\'';
+ my $res = `$cmd`;
+ }
+ elsif($p->{fn} eq "ledon"){
+ my $cmd ='/usr/bin/python2 '.dirname($0).'/tools/fingerledon.py';
+ my $res = `$cmd`;
+ chomp($res);
+ if ($res eq ""){
+ $html->{result}->{status} = "ok";
+ } else {
+ $html->{result}->{status} = "error";
+ }
+ }
+ elsif($p->{fn} eq "ledoff"){
+ my $cmd ='/usr/bin/python2 '.dirname($0).'/tools/fingerledoff.py';
+ my $res = `$cmd`;
+ chomp($res);
+ if ($res eq ""){
+ $html->{result}->{status} = "ok";
+ } else {
+ $html->{result}->{status} = "error";
+ }
+ }
+}
+print $cgi->header(-type=>"application/json", -charset => "utf-8");
+print JSON::PP::encode_json($html);
\ No newline at end of file
--- /dev/null
+package dksconfig;
+
+use strict;
+# use lib ('./lib/perl5');
+# use lib ('./lib');
+# use lib ('./');
+use File::Basename;
+use Exporter 'import';
+our @EXPORT_OK = qw($sitecfg);
+my $cfgpath=$ENV{HOME}.'/.hourtrax';
+if ($^O eq "MSWin32"){
+ $cfgpath = $ENV{APPDATA}.'/hourtrax';
+} elsif ($^O eq "darwin"){
+ $cfgpath = $ENV{HOME}.'/Library/Application Support/hourtrax';
+}
+$cfgpath =~ s/\\/\//g;
+our $sitecfg ={
+ #cookiename => undef,
+ datapath => $cfgpath,
+ dbtype => 'SQLite', #'PgPP' or ScLite
+ dsn => 'DBI:SQLite:dbname='.$cfgpath.'/hourtrax.sqlite',
+ dbuser => '',
+ dbpassword => '',
+ basepath => '/',
+ staticpath => 'htdocs/',
+ #dsn => 'DBI:PgPP:dbname=fldlu_db;host=DKS-LAPTOP.fritz.box',
+ #dsn => 'DBI:PgPP:dbname=fldlu_db;host=sql629.your-server.de',
+ #dbuser => 'fldlu_user',
+ #dbpassword => 'Tm6G1bjQSudiEBAY',
+ page => 'index.tt',
+ pagename => 'index',
+ # basepath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})),
+ # datapath => substr((exists($ENV{"SCRIPT_FILENAME"})?dirname($ENV{"SCRIPT_FILENAME"}):dirname($0)),length($ENV{"DOCUMENT_ROOT"})).'/data/',
+ # docroot => $ENV{"DOCUMENT_ROOT"},
+ # registration_enabled => '1',
+ # default_group => 'users',
+ # sitename => 'FLD Member Area',
+ # season => '2019-2020',
+ # season_id => 2
+};
+
+1;
\ No newline at end of file
--- /dev/null
+package dksdb;
+
+use strict;
+use lib ('./lib/perl5');
+use lib ('./lib');
+use lib ('./');
+#BEGIN { $ENV{DBI_PUREPERL} = 2 }
+use DBI;
+use File::Basename;
+
+use Digest::SHA::PurePerl qw(sha256_hex);
+use DBD::PgPP;
+use DBD::SQLite;
+use URI::Encode qw(uri_encode uri_decode);
+use Encode;
+use dksconfig qw($sitecfg);
+use Text::Unidecode;
+
+
+sub new {
+ my $class = shift;
+ my $param = shift;
+ my $self = bless {}, $class;
+ foreach my $p (keys %{$param}){
+ $self->{$p} = $param->{$p};
+ }
+
+ return $self;
+}
+
+sub securetext(){
+ my $self = shift;
+ my $text = shift;
+ $text =~ s/'/''/g;
+ return $text;
+}
+
+sub query(){
+ my $self = shift;
+ my $stat = shift;
+ # my $vw_info = shift;
+ my @retdata = ();
+ my $dbh = DBI->connect(((exists($self->{dsn}))?$self->{dsn}:$sitecfg->{dsn}),$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return \@retdata;#$retdata[0] = "dbquery Connection Error!".$!;
+ $stat = encode("utf8", $stat);
+ # open FILE,">>tmp/sql.log";
+ # print FILE "$stat\n";
+ # close FILE;
+ my $sth = $dbh->prepare($stat) or return \@retdata;#$retdata[0] = "dbquery".$dbh->errstr. "- SQL: ".$stat;;
+
+
+ $sth->execute() or return \@retdata; #"dbquery: ".$sth->errstr;
+
+ while(my $data = $sth->fetchrow_hashref()){
+ my $row = ();
+ foreach my $k (keys %{$data}){
+ $row->{$k} = decode("utf-8",$data->{$k});
+ }
+ push @retdata,$row;
+ }
+
+ $sth->finish();
+ $dbh->disconnect();
+
+ return \@retdata;
+}
+
+sub querybykey(){
+ my $self = shift;
+ my $key = shift;
+ my $stat = shift;
+ #my $retempty = shift;
+ my @retdata =();
+ my $dbh = DBI->connect(((exists($self->{dsn}))?$self->{dsn}:$sitecfg->{dsn}),$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return \@retdata;#$retdata[0] = "dbquery Connection Error!".$!;
+ # $stat = encode("utf8", $stat);
+
+ # open FILE,">>sql.log";
+ # print FILE "$stat\n";
+ # close FILE;
+ my $sth = $dbh->prepare($stat) or return \@retdata;#$retdata[0] = "dbquery: ".$stat;
+ $sth->execute() or return \@retdata;#$retata[0] = "dbquery: ".$stat;
+ while(my $data = $sth->fetchrow_hashref())
+ {
+ if (exists $data->{$key}){
+ my $row = ();
+ foreach my $k (keys %{$data}){
+ $row->{$k} = decode("utf-8",$data->{$k});
+ }
+ push @retdata,$row;
+ }
+ }
+ # if (keys(%{$retdata}) == 0){
+ # $retdata =();
+ # }
+ $sth->finish();
+ $dbh->disconnect();
+ return \@retdata;
+}
+
+# sub dbquerysorted(){
+# my $self = shift;
+# my $stat = shift;
+# # my $vw_info = shift;
+# my $retdata;
+# my $dbh = DBI->connect(((exists($self->{dsn}))?$self->{dsn}:$sitecfg->{dsn}),$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "dbquery Connection Error!".$!;
+# # $stat = encode("utf8", $stat);
+# # open FILE,">>tmp/sql.log";
+# # print FILE "\n==\n$stat\n==\n";
+# # close FILE;
+# my $sth = $dbh->prepare($stat) or return $retdata->{error} = "dbquerysorted ".$dbh->errstr. "- SQL: ".$stat;;
+
+
+# $sth->execute() or return $retdata->{error} = "dbquerysorted: ".$sth->errstr;
+# my $count = 0;
+
+# while(my $data = $sth->fetchrow_hashref())
+# {
+# #$retdata->{$count} = $data;
+# my $row = ();
+# foreach my $k (keys %{$data}){
+# $row->{$k} = decode("utf-8",$data->{$k});
+# }
+# push @retdata,$row;
+# }
+
+# # my $qstruct = ();
+# # my $num_fields = $sth->{NUM_OF_FIELDS};
+
+# # for ( my $i=0; $i< $num_fields; $i++ ) {
+# # $qstruct->{$i}->{name} = $sth->{NAME}->[$i];
+# # #$qstruct->{$i}->{type} = $sth->{COMMENT}->[$i];
+# # #$qstruct->{$i}->{precision} = $sth->{PRECISION}->[$i];
+# # }
+
+# $sth->finish();
+# $dbh->disconnect();
+
+# return $retdata;
+# }
+
+sub exec(){
+ my $self = shift;
+ my $stat = shift;
+ my $retdata;
+ my $dbh = DBI->connect(((exists($self->{dsn}))?$self->{dsn}:$sitecfg->{dsn}),$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return $retdata->{error} = "exec Connection Error!".$!;
+ # $stat = decode("UTF-8", $stat);
+ # open FILE,">>tmp/sql.log";
+ # print FILE "\n==\n$stat\n==\n";
+ # close FILE;
+ my $sth = $dbh->prepare($stat) or return $retdata->{error} = "exec ".$dbh->errstr. "- SQL: ".$stat;
+ $retdata->{success} = $dbh->do($stat) or return $retdata->{error} = "dbexec ".$dbh->errstr. "- SQL: ".$stat;
+ $dbh->disconnect();
+ return $retdata;
+}
+
+# sub dbqueryarray(){
+# my $self = shift;
+# my $stat = shift;
+# my @retdata = ();
+# my $dbh = DBI->connect(((exists($self->{dsn}))?$self->{dsn}:$sitecfg->{dsn}),$sitecfg->{dbuser},$sitecfg->{dbpassword},{PrintError=>0,RaiseError=>0,AutoCommit=>1}) or return ({"error" => "dbqueryarray Connection Error!".$!});
+# #$stat = encode("utf8", $stat);
+# #open FILE,">>/tmp/sql.log";
+# #print "$stat\n";
+# # close FILE;
+# my $sth = $dbh->prepare($stat);
+
+# $sth->execute() or print "dbqueryarray: ".$sth->errstr;
+# my $count = 0;
+
+# while(my $data = $sth->fetchrow_hashref())
+# {
+# my $row = ();
+# foreach my $k (keys %{$data}){
+# $row->{$k} = decode("utf-8",$data->{$k});
+# }
+# push @retdata,$row;
+# }
+
+# $sth->finish();
+# $dbh->disconnect();
+# #%retdata = sort {$a <=> $b} keys %retdata;
+# return \@retdata;
+# }
+
+
+sub create_ddl_insert(){
+ my $self = shift;
+ my $data = shift;
+ my $fields = ();
+ my @ddl = ();
+
+ foreach my $f (keys(%{$data})){
+ if (($f =~ /\_/) && ($f !~ /^ident_/)){
+ my $t = substr($f,0,index($f,"_"));
+ my $c = substr($f,length($t)+1);
+ #my ($t,$c) = $f =~ m/(.+)\_(.+)/;
+ $fields->{$t}->{$c} = $data->{$f};
+ } elsif ($f =~ /^ident_/){
+ my $f2 = $f;
+ $f2 =~ s/^ident_//;
+
+ my $t = substr($f2,0,index($f2,"_"));
+ my $c = substr($f2,length($t)+1);
+ $fields->{$t}->{$c} = $data->{$f};
+ }
+
+ }
+
+ foreach my $tb (keys(%{$fields})){
+ my @sqlcol = ();
+ my @sqlval = ();
+ foreach my $c (keys(%{$fields->{$tb}})){
+ my $v = $fields->{$tb}->{$c};
+ $v =~ s/'/''/g;
+ push (@sqlcol,$c);
+ if ($v eq ''){
+ $v = 'null';
+ } else {
+ $v = "'".$v."'";
+ }
+ push (@sqlval,$v);
+ }
+ push(@ddl,"INSERT INTO ".$tb." (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).") returning id;");
+ }
+ return @ddl;
+}
+
+sub create_ddl_insert_json(){
+ my $self = shift;
+ my $schema = shift;
+ my $table = shift;
+ my $columns = shift;
+ my $data = shift;
+ my @ddl = ();
+ my @sqlcol = ();
+ my @sqlval = ();
+ foreach my $c (keys(%{$data})){
+ #if (exists($columns->{$c})){
+ push (@sqlcol,'"'.$c.'"');
+ my $v = $data->{$c};
+
+ if ($v eq ''){
+ $v = 'null';
+ }elsif ($v =~ /^data:.+;base64,/){
+ $v =~ s/'/''/g;
+ $v = "'".$v."'";
+ }
+ else {
+ $v= uri_decode($v);
+ $v =~ s/'/''/g;
+ if ($columns->{$c}->{data_type} eq "ARRAY"){
+ if (ref($data->{$c}) eq "ARRAY"){
+ $v = "{\"".join("\",\"",@{$data->{$c}})."\"}";
+ }
+ else {
+ $v = 'null';
+ }
+ $v =~ s/""/null/g;
+ }elsif ($columns->{$c}->{data_type} =~ /^timestamp/ ){
+
+ }elsif($columns->{$c}->{data_type} eq "date"){
+
+ }elsif($columns->{$c}->{data_type} eq "time"){
+
+ }
+ $v = "'".$v."'";
+ }
+ push (@sqlval,$v);
+ #}
+ }
+ return "INSERT INTO ".$schema.".\"".$table."\" (".join(",",@sqlcol).") VALUES (".join(",",@sqlval).");";
+}
+
+sub create_ddl_update(){
+ my $self = shift;
+ my $data = shift;
+ my $fields = ();
+ my @ddl = ();
+ foreach my $f (keys(%{$data})){
+ if ($f =~ /^ident_/){
+ my $fx = substr($f,6);
+ my $t = substr($fx,0,index($fx,"_"));
+ my $c = substr($fx,length($t)+1);
+ #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/;
+ $fields->{$t}->{cond}->{$c} = $data->{$f};
+ } elsif ( ($f !~ /^ident/) && ($f =~ /.+\_.+/) ){
+ my $t = substr($f,0,index($f,"_"));
+ my $c = substr($f,length($t)+1);
+ #my ($t,$c) = $f =~ m/^(.+)\_([a-z0-9|\_]+)/;
+ $fields->{$t}->{fields}->{$c} = $data->{$f};
+ }
+ }
+ foreach my $tb (keys(%{$fields})){
+ my @sqlupd = ();
+ my @sqlcond = ();
+ foreach my $c (keys(%{$fields->{$tb}->{fields}})){
+
+ my $v = $fields->{$tb}->{fields}->{$c};
+ $v =~ s/'/''/g;
+
+ if ($c =~ /-/){
+ my @jp = split('-',$c);
+ if ($v eq ''){
+ $v = 'null';
+ } else {
+ $v = '"'.$v.'"';
+ }
+ $c = 'jsonb_set(to_jsonb('.$jp[0].'),\'{"'.$jp[1].'"}\',\''.$v.'\')::json';
+ push (@sqlupd,$jp[0]."=".$c);
+ }else {
+ if ($v eq ''){
+ $v = 'null';
+ } else {
+ $v = "'".$v."'";
+ }
+ push (@sqlupd,$c."=".$v);
+ }
+
+ }
+ foreach my $c (keys(%{$fields->{$tb}->{cond}})){
+ my $v = $fields->{$tb}->{cond}->{$c};
+ $v =~ s/'/''/g;
+ if ($v eq ''){
+ $v = 'null';
+ } else {
+ $v = "'".$v."'";
+ }
+ push (@sqlcond,$c."=".$v);
+ }
+ push(@ddl,"UPDATE ".$tb." SET ".join(",",@sqlupd)." WHERE ".join(" AND ",@sqlcond).";");
+ }
+
+ return @ddl;
+}
+
+sub create_cnt_statement(){
+ my $self = shift;
+ my $data = shift;
+ my $fields = ();
+ my @ddl = ();
+ foreach my $f (keys(%{$data})){
+ if ($f =~ /^ident_/){
+ my $fx = substr($f,6);
+ my $t = substr($fx,0,index($fx,"_"));
+ my $c = substr($fx,length($t)+1);
+ #my ($t,$c) = $f =~ m/^ident_(.+)\_([a-z0-9|\_]+)/;
+ $fields->{$t}->{cond}->{$c} = $data->{$f};
+ }
+ }
+ foreach my $tb (keys(%{$fields})){
+ my @sqlcond = ();
+ foreach my $c (keys(%{$fields->{$tb}->{cond}})){
+ my $v = $fields->{$tb}->{cond}->{$c};
+ $v =~ s/'/''/g;
+ if ($v eq ''){
+ $v = 'null';
+ } else {
+ $v = "'".$v."'";
+ }
+ push (@sqlcond,$c."=".$v);
+ }
+ push(@ddl,"SELECT count(*) as cnt from ".$tb." WHERE ".join(" AND ",@sqlcond).";");
+ }
+ # open FILE,">>tmp/sql.log";
+ # print FILE "\n==\n".join("\n",@ddl)."\n==\n";
+ # close FILE;
+ return @ddl;
+}
+
+sub create_ddl_delete(){
+ my $self = shift;
+ my $data = shift;
+ my $fields = ();
+ my @ddl = ();
+ my @refcols = ();
+ my $refdata = ();
+ foreach my $f (keys(%{$data})){
+ if ($f =~ /^ident_/){
+ my ($t,$c) = $f =~ m/ident_(.+)\_(.+)/;
+
+ $fields->{$t}->{cond}->{$c} = $data->{$f};
+ push(@refcols,"'".$c.'_'.$t."'");
+ $refdata->{$c.'_'.$t} = $data->{$f};
+ }
+ }
+
+# my $ref = $self->dbquerysorted("select TABLE_NAME,COLUMN_NAME from information_schema.KEY_COLUMN_USAGE where COLUMN_NAME in (".join(",",@refcols).") and CONSTRAINT_SCHEMA='".$self->{dbname}."';");
+# foreach my $r (keys(%{$ref})){
+# my $refv = $refdata->{$ref->{$r}->{COLUMN_NAME}};
+# if ($refv eq ''){
+# $refv = ' is null';
+# } else {
+# $refv =~ s/'/''/g;
+# $refv = "='".$refv."'";
+# }
+# push(@ddl,"DELETE from ".$ref->{$r}->{TABLE_NAME}." where ".$ref->{$r}->{COLUMN_NAME}.$refv.";");
+# }
+ foreach my $tb (keys(%{$fields})){
+ my @sqlcond = ();
+ foreach my $c (keys(%{$fields->{$tb}->{cond}})){
+ my $v = $fields->{$tb}->{cond}->{$c};
+ $v =~ s/'/''/g;
+ push (@sqlcond,$c."='".$v."'");
+ }
+ push(@ddl,"DELETE FROM ".$tb." WHERE ".join(" AND ",@sqlcond).";");
+ }
+ return @ddl;
+}
+
+sub textunidecode(){
+ my $self = shift;
+ my $text = shift;
+ $text = lc(unidecode(decode("utf-8",$text)));
+ $text =~ s/^[a-z0-9]//g;
+ return $text;
+}
+
+1;
--- /dev/null
+package sendemail;
+
+use strict;
+use lib ('./lib/perl5');
+use lib ('./lib');
+use lib ('./');
+use Data::Dumper;
+use File::Basename qw/dirname basename/;
+use dksdb;
+
+sub new {
+ my $class = shift;
+ my $self = bless {}, $class;
+ $self->{server} = "mail.your-server.de";
+ $self->{port} = "587";
+ $self->{user} = 'kilian.saffran@fld.lu';
+ $self->{password} = "Y6cWvXR6D2";
+ $self->{from} = 'webmaster@fld.lu';
+ return $self;
+}
+
+sub sendemail(){
+ my $self = shift;
+ my $template = shift;
+ my $iduser = shift;
+ my $sendto = shift;
+ my $data = shift;
+ my $attach = shift;
+ my $body = "";
+ my $subject = "";
+ my $maildata = ();
+ my $db = dksdb->new();
+ my $send = -1;
+ my $tmpl = $db->query("select *,ml.mailtemplate from mailtemplates mt join maillayouts ml on (mt.id_maillayout=ml.id) where templatename='".$template."';");
+ if (keys(%{$tmpl}) > 0){
+ $tmpl = $tmpl->{0};
+ }
+ # open (LOG,">>tmp/sendmail.log");
+ # print LOG $ENV{SCRIPT_FILENAME};
+ # print LOG "SEND EMAIL:".Dumper($data)."\n";
+ # close(LOG);
+ my $datasql = $tmpl->{'emaildatasql'};
+ $data->{id} = $iduser;
+ foreach my $key (keys(%{$data})){
+ my $srch = '%%'.lc($key).'%%';
+ my $repl = $data->{$key};
+ $datasql =~ s/$srch/$repl/g;
+ }
+ # open (LOG,">>tmp/sendmail.log");
+ # print LOG "TEMPLATE DATA:".$datasql."\n";
+ # close(LOG);
+ $maildata = $db->query($datasql);
+
+ $body = $tmpl->{'emailtext'};
+ $subject = $tmpl->{'mailsubject'};
+ foreach my $key (keys(%{$maildata->{0}})){
+ $data->{$key} = $maildata->{0}->{$key};
+ }
+ foreach my $key (keys(%{$data})){
+ my $srch = '%%'.lc($key).'%%';
+ my $repl = $data->{$key};
+ $body =~ s/$srch/$repl/g;
+ $subject =~ s/$srch/$repl/g;
+ }
+ my $bodytmpl = $tmpl->{mailtemplate};
+ $bodytmpl =~ s/%%BODYCONTENT%%/$body/;
+ my $siteurl = $ENV{'REQUEST_SCHEME'}.'://'.$ENV{"HTTP_HOST"};
+ $bodytmpl =~ s/%%siteurl%%/$siteurl/g;
+ $bodytmpl =~ s/%%SITEURL%%/$siteurl/g;
+ $bodytmpl =~ s/\r//g;
+ #$bodytmpl =~ s/"/\\\"/g;
+ #PROD REPLACE all not replaced DATA
+ #$bodytmpl =~ s/%%\w+%%//g;
+ #$sendto = 'ksaffran@dks.lu';
+ # open (LOG,">>tmp/sendmail.log");
+ # print LOG "SUBJECT:".$subject."\n";
+ # print LOG "BODY TEXT:".$bodytmpl."\n";
+ # close(LOG);
+ if (($bodytmpl ne "") && ($subject ne "") && ($sendto =~ /.+\@.+\..+/)){
+
+
+ my $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/sendEmail';
+ my $f = dirname($ENV{SCRIPT_FILENAME}).'/tmp/mailbody_'.$sendto.'.txt';
+ $f =~ s/\@/_/g;
+ if (! -e $binsemail){
+ $binsemail = dirname($ENV{'SCRIPT_FILENAME'}).'/api/sendEmail';
+ $f = dirname($ENV{SCRIPT_FILENAME}).'/api/tmp/mailbody_'.$sendto.'.txt';
+ $f =~ s/\@/_/g;
+ if (! -e $binsemail){
+ return 256;
+ }
+ }
+
+ my $cmd= 'perl "'.$binsemail.'" -f '.$tmpl->{mailfrom}.' ';
+ $cmd .= ' -s "'.$self->{server}.':'.$self->{port}.'" -xu "'.$self->{user}.'" -xp "'.$self->{password}.'" -q ';
+ $cmd .= '-o tls=auto ';
+ $cmd .= '-o message-content-type=html ';
+ $cmd .= '-o message-charset=ISO-8859-1 ';
+ $cmd .= '-o message-file='.$f.' ';
+ $cmd .= '-t "'.$sendto.'" ';
+ $cmd .= '-u "'.$subject.'" ';
+ # open (LOG,">>sendmail.log");
+ # print LOG $cmd."\n";
+ # # print LOG "BODY TEXT:".$bodytmpl."\n";
+ # close(LOG);
+ open(EML,">".$f);
+ print EML $bodytmpl;
+ close(EML);
+ # $cmd .= '-m "'.$bodytmpl.'" ';
+ if ($attach != undef){
+ $cmd .= " -a";
+
+ foreach my $a (@{$attach}){
+ $cmd .= " ".$a." ";
+ }
+ }
+ # open (LOG,">>tmp/sendmail.log");
+ # print LOG "SEND EMAIL CMD:".$cmd."\n";
+ # close(LOG);
+ # $cmd =~ s/'/''/g;
+ $send = system($cmd);
+ # open (LOG,">>tmp/sendmail.log");
+ # print LOG "CMD RETURN NUM:".$send."\n";
+ # close(LOG);
+ unlink($f);
+ }
+ return $send;
+}
+
+1;
\ No newline at end of file
--- /dev/null
+package session;
+
+use strict;
+use lib ('./lib/perl5');
+use lib ('./lib');
+use lib ('./');
+use File::Basename;
+use Digest::SHA qw(sha256_hex);
+
+use dksdb;
+use sendemail;
+# use Data::Dumper;
+
+sub new {
+ my $class = shift;
+ my $self = bless {}, $class;
+ $self->{db} = dksdb->new();
+ return $self;
+}
+
+sub checklogin(){
+ my $self = shift;
+ my $login = shift;
+ my $password = shift;
+ # open FILE,">>tmp/sql.log";
+ # print FILE "pwd: $password\n";
+ # close(FILE);
+ my $pwd = sha256_hex($password);
+ my $ret->{messagetype} ='w3-red';
+ # my $newsid = undef;
+ $login = lc($login);
+ $login =~ s/^\s+//;
+ $login =~ s/\s+$//;
+
+ $ret->{message} = "Passwuert oder Login onbekannt!";
+ $ret->{messagetype} = "w3-red";
+ $ret->{sid} = undef;
+ my $user = $self->{db}->dbquerysorted("select id from users where lower(username)=lower('".$self->{db}->securetext($login)."') and userpassword = '".$pwd."' and \"blocked\" is null;");
+ # open FILE,">>tmp/sql.log";
+ # print FILE "select id from users where username= '".$self->{db}->securetext($login)."' and userpassword = '".$pwd."' and \"blocked\" is null;\n";
+ # close FILE;
+ if (keys(%{$user}) > 0){
+ $ret->{sid} = $self->randomstring(40);
+ $self->{db}->dbexec("DELETE FROM sessions where id_user=".$user->{0}->{id}." and remote_addr='".$ENV{REMOTE_ADDR}."' and user_agent='".$ENV{HTTP_USER_AGENT}."';");
+ my $r = $self->{db}->dbexec("INSERT INTO sessions (id_user,idsession,remote_addr,user_agent) VALUES (".$user->{0}->{id}.", '".$ret->{sid}."', '".$ENV{REMOTE_ADDR}."', '".$ENV{HTTP_USER_AGENT}."');");
+ }
+ return $ret;
+}
+
+sub savepassword(){
+ my $self = shift;
+ my $iduser = shift;
+ my $newpwd = shift;
+ my $pwd = sha256_hex($newpwd);
+ $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$iduser.";");
+ return 1;
+}
+
+sub passwordforgotten(){
+ my $self = shift;
+ my $email = shift;
+ my $ret->{messagetype} ='w3-red';
+ $ret->{message} = "Onbekannt E-mail!";
+ my $sql = "select id,userpassword from users where username='".$self->{db}->securetext($email)."';";
+ my $ex = $self->{db}->dbquerysorted($sql);
+ if (keys(%{$ex}) > 0){
+ my $newpwd = $self->randomstring(12);
+ my $pwd = sha256_hex($newpwd);
+ $self->{db}->dbexec("UPDATE users SET userpassword = '".$pwd."' WHERE id=".$ex->{0}->{id}.";");
+ my $data->{newpassword} = $newpwd;
+ my $eml = sendemail->new();
+ my $mret = $eml->sendemail('user_forgotpasswd',$ex->{0}->{id},$email,$data,undef);
+ if ($mret != 0){
+ $ret->{messagetype} ='w3-red';
+ $ret->{message} = "Den Moment ass et leider nët méglech d'Passwuert autmatesch zreckzesetzen, <br/> wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>!";
+ return $ret;
+ }
+ $ret->{message} = "Mir hun dir eng E-Mail, matt engem neien Passwuert gescheckt!";
+ $ret->{messagetype} = "w3-green";
+ }
+ return $ret;
+}
+
+sub registeruser(){
+ my $self = shift;
+ my $data = shift;
+ my $ret->{messagetype} ='w3-red';
+ $ret->{message} = "Een Fehler ass passéiert, probéier et spéier nach eemol!";
+ $ret->{page} = "message.tt";
+ if (!exists($data->{license}) || !exists($data->{regcode}) || !exists($data->{email}) || !exists($data->{terms})){
+ $ret->{message} = "W.e.g. All Felder ausfëllen!";
+ $ret->{page} = "register.tt";
+ return $ret;
+ }
+ foreach my $d (%{$data}){
+ $data->{$d} = $self->{db}->securetext($data->{$d});
+ }
+
+ my $user = $self->{db}->dbquerysorted("select id from users where username='".$data->{email}."';");
+ if (keys(%{$user}) > 0){
+ $ret->{page} = "register.tt";
+ $ret->{message} = "Een Benotzer matt der selwechter E-Mail existéiert schon!";
+ return $ret;
+ }
+ my $license = $self->{db}->dbquerysorted("select us.id as id_user,lic.license,mb.id as id_member,us.username,us.vcode,us.regcode from members mb join licenses lic on (lic.id_member=mb.id) join users us on (mb.id_user=us.id) where us.regcode='".$data->{regcode}."' and lic.license='".$data->{license}."' limit 1");
+ if (keys(%{$license}) == 0){
+ $ret->{message} = "Falsch Lizenz-Nummer oder falschen Régistréierungs-Code!";
+ return $ret;
+ }
+ my $regcode = $license->{0}->{regcode};
+ my $newcode = $self->randomstring(6);
+ #my $usergroup = $self->{db}->dbquerysorted("select id from usergroups where usergroup ='avocat';");
+ my $newuserid = $self->{db}->dbquerysorted("UPDATE users set username='".$data->{email}."',vcode='".$newcode."' where id=".$license->{0}->{id_user}." ;");
+ my $maildata->{vcode} = $newcode;
+ my $eml = sendemail->new();
+ my $mret = $eml->sendemail('user_verification',$license->{0}->{id_user},$data->{email},$maildata,undef);
+ if ($mret == 0){
+ $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, mattengem Code fir deng E-Mail ze verifizéieren!<br/>Gëff desen Code w.e.g. an daat Feld hei drënner an!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
+ $ret->{messagetype} = "w3-green";
+ $ret->{page} = "validationcode.tt";
+ } else {
+ $self->{db}->dbexec("UPDATE users set username='".$data->{email}."',vcode=null where id=".$license->{0}->{id_user}." ;");
+ $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$data->{email}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
+ $ret->{messagetype} = "w3-red";
+ $ret->{page} = "register.tt";
+ }
+ #$self->{db}->dbexec("insert into appaccess (id_user) values (".$newuserid->{0}->{id}.");");
+ # $ret->{messagetype} = "w3-green";
+
+ return $ret;
+}
+
+sub validateaccount(){
+ my $self = shift;
+ my $data = shift;
+ foreach my $d (%{$data}){
+ $data->{$d} = $self->{db}->securetext($data->{$d});
+ }
+
+ my $ret->{messagetype} ='w3-red';
+ my $vcodedata = $self->{db}->dbquerysorted("select id,vcode,username from users where vcode='".$data->{vcode}."';");
+ if (keys(%{$vcodedata}) == 0){
+ $ret->{message} = "Benotzer onbekannt oder Code falsch!";
+ $ret->{page} = "validationcode.tt";
+ }
+ my $newpwd = $self->randomstring(12);
+ my $pwd = sha256_hex($newpwd);
+ my $maildata->{password} = $newpwd;
+ my $eml = sendemail->new();
+ my $newuserid = $self->{db}->dbquerysorted("UPDATE users set userpassword='".$pwd."',vcode=null,regcode=null where id=".$vcodedata->{0}->{id}." returning id,username;");
+ my $mret = $eml->sendemail('user_registration',$vcodedata->{0}->{id},$vcodedata->{0}->{username},$maildata,undef);
+ if ($mret == 0){
+ $ret->{message} = "Merci,<br/>Mir hun dir elo eng E-Mail gescheckt, matt all deenen néidegen Donnéeen fir dech anzeloggen!<br/>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
+ $ret->{messagetype} = "w3-green";
+ $ret->{page} = "message.tt";
+ } else {
+ $ret->{message} = "Aus iergend engem Grond konnten mir dir keng E-Mail un '".$newuserid->{0}->{username}."' schecken! Falls dess E-Mail-Address net existéiert, versich et nach eng Kéier matt enger E-Mail-Address, déi existéiert!<br>Bei Problemer wend dech w.e.g. via E-Mail un <a href=\"mailto:webmaster\@fld.lu\">webmaster\@fld.lu</a>";
+ $ret->{page} = "message.tt";
+ }
+ return $ret;
+}
+
+sub getsession($){
+ my $self = shift;
+ my $sid = shift;
+ my $sql ="select se.idsession,us.id,us.username,string_agg(distinct(aug.usergroup),',') as usergroups from sessions se
+join users us on (us.id=se.id_user)
+left join useringroups uig on (us.id=uig.id_user)
+left join usergroups aug on (aug.id=uig.id_group)
+where se.idsession= '".$self->{db}->securetext($sid)."'
+and se.remote_addr= '".$ENV{REMOTE_ADDR}."'
+and se.user_agent='".$ENV{HTTP_USER_AGENT}."' and us.blocked is null group by se.id,us.id;";
+ my $res= $self->{db}->dbquerysorted($sql);
+ my $ret = undef;
+ if (keys(%{$res}) > 0){
+ return $res->{0};
+ }
+ return $ret;
+}
+
+sub deletesession(){
+ my $self = shift;
+ my $sid = shift;
+ $self->{db}->dbexec("DELETE FROM sessions where idsession='".$self->{db}->securetext($sid)."';");
+}
+
+sub randomstring(){
+ my $self = shift;
+ my $num = shift;
+ my @alphanumeric = ('a'..'z', 'A'..'Z', 0..9);
+ my $randstring = join '', map $alphanumeric[rand @alphanumeric], 0..$num;
+ return $randstring;
+}
+
+
+# sub deleteprofile(){
+# my $self = shift;
+# my $data = shift;
+# my $ret->{message} = "mot de passe ou profile inconnue!";
+# $ret->{messagetype} = "danger";
+# if ($data->{id_user} eq ''){
+# $ret->{sid} = undef;
+# return $ret;
+# }
+# my $pwd = sha256_hex($data->{password});
+# my $user = $self->{db}->dbquerysorted("select id from users where id= '".$data->{id_user}."' and userpassword = '".$pwd."';");
+# if (keys(%{$user}) > 0){
+# $self->admindeleteuser($data->{id_user});
+# my $ret->{'message'} = "Votre profile a été supprimé!";
+# $ret->{'messagetype'} = "info";
+# $ret->{sid} = undef;
+# }
+# return $ret;
+
+# }
+
+# sub admindeleteuser(){
+# my $self = shift;
+# my $id_user = shift;
+# my @dl = ("DELETE FROM public.useringroups WHERE id_uset=".$id_user.";",
+# "DELETE FROM public.userclients WHERE id_user=".$id_user.";",
+# "DELETE FROM public.appaccess WHERE id_user=".$id_user.";",
+# "DELETE FROM public.modulepreferences WHERE id_user=".$id_user.";",,
+# "DELETE FROM public.sessions WHERE id_user=".$id_user.";",
+# "delete from users where id=".$id_user.";");
+# foreach my $s (@dl){
+# $self->{db}->dbexec($s);
+# }
+# return 1;
+# }
+
+1;
\ No newline at end of file
--- /dev/null
+#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+use strict;
+use FindBin qw($Bin $RealBin);
+# use lib ('CGI/api/lib/perl5');
+# use lib ('CGI/api/lib');
+use lib ($Bin.'/CGI/api/lib/perl5');
+use lib ($Bin.'/CGI/api/lib');
+use CGI;
+use CGI::Cookie;
+# use CGI::Carp qw/fatalsToBrowser/;
+use File::Basename;
+use JSON::PP;
+use dksconfig qw/$sitecfg/;
+use dksdb;
+use Digest::SHA::PurePerl qw(sha256_hex);
+
+# use session;
+#use sendemail;
+my $cgi = new CGI();
+my $scriptpath = $cgi->url(-absolute => 1);
+my $p = ();
+my @params = $cgi->param();
+foreach my $pe (@params){
+ $p->{$pe} = $cgi->param($pe);
+}
+my $html->{result} = ();
+# $p->{sid} = $cgi->cookie($sitecfg->{cookiename});
+# my $se = session->new();
+# my $sess = $se->getsession($p->{sid});
+print $cgi->header(-type=>"application/json", -charset => "utf-8");
+
+if (exists($p->{fn})){
+ if ($p->{fn} eq "info"){
+ $html->{result} = &appinfo($p);
+ }
+ if ($$p->{fn} eq "preferences"){
+ $html->{result} = &preferences($p);
+ }
+ if ($p->{fn} eq "setaccess"){
+ $html->{result} = &setWebLogin($p);
+ }
+ if ($p->{fn} eq "getaccess"){
+ $html->{result} = &getWebLogin($p);
+ }
+ if (($p->{fn} eq "stop") || ($p->{fn} eq "unload")){
+ exit(0);
+ }
+}
+print JSON::PP::encode_json($html);
+
+sub preferences(){
+
+ my $req =shift;
+ my $name = &getAppName();
+ my $pref= ();
+ my $appcfgpath = &getappconfigpath();
+ if (exists($req->{page})){
+ $appcfgpath =~ s/\\/\//g;
+ if (-e $appcfgpath.'/'.$req->{page}.'.json'){
+ open(PREF,$appcfgpath.'/'.$req->{page}.'.json');
+ my $strpref = "";
+ while (my $l = <PREF>){
+ $strpref .= $l;
+ }
+ close(PREF);
+ $pref=JSON::PP::decode_json($strpref);
+ }
+ my @kk = keys(%{$p});
+ my $setcron = '';
+ #print "keys.".Dumper(@kk)."\n";
+ if (scalar(@kk) > 0){
+ foreach my $px (@kk){
+ my $newpref = JSON::PP::decode_json($req->{$px});
+ if ($p eq 'sync'){
+ $setcron = $p;
+ }
+ #if (exists($pref->{result}->{$p})){
+ $pref->{$p} = $newpref;
+ #}
+ }
+ open(PREF,">".$appcfgpath.'/'.$req->{page}.'.json');
+ print PREF JSON::PP::encode_json($pref);
+ close(PREF);
+
+ }
+ if ($setcron ne ''){
+ if ($setcron eq 'sync'){
+ &setcron(dirname($0).'/syncdb.pl',$pref->{sync}->{time});
+ }
+ }
+ }
+
+}
+
+sub appinfo(){
+ my $req = shift;
+ my $ret = ();
+
+ my $name = basename($0);
+ $name =~ s/srv\.pl$//;
+ $name =~ s/srv\.exe$//;
+ $ret->{OS} = $^O;
+ $ret->{app} = $name;
+ $ret->{appcfgpath} = &getappconfigpath();
+ if ($^O eq "MSWin32"){
+ $ret->{home} = $ENV{USERPROFILE};
+ $ret->{user} = $ENV{USERNAME};
+ $$ret->{hostname} = $ENV{COMPUTERNAME};
+ $ret->{arch} = $ENV{PROCESSOR_ARCHITEW6432};
+ $ret->{appcfgpath} =~ s/\\/\//g;
+ $ret->{home} =~ s/\\/\//g;
+ } else {
+ $ret->{home} = $ENV{HOME};
+ $ret->{user} = $ENV{USER};
+ $ret->{hostname} = `hostname -s`;
+ chomp($ret->{hostname});
+ $ret->{arch} = `uname -m`;
+ chomp($ret->{arch});
+ }
+ if (! -e $ret->{appcfgpath}){
+ make_path($ret->{appcfgpath});
+ }
+ if (-e $ret->{appcfgpath}.'/'.$name.'.json'){
+ open(LCFG,$ret->{appcfgpath}.'/'.$name.'.json');
+ my $strprofile = "";
+ while (my $l = <LCFG>){
+ $strprofile .= $l;
+ }
+ close(LCFG);
+ if ($strprofile ne ""){
+ $ret->{appconfig} = JSON::PP::decode_json($strprofile);
+ }
+ }
+ if (!exists($ret->{appconfig})){
+ $ret->{appconfig} = undef;
+ }
+ return $ret;
+}
+
+sub getWebLogin(){
+
+ my $req = shift;
+ my $ret = ();
+
+ my $apppath = &getappconfigpath();
+ my $loginname= "";
+ #print "read:". $apppath.'/'.&getAppName().'.passwd'."\n";
+ if (-e $apppath.'/'.&getAppName().'.passwd'){
+ open(AUTH,$apppath.'/'.&getAppName().'.passwd');
+ while (my $l = <AUTH>){
+ chomp($l);
+ if ($l eq ""){ next;}
+ ($loginname) = $l =~ m/^(\w+)\=.*/;
+ }
+ close(AUTH);
+ }
+ $ret->{login} = $loginname;
+ return $ret;
+}
+
+sub setWebLogin(){
+ my $req = shift;
+ my $ret = -1;
+ my $apppath = &getappconfigpath();
+ if (exists($req->{login}) && exists($req->{passwd})){
+ open(AUTH,">".$apppath.'/'.&getAppName().'.passwd');
+ print AUTH $req->{login}.'='.$req->{passwd};
+ close(AUTH);
+ $ret = 0;
+ }
+ return $ret;
+}
+
+sub getappconfigpath(){
+ my $datadir = dirname($RealBin).'/data';
+ return $datadir;
+}
+
+sub getAppName(){
+ my $name = basename($0);
+ $name =~ s/srv\.pl$//;
+ $name =~ s/srv\.exe$//;
+ return lc($name);
+}
+
+sub setcron(){
+ my $script =shift;
+ my $time = shift;
+ print "setcron\n";
+ my $strcron = `crontab -l`;
+ my @lines = split("\n",$strcron);
+ my $crontabline = "";
+ if ((defined($time) && $time =~ /\d\d:\d\d/)){
+ $crontabline = int(substr($time,3,2)).' '.int(substr($time,0,2)).' * * * '.$script;
+ }
+ my $newcrontab = "";
+ foreach my $l (@lines){
+ chomp($l);
+ if ($l !~ $script){
+ $newcrontab .= $l."\n";
+ }
+ }
+ if ($crontabline ne ""){
+ $newcrontab .= $crontabline."\n";
+ }
+ print "\n----\n".$newcrontab."\n----\n";
+ system('sudo echo "'.$newcrontab.'" > /var/spool/cron/crontabs/'.$ENV{USER});
+}
--- /dev/null
+#!/Users/kilian/perl5/perlbrew/perls/perl-5.24.1/bin/perl
+use strict;
+use FindBin qw($Bin);
+# use lib ('CGI/api/lib/perl5');
+# use lib ('CGI/api/lib');
+use lib ($Bin.'/CGI/api/lib/perl5');
+use lib ($Bin.'/CGI/api/lib');
+use CGI;
+use CGI::Cookie;
+# use CGI::Carp qw/fatalsToBrowser/;
+use File::Basename;
+use JSON::PP;
+use dksconfig qw/$sitecfg/;
+use dksdb;
+
+# use session;
+#use sendemail;
+my $cgi = new CGI();
+my $scriptpath = $cgi->url(-absolute => 1);
+my $p = ();
+my @params = $cgi->param();
+foreach my $pe (@params){
+ $p->{$pe} = $cgi->param($pe);
+}
+my $html->{result} = undef;
+# $p->{sid} = $cgi->cookie($sitecfg->{cookiename});
+# my $se = session->new();
+# my $sess = $se->getsession($p->{sid});
+print $cgi->header(-type=>"application/json", -charset => "utf-8");
+if (exists($p->{fn})) {
+ if ($p->{fn} eq "getconfig"){
+ $html->{result} = &getconfig($p);
+ } elsif ($p->{fn} eq "setconfig") {
+ $html->{result} = &setconfig($p);
+ } elsif ($p->{fn} eq "shutdown"){
+ print "Shutdown launched!\n";
+ system('sudo shutdown -h now');
+ $html->{result} = "shutdown launched";
+ } elsif ($p->{fn} eq "restart"){
+ print "Restart launched!\n";
+ system('sudo shutdown -r now');
+ $html->{result} = "restart launched";
+ }
+}
+print JSON::PP::encode_json($html);
+
+sub getconfig(){
+
+ my $req = shift;
+ my $ret = ();
+ my @sections = ('lan','wlan','hostname','activenet');
+ if (exists($req->{section})){
+ @sections = split(',',$req->{section});
+ }
+ foreach my $s (@sections){
+ if ($s eq 'wlan') {
+ $ret->{$s} = &getwifinetworks();
+ } elsif ($s eq 'hostname') {
+ $ret->{$s} = &gethostname();
+ } elsif ($s eq 'activenet'){
+ $ret->{$s} = &getactivenet();
+ }
+ }
+ return $ret;
+}
+
+sub setconfig(){
+ my $req = shift;
+ my $ret = ();
+ my @sections = ('wlan','hostname');
+ if (exists($req->{section})){
+ @sections = split(',',$req->{section});
+ }
+ foreach my $k (@sections){
+ my $values = JSON::PP::decode_json($req->{$k});
+ #print Dumper($values);
+ if ($k eq 'wlan'){
+ $ret->{$k} = &setwifinetwork($values);
+ }
+ if ($k eq 'hostname'){
+ $ret->{$k} = &sethostname($values);
+ }
+ }
+ return $ret;
+}
+
+#weblogin
+
+sub getactivenet(){
+ my $netconfig = `ip -4 a show`;
+my @rows = split("\n",$netconfig);
+my $net = ();
+my $cnet = "";
+foreach my $r (@rows){
+ chomp($r);
+ if ($r =~ /^\d:/){
+ my ($tmp) = $r =~ m/^\d:\s(.+):/;
+ $cnet = $tmp;
+ } elsif ($r =~ /^\s+inet\s/){
+ my ($ip) = $r =~ m/^\s+inet\s([\d|\.]+)/;
+ $net->{$cnet} = $ip;
+ }
+}
+ return $net;
+}
+
+#hostname
+sub gethostname(){
+ my $hostname = `hostname -s`;
+ chomp($hostname);
+ return $hostname;
+}
+
+sub sethostname(){
+ my $data = shift;
+ my $ret = -1;
+ if (exists($data->{hostname}) && $data->{hostname} ne ""){
+ system("sudo hostnamectl set-hostname ".$data->{hostname});
+ my $ret = system('sudo sed -i "s/^127.0.1.1.*/127.0.1.1\t'.$data->{hostname}.'/" /etc/hosts');
+ }
+ return $ret;
+}
+
+#wlan
+sub getwifinetworks(){
+ my $cmd = "sudo wpa_cli -i wlan0 status | grep -e \"^ssid=\" | awk -F \"=\" '\{ print \$2 \}'";
+ my $current = `$cmd`;
+ chomp($current);
+ my $wifi->{ssid} = undef;
+ if ($current ne ""){
+ $wifi->{ssid} = $current;
+ }
+ my $strlist = `sudo iw wlan0 scan | grep SSID | sed \'s/.*SSID: //g\'`;
+ my @list = split("\n",$strlist);
+ $wifi->{networks} = \@list;
+ return $wifi;
+
+}
+
+sub setwifinetwork(){
+ my $data = shift;
+ my $strwpa = 'ctrl_interface=DIR=/var/run/wpa_supplicant GROUP=netdev'."\n";
+ $strwpa .= 'update_config=1'."\n";
+ $strwpa .= 'country=GB'."\n";
+
+ if (exists($data->{hiddenssid})){
+ $strwpa .= "\t".'scan_ssid=1'."\n";
+ }
+ if (exists($data->{passphrase})){
+ my $cmd = 'wpa_passphrase "'.$data->{ssid}.'" "'.$data->{passphrase}.'"';
+ my $enc = `$cmd`;
+ #chomp($enc);
+ $strwpa .= $enc;
+ } else {
+ $strwpa .= 'network={'."\n";
+ $strwpa .= "\t".'ssid="'.$data->{ssid}."\"\n";
+ $strwpa .= "\t".'key_mgmt=NONE'."\n";
+ $strwpa .= '}'."\n";
+ }
+
+ print $strwpa."\n---\n";
+ my $st = system('echo "'.$strwpa.'" > /tmp/wpa_supplicant.conf');
+ $st = system('sudo cp /tmp/wpa_supplicant.conf /etc/wpa_supplicant/wpa_supplicant.conf');
+ my $cmd = "sudo wpa_cli -i wlan0 reconfigure";
+ my $ret = system($cmd);
+ return 1;
+}
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+import sys
+from pyfingerprint2.pyfingerprint import PyFingerprint
+if len(sys.argv) == 1:
+ print ('Error: No position!');
+ exit(1)
+
+## Deletes a finger from sensor
+##
+
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+## Gets some sensor information
+#print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
+
+## Tries to delete the template of the finger
+try:
+ positionNumber = int(sys.argv[1])
+
+ if ( f.deleteTemplate(positionNumber) == True ):
+ print('Template ' + str(positionNumber) +' deleted!')
+
+except Exception as e:
+ print('Operation failed!')
+ print('Exception message: ' + str(e))
+ exit(1)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+import time
+from pyfingerprint2.pyfingerprint import PyFingerprint
+
+
+## Enrolls new finger
+##
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+## Gets some sensor information
+print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
+
+## Tries to enroll new finger
+try:
+ print('Waiting for finger...')
+
+ ## Wait that finger is read
+ while ( f.readImage() == False ):
+ pass
+
+ ## Converts read image to characteristics and stores it in charbuffer 1
+ f.convertImage(0x01)
+
+ ## Checks if finger is already enrolled
+ result = f.searchTemplate()
+ positionNumber = result[0]
+
+ if ( positionNumber >= 0 ):
+ print('Template already exists at position #' + str(positionNumber))
+ exit(0)
+
+ print('Remove finger...')
+ time.sleep(2)
+
+ print('Waiting for same finger again...')
+
+ ## Wait that finger is read again
+ while ( f.readImage() == False ):
+ pass
+
+ ## Converts read image to characteristics and stores it in charbuffer 2
+ f.convertImage(0x02)
+
+ ## Compares the charbuffers
+ if ( f.compareCharacteristics() == 0 ):
+ raise Exception('Fingers do not match')
+
+ ## Creates a template
+ f.createTemplate()
+
+ ## Saves template at new position number
+ positionNumber = f.storeTemplate()
+ print('Finger enrolled successfully!')
+ print('New template position #' + str(positionNumber))
+
+except Exception as e:
+ print('Operation failed!')
+ print('Exception message: ' + str(e))
+ exit(1)
--- /dev/null
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+import time
+from pyfingerprint2.pyfingerprint import PyFingerprint
+
+
+## Enrolls new finger
+##
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+f.setLEDoff()
--- /dev/null
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+import time
+from pyfingerprint2.pyfingerprint import PyFingerprint
+
+
+## Enrolls new finger
+##
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+f.setLEDon()
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+import hashlib
+from pyfingerprint2.pyfingerprint import PyFingerprint
+
+
+## Search for a finger
+##
+
+## Tries to initialize the sensor
+try:
+ f = PyFingerprint('/dev/ttyUSB0', 57600, 0xFFFFFFFF, 0x00000000)
+
+ if ( f.verifyPassword() == False ):
+ raise ValueError('The given fingerprint sensor password is wrong!')
+
+except Exception as e:
+ print('The fingerprint sensor could not be initialized!')
+ print('Exception message: ' + str(e))
+ exit(1)
+
+## Gets some sensor information
+print('Currently used templates: ' + str(f.getTemplateCount()) +'/'+ str(f.getStorageCapacity()))
+
+## Tries to search the finger and calculate hash
+try:
+ print('Waiting for finger...')
+
+ ## Wait that finger is read
+ while ( f.readImage() == False ):
+ pass
+
+ ## Converts read image to characteristics and stores it in charbuffer 1
+ f.convertImage(0x01)
+
+ ## Searchs template
+ result = f.searchTemplate()
+
+ positionNumber = result[0]
+ accuracyScore = result[1]
+
+ if ( positionNumber == -1 ):
+ print('No match found!')
+ exit(0)
+ else:
+ print('Found template at position #' + str(positionNumber))
+ print('The accuracy score is: ' + str(accuracyScore))
+ ## Loads the found template to charbuffer 1
+ f.loadTemplate(positionNumber, 0x01)
+
+ ## Downloads the characteristics of template loaded in charbuffer 1
+ characterics = str(f.downloadCharacteristics(0x01)).encode('utf-8')
+
+ ## Hashes characteristics of template
+ #print('SHA-2 hash of template: ' + hashlib.sha256(characterics).hexdigest())
+ print('POS:' + str(positionNumber) + ';HASH:' + hashlib.sha256(characterics).hexdigest())
+
+except Exception as e:
+ print('Operation failed!')
+ print('Exception message: ' + str(e))
+ exit(1)
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+__version__ = '1.5'
--- /dev/null
+#!/usr/bin/env python
+# -*- coding: utf-8 -*-
+
+"""
+PyFingerprint
+Copyright (C) 2015 Bastian Raschke <bastian.raschke@posteo.de>
+All rights reserved.
+
+"""
+
+import os
+import serial
+from PIL import Image
+import struct
+
+
+## Baotou start byte
+FINGERPRINT_STARTCODE = 0xEF01
+
+## Packet identification
+##
+
+FINGERPRINT_COMMANDPACKET = 0x01
+
+FINGERPRINT_ACKPACKET = 0x07
+FINGERPRINT_DATAPACKET = 0x02
+FINGERPRINT_ENDDATAPACKET = 0x08
+
+## Instruction codes
+##
+
+FINGERPRINT_VERIFYPASSWORD = 0x13
+FINGERPRINT_SETPASSWORD = 0x12
+FINGERPRINT_SETADDRESS = 0x15
+FINGERPRINT_SETSYSTEMPARAMETER = 0x0E
+FINGERPRINT_GETSYSTEMPARAMETERS = 0x0F
+FINGERPRINT_TEMPLATEINDEX = 0x1F
+FINGERPRINT_TEMPLATECOUNT = 0x1D
+
+FINGERPRINT_READIMAGE = 0x01
+
+## Note: The documentation mean upload to host computer.
+FINGERPRINT_DOWNLOADIMAGE = 0x0A
+
+FINGERPRINT_CONVERTIMAGE = 0x02
+
+FINGERPRINT_CREATETEMPLATE = 0x05
+FINGERPRINT_STORETEMPLATE = 0x06
+FINGERPRINT_SEARCHTEMPLATE = 0x04
+FINGERPRINT_LOADTEMPLATE = 0x07
+FINGERPRINT_DELETETEMPLATE = 0x0C
+
+FINGERPRINT_CLEARDATABASE = 0x0D
+FINGERPRINT_GENERATERANDOMNUMBER = 0x14
+FINGERPRINT_COMPARECHARACTERISTICS = 0x03
+
+## Note: The documentation mean download from host computer.
+FINGERPRINT_UPLOADCHARACTERISTICS = 0x09
+
+## Note: The documentation mean upload to host computer.
+FINGERPRINT_DOWNLOADCHARACTERISTICS = 0x08
+## LED
+FINGERPRINT_LEDON = 0x50
+FINGERPRINT_LEDOFF = 0x51
+## Packet reply confirmations
+##
+
+FINGERPRINT_OK = 0x00
+FINGERPRINT_ERROR_COMMUNICATION = 0x01
+
+FINGERPRINT_ERROR_WRONGPASSWORD = 0x13
+
+FINGERPRINT_ERROR_INVALIDREGISTER = 0x1A
+
+FINGERPRINT_ERROR_NOFINGER = 0x02
+FINGERPRINT_ERROR_READIMAGE = 0x03
+
+FINGERPRINT_ERROR_MESSYIMAGE = 0x06
+FINGERPRINT_ERROR_FEWFEATUREPOINTS = 0x07
+FINGERPRINT_ERROR_INVALIDIMAGE = 0x15
+
+FINGERPRINT_ERROR_CHARACTERISTICSMISMATCH = 0x0A
+
+FINGERPRINT_ERROR_INVALIDPOSITION = 0x0B
+FINGERPRINT_ERROR_FLASH = 0x18
+
+FINGERPRINT_ERROR_NOTEMPLATEFOUND = 0x09
+
+FINGERPRINT_ERROR_LOADTEMPLATE = 0x0C
+
+FINGERPRINT_ERROR_DELETETEMPLATE = 0x10
+
+FINGERPRINT_ERROR_CLEARDATABASE = 0x11
+
+FINGERPRINT_ERROR_NOTMATCHING = 0x08
+
+FINGERPRINT_ERROR_DOWNLOADIMAGE = 0x0F
+FINGERPRINT_ERROR_DOWNLOADCHARACTERISTICS = 0x0D
+
+## Unknown error codes
+##
+
+FINGERPRINT_ADDRCODE = 0x20
+FINGERPRINT_PASSVERIFY = 0x21
+
+FINGERPRINT_PACKETRESPONSEFAIL = 0x0E
+
+FINGERPRINT_ERROR_TIMEOUT = 0xFF
+FINGERPRINT_ERROR_BADPACKET = 0xFE
+
+
+class PyFingerprint(object):
+ """
+ A python written library for the ZhianTec ZFM-20 fingerprint sensor.
+
+ @attribute integer(4 bytes) __address
+ Address to connect to sensor.
+
+ @attribute integer(4 bytes) __password
+ Password to connect to sensor.
+
+ @attribute Serial __serial
+ UART serial connection via PySerial.
+ """
+ __address = None
+ __password = None
+ __serial = None
+
+ def __init__(self, port = '/dev/ttyUSB0', baudRate = 57600, address = 0xFFFFFFFF, password = 0x00000000):
+ """
+ Constructor
+
+ @param string port
+ @param integer baudRate
+ @param integer(4 bytes) address
+ @param integer(4 bytes) password
+ """
+
+ if ( os.path.exists(port) == False ):
+ raise ValueError('The fingerprint sensor port "' + port + '" was not found!')
+
+ if ( baudRate < 9600 or baudRate > 115200 or baudRate % 9600 != 0 ):
+ raise ValueError('The given baudrate is invalid!')
+
+ if ( address < 0x00000000 or address > 0xFFFFFFFF ):
+ raise ValueError('The given address is invalid!')
+
+ if ( password < 0x00000000 or password > 0xFFFFFFFF ):
+ raise ValueError('The given password is invalid!')
+
+ self.__address = address
+ self.__password = password
+
+ ## Initialize PySerial connection
+ self.__serial = serial.Serial(port = port, baudrate = baudRate, bytesize = serial.EIGHTBITS, timeout = 2)
+
+ if ( self.__serial.isOpen() == True ):
+ self.__serial.close()
+
+ self.__serial.open()
+
+ def __del__(self):
+ """
+ Destructor
+
+ """
+
+ ## Close connection if still established
+ if ( self.__serial is not None and self.__serial.isOpen() == True ):
+ self.__serial.close()
+
+ def __rightShift(self, n, x):
+ """
+ Shift a byte.
+
+ @param integer n
+ @param integer x
+ @return integer
+ """
+
+ return (n >> x & 0xFF)
+
+ def __leftShift(self, n, x):
+ """
+ Shift a byte.
+
+ @param integer n
+ @param integer x
+ @return integer
+ """
+
+ return (n << x)
+
+ def __bitAtPosition(self, n, p):
+ """
+ Get the bit of n at position p.
+
+ @param integer n
+ @param integer p
+ @return integer
+ """
+
+ ## A bitshift 2 ^ p
+ twoP = 1 << p
+
+ ## Binary AND composition (on both positions must be a 1)
+ ## This can only happen at position p
+ result = n & twoP
+ return int(result > 0)
+
+ def __byteToString(self, byte):
+ """
+ Converts a byte to string.
+
+ @param byte byte
+ @return string
+ """
+
+ return struct.pack('@B', byte)
+
+ def __stringToByte(self, string):
+ """
+ Convert one "string" byte (like '0xFF') to real integer byte (0xFF).
+
+ @param string string
+ @return byte
+ """
+
+ return struct.unpack('@B', string)[0]
+
+ def __writePacket(self, packetType, packetPayload):
+ """
+ Send a packet to fingerprint sensor.
+
+ @param integer(1 byte) packetType
+ @param tuple packetPayload
+
+ @return void
+ """
+
+ ## Write header (one byte at once)
+ self.__serial.write(self.__byteToString(self.__rightShift(FINGERPRINT_STARTCODE, 8)))
+ self.__serial.write(self.__byteToString(self.__rightShift(FINGERPRINT_STARTCODE, 0)))
+
+ self.__serial.write(self.__byteToString(self.__rightShift(self.__address, 24)))
+ self.__serial.write(self.__byteToString(self.__rightShift(self.__address, 16)))
+ self.__serial.write(self.__byteToString(self.__rightShift(self.__address, 8)))
+ self.__serial.write(self.__byteToString(self.__rightShift(self.__address, 0)))
+
+ self.__serial.write(self.__byteToString(packetType))
+
+ ## The packet length = package payload (n bytes) + checksum (2 bytes)
+ packetLength = len(packetPayload) + 2
+
+ self.__serial.write(self.__byteToString(self.__rightShift(packetLength, 8)))
+ self.__serial.write(self.__byteToString(self.__rightShift(packetLength, 0)))
+
+ ## The packet checksum = packet type (1 byte) + packet length (2 bytes) + payload (n bytes)
+ packetChecksum = packetType + self.__rightShift(packetLength, 8) + self.__rightShift(packetLength, 0)
+
+ ## Write payload
+ for i in range(0, len(packetPayload)):
+ self.__serial.write(self.__byteToString(packetPayload[i]))
+ packetChecksum += packetPayload[i]
+
+ ## Write checksum (2 bytes)
+ self.__serial.write(self.__byteToString(self.__rightShift(packetChecksum, 8)))
+ self.__serial.write(self.__byteToString(self.__rightShift(packetChecksum, 0)))
+
+ def __readPacket(self):
+ """
+ Receive a packet from fingerprint sensor.
+
+ Return a tuple that contain the following information:
+ 0: integer(1 byte) The packet type.
+ 1: integer(n bytes) The packet payload.
+
+ @return tuple
+ """
+
+ receivedPacketData = []
+ i = 0
+
+ while ( True ):
+
+ ## Read one byte
+ receivedFragment = self.__serial.read()
+
+ if ( len(receivedFragment) != 0 ):
+ receivedFragment = self.__stringToByte(receivedFragment)
+ ## print 'Received packet fragment = ' + hex(receivedFragment)
+
+ ## Insert byte if packet seems valid
+ receivedPacketData.insert(i, receivedFragment)
+ i += 1
+
+ ## Packet could be complete (the minimal packet size is 12 bytes)
+ if ( i >= 12 ):
+
+ ## Check the packet header
+ if ( receivedPacketData[0] != self.__rightShift(FINGERPRINT_STARTCODE, 8) or receivedPacketData[1] != self.__rightShift(FINGERPRINT_STARTCODE, 0) ):
+ raise Exception('The received packet do not begin with a valid header!')
+
+ ## Calculate packet payload length (combine the 2 length bytes)
+ packetPayloadLength = self.__leftShift(receivedPacketData[7], 8)
+ packetPayloadLength = packetPayloadLength | self.__leftShift(receivedPacketData[8], 0)
+
+ ## Check if the packet is still fully received
+ ## Condition: index counter < packet payload length + packet frame
+ if ( i < packetPayloadLength + 9 ):
+ continue
+
+ ## At this point the packet should be fully received
+
+ packetType = receivedPacketData[6]
+
+ ## Calculate checksum:
+ ## checksum = packet type (1 byte) + packet length (2 bytes) + packet payload (n bytes)
+ packetChecksum = packetType + receivedPacketData[7] + receivedPacketData[8]
+
+ packetPayload = []
+
+ ## Collect package payload (ignore the last 2 checksum bytes)
+ for j in range(9, 9 + packetPayloadLength - 2):
+ packetPayload.append(receivedPacketData[j])
+ packetChecksum += receivedPacketData[j]
+
+ ## Calculate full checksum of the 2 separate checksum bytes
+ receivedChecksum = self.__leftShift(receivedPacketData[i - 2], 8)
+ receivedChecksum = receivedChecksum | self.__leftShift(receivedPacketData[i - 1], 0)
+
+ if ( receivedChecksum != packetChecksum ):
+ raise Exception('The received packet is corrupted (the checksum is wrong)!')
+
+ return (packetType, packetPayload)
+
+ def verifyPassword(self):
+ """
+ Verify password of the fingerprint sensor.
+
+ @return boolean
+ """
+
+ packetPayload = (
+ FINGERPRINT_VERIFYPASSWORD,
+ self.__rightShift(self.__password, 24),
+ self.__rightShift(self.__password, 16),
+ self.__rightShift(self.__password, 8),
+ self.__rightShift(self.__password, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Sensor password is correct
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ADDRCODE ):
+ raise Exception('The address is wrong')
+
+ ## DEBUG: Sensor password is wrong
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_WRONGPASSWORD ):
+ return False
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def setPassword(self, newPassword):
+ """
+ Set the password of the sensor.
+
+ @param integer(4 bytes) newPassword
+ @return boolean
+ """
+
+ ## Validate the password (maximum 4 bytes)
+ if ( newPassword < 0x00000000 or newPassword > 0xFFFFFFFF ):
+ raise ValueError('The given password is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_SETPASSWORD,
+ self.__rightShift(newPassword, 24),
+ self.__rightShift(newPassword, 16),
+ self.__rightShift(newPassword, 8),
+ self.__rightShift(newPassword, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Password set was successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ self.__password = newPassword
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def setAddress(self, newAddress):
+ """
+ Set the module address of the sensor.
+
+ @param integer(4 bytes) newAddress
+ @return boolean
+ """
+
+ ## Validate the address (maximum 4 bytes)
+ if ( newAddress < 0x00000000 or newAddress > 0xFFFFFFFF ):
+ raise ValueError('The given address is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_SETADDRESS,
+ self.__rightShift(newAddress, 24),
+ self.__rightShift(newAddress, 16),
+ self.__rightShift(newAddress, 8),
+ self.__rightShift(newAddress, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Address set was successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ self.__address = newAddress
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def setSystemParameter(self, parameterNumber, parameterValue):
+ """
+ Set a system parameter of the sensor.
+
+ @param integer(1 byte) parameterNumber
+ @param integer(1 byte) parameterValue
+ @return boolean
+ """
+
+ ## Validate the baudrate parameter
+ if ( parameterNumber == 4 ):
+
+ if ( parameterValue < 1 or parameterValue > 12 ):
+ raise ValueError('The given baudrate parameter is invalid!')
+
+ ## Validate the security level parameter
+ elif ( parameterNumber == 5 ):
+
+ if ( parameterValue < 1 or parameterValue > 5 ):
+ raise ValueError('The given security level parameter is invalid!')
+
+ ## Validate the package length parameter
+ elif ( parameterNumber == 6 ):
+
+ if ( parameterValue < 0 or parameterValue > 3 ):
+ raise ValueError('The given package length parameter is invalid!')
+
+ ## The parameter number is not valid
+ else:
+ raise ValueError('The given parameter number is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_SETSYSTEMPARAMETER,
+ parameterNumber,
+ parameterValue,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Parameter set was successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_INVALIDREGISTER ):
+ raise Exception('Invalid register number')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+
+ def getSystemParameters(self):
+ """
+ Get all available system information of the sensor.
+
+ Return a tuple that contain the following information:
+ 0: integer(2 bytes) The status register.
+ 1: integer(2 bytes) The system id.
+ 2: integer(2 bytes) The storage capacity.
+ 3: integer(2 bytes) The security level.
+ 4: integer(4 bytes) The sensor address.
+ 5: integer(2 bytes) The packet length.
+ 6: integer(2 bytes) The baudrate.
+
+ @return tuple
+ """
+
+ packetPayload = (
+ FINGERPRINT_GETSYSTEMPARAMETERS,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Read successfully
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+
+ statusRegister = self.__leftShift(receivedPacketPayload[1], 8) | self.__leftShift(receivedPacketPayload[2], 0)
+ systemID = self.__leftShift(receivedPacketPayload[3], 8) | self.__leftShift(receivedPacketPayload[4], 0)
+ storageCapacity = self.__leftShift(receivedPacketPayload[5], 8) | self.__leftShift(receivedPacketPayload[6], 0)
+ securityLevel = self.__leftShift(receivedPacketPayload[7], 8) | self.__leftShift(receivedPacketPayload[8], 0)
+ deviceAddress = ((receivedPacketPayload[9] << 8 | receivedPacketPayload[10]) << 8 | receivedPacketPayload[11]) << 8 | receivedPacketPayload[12] ## TODO
+ packetLength = self.__leftShift(receivedPacketPayload[13], 8) | self.__leftShift(receivedPacketPayload[14], 0)
+ baudRate = self.__leftShift(receivedPacketPayload[15], 8) | self.__leftShift(receivedPacketPayload[16], 0)
+
+ return (statusRegister, systemID, storageCapacity, securityLevel, deviceAddress, packetLength, baudRate)
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def getTemplateIndex(self, page):
+ """
+ Get a list of the template positions with usage indicator.
+
+ @param integer(1 byte) page
+ @return list
+ """
+
+ if ( page < 0 or page > 3 ):
+ raise ValueError('The given index page is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_TEMPLATEINDEX,
+ page,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Read index table successfully
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+
+ templateIndex = []
+
+ ## Contain the table page bytes (skip the first status byte)
+ pageElements = receivedPacketPayload[1:]
+
+ for pageElement in pageElements:
+ ## Test every bit (bit = template position is used indicator) of a table page element
+ for p in range(0, 7 + 1):
+ positionIsUsed = (self.__bitAtPosition(pageElement, p) == 1)
+ templateIndex.append(positionIsUsed)
+
+ return templateIndex
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def getTemplateCount(self):
+ """
+ Get the number of stored templates.
+
+ @return integer(2 bytes)
+ """
+
+ packetPayload = (
+ FINGERPRINT_TEMPLATECOUNT,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Read successfully
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ templateCount = self.__leftShift(receivedPacketPayload[1], 8)
+ templateCount = templateCount | self.__leftShift(receivedPacketPayload[2], 0)
+ return templateCount
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def readImage(self):
+ """
+ Read the image of a finger and stores it in ImageBuffer.
+
+ @return boolean
+ """
+
+ packetPayload = (
+ FINGERPRINT_READIMAGE,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Image read successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ ## DEBUG: No finger found
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_NOFINGER ):
+ return False
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_READIMAGE ):
+ raise Exception('Could not read image')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ ## TODO:
+ ## Implementation of uploadImage()
+ def setLEDoff(self):
+ packetPayload = (
+ FINGERPRINT_LEDOFF,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+
+ ## Get first reply packet
+ receivedPacket = self.__readPacket()
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+ def setLEDon(self):
+ packetPayload = (
+ FINGERPRINT_LEDON,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+
+ ## Get first reply packet
+ receivedPacket = self.__readPacket()
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+ def downloadImage(self, imageDestination):
+ """
+ Download the image of a finger to host computer.
+
+ @param string imageDestination
+ @return void
+ """
+
+ destinationDirectory = os.path.dirname(imageDestination)
+
+ if ( os.access(destinationDirectory, os.W_OK) == False ):
+ raise ValueError('The given destination directory "' + destinationDirectory + '" is not writable!')
+
+ packetPayload = (
+ FINGERPRINT_DOWNLOADIMAGE,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+
+ ## Get first reply packet
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: The sensor will sent follow-up packets
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ pass
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_DOWNLOADIMAGE ):
+ raise Exception('Could not download image')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ ## Initialize image library
+ resultImage = Image.new('L', (256, 288), 'white')
+ pixels = resultImage.load()
+
+ ## Y coordinate of current pixel
+ line = 0
+
+ ## Get follow-up data packets until the last data packet is received
+ while ( receivedPacketType != FINGERPRINT_ENDDATAPACKET ):
+
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_DATAPACKET and receivedPacketType != FINGERPRINT_ENDDATAPACKET ):
+ raise Exception('The received packet is no data packet!')
+
+ ## X coordinate of current pixel
+ x = 0
+
+ for i in range(0, len(receivedPacketPayload)):
+
+ ## Thanks to Danylo Esterman <soundcracker@gmail.com> for the "multiple with 17" improvement:
+
+ ## Draw left 4 Bits one byte of package
+ pixels[x, line] = (receivedPacketPayload[i] >> 4) * 17
+ x = x + 1
+
+ ## Draw right 4 Bits one byte of package
+ pixels[x, line] = (receivedPacketPayload[i] & 0b00001111) * 17
+ x = x + 1
+
+ line = line + 1
+
+ resultImage.save(imageDestination)
+
+ def convertImage(self, charBufferNumber = 0x01):
+ """
+ Convert the image in ImageBuffer to finger characteristics and store in CharBuffer1 or CharBuffer2.
+
+ @param integer(1 byte) charBufferNumber
+ @return boolean
+ """
+
+ if ( charBufferNumber != 0x01 and charBufferNumber != 0x02 ):
+ raise ValueError('The given charbuffer number is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_CONVERTIMAGE,
+ charBufferNumber,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Image converted
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_MESSYIMAGE ):
+ raise Exception('The image is too messy')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_FEWFEATUREPOINTS ):
+ raise Exception('The image contains too few feature points')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_INVALIDIMAGE ):
+ raise Exception('The image is invalid')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def createTemplate(self):
+ """
+ Combine the characteristics which are stored in CharBuffer1 and CharBuffer2 to a template.
+ The created template will be stored again in CharBuffer1 and CharBuffer2 as the same.
+
+ @return boolean
+ """
+
+ packetPayload = (
+ FINGERPRINT_CREATETEMPLATE,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Template created successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ ## DEBUG: The characteristics not matching
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_CHARACTERISTICSMISMATCH ):
+ return False
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def storeTemplate(self, positionNumber = -1, charBufferNumber = 0x01):
+ """
+ Save a template from the specified CharBuffer to the given position number.
+
+ @param integer(2 bytes) positionNumber
+ @param integer(1 byte) charBufferNumber
+ @return integer
+ """
+
+ ## Find a free index
+ if ( positionNumber == -1 ):
+ for page in range(0, 4):
+ ## Free index found?
+ if ( positionNumber >= 0 ):
+ break
+
+ templateIndex = self.getTemplateIndex(page)
+
+ for i in range(0, len(templateIndex)):
+ ## Index not used?
+ if ( templateIndex[i] == False ):
+ positionNumber = (len(templateIndex) * page) + i
+ break
+
+ if ( positionNumber < 0x0000 or positionNumber >= self.getStorageCapacity() ):
+ raise ValueError('The given position number is invalid!')
+
+ if ( charBufferNumber != 0x01 and charBufferNumber != 0x02 ):
+ raise ValueError('The given charbuffer number is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_STORETEMPLATE,
+ charBufferNumber,
+ self.__rightShift(positionNumber, 8),
+ self.__rightShift(positionNumber, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Template stored successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return positionNumber
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_INVALIDPOSITION ):
+ raise Exception('Could not store template in that position')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_FLASH ):
+ raise Exception('Error writing to flash')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def searchTemplate(self):
+ """
+ Search the finger characteristics in CharBuffer in database.
+
+ Return a tuple that contain the following information:
+ 0: integer(2 bytes) The position number of found template.
+ 1: integer(2 bytes) The accuracy score of found template.
+
+ @return tuple
+ """
+
+ ## CharBuffer1 and CharBuffer2 are the same in this case
+ charBufferNumber = 0x01
+
+ ## Begin search at index 0
+ positionStart = 0x0000
+ templatesCount = self.getStorageCapacity()
+
+ packetPayload = (
+ FINGERPRINT_SEARCHTEMPLATE,
+ charBufferNumber,
+ self.__rightShift(positionStart, 8),
+ self.__rightShift(positionStart, 0),
+ self.__rightShift(templatesCount, 8),
+ self.__rightShift(templatesCount, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Found template
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+
+ positionNumber = self.__leftShift(receivedPacketPayload[1], 8)
+ positionNumber = positionNumber | self.__leftShift(receivedPacketPayload[2], 0)
+
+ accuracyScore = self.__leftShift(receivedPacketPayload[3], 8)
+ accuracyScore = accuracyScore | self.__leftShift(receivedPacketPayload[4], 0)
+
+ return (positionNumber, accuracyScore)
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ ## DEBUG: Did not found a matching template
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_NOTEMPLATEFOUND ):
+ return (-1, -1)
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def loadTemplate(self, positionNumber, charBufferNumber = 0x01):
+ """
+ Load an existing template specified by position number to specified CharBuffer.
+
+ @param integer(2 bytes) positionNumber
+ @param integer(1 byte) charBufferNumber
+ @return boolean
+ """
+
+ if ( positionNumber < 0x0000 or positionNumber >= self.getStorageCapacity() ):
+ raise ValueError('The given position number is invalid!')
+
+ if ( charBufferNumber != 0x01 and charBufferNumber != 0x02 ):
+ raise ValueError('The given charbuffer number is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_LOADTEMPLATE,
+ charBufferNumber,
+ self.__rightShift(positionNumber, 8),
+ self.__rightShift(positionNumber, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Template loaded successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_LOADTEMPLATE ):
+ raise Exception('The template could not be read')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_INVALIDPOSITION ):
+ raise Exception('Could not load template from that position')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def deleteTemplate(self, positionNumber, count = 1):
+ """
+ Delete templates from fingerprint database. Per default one.
+
+ @param integer(2 bytes) positionNumber
+ @param integer(2 bytes) count
+ @return boolean
+ """
+
+ capacity = self.getStorageCapacity()
+
+ if ( positionNumber < 0x0000 or positionNumber >= capacity ):
+ raise ValueError('The given position number is invalid!')
+
+ if ( count < 0x0000 or count > capacity - positionNumber ):
+ raise ValueError('The given count is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_DELETETEMPLATE,
+ self.__rightShift(positionNumber, 8),
+ self.__rightShift(positionNumber, 0),
+ self.__rightShift(count, 8),
+ self.__rightShift(count, 0),
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Template deleted successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_INVALIDPOSITION ):
+ raise Exception('Invalid position')
+
+ ## DEBUG: Could not delete template
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_DELETETEMPLATE ):
+ return False
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def clearDatabase(self):
+ """
+ Clear the complete template database.
+
+ @return boolean
+ """
+
+ packetPayload = (
+ FINGERPRINT_CLEARDATABASE,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Database cleared successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ return True
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ ## DEBUG: Could not clear database
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_CLEARDATABASE ):
+ return False
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def compareCharacteristics(self):
+ """
+ Compare the finger characteristics of CharBuffer1 with CharBuffer2 and return the accuracy score.
+
+ @return integer(2 bytes)
+ """
+
+ packetPayload = (
+ FINGERPRINT_COMPARECHARACTERISTICS,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: Comparison successful
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ accuracyScore = self.__leftShift(receivedPacketPayload[1], 8)
+ accuracyScore = accuracyScore | self.__leftShift(receivedPacketPayload[2], 0)
+ return accuracyScore
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ ## DEBUG: The characteristics do not matching
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_NOTMATCHING ):
+ return 0
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ def uploadCharacteristics(self, charBufferNumber = 0x01, characteristicsData = [0]):
+ """
+ Upload finger characteristics to CharBuffer1 or CharBuffer2.
+
+ @author: David Gilson <davgilson@live.fr>
+
+ @param integer(1 byte) charBufferNumber
+ @param integer(list) characteristicsData
+
+ @return boolean
+ Return true if everything is right.
+ """
+
+ if ( charBufferNumber != 0x01 and charBufferNumber != 0x02 ):
+ raise ValueError('The given charbuffer number is invalid!')
+
+ if ( characteristicsData == [0] ):
+ raise ValueError('The characteristics data is required!')
+
+ maxPacketSize = self.getMaxPacketSize()
+
+ ## Upload command
+
+ packetPayload = (
+ FINGERPRINT_UPLOADCHARACTERISTICS,
+ charBufferNumber
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+
+ ## Get first reply packet
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: The sensor will sent follow-up packets
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ pass
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_PACKETRESPONSEFAIL ):
+ raise Exception('Could not upload characteristics')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ ## Upload data packets
+ packetNbr = len(characteristicsData) / maxPacketSize
+
+ if ( packetNbr <= 1 ):
+ self.__writePacket(FINGERPRINT_ENDDATAPACKET, characteristicsData)
+ else:
+ i = 1
+ while ( i < packetNbr ):
+ lfrom = (i-1) * maxPacketSize
+ lto = lfrom + maxPacketSize
+ self.__writePacket(FINGERPRINT_DATAPACKET, characteristicsData[lfrom:lto])
+ i += 1
+
+ lfrom = (i-1) * maxPacketSize
+ lto = lfrom + maxPacketSize
+ self.__writePacket(FINGERPRINT_ENDDATAPACKET, characteristicsData[lfrom:lto])
+
+ ## Verify uploaded characteristics
+ characterics = self.downloadCharacteristics(charBufferNumber)
+ return (characterics == characteristicsData)
+
+ def getMaxPacketSize(self):
+ """
+ Get the maximum allowed size of packet by sensor.
+
+ @author: David Gilson <davgilson@live.fr>
+
+ @return int
+ Return the max size. Default 32 bytes.
+ """
+
+ packetMaxSizeType = self.getSystemParameters()[5]
+
+ if (packetMaxSizeType == 1):
+ return 64
+ elif (packetMaxSizeType == 2):
+ return 128
+ elif (packetMaxSizeType == 3):
+ return 256
+ else:
+ return 32
+
+ def getStorageCapacity(self):
+ """
+ Get the sensor storage capacity.
+
+ @return int
+ The storage capacity.
+ """
+
+ return self.getSystemParameters()[2]
+
+ def generateRandomNumber(self):
+ """
+ Generate a random 32-bit decimal number.
+
+ @author: Philipp Meisberger <team@pm-codeworks.de>
+
+ @return int
+ The generated random number
+ """
+ packetPayload = (
+ FINGERPRINT_GENERATERANDOMNUMBER,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ pass
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ number = 0
+ number = number | self.__leftShift(receivedPacketPayload[1], 24)
+ number = number | self.__leftShift(receivedPacketPayload[2], 16)
+ number = number | self.__leftShift(receivedPacketPayload[3], 8)
+ number = number | self.__leftShift(receivedPacketPayload[4], 0)
+ return number
+
+ def downloadCharacteristics(self, charBufferNumber = 0x01):
+ """
+ Download the finger characteristics of CharBuffer1 or CharBuffer2.
+
+ @param integer(1 byte) charBufferNumber
+
+ @return list
+ Return a list that contains 512 integer(1 byte) elements of the characteristic.
+ """
+
+ if ( charBufferNumber != 0x01 and charBufferNumber != 0x02 ):
+ raise ValueError('The given charbuffer number is invalid!')
+
+ packetPayload = (
+ FINGERPRINT_DOWNLOADCHARACTERISTICS,
+ charBufferNumber,
+ )
+
+ self.__writePacket(FINGERPRINT_COMMANDPACKET, packetPayload)
+
+ ## Get first reply packet
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_ACKPACKET ):
+ raise Exception('The received packet is no ack packet!')
+
+ ## DEBUG: The sensor will sent follow-up packets
+ if ( receivedPacketPayload[0] == FINGERPRINT_OK ):
+ pass
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_COMMUNICATION ):
+ raise Exception('Communication error')
+
+ elif ( receivedPacketPayload[0] == FINGERPRINT_ERROR_DOWNLOADCHARACTERISTICS ):
+ raise Exception('Could not download characteristics')
+
+ else:
+ raise Exception('Unknown error '+ hex(receivedPacketPayload[0]))
+
+ completePayload = []
+
+ ## Get follow-up data packets until the last data packet is received
+ while ( receivedPacketType != FINGERPRINT_ENDDATAPACKET ):
+
+ receivedPacket = self.__readPacket()
+
+ receivedPacketType = receivedPacket[0]
+ receivedPacketPayload = receivedPacket[1]
+
+ if ( receivedPacketType != FINGERPRINT_DATAPACKET and receivedPacketType != FINGERPRINT_ENDDATAPACKET ):
+ raise Exception('The received packet is no data packet!')
+
+ for i in range(0, len(receivedPacketPayload)):
+ completePayload.append(receivedPacketPayload[i])
+
+ return completePayload
--- /dev/null
+#!C:\Strawberry\perl\bin\perl.exe
+
+use strict;
+use FindBin qw($Bin);
+# use lib ('CGI/api/lib/perl5');
+# use lib ('CGI/api/lib');
+use lib ($Bin.'/CGI/api/lib/perl5');
+use lib ($Bin.'/CGI/api/lib');
+# use lib ('./api/lib/perl5');
+# use lib ('./api/lib');
+use File::Basename qw/dirname basename/;
+use Template;
+# use Template::Constants qw( :debug );
+use CGI;
+#use CGI::Carp qw(fatalsToBrowser);
+use CGI::Cookie;
+use Data::Dumper;
+use JSON::PP;
+
+use dksconfig qw/$sitecfg/;
+# use session;
+
+my $skl = "skeleton/index.tt";
+my $cgi = new CGI();
+my $p=();
+my $cookie;
+my $vars = $sitecfg;
+
+#$vars->{filepath} = substr($cgi->url({-absolute=>1}),length($vars->{basepath})+1);
+$vars->{filepath} = substr($ENV{PATH_INFO},1);
+$vars->{baseurl} = $cgi->url({-base=>1}).$vars->{basepath};
+
+if ($vars->{basepath} eq "/"){
+ $vars->{siteurl} = $cgi->url({-base=>1});
+}else {
+ $vars->{siteurl} = $cgi->url({-base=>1}).dirname($vars->{basepath});
+ $vars->{docroot} = $vars->{docroot}.dirname($vars->{basepath});
+ #$vars->{sitepath} = dirname($vars->{basepath});
+}
+
+
+if ($vars->{filepath} ne ""){
+ $vars->{suffix} = substr($vars->{filepath},rindex($vars->{filepath},'.'));
+ $vars->{page} = $vars->{filepath};
+ $vars->{page} =~ s/html$/tt/;
+}
+$vars->{abspath} = "";
+
+# my $sess = ();
+# my $se = session->new();
+# $p->{sid} = $cgi->cookie($vars->{cookiename});
+if ($cgi->request_method() eq "GET"){
+ my @params = $cgi->param();
+ foreach my $pp (@params){
+ $p->{$pp} = $cgi->param($pp);
+ }
+
+}
+
+# if ($cgi->request_method() eq "POST"){
+
+# my @params = $cgi->param();
+# foreach my $pp (@params){
+# $p->{$pp} = $cgi->param($pp);
+# }
+# # $vars->{hasposts} = $p;
+# # if (exists($p->{'btnlogin'})){
+# # my $ret = $se->checklogin($p->{login},$p->{password});
+# # if ($ret->{sid} ne ""){
+# # $p->{sid} = $ret->{sid};
+# # $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>$p->{sid},-httponly => 1);
+# # }else {
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = "message.tt";
+# # }
+# # }
+# # if (exists($p->{'btnregister'})){
+
+# # my $ret = $se->registeruser($p);
+
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = $ret->{page};
+# # }
+# # if (exists($p->{'btnforgotpassword'})){
+# # my $ret = $se->passwordforgotten($p->{email});
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = "message.tt";
+# # }
+# # if (exists($p->{'btnvalidateemail'})){
+# # my $ret = $se->validateaccount($p);
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = "message.tt";
+# # }
+# # if (exists($p->{'btnresendcode'})){
+# # my $ret = $se->resendcode($p->{email});
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = "message.tt";
+# # }
+
+# # if (exists($p->{logout})){
+# # $se->deletesession($p->{sid});
+# # $p->{sid} = "";
+# # $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1);
+# # }
+# # if (exists($p->{btndeleteprofile})){
+# # my $ret = $se->deleteprofile($p->{deleteprofile});
+# # $vars->{message} = $ret->{message};
+# # $vars->{messagetype} = $ret->{messagetype};
+# # $vars->{page} = "message.tt";
+# # if (exists($ret->{sid})){
+# # $p->{sid} = "";
+# # }
+# # $cookie = CGI::Cookie->new(-name=>$vars->{cookiename},-value=>"",-httponly => 1);
+# # }
+# }
+
+# # if ($p->{sid} ne ""){
+# # $sess = $se->getsession($p->{sid});
+# # }
+
+
+# #$vars->{beforex} = $vars->{page};
+# if (!exists($sess->{id}) || (!exists($p->{sid})) || $p->{sid} eq ""){
+# $skl = "skeleton/index.tt";
+# }
+# # if ($vars->{page} eq "deleteprofile.tt") {
+# # $skl = "skeleton/login.tt";
+# # }
+# # my ($appname) = $ENV{REQUEST_URI} =~ /.*\/module\/(\w+)\/.*/;
+# if ($p->{sid} ne ""){
+# $vars->{session} = $sess;
+# }
+# #SESSION - End
+# # #BEGIN - Browser Blocking
+# # if (($ENV{HTTP_USER_AGENT} !~ /Chrome/) || ($ENV{HTTP_USER_AGENT} =~ /Edge/) || ($ENV{HTTP_USER_AGENT} =~ /Firefox/)){
+# # $skl = "skeleton/browser.tt";
+# # }
+# # #END - Browser Blocking
+my $ctype = 'text/html';
+if ($vars->{suffix} eq ".js"){
+ $ctype= "text/javascript";
+} elsif ($vars->{suffix} eq ".css"){
+ $ctype = "text/css";
+}
+#print $cgi->header(-type=>$ctype, -charset=>"utf-8",-cookie => $cookie);
+print $cgi->header(-type=>$ctype, -charset=>"utf-8");
+
+# print dirname($ENV{"SCRIPT_FILENAME"});
+
+my $template = Template->new({INCLUDE_PATH => [$Bin.'/CGI/tmpl']});
+#}
+
+my @lv = split(/\//,$vars->{filepath});
+my $absnum = scalar(@lv)-1;
+
+for (my $i=0;$i<$absnum;$i++){
+ $vars->{abspath} .= "../";
+}
+if ($vars->{page} =~ /^app/){
+ my @spl = split("/",$vars->{page});
+ $vars->{app} = $spl[1];
+}
+# $vars->{page} = $vars->{page};
+if ($vars->{page} =~ /module/){
+ $vars->{module} = basename(dirname($vars->{page}));
+}
+$vars->{pagename} = basename($vars->{page});
+$vars->{pagename} =~ s/\.tt$//;
+# my ($appname) = $ENV{REQUEST_URI} =~ /.*\/apps\/(\w+)\/.*/;
+#$vars->{requri} = $ENV{REQUEST_URI};
+
+#BEGIN - iFrame - Modules
+#$skl ne "skeleton/login.tt" &&
+if ($vars->{page} =~ /module/){
+ $skl = "skeleton/module.tt";
+ if ($vars->{page} !~ /\.tt$/) {
+ $skl = "skeleton/file.tt";
+ }
+ $vars->{params}= $p;
+}elsif ($vars->{page} =~ /^app/){
+ $skl = "skeleton/app.tt";
+ if ($vars->{page} !~ /\.tt$/) {
+ $skl = "skeleton/file.tt";
+ }
+ $vars->{params}= $p;
+}
+
+#END - iFrame - Modules
+
+$template->process($skl,$vars) || die "Template process failed: ", $template->error(), "\n";
+#print '/*<pre >'.Dumper($vars)."<pre>*/";
+
+
+
--- /dev/null
+[% USE date %]
+[% vstamp=date.format(date.now, '%d%m%Y%H%M%S') %]
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="0" />
+<link rel="stylesheet" href="[% abspath %][% staticpath %]css/w3pro.css?v=[% vstamp %]">
+<title>Invoice Journal</title>
+</head>
+<body>
+<!--begin sidebar-->
+<div class="w3-sidebar w3-card-4 w3-border-right w3-theme-light" id="sidebar" style="width: 210px; z-index: 3;">
+ <div class="w3-bar w3-blue-grey" style="text-transform: uppercase;">
+<a href="index.html" >
+<img src="[% abspath %][% staticpath %]img/hourtrax.png" style="width: 100px; "><br/>[% app %]</a> <a href="[% abspath %]index.html">Apps</a>
+<button onclick="closeSidebar();"
+class="w3-bar-item w3-button w3-right w3-padding-16" title="close Sidebar">×</button>
+</div>
+<div class="w3-bar-block">
+ <a href="javascript:admin.loadpage('module/timetrack/index.html','Pointages');" class="w3-bar-item w3-button">Pointages</a>
+ <a href="javascript:admin.loadpage('module/members/index.html','Employé(e)s');" class="w3-bar-item w3-button">Employé(e)s</a>
+ <a href="javascript:admin.loadpage('module/settings/index.html','Système');" class="w3-bar-item w3-button">Système</a></li>
+
+</div>
+
+
+</div>
+<!--end sidebar -->
+<!--start new content -->
+<div class="w3-display-container" style="min-with: 320px;">
+
+ <div class="w3-container" style="margin: 0px; padding: 0px;">
+ <header class="w3-top w3-bar w3-border-bottom w3-theme-light">
+ <button class="w3-bar-item w3-button w3-blue-grey" id="btnsidebar" onclick="openSidebar();"><img src="[% abspath %][% staticpath %]img/icons/menu_white.svg" style="height: 33px;" /></button>
+ <h5 class="w3-bar-item" id="modulename" style="margin-left: 150px; max-width: 300px; overflow: hidden;"></h5>
+ <!--<a class="w3-bar-item w3-button w3-right w3-border w3-blue-grey" href="javascript:admin.logout();"><img src="img/icons/logout_white.svg" style="height: 32px;" /></a>-->
+
+ </header>
+ <!-- <div class="main-panel"> -->
+ <div class="w3-display-container" id="main">
+
+ <iframe id="moduleframe" src="" sandbox="allow-forms allow-pointer-lock allow-same-origin allow-scripts allow-top-navigation allow-modals allow-popups allow-popups-to-escape-sandbox" style="margin-top: 48px; bottom: 0px;border: 0px;height: 90vh;width: 100%; overflow-y: scroll;"></iframe>
+ </div>
+ <!-- </div> -->
+ </div>
+</div>
+<script>
+var app = "[% app %]";
+</script>
+<script src="[% abspath %][% staticpath %]js/request.js?v=[% vstamp %]"></script>
+<script src="[% abspath %][% staticpath %]js/admin.js?v=[% vstamp %]"></script>
+<!-- end new content -->
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+var tbl=null;
+
+
+function initpage(){
+ //console.log(mpref.cfg);
+ //console.log("APP:" + parent.app);
+ flatpickr(".timefield",{altInput: true,
+ altFormat: "H:i",
+ allowInput: true,
+ enableTime: true,
+ noCalendar: true,
+ dateFormat: "H:i",
+ time_24hr: true,
+ "locale": "fr",
+ });
+ flatpickr(".datefield",{altInput: true,
+ altFormat: "d.m.Y",
+ dateFormat: "Y-m-d",
+ allowInput: true,
+ "locale": "fr",
+ });
+ tbl = new Tabulator("#tbl_staff", {
+ headerFilterPlaceholder:"filtre...",
+ height: "95vh",
+ layout:"fitColumns",
+ selectable:1,
+ locale:"fr",
+ columns: [
+ {title:"Nom", field:"surname",headerFilter:"input"},
+ {title:"Prénom", field:"prename",headerFilter:"input"},
+ {title:"Blocké", field:"blocked",formatter:"tickCross",
+ formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span style="color: red;">X</span>'}},
+ {title:"Invisible", field:"disabled",formatter:"tickCross",
+ formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span style="color: red;">X</span>'}},
+ ]
+ });
+ gettbldata();
+ return false;
+}
+
+function gettbldata(){
+ sql = "SELECT id, prename, surname, blocked, disabled FROM staff;";
+ req.reqdata("POST","db.cgi",{ "sql":sql},loadtbldata);
+ return false;
+}
+
+function loadtbldata(data){
+ console.log(data);
+ if (data){
+ tbl.setData(data);
+ }
+ return false;
+}
+
+function edit(){
+ var udata = tbl.getSelectedData();
+ if (udata[0]){
+ console.log(udata);
+ req.reqdata("POST","db.cgi",{"get":"staff","filter":"id=" + udata[0].id},loadstaffdata);
+ }
+ return false;
+}
+
+function loadstaffdata(data){
+ if (data){
+ fillformbydataclass('staff',data[0],false);
+ document.getElementById('dlgstaff').style.display='block';
+ }
+}
+
+function add(){
+ cleanform('staff');
+ document.getElementById('dlgstaff').style.display='block';
+}
+
+function remove(){
+ var udata = tbl.getSelectedData();
+ if (udata[0]){
+ fillformbydataclass('staffremove',udata[0],false);
+ document.getElementById('dlgstaffremove').style.display='block';
+ }
+}
+
+function staffremove(ident){
+ req.reqdata("POST","db.cgi",{"del":"1","ident_staff_id":document.getElementById("ident_" + ident + "_id")},afterstaffremove);
+
+}
+
+function afterstaffremove(){
+ gettbldata();
+ formsaved();
+ document.getElementById('dlgstaffremove').style.display='none';
+}
+
+function afterstaffsaved(){
+ document.getElementById('dlgstaff').style.display='none';
+}
\ No newline at end of file
--- /dev/null
+[% PROCESS macro/fields.tt %]
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+
+ <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%][% staticpath %]img/icons/remove_white.svg" style="height: 24px;"/></button>
+ <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="edit();"><img src="[% abspath%][% staticpath %]img/icons/edit_white.svg" style="height: 24px;"/></button>
+ <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%][% staticpath %]img/icons/plus_white.svg" style="height: 24px;"/></button>
+</div>
+</div>
+<div class="w3-display-container" id="tbl_staff" style="margin-top: 50px;"></div>
+<div id="dlgstaff" class="w3-modal">
+ <div class="w3-modal-content w3-animate-top w3-card-4">
+ <header class="w3-container">
+ <span onclick="document.getElementById('dlgstaff').style.display='none'; return false;"
+ class="w3-button w3-display-topright">×</span>
+ <h2>Employé(e)</h2>
+ </header>
+ <div class="w3-container">
+
+ <form id="frm_staff">
+ [% fieldhidden("id","staff","ident",'') %]
+ [% fieldeditbox("surname","staff","Nom",'w3-half','','') %]
+ [% fieldeditbox("prename","staff","Prénom",'w3-half','','') %]
+ [% fieldpasswordbox("pin","staff","Code Pin",'w3-third','','') %]
+ [% fieldcheckbox("disabled","staff","invisible",'w3-third','','') %]
+ [% fieldcheckbox("blocked","staff","bloqué",'w3-third','','') %]
+ <div class="w3-container">
+ [% fieldtimebox("dailyhours","staff","heures par jour",'w3-third','','') %]
+ [% fieldtimebox("pausehours","staff","pause à deduire",'w3-third','','') %]
+ </div>
+ </form>
+ </div>
+ <footer class="w3-container w3-right-align w3-padding-16">
+
+ <button class="w3-button w3-theme-light w3-border" onclick="document.getElementById('dlgstaff').style.display='none'; return false;">annuler</button>
+ [% formdlgsavebutton('users','sauvegarder','afterstaffsaved') %]
+ </footer>
+ </div>
+</div>
+<div id="dlgstaffremove" class="w3-modal">
+ <div class="w3-modal-content w3-animate-top w3-card-4">
+ <header class="w3-container">
+ <span onclick="document.getElementById('dlgstaffremove').style.display='none'; return false;"
+ class="w3-button w3-display-topright">×</span>
+ <h2>Supprimer Employé(e)?</h2>
+ </header>
+ <div class="w3-container">
+
+ <form id="frm_staffremove">
+ [% fieldhidden("id","staffremove","ident",'') %]
+ [% fieldeditbox("surname","staffremove","Nom",'w3-half','readonly','') %]
+ [% fieldeditbox("prename","staffremove","Prénom",'w3-half','readonly','') %]
+ </form>
+ </div>
+ <footer class="w3-container w3-right-align w3-padding-16">
+
+ <button class="w3-button w3-theme-light w3-border" onclick="document.getElementById('dlgstaffremove').style.display='none'; return false;">annuler</button>
+ <button class="w3-button w3-red w3-margin w3-right-align" onclick="removestaff('staffremove');return false;">supprimer</button>
+ </footer>
+ </div>
+</div>
\ No newline at end of file
--- /dev/null
+[% PROCESS macro/fields.tt %]
+<div class="w3-display-container">
+ <div class="w3-container w3-margin">
+ <h4>Accès Admin</h4>
+ <form id="frm_adminlogin">
+ <div class="w3-container">
+ [% fieldeditbox("name","login",'Login','','') %]
+ [% fieldpasswordbox("password1","login",'Mot de passe','','') %]
+ [% fieldpasswordbox("password2","login",'Répérer mot de passe','','') %]
+ </div>
+ </form>
+ <div class="w3-container w3-right-align w3-padding-16">
+ <button class="w3-button w3-blue-grey w3-margin w3-right-align" onclick="savelogin();return false;">sauvegarder</button>
+ </div>
+ </div>
+ <div class="w3-container w3-margin" >
+ <h4>Réseau</h4>
+ <form id="frm_system">
+ <div class="w3-container">
+ [% fieldeditbox("hostname","system",'Hostname','','readonly','') %]
+ [% fieldselectbox("wlanssid","system",'Wifi SSID','','','') %]
+ [% fieldpasswordbox ("wlanpassword","system",'Wifi Mot de passe','','','') %]
+ </div>
+ </form>
+ <div class="w3-container w3-right-align w3-padding-16">
+ <button class="w3-button w3-blue-grey w3-margin w3-right-align" onclick="savelogin();return false;">sauvegarder</button>
+ </div>
+
+ </div>
+
+</div>
+
+
+
\ No newline at end of file
--- /dev/null
+var tbl=null;
+
+var tbltypes = [{"value":"trackbyday","label":"pointage par jour"},
+{"value":"trackbystaff","label":"pointage par employé(e) et mois"},{"value":"trackincomplete","label":"pointages incomplètes"}];
+
+curtbl = "trackbyday";
+function initpage(){
+ console.log(mpref.cfg);
+ console.log("APP:" + parent.app);
+ flatpickr(".timefield",{altInput: true,
+ altFormat: "H:M",
+ dateFormat: "H:M",
+ allowInput: true,
+ "locale": "fr",
+ });
+ flatpickr(".datefield",{altInput: true,
+ altFormat: "d.m.Y H:M",
+ dateFormat: "Y-m-d H:M",
+ allowInput: true,
+ "locale": "fr",
+ });
+ tbl = new Tabulator("#tbl_clocks", {
+ headerFilterPlaceholder:"filtre...",
+ height: "95vh",
+ layout:"fitColumns",
+ selectable:1,
+ locale:"fr",
+ // responsiveLayout:"collapse",
+ groupBy:["staffname"],
+ groupStartOpen:[true, false],
+ groupHeader:[
+ function(value, count, data){ //generate header contents for gender groups
+ return value;
+ },
+ function(value, count, data){ //generate header contents for color groups
+ return value;
+ },
+ ],
+ columns: [
+ {title:"Mois", field:"dspdaydate",formatter:"datetime", formatterParams:{
+ inputFormat:"DD.MM.YYYY",
+ outputFormat:"MMM YYYY",
+ invalidPlaceholder:""},headerFilter:"input"},
+ {title:"Date", field:"dspdaydate",align: "right",formatter:"datetime", formatterParams:{
+ inputFormat:"DD.MM.YYYY",
+ outputFormat:"DD.MM.YYYY",
+ invalidPlaceholder:""},headerFilter:"input"},
+ {title:"Nom", field:"staffname",headerFilter:"input"},
+ {title:"Entrée",align: "right",field:"entry"},
+ {title:"Sortie",align: "right",field:"leave"},
+ {title:"Incomplète",field:"incomplete",formatter:"tickCross",
+ formatterParams:{allowEmpty:true,allowTruthy:true,tickElement:'<span style="color: red;">X</span>'}},
+ {title:"Total", field:"hoursworked",align: "right",formatter:"money",sorter:"number",
+ formatterParams:{decimal:",",thousand:".",symbol:"",symbolAfter:"h",precision:2},
+ bottomCalc:"sum", bottomCalcParams:{precision:2},bottomCalcFormatterParams:{decimal:",",thousand:".",symbol:"",symbolAfter:"h",precision:2}}
+ ]
+ });
+ gettbldata();
+
+}
+
+function gettbldata(){
+ sql = "select hrx.id,hrx.id_staff, coalesce(upper(hrx.surname),'') || ' ' || coalesce(hrx.prename,'') as staffname,date(hrx.stamp_in) as daydate,strftime(\"%d.%m.%Y\",date(hrx.stamp_in)) as dspdaydate,strftime(\"%H:%M\",hrx.stamp_in) as entry,strftime(\"%H:%M\",hrx.stamp_out) as leave,printf(\"%.2f\",CAST ((julianday(hrx.stamp_out) - julianday(hrx.stamp_in)) * 24 as REAL)) as hoursworked,hrx.incomplete from (SELECT hr.id, hr.id_staff, st.prename,st.surname, hr.stamp_in, case when hr.stamp_out is null then date(hr.stamp_in,'+1 day') || ' 00:00:00' else hr.stamp_out end as stamp_out,case when hr.stamp_out is null then true else null end as incomplete FROM hours hr join staff st on (hr.id_staff=st.id)) hrx order by hrx.stamp_in,hrx.id_staff;";
+ req.reqdata("POST","db.cgi",{ "sql":sql},loadtbldata);
+
+}
+
+function loadtbldata(data){
+ console.log(data);
+ if (data){
+ tbl.setData(data);
+ }
+}
+
+function edit(){
+ var udata = tbl.getSelectedData();
+ if (udata[0]){
+ console.log(udata);
+
+ }
+
+}
+
+function add(){
+
+}
+
+function remove(){
+
+}
\ No newline at end of file
--- /dev/null
+<div class="w3-top w3-border-bottom w3-white">
+<div class="w3-bar">
+
+ <button class="w3-bar-item w3-button w3-border w3-right w3-red" onclick="remove();"><img src="[% abspath%][% staticpath %]img/icons/remove_white.svg" style="height: 24px;"/></button>
+ <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="edit();"><img src="[% abspath%][% staticpath %]img/icons/edit_white.svg" style="height: 24px;"/></button>
+ <button class="w3-bar-item w3-button w3-border w3-right w3-blue-grey" onclick="add();"><img src="[% abspath%][% staticpath %]img/icons/plus_white.svg" style="height: 24px;"/></button>
+</div>
+</div>
+<div class="w3-display-container" id="tbl_clocks" style="margin-top: 50px;"></div>
\ No newline at end of file
--- /dev/null
+var currentuser= null;
+var currentpanel = null;
+var currentpinfield = null;
+var lasttrack = null;
+var interval = null;
+var intervaltime = 60;
+
+function initpage(){
+ loadusers();
+}
+
+function loadpanel(pnlid){
+ var pnls = document.querySelectorAll(".clockpanel");
+
+ for (var i in pnls){
+ //var pnl = pnls[i];
+ if (pnls[i].id){
+ //console.log(pnls[i].id);
+ pnls[i].style.display = 'none';
+ }
+ //
+ }
+ currentpanel = pnlid;
+ console.log("Panel: " + currentpanel + " Users" + JSON.stringify(currentuser));
+ //console.log(currentuser);
+ if ((pnlid == 'users') || (pnlid == null)){
+ loadusers();
+ }
+ else if (pnlid == 'userpin'){
+ loaduserpin();
+ }
+ else if (pnlid == 'newuserpin'){
+ loadnewuserpin();
+ }
+ else if (pnlid == 'timetracker'){
+ console.log("before timetracker");
+ loadpnltimetracker();
+ }
+ else if (pnlid == 'status'){
+ loadstatus();
+ }
+ return false;
+}
+
+function displaypanel(){
+ intervaltime = 60;
+ if ((currentpanel ) && (currentpanel != 'users')) {
+ startCheckIdle();
+ } else {
+ stopCheckIdle();
+ }
+ console.log("Current Panel:" + currentpanel);
+ if (currentpanel){
+ document.getElementById("pnl_" + currentpanel).style.display = 'block';
+ }
+
+ return false;
+}
+
+function loadusers(){
+ req.reqdata("POST","db.cgi",{"sql":"select id,prename,surname from staff where disabled is null and blocked is null;"},displayusers);
+ document.getElementById("sidebtn_pnlusers").style.display = 'none';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'none';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ currentuser=null;
+ displaypanel();
+ return false;
+}
+
+function displayusers(data){
+ document.getElementById('userlist').innerHTML="";
+ //console.log(data);
+
+ if (data){
+ // if (data.length > 20){
+ // document.getElementById('btnscrollup').style.display = 'inline';
+ // document.getElementById('btnscrolldown').style.display = 'inline';
+ // } else {
+ // document.getElementById('btnscrollup').style.display = 'none';
+ // document.getElementById('btnscrolldown').style.display = 'none';
+ // }
+ var ulist = "";
+ for (var i in data){
+ ulist += '<button class="w3-button w3-col m3 w3-blue-grey w3-border" onclick="setuser(\''+ data[i].id+'\');">'+data[i].prename+'<br>'+data[i].surname+'</button>';
+ }
+ document.getElementById('userlist').innerHTML=ulist;
+ }
+}
+
+function loaduserpin(){
+ document.getElementById("pincode").value='';
+ currentpinfield="pincode";
+ document.getElementById("usergreeting1").innerHTML = 'Bonjour, <strong>'+ currentuser.prename + ' ' + currentuser.surname + '</strong>';
+ document.getElementById("sidebtn_pnlusers").style.display = 'block';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'none';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ displaypanel();
+ return false;
+}
+
+function loadnewuserpin(){
+ document.getElementById("newpincode1").value='';
+ document.getElementById("newpincode2").value='';
+ document.getElementById("usergreeting2").innerHTML = 'Bonjour, <strong>'+ currentuser.prename + ' ' + currentuser.surname + '</strong>';
+ currentpinfield="newpincode1";
+ document.getElementById("sidebtn_pnlusers").style.display = 'block';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'none';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ displaypanel();
+ return false;
+}
+
+function loadpnltimetracker(){
+ console.log("load time tracker");
+ document.getElementById("trackusername").innerHTML="<strong>" + currentuser.prename + " " + currentuser.surname + "</strong>";
+ document.getElementById("sidebtn_pnlusers").style.display = 'block';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'block';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ displaypanel();
+ return false;
+}
+
+function loadloader(){
+ document.getElementById("sidebtn_pnlusers").style.display = 'block';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'none';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ displaypanel();
+ return false;
+}
+
+function loadstatus(){
+ document.getElementById("sidebtn_pnlusers").style.display = 'block';
+ document.getElementById("sidebtn_pnlchangepin").style.display = 'none';
+ document.getElementById("sidebtn_pnluserpin").style.display = 'none';
+ displaypanel();
+ return false;
+}
+
+function setuser(id){
+ var sqlq = "select id,prename,surname,pin,blocked,disabled from staff where id="+id+";";
+ req.reqdata("POST","db.cgi",{"sql":sqlq},loaduser);
+ return false;
+}
+
+function loaduser(data){
+ if (data){
+ currentuser = data[0];
+ console.log(currentuser);
+ console.log("after cuser");
+ if ((currentuser.pin == "" || currentuser.pin == null)){
+ loadpanel('newuserpin');
+ } else {
+ loadpanel('userpin');
+ }
+ }else {
+ currentuser = null;
+ }
+ return false;
+}
+
+function checkuserpin(){
+ var sqlq = "select pin,blocked,disabled from staff where id="+currentuser.id+";";
+ req.reqdata("POST","db.cgi",{"sql":sqlq},loadtimetracker);
+ return false;
+}
+
+
+
+function loadtimetracker(data){
+ var userpin= document.getElementById("pincode").value;
+ if (data){
+ console.log(userpin + "<=>" + data[0].pin);
+ if (userpin==data[0].pin){
+ req.reqdata("POST","db.cgi",{"sql":"select id,strftime(\"%d.%m.%Y\",date(stamp_in)) as daydate,strftime(\"%H:%M\",stamp_in) as stamp_in,strftime(\"%H:%M\",stamp_out) as stamp_out,date(stamp_in) as cmpdaydate from hours where id_staff="+ currentuser.id+" order by date(stamp_in) desc,stamp_in desc,stamp_out desc LIMIT 1;"},loadtrackdata);
+ loadpanel("timetracker");
+ } else {
+ document.getElementById("pincode").value = "";
+ intervaltime=60;
+ document.getElementById("usergreeting1").innerHTML = '<span style="color: red;">Code PIN pas correcte!</span>';
+ }
+ }
+ return false;
+}
+
+function loadtrackdata(data){
+ console.log(data);
+ var cdate = new Date().toISOString().substring(0,10);
+ document.getElementById("btntrackin").disabled = true;
+ document.getElementById("btntrackout").disabled = true;
+ //console.log(cdate + "<=>" + data[0].cmpdaydate);
+ if (data && data[0] && data.length > 0){
+ lasttrack=data[0];
+ if (data[0].cmpdaydate && (data[0].cmpdaydate == cdate)){
+ console.log("IN:" + data[0].stamp_in);
+ console.log("out:" + data[0].stamp_out);
+ if ((data[0].stamp_in != null) && (data[0].stamp_out != null)){
+ document.getElementById("btntrackin").disabled = false;
+ } else {
+ document.getElementById("btntrackout").disabled = false;
+ }
+ } else {
+ document.getElementById("btntrackin").disabled = false;
+ }
+ //
+ document.getElementById("lasttrack").innerHTML = "<u>Dernier Pointage</u>:<br/><strong>" + ((data[0].daydate)?data[0].daydate:"") + "</strong> "+ ((data[0].stamp_in)?" Entrée:<strong>" + data[0].stamp_in:"N/A") + "</strong> Sortie: <strong>" +((data[0].stamp_out)?data[0].stamp_out:"N/A") + "</strong>";
+ } else {
+ lasttrack = null;
+ document.getElementById("btntrackin").disabled = false;
+ document.getElementById("lasttrack").innerHTML = "";
+ }
+
+ return false;
+}
+
+function setnewuserpin(){
+ var pin1 = document.getElementById("newpincode1").value;
+ var pin2 = document.getElementById("newpincode2").value;
+ console.log(pin1 + "<=>" + pin2);
+ if (pin1.length >= 4 && pin2.length == 0){
+ currentpinfield = "newpincode2";
+ return false;
+ }
+ if (pin1.length < 4 || pin2.length < 4){
+ clearUserPin();
+ document.getElementById("usergreeting2").innerHTML = '<span>Entrez un code pin de min 4 nombres!';
+ return false;
+ } else if (pin1 != pin2){
+ clearUserPin();
+ document.getElementById("usergreeting2").innerHTML = '<span>Les codes ne sont pas identiques!';
+ return false;
+ }
+ req.reqdata("POST","db.cgi",{"sql":"update staff set pin='" + pin1 + "' where id=" + currentuser.id + ";"},afterpincodeupdate);
+ return false;
+}
+
+function afterpincodeupdate(data){
+ setuser(currentuser.id);
+ return false;
+}
+
+function setPinValue(key){
+ intervaltime = 60;
+ var cobj = document.getElementById(currentpinfield);
+ var cpin = cobj.value;
+ cobj.value = cpin + key;
+ return false;
+}
+
+function clearUserPin(){
+ intervaltime = 60;
+ document.getElementById("pincode").value = "";
+ document.getElementById("newpincode1").value = "";
+ document.getElementById("newpincode2").value = "";
+ return false;
+}
+
+function setTrack(direction){
+ var sql = "";
+ //intervaltime = 60;
+ if (direction == 'in'){
+ sql = "INSERT INTO hours (id_staff, stamp_in) VALUES ("+currentuser.id+",CURRENT_TIMESTAMP);";
+ } else if (direction == 'out'){
+ sql = "UPDATE hours SET stamp_out=CURRENT_TIMESTAMP where id_staff='"+ currentuser.id+"' and id='"+lasttrack.id+"';";
+ }
+ //console.log(sql);
+ req.reqdata("POST","db.cgi",{"sql":sql},showstatus);
+}
+
+function showstatus(data){
+ //console.log(data);
+ if (data && data.success) { document.getElementById("statusmsg").innerHTML = "Merci, le pointage a été enregistré!"}
+ loadpanel("status");
+ setTimeout("loadpanel('users');",3000);
+}
+
+function checkIdle(){
+ //console.log("check idle");
+ if (intervaltime < 0){
+ //console.log("change view");
+ location.href = location.href;
+ } else {
+
+ intervaltime = intervaltime - 1;
+ //console.log(intervaltime);
+ }
+}
+function startCheckIdle(){
+ interval = window.setInterval("checkIdle()",1000);
+
+}
+function stopCheckIdle(){
+ window.clearInterval(interval);
+}
+
+
--- /dev/null
+[% USE date %]
+[% vstamp=date.format(date.now, '%d%m%Y%H%M%S') %]
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="0" />
+<link rel="stylesheet" href="[% abspath %][% staticpath %]css/w3pro.css?v=[% vstamp %]">
+<link rel="stylesheet" href="[% abspath %][% staticpath %]css/clock2.css?v=[% vstamp %]">
+<title>Time Clock</title>
+</head>
+<body style="max-height: 470px;">
+ <div class="w3-display-container" style="width: 800px; height:470px; overflow: hidden;">
+<!--begin sidebar-->
+<div class="w3-sidebar w3-card-4 w3-border-right w3-theme-light " id="sidebar" style="width: 200px; z-index: 3;overflow: hidden;">
+ <div class="w3-bar w3-blue-grey w3-center" style="text-transform: uppercase;">
+<a href="index.html" >
+<img src="[% abspath %][% staticpath %]img/hourtrax.png" style="width: 100px; "></a>
+
+<!--<a href="[% abspath %]index.html">Apps</a>-->
+<!-- <button onclick="closeSidebar();"
+class="w3-bar-item w3-button w3-right w3-padding-16" title="close Sidebar">×</button> -->
+</div>
+<div class="w3-bar-block" >
+ <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnlusers" onclick="loadpanel('users');" style="display: none; ">Autre Utilisateur</button>
+ <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnlchangepin" onclick="loadpanel('newuserpin');" style="display: none;">Changer PIN</button>
+ <button class="w3-bar-item w3-button w3-border w3-margin-top w3-light-grey w3-padding-large" id="sidebtn_pnluserpin" onclick="loadpanel('userpin');" style="display: none;">Pointer</button>
+</div>
+
+
+</div>
+<!--end sidebar -->
+<!--start new content -->
+<div class="w3-display-container w3-border" style="margin-left: 200px;width: 600px;height: 470px; overflow: hidden; " >
+ <div class="w3-container w3-padding-24 clockpanel" id="pnl_users" style="display: block;">
+ <div class="w3-container"></div>
+ <div class="w3-row" id="userlist" style="height: 430px; overflow-y: scroll;">
+ </div>
+ <div class="w3-container"></div>
+ </div>
+ <div class="w3-container w3-padding-24 clockpanel" id="pnl_userpin" style="display: none;">
+ <div class="w3-display-top-middle">
+ <div class="w3-container" id="usergreeting1"></div>
+ <div class="w3-container"><input type="password" class="w3-input w3-center w3-xlarge" value="" id="pincode" readonly/></div>
+ <div id="pinmessage" class="w3-container"></div>
+ <div id="keypad" class="w3-row">
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('1');">1</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('2');">2</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('3');">3</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('4');">4</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('5');">5</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('6');">6</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('7');">7</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('8');">8</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('9');">9</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey w3-text-red" onclick="clearUserPin();">COR</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('0');">0</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey w3-text-green" onclick="checkuserpin();">OK</button>
+ </div>
+ </div>
+ </div>
+ <div class="w3-container w3-padding-24 clockpanel" id="pnl_newuserpin" style=" display: none;">
+ <div class="w3-display-top-middle">
+ <div class="w3-container" id="usergreeting2">Bonjour Prename,</div>
+ <div class="w3-container"><input class="w3-input w3-half w3-center w3-xlarge" type="password" value="" id="newpincode1" readonly placeholder="nouveau pin..."/><input class="w3-input w3-half w3-center w3-xlarge" type="password" value="" id="newpincode2" readonly placeholder="confirmez pin.."/></div>
+ <div id="pinmessage2" class="w3-container"></div>
+ <div id="keypad" class="w3-row">
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('1');">1</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('2');">2</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('3');">3</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('4');">4</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('5');">5</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('6');">6</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('7');">7</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('8');">8</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('9');">9</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey w3-text-red" onclick="clearUserPin();">COR</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey" onclick="setPinValue('0');">0</button>
+ <button class="btnkeypad w3-button w3-border w3-col s4 w3-light-grey w3-text-green" onclick="setnewuserpin();">OK</button>
+ </div>
+ </div>
+ </div>
+ <div id="pnl_timetracker" class="w3-container w3-padding-24 clockpanel" style="display: none;">
+ <div class="w3-container w3-large w3-display-top-middle" ><span id="trackusername"></span><br/><span id="lasttrack"></span></div>
+ <div class="w3-row w3-display-middle">
+ <div class="w3-col w3-margin">
+ <button class="w3-col w3-button w3-xxlarge w3-blue-grey" id="btntrackin" onclick="setTrack('in');">Entrée</button>
+ </div>
+ <div class="w3-col w3-margin">
+ <button class="w3-col w3-button w3-xxlarge w3-blue-grey" id="btntrackout" onclick="setTrack('out');">Sortie</button>
+ </div>
+
+ </div>
+
+ </div>
+
+ <div id="pnl_status" class="w3-container w3-padding-24 clockpanel" style="text-align: center; display: none;">
+
+ <div id="statusmsg" style=" margin: auto; margin-top: 100px; width: 600px; font-size: 20px;" ></div>
+
+ </div>
+</div>
+</div>
+<script>
+var app = "[% app %]";
+</script>
+<script src="[% abspath %][% staticpath %]js/request.js"></script>
+<script src="[% abspath %][% staticpath %]js/admin.js"></script>
+<script src="[% abspath %][% staticpath %]js/moduleglobal.js"></script>
+<script src="index.js?v=[% vstamp %]"></script>
+
+
+</body>
+</html>
\ No newline at end of file
--- /dev/null
+<div id="snackbar"></div>
\ No newline at end of file
--- /dev/null
+[% MACRO fieldhidden(column,table,ident,value) BLOCK -%]
+ <input type="hidden" class="data_[% table %]" id="[% column %]" name="[% IF ident %]ident_[% END %][% table %]_[% column %]" value="[% value %]">
+[% END -%]
+[% MACRO fieldeditbox(column,table,title,size,state,value,plhold) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="text" class="w3-input w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF plhold %]placeholder="[% plhold %]" [% END %] [% IF state.length > 0 %][% state %][% END %]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldfile(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="file" class="w3-input w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldpasswordbox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="password" class="w3-input w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldtagbox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="text" class="w3-input tagedit w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldcheckbox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]">
+ <br/>
+ <input class="w3-check data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" type="checkbox" [% IF state.length > 0 %][% state %][% END %]>
+ <label>[% title %]</label>
+ </div>
+[% END -%]
+
+[% MACRO fieldemailbox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="email" class="w3-input w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %] " id="[% column %]" name="[% table %]_[% column %]" value="" [% IF state.length > 0 %][% state %][% END %]/>
+ </div>
+[% END -%]
+
+[% MACRO fieldselectbox(column,table,title,size,state,value) BLOCK -%]
+ [% IF state.length > 0 %]
+ [% fieldeditbox(column,table,title,size,state,value) %]
+ [% ELSE %]
+ <div class="w3-container [% IF size %][% size %][% END %]">
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <select class="w3-select w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" data-selected="" value="" name="[% table %]_[% column %]" [% IF state.length > 0 %][% state %][% END %]>
+
+ </select>
+
+ </div>
+ [% END %]
+[% END -%]
+[% MACRO fieldmultiselectbox(column,table,title,size,state,value) BLOCK -%]
+ [% IF state.length > 0 %]
+ [% fieldeditbox(column,table,title,size,state,value) %]
+ [% ELSE %]
+ <div class="w3-container [% IF size %][% size %][% END %]">
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <select class="w3-select w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" data-selected="" multiple value="" name="[% table %]_[% column %]" [% IF state.length > 0 %][% state %][% END %]>
+
+ </select>
+
+ </div>
+ [% END %]
+[% END -%]
+[% MACRO fielddatebox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]">
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="date" class="w3-input w3-border data_[% table %] datefield [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldtimebox(column,table,title,size,state,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]">
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <input type="time" class="w3-input w3-border data_[% table %] timefield [% IF state.length > 0 %]w3-[% state %][% END %]" id="[% column %]" name="[% table %]_[% column %]" value="[% value %]" [% IF state.length > 0 %][% state %][% END %]]/>
+
+ </div>
+[% END -%]
+[% MACRO fieldtextarea(column,table,title,size,state,height,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <textarea class="w3-input w3-border data_[% table %] [% IF state.length > 0 %]w3-[% state %][% END %]" style="height: [% height %];" id="[% column %]" name="[% table %]_[% column %]"
+ [% IF state.length > 0 %][% state %][% END %] >[% value %]</textarea>
+ </div>
+[% END -%]
+[% MACRO fieldrichtextarea(column,table,title,size,state,height,value) BLOCK -%]
+ <div class="w3-container [% IF size %][% size %][% END %]" >
+ <label for="[% table %]_[% column %]" class="w3-label">[% title %]</label>
+ <textarea class="w3-input w3-border data_[% table %] richeditarea [% IF state.length > 0 %]w3-[% state %][% END %]" style="height: [% height %];" id="[% column %]" name="[% table %]_[% column %]"
+ [% IF state.length > 0 %][% state %][% END %] >[% value %]</textarea>
+ </div>
+[% END -%]
+
+[% MACRO formsavebutton(formname,btnname) BLOCK -%]
+ <div class="w3-container w3-right-align">
+ <button class="w3-button w3-blue-grey w3-margin" id="btnsave_[%formname%]" onclick="saveform('[% formname %]');return false;">[% btnname %]</button>
+ </div>
+[% END -%]
+[% MACRO formsavetextfilebutton(formname,btnname) BLOCK -%]
+ <div class="w3-container w3-right-align">
+ <button class="w3-button w3-blue-grey w3-margin" onclick="savetextfile('[% formname %]');return false;">[% btnname %]</button>
+ </div>
+[% END -%]
+[% MACRO formdlgsavebutton(formname,btnname,clbk) BLOCK -%]
+ <button class="w3-button w3-blue-grey w3-margin w3-right-align" onclick="saveform('[% formname %]'[% IF clbk.length > 0 %],[% clbk %] [% END %]);return false;">[% btnname %]</button>
+[% END -%]
+[% MACRO formsavefilebutton(formname,btnname,container) BLOCK -%]
+[% IF container.length > 0 %]
+ <div class="w3-container w3-right-align">
+ [% END %]
+ <button class="w3-button w3-blue-grey w3-margin" onclick="savefileform('[% formname %]');return false;">[% btnname %]</button>
+[% IF container.length > 0 %]
+ </div>
+[% END %]
+[% END -%]
\ No newline at end of file
--- /dev/null
+[% #USE DBI %]
+[% #USE dksdb = DBI(dsn, dbuser, dbpassword) %]
+[% INCLUDE $page %]
\ No newline at end of file
--- /dev/null
+[% #USE DBI %]
+[% #USE dksdb = DBI(dsn, dbuser, dbpassword) %]
+[% INCLUDE $page %]
\ No newline at end of file
--- /dev/null
+[% USE date %]
+[% #USE env = EnvHash %]
+[% vstamp=date.format(date.now, '%d%m%Y%H%M%S') %]
+<!DOCTYPE html>
+<html lang="en">
+<head>
+<meta charset="UTF-8">
+<meta name="viewport" content="width=device-width, initial-scale=1.0">
+<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="0" />
+<link rel="stylesheet" href="[% staticpath %]css/w3pro.css?v=[% vstamp %]">
+<title>Hourtrax</title>
+</head>
+<body>
+<div class="w3-display-container" style="min-width: 320px;">
+ <div class="w3-top w3-bar w3-border-bottom w3-purple">
+
+ <h5 class="w3-bar-item">Hourtrax</h5>
+ <!--<a class="w3-bar-item w3-button w3-right w3-border w3-blue-grey" href="javascript:admin.logout();"><img src="img/icons/logout_white.svg" style="height: 32px;" /></a>-->
+
+</div>
+ <div class="w3-container" style="margin-top: 50px;">
+ <div class="w3-container w3-margin" >
+ <div class="w3-container w3-third w3-padding-24"><button class="w3-button w3-grey w3-block" onclick="admin.loadapp('timeclock');"><img src="[% staticpath %]img/hourtrax.png" style="width: 64px;"/><br/>Pointeuse</button></div>
+
+ <div class="w3-container w3-third w3-padding-24"><button class="w3-button w3-grey w3-block" onclick="admin.loadapp('hourtrax');"><img src="[% staticpath %]img/hourtrax.png" style="width: 64px;"/><br/>Administration</button></div>
+ </div>
+ </div>
+</div>
+
+<script src="[% staticpath %]js/request.js?v=[% vstamp %]"></script>
+<script src="[% staticpath %]js/admin.js?v=[% vstamp %]"></script>
+
+</body>
+</html>
--- /dev/null
+[% USE Dumper %]
+
+[% #USE dksdb = DBI(dsn, dbuser, dbpassword) %]
+[% #USE date %]
+[% vstamp=date.format(date.now, '%d%m%Y') %]
+<!DOCTYPE html>
+<html lang="fr">
+
+<head>
+ <!-- Required meta tags -->
+ <meta charset="utf-8">
+ <meta name="viewport" content="width=device-width, initial-scale=1">
+ <meta http-equiv="X-UA-Compatible" content="IE=edge" />
+ <title>[% adminname %] - [% module %] - [% pagename %]</title>
+ <meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
+ <meta http-equiv="Pragma" content="no-cache" />
+ <meta http-equiv="Expires" content="-1" />
+ <link rel="stylesheet" href="[% abspath %][% staticpath %]css/w3pro.css?v=[% vstamp %]">
+ <!-- <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/glyphicons/css/glyphicons.css?v=[% vstamp %]"> -->
+ <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/tabulator/css/tabulator_simple.min.css?v=[% vstamp %]">
+ <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/choices/choices.css?v=[% vstamp %]">
+ <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/flatpickr/flatpickr.min.css?v=[% vstamp %]">
+ <link rel="stylesheet" href="[% abspath %][% staticpath %]vendor/flatpickr/themes/airbnb.css?v=[% vstamp %]">
+
+ [% #INCLUDE "module/$module/css.tt" %]
+ <!-- <script>
+ if(window.self !== window.top); //inside an iframe
+ else window.location = "$abspath/module/dashboard/index.html"; // Outside
+</script> -->
+</head>
+
+<body>
+<div style="padding: 0px; margin:0px;">
+ [% #IF session.id %]
+ [% INCLUDE $page %]
+ </div>
+
+ <script type="text/javascript" src="[% abspath%][% staticpath %]js/request.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath%][% staticpath %]js/moduleglobal.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath%][% staticpath %]js/formsave.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath%][% staticpath %]vendor/tabulator/js/tabulator.min.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath%][% staticpath %]vendor/moment/moment.min.js?v=[% vstamp %]"></script>
+ <!-- <script type="text/javascript" src="[% abspath %][% staticpath %]vendor/tinymce/js/tinymce/tinymce.min.js?v=[% vstamp %]"></script> -->
+ <script type="text/javascript" src="[% abspath %][% staticpath %]vendor/choices/choices.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath %][% staticpath %]vendor/flatpickr/flatpickr.min.js?v=[% vstamp %]"></script>
+ <script type="text/javascript" src="[% abspath %][% staticpath %]vendor/flatpickr/l10n/fr.js?v=[% vstamp %]"></script>
+ [% #INCLUDE "module/$module/javascript.tt" %]
+ <script type="text/javascript" src="[% pagename %].js?v=[% vstamp %]"></script>
+ <script>
+ var app = "[% app %]"
+ </script>
+ [% #ELSE %]
+ <!-- <div class="alert alert-danger">
+ <h1> Du hues keen Accès op dëss Sait!</h1>
+ </div>
+ </div> -->
+ [% #END %]
+ [% INCLUDE block/snackbar.tt %]
+</body>
+
+</html>
\ No newline at end of file
--- /dev/null
+ * {\r
+ font-family: sans-sherif, Arial, Helvetica !important;\r
+ }\r
+ body,html {\r
+ margin: 0px;\r
+ }\r
+header {\r
+ overflow: hidden;\r
+ position: fixed; /* Set the navbar to fixed position */\r
+ top: 0; /* Position the navbar at the top of the page */\r
+ width: 100%; /* Full width */\r
+ height: 60px;\r
+ padding-left: 5px;\r
+ background: linear-gradient(to right, purple, gray);\r
+}\r
+\r
+header > h1 {\r
+ color: yellow;\r
+ margin-top: 10px;\r
+ float: left;\r
+ text-shadow: 0px -1px 0px rgba(0,0,0,.5);\r
+}\r
+div.headerlinks {\r
+ margin-left: 10px;\r
+ margin-top: 5px;\r
+ float: left;\r
+}\r
+button {\r
+ /* display: inline-block;\r
+ */\r
+ text-decoration: none;\r
+ color: #fff;\r
+ font-weight: bold;\r
+ background-color: #538fbe;\r
+ /* padding: 20px 70px;\r
+ font-size: 24px; */\r
+ border: 1px solid #2d6898;\r
+ background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(73,132,180)),\r
+ color-stop(1, rgb(97,155,203))\r
+ );\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ text-shadow: 0px -1px 0px rgba(0,0,0,.5);\r
+ /* -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5); */\r
+ /* -webkit-transition: all .1s ease-in-out;\r
+ -moz-transition: all .2s ease-in-out;\r
+ transition: all .2s ease-in-out;\r
+ -webkit-transform: rotateX(20deg); */\r
+}\r
+\r
+\r
+button {\r
+ margin-left: 3px;\r
+ height: 30px;\r
+}\r
+\r
+div.headerlinks button {\r
+ height: 50px;\r
+}\r
+\r
+\r
+section.main {\r
+ width: 1024px;\r
+ margin: auto;\r
+ margin-top: 70px;\r
+ \r
+}\r
+table {\r
+ margin-top: 10px;\r
+ width: 100%;\r
+ border: 1px solid silver;\r
+ border-collapse: collapse;\r
+}\r
+table thead {\r
+ background-color: gray;\r
+}\r
+\r
+table thead th {\r
+ padding: 5px 10px;\r
+ border: 1px solid silver;\r
+}\r
+\r
+table tbody tr:nth-child(even){\r
+ background-color: rgba(128,0,128,0.3);\r
+ \r
+}\r
+\r
+table tbody tr:hover {\r
+ background-color: #79bcff;\r
+}\r
+\r
+table tbody td {\r
+ border: 1px solid silver;\r
+ padding: 5px 10px;\r
+}\r
+input[type=number]::-webkit-inner-spin-button, \r
+input[type=number]::-webkit-outer-spin-button { \r
+ -webkit-appearance: none; \r
+ margin: 0; \r
+}\r
+\r
+\r
+\r
+input, select {\r
+ border: 1px solid silver;\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ padding: 5px 10px;\r
+}\r
+\r
+input:disabled {\r
+ border: 0;\r
+ color: #000000;\r
+ background: transparent !important;\r
+}\r
+\r
+.page {\r
+ display: none;\r
+}\r
+\r
+input[type=number] {\r
+ text-align: right;\r
+}\r
+\r
+\r
+\r
+tbody > tr.selected {\r
+ background-color: #0080ff;\r
+}\r
+\r
+.panel {\r
+ border: 1px solid silver;\r
+ width: 100%;\r
+ display: block;\r
+ border: 1px solid silver;\r
+ padding: 5px;\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ margin: 4px;\r
+}\r
+\r
+.panel-head {\r
+ margin: 0px;\r
+ padding: 3px;\r
+ height: 20px;\r
+ \r
+}\r
+\r
+h4 {\r
+ margin: 0px;\r
+ padding: 2px;\r
+}\r
+\r
+.tabset > input[type="radio"] {\r
+ position: absolute;\r
+ left: -200vw;\r
+}\r
+\r
+.tabset .tab-panel {\r
+ display: none;\r
+}\r
+\r
+.tabset > input:first-child:checked ~ .tab-panels > .tab-panel:first-child,\r
+.tabset > input:nth-child(3):checked ~ .tab-panels > .tab-panel:nth-child(2),\r
+.tabset > input:nth-child(5):checked ~ .tab-panels > .tab-panel:nth-child(3),\r
+.tabset > input:nth-child(7):checked ~ .tab-panels > .tab-panel:nth-child(4),\r
+.tabset > input:nth-child(9):checked ~ .tab-panels > .tab-panel:nth-child(5),\r
+.tabset > input:nth-child(11):checked ~ .tab-panels > .tab-panel:nth-child(6) {\r
+ display: block;\r
+}\r
+\r
+.tabset > label {\r
+ position: relative;\r
+ display: inline-block;\r
+ padding: 15px 15px 15px;\r
+ border: 1px solid transparent;\r
+ border-bottom: 0;\r
+ cursor: pointer;\r
+ font-weight: 600;\r
+}\r
+\r
+/* .tabset > label::after {\r
+ position: absolute;\r
+ left: 15px;\r
+ bottom: 10px;\r
+ width: 22px;\r
+ height: 4px;\r
+ background: #8d8d8d;\r
+} */\r
+\r
+.tabset > label:hover,\r
+.tabset > input:focus + label {\r
+ color: #06c;\r
+}\r
+\r
+.tabset > label:hover::after,\r
+.tabset > input:focus + label::after,\r
+.tabset > input:checked + label::after {\r
+ background: #06c;\r
+} \r
+\r
+.tabset > input:checked + label {\r
+ border-color: #ccc;\r
+ border-bottom: 1px solid #fff;\r
+ margin-bottom: -1px;\r
+}\r
+\r
+.tab-panel {\r
+ padding: 30px 0;\r
+ border-top: 1px solid #ccc;\r
+}\r
+\r
+label.formlabel {\r
+ width: 120px;\r
+}\r
+\r
+div.row {\r
+ margin-top: 3px;\r
+ margin-bottom: 3px;\r
+}\r
+\r
+section.sysconfig {\r
+ display: none;\r
+}\r
+\r
--- /dev/null
+ \r
+ body,html {\r
+ overflow: hidden;\r
+ margin: 0px;\r
+ \r
+ }\r
+ div {\r
+ margin: auto;\r
+ }\r
+ header {\r
+ height: 60px;\r
+ padding-left: 5px;\r
+ background: linear-gradient(to right, purple, gray);\r
+ }\r
+ h1 {\r
+ padding-top: 5px;\r
+ margin-top: 0px;\r
+ color: yellow;\r
+ }\r
+ button {\r
+ display: inline-block;\r
+ text-decoration: none;\r
+ color: #fff;\r
+ font-weight: bold;\r
+ background-color: #538fbe;\r
+ /* padding: 20px 70px;\r
+ font-size: 24px; */\r
+ border: 1px solid #2d6898;\r
+ background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(73,132,180)),\r
+ color-stop(1, rgb(97,155,203))\r
+ );\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ text-shadow: 0px -1px 0px rgba(0,0,0,.5);\r
+ -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -webkit-transition: all .1s ease-in-out;\r
+ -moz-transition: all .2s ease-in-out;\r
+ transition: all .2s ease-in-out;\r
+ -webkit-transform: rotateX(20deg);\r
+}\r
+\r
+button:hover {\r
+ background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ \r
+ /* background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(79,142,191)),\r
+ color-stop(1, rgb(102,166,214))\r
+ ); */\r
+}\r
+\r
+button:active {\r
+-webkit-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+-moz-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ background-image: linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(88,154,204)),\r
+ color-stop(1, rgb(90,150,199))\r
+ );\r
+ -webkit-transform: translate(0, 4px) rotateX(20deg); \r
+ -moz-transform: translate(0, 4px); \r
+ transform: translate(0, 4px); \r
+}\r
+\r
+button:disabled {\r
+ background-image: none;\r
+ background-color: #f4f4f4;\r
+ color: #000;\r
+ font-weight: bold;\r
+ box-shadow: none;\r
+ -webkit-transform: none;\r
+}\r
+ /* button {\r
+ background-color: lightgrey;\r
+ border: 1px solid silver;\r
+ outline: none;\r
+ } */\r
+ button.user {\r
+ height: 90px;\r
+ width: 90px;\r
+ margin: 10px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btnkeypad {\r
+ height: 70px;\r
+ width: 70px;\r
+ margin: 5px;\r
+ font-weight: bold;\r
+ font-size: 20px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btntrack {\r
+ background-color: \r
+ height: 150px;\r
+ width: 150px;\r
+ margin: 15px;\r
+ font-weight: bold;\r
+ font-size: 30px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ #scrloader {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserlist {\r
+ display: none;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrnewuserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrtimetracker{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrstatus{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #keypad {\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ }\r
+ #timetracker{\r
+ border: 1px solid silver;\r
+ width: 400px;\r
+ margin: auto;\r
+ margin-top: 20px;\r
+ text-align: center;\r
+ }\r
+ div.pincode {\r
+ text-align: center;\r
+ }\r
+ #pincode,#newpincode1,#newpincode2 {\r
+ min-height: 30px;\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ text-align: center;\r
+ font-weight: bold;\r
+ font-size: 10px;\r
+ }\r
+ #newpincode1,#newpincode2{\r
+ width: 135px;\r
+ }\r
+ .usergreeting {\r
+ text-align: center;\r
+ }\r
+ #pinmessage, #pinmessage2 {\r
+ height: 30px;\r
+ display: block;\r
+ color: red;\r
+ font-weight: bold;\r
+ text-align: center;\r
+ }\r
+ #lasttrackin,#lasttrackout {\r
+ font-size: 12px; \r
+ color: #000;\r
+ font-weight: bold;\r
+ }\r
+ \r
+ \r
+/* screenheight: 480;*/\r
+/* screenwidth: 80px;*/
\ No newline at end of file
--- /dev/null
+.btnkeypad {
+ height: 75px;
+ font-weight: bold;
+ font-size: 30px;
+}
\ No newline at end of file
--- /dev/null
+/* W3PRO.CSS 4.13 June 2019 by Jan Egil and Borge Refsnes */
+html{box-sizing:border-box}*,*:before,*:after{box-sizing:inherit}
+/* Extract from normalize.css by Nicolas Gallagher and Jonathan Neal git.io/normalize */
+html{-ms-text-size-adjust:100%;-webkit-text-size-adjust:100%}body{margin:0}
+article,aside,details,figcaption,figure,footer,header,main,menu,nav,section{display:block}summary{display:list-item}
+audio,canvas,progress,video{display:inline-block}progress{vertical-align:baseline}
+audio:not([controls]){display:none;height:0}[hidden],template{display:none}
+a{background-color:transparent}a:active,a:hover{outline-width:0}
+abbr[title]{border-bottom:none;text-decoration:underline;text-decoration:underline dotted}
+b,strong{font-weight:bolder}dfn{font-style:italic}mark{background:#ff0;color:#000}
+small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}
+sub{bottom:-0.25em}sup{top:-0.5em}figure{margin:1em 40px}img{border-style:none}
+code,kbd,pre,samp{font-family:monospace,monospace;font-size:1em}hr{box-sizing:content-box;height:0;overflow:visible}
+button,input,select,textarea,optgroup{font:inherit;margin:0}optgroup{font-weight:bold}
+button,input{overflow:visible}button,select{text-transform:none}
+button,[type=button],[type=reset],[type=submit]{-webkit-appearance:button}
+button::-moz-focus-inner,[type=button]::-moz-focus-inner,[type=reset]::-moz-focus-inner,[type=submit]::-moz-focus-inner{border-style:none;padding:0}
+button:-moz-focusring,[type=button]:-moz-focusring,[type=reset]:-moz-focusring,[type=submit]:-moz-focusring{outline:1px dotted ButtonText}
+fieldset{border:1px solid #c0c0c0;margin:0 2px;padding:.35em .625em .75em}
+legend{color:inherit;display:table;max-width:100%;padding:0;white-space:normal}textarea{overflow:auto}
+[type=checkbox],[type=radio]{padding:0}
+[type=number]::-webkit-inner-spin-button,[type=number]::-webkit-outer-spin-button{height:auto}
+[type=search]{-webkit-appearance:textfield;outline-offset:-2px}
+[type=search]::-webkit-search-decoration{-webkit-appearance:none}
+::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}
+/* End extract */
+html,body{font-family:Verdana,sans-serif;font-size:15px;line-height:1.5}html{overflow-x:hidden}
+h1{font-size:36px}h2{font-size:30px}h3{font-size:24px}h4{font-size:20px}h5{font-size:18px}h6{font-size:16px}.w3-serif{font-family:serif}
+h1,h2,h3,h4,h5,h6{font-family:"Segoe UI",Arial,sans-serif;font-weight:400;margin: 0}.w3-wide{letter-spacing:4px}
+hr{border:0;border-top:1px solid #eee;margin:20px 0}
+.w3-image{max-width:100%;height:auto}img{vertical-align:middle}a{color:inherit}
+.w3-table,.w3-table-all{border-collapse:collapse;border-spacing:0;width:100%;display:table}.w3-table-all{border:1px solid #ccc}
+.w3-bordered tr,.w3-table-all tr{border-bottom:1px solid #ddd}.w3-striped tbody tr:nth-child(even){background-color:#f1f1f1}
+.w3-table-all tr:nth-child(odd){background-color:#fff}.w3-table-all tr:nth-child(even){background-color:#f1f1f1}
+.w3-hoverable tbody tr:hover,.w3-ul.w3-hoverable li:hover{background-color:#ccc}.w3-centered tr th,.w3-centered tr td{text-align:center}
+.w3-table td,.w3-table th,.w3-table-all td,.w3-table-all th{padding:8px 8px;display:table-cell;text-align:left;vertical-align:top}
+.w3-table th:first-child,.w3-table td:first-child,.w3-table-all th:first-child,.w3-table-all td:first-child{padding-left:16px}
+.w3-btn,.w3-button{border:none;display:inline-block;padding:8px 16px;vertical-align:middle;overflow:hidden;text-decoration:none;color:inherit;background-color:inherit;text-align:center;cursor:pointer;white-space:nowrap}
+.w3-btn:hover{box-shadow:0 8px 16px 0 rgba(0,0,0,0.2),0 6px 20px 0 rgba(0,0,0,0.19)}
+.w3-btn,.w3-button{-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}
+.w3-disabled,.w3-btn:disabled,.w3-button:disabled{cursor:not-allowed;opacity:0.3}.w3-disabled *,:disabled *{pointer-events:none}
+.w3-btn.w3-disabled:hover,.w3-btn:disabled:hover{box-shadow:none}
+.w3-badge,.w3-tag{background-color:#000;color:#fff;display:inline-block;padding-left:8px;padding-right:8px;text-align:center}.w3-badge{border-radius:50%}
+.w3-ul{list-style-type:none;padding:0;margin:0}.w3-ul li{padding:8px 16px;border-bottom:1px solid #ddd}.w3-ul li:last-child{border-bottom:none}
+.w3-tooltip,.w3-display-container{position:relative}.w3-tooltip .w3-text{display:none}.w3-tooltip:hover .w3-text{display:inline-block}
+.w3-ripple:active{opacity:0.5}.w3-ripple{transition:opacity 0s}
+.w3-input{padding:8px;display:block;border:1px solid #ccc;width:100%;background-color: #e8f0fe; }
+.w3-select{padding:9px 0; display:block;width:100%;border:1px solid #ccc;background-color: #e8f0fe;}
+.w3-dropdown-click,.w3-dropdown-hover{position:relative;display:inline-block;cursor:pointer}
+.w3-dropdown-hover:hover .w3-dropdown-content{display:block; }
+.w3-dropdown-hover:first-child,.w3-dropdown-click:hover{background-color:#ccc;color:#000}
+.w3-dropdown-hover:hover > .w3-button:first-child,.w3-dropdown-click:hover > .w3-button:first-child{background-color:#ccc;color:#000}
+.w3-dropdown-content{cursor:auto;color:#000;background-color:#fff;display:none;position:absolute;min-width:160px;margin:0;padding:0;z-index:1}
+.w3-check,.w3-radio{width:24px;height:24px;position:relative;top:6px}
+.w3-sidebar{height:100%;width:200px;background-color:#fff;position:fixed!important;z-index:1;overflow:auto}
+.w3-bar-block .w3-dropdown-hover,.w3-bar-block .w3-dropdown-click{width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-dropdown-content,.w3-bar-block .w3-dropdown-click .w3-dropdown-content{min-width:100%}
+.w3-bar-block .w3-dropdown-hover .w3-button,.w3-bar-block .w3-dropdown-click .w3-button{width:100%;text-align:left;padding:8px 16px}
+.w3-main,#main{transition:margin-left .4s}
+.w3-modal{z-index:3;display:none;padding-top:100px;position:fixed;left:0;top:0;width:100%;height:100%;overflow:auto;background-color:rgb(0,0,0);background-color:rgba(0,0,0,0.4)}
+.w3-modal-content{margin:auto;background-color:#fff;position:relative;padding:0;outline:0;width:600px}
+.w3-bar{width:100%;overflow:hidden}.w3-center .w3-bar{display:inline-block;width:auto}
+.w3-bar .w3-bar-item{padding:8px 16px;float:left;width:auto;border:none;display:block;outline:0}
+.w3-bar .w3-dropdown-hover,.w3-bar .w3-dropdown-click{position:static;float:left}
+.w3-bar .w3-button{white-space:normal}
+.w3-bar-block .w3-bar-item{width:100%;display:block;padding:8px 16px;text-align:left;border:none;white-space:normal;float:none;outline:0}
+.w3-bar-block.w3-center .w3-bar-item{text-align:center}.w3-block{display:block;width:100%}
+.w3-responsive{display:block;overflow-x:auto}
+.w3-container:after,.w3-container:before,.w3-panel:after,.w3-panel:before,.w3-row:after,.w3-row:before,.w3-row-padding:after,.w3-row-padding:before,
+.w3-cell-row:before,.w3-cell-row:after,.w3-clear:after,.w3-clear:before,.w3-bar:before,.w3-bar:after{content:"";display:table;clear:both}
+.w3-col,.w3-half,.w3-third,.w3-twothird,.w3-threequarter,.w3-quarter{float:left;width:100%}
+.w3-col.s1{width:8.33333%}.w3-col.s2{width:16.66666%}.w3-col.s3{width:24.99999%}.w3-col.s4{width:33.33333%}
+.w3-col.s5{width:41.66666%}.w3-col.s6{width:49.99999%}.w3-col.s7{width:58.33333%}.w3-col.s8{width:66.66666%}
+.w3-col.s9{width:74.99999%}.w3-col.s10{width:83.33333%}.w3-col.s11{width:91.66666%}.w3-col.s12{width:99.99999%}
+@media (min-width:601px){.w3-col.m1{width:8.33333%}.w3-col.m2{width:16.66666%}.w3-col.m3,.w3-quarter{width:24.99999%}.w3-col.m4,.w3-third{width:33.33333%}
+.w3-col.m5{width:41.66666%}.w3-col.m6,.w3-half{width:49.99999%}.w3-col.m7{width:58.33333%}.w3-col.m8,.w3-twothird{width:66.66666%}
+.w3-col.m9,.w3-threequarter{width:74.99999%}.w3-col.m10{width:83.33333%}.w3-col.m11{width:91.66666%}.w3-col.m12{width:99.99999%}}
+@media (min-width:993px){.w3-col.l1{width:8.33333%}.w3-col.l2{width:16.66666%}.w3-col.l3{width:24.99999%}.w3-col.l4{width:33.33333%}
+.w3-col.l5{width:41.66666%}.w3-col.l6{width:49.99999%}.w3-col.l7{width:58.33333%}.w3-col.l8{width:66.66666%}
+.w3-col.l9{width:74.99999%}.w3-col.l10{width:83.33333%}.w3-col.l11{width:91.66666%}.w3-col.l12{width:99.99999%}}
+.w3-rest{overflow:hidden}.w3-stretch{margin-left:-16px;margin-right:-16px}
+.w3-content,.w3-auto{margin-left:auto;margin-right:auto}.w3-content{max-width:980px}.w3-auto{max-width:1140px}
+.w3-cell-row{display:table;width:100%}.w3-cell{display:table-cell}
+.w3-cell-top{vertical-align:top}.w3-cell-middle{vertical-align:middle}.w3-cell-bottom{vertical-align:bottom}
+.w3-hide{display:none!important}.w3-show-block,.w3-show{display:block!important}.w3-show-inline-block{display:inline-block!important}
+@media (max-width:1205px){.w3-auto{max-width:95%}}
+@media (max-width:600px){.w3-modal-content{margin:0 10px;width:auto!important}.w3-modal{padding-top:30px}
+.w3-dropdown-hover.w3-mobile .w3-dropdown-content,.w3-dropdown-click.w3-mobile .w3-dropdown-content{position:relative}
+.w3-hide-small{display:none!important}.w3-mobile{display:block;width:100%!important}.w3-bar-item.w3-mobile,.w3-dropdown-hover.w3-mobile,.w3-dropdown-click.w3-mobile{text-align:center}
+.w3-dropdown-hover.w3-mobile,.w3-dropdown-hover.w3-mobile .w3-btn,.w3-dropdown-hover.w3-mobile .w3-button,.w3-dropdown-click.w3-mobile,.w3-dropdown-click.w3-mobile .w3-btn,.w3-dropdown-click.w3-mobile .w3-button{width:100%}}
+@media (max-width:768px){.w3-modal-content{width:500px}.w3-modal{padding-top:50px}}
+@media (min-width:993px){.w3-modal-content{width:900px}.w3-hide-large{display:none!important}.w3-sidebar.w3-collapse{display:block!important}}
+@media (max-width:992px) and (min-width:601px){.w3-hide-medium{display:none!important}}
+@media (max-width:992px){.w3-sidebar.w3-collapse{display:none}.w3-main{margin-left:0!important;margin-right:0!important}.w3-auto{max-width:100%}}
+.w3-top,.w3-bottom{position:fixed;width:100%;z-index:1}.w3-top{top:0}.w3-bottom{bottom:0}
+.w3-overlay{position:fixed;display:none;width:100%;height:100%;top:0;left:0;right:0;bottom:0;background-color:rgba(0,0,0,0.5);z-index:2}
+.w3-display-topleft{position:absolute;left:0;top:0}.w3-display-topright{position:absolute;right:0;top:0}
+.w3-display-bottomleft{position:absolute;left:0;bottom:0}.w3-display-bottomright{position:absolute;right:0;bottom:0}
+.w3-display-middle{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);-ms-transform:translate(-50%,-50%)}
+.w3-display-left{position:absolute;top:50%;left:0%;transform:translate(0%,-50%);-ms-transform:translate(-0%,-50%)}
+.w3-display-right{position:absolute;top:50%;right:0%;transform:translate(0%,-50%);-ms-transform:translate(0%,-50%)}
+.w3-display-topmiddle{position:absolute;left:50%;top:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-bottommiddle{position:absolute;left:50%;bottom:0;transform:translate(-50%,0%);-ms-transform:translate(-50%,0%)}
+.w3-display-container:hover .w3-display-hover{display:block}.w3-display-container:hover span.w3-display-hover{display:inline-block}.w3-display-hover{display:none}
+.w3-display-position{position:absolute}
+.w3-circle{border-radius:50%}
+.w3-round-small{border-radius:2px}.w3-round,.w3-round-medium{border-radius:4px}.w3-round-large{border-radius:8px}.w3-round-xlarge{border-radius:16px}.w3-round-xxlarge{border-radius:32px}
+.w3-row-padding,.w3-row-padding>.w3-half,.w3-row-padding>.w3-third,.w3-row-padding>.w3-twothird,.w3-row-padding>.w3-threequarter,.w3-row-padding>.w3-quarter,.w3-row-padding>.w3-col{padding:0 8px}
+.w3-container,.w3-panel{padding:0.01em 16px}.w3-panel{margin-top:16px;margin-bottom:16px}
+.w3-code,.w3-codespan{font-family:Consolas,"courier new";font-size:16px}
+.w3-code{width:auto;background-color:#fff;padding:8px 12px;border-left:4px solid #4CAF50;word-wrap:break-word}
+.w3-codespan{color:crimson;background-color:#f1f1f1;padding-left:4px;padding-right:4px;font-size:110%}
+.w3-card,.w3-card-2{box-shadow:0 2px 5px 0 rgba(0,0,0,0.16)}
+.w3-card-4,.w3-hover-shadow:hover{box-shadow:0 4px 10px 0 rgba(0,0,0,0.2),0 4px 20px 0 rgba(0,0,0,0.19)}
+.w3-spin{animation:w3-spin 2s infinite linear}@keyframes w3-spin{0%{transform:rotate(0deg)}100%{transform:rotate(359deg)}}
+.w3-animate-fading{animation:fading 10s infinite}@keyframes fading{0%{opacity:0}50%{opacity:1}100%{opacity:0}}
+.w3-animate-opacity{animation:opac 0.8s}@keyframes opac{from{opacity:0} to{opacity:1}}
+.w3-animate-top{position:relative;animation:animatetop 0.4s}@keyframes animatetop{from{top:-300px;opacity:0} to{top:0;opacity:1}}
+.w3-animate-left{position:relative;animation:animateleft 0.4s}@keyframes animateleft{from{left:-300px;opacity:0} to{left:0;opacity:1}}
+.w3-animate-right{position:relative;animation:animateright 0.4s}@keyframes animateright{from{right:-300px;opacity:0} to{right:0;opacity:1}}
+.w3-animate-bottom{position:relative;animation:animatebottom 0.4s}@keyframes animatebottom{from{bottom:-300px;opacity:0} to{bottom:0;opacity:1}}
+.w3-animate-zoom {animation:animatezoom 0.6s}@keyframes animatezoom{from{transform:scale(0)} to{transform:scale(1)}}
+.w3-animate-input{transition:width 0.4s ease-in-out}.w3-animate-input:focus{width:100%!important}
+.w3-opacity,.w3-hover-opacity:hover{opacity:0.60}.w3-opacity-off,.w3-hover-opacity-off:hover{opacity:1}
+.w3-opacity-max{opacity:0.25}.w3-opacity-min{opacity:0.75}
+.w3-greyscale-max,.w3-grayscale-max,.w3-hover-greyscale:hover,.w3-hover-grayscale:hover{filter:grayscale(100%)}
+.w3-greyscale,.w3-grayscale{filter:grayscale(75%)}.w3-greyscale-min,.w3-grayscale-min{filter:grayscale(50%)}
+.w3-sepia{filter:sepia(75%)}.w3-sepia-max,.w3-hover-sepia:hover{filter:sepia(100%)}.w3-sepia-min{filter:sepia(50%)}
+.w3-tiny{font-size:10px!important}.w3-small{font-size:12px!important}.w3-medium{font-size:15px!important}.w3-large{font-size:18px!important}
+.w3-xlarge{font-size:24px!important}.w3-xxlarge{font-size:36px!important}.w3-xxxlarge{font-size:48px!important}.w3-jumbo{font-size:64px!important}
+.w3-left-align{text-align:left!important}.w3-right-align{text-align:right!important}.w3-justify{text-align:justify!important}.w3-center{text-align:center!important}
+.w3-border-0{border:0!important}.w3-border{border:1px solid #ccc!important}
+.w3-border-top{border-top:1px solid #ccc!important}.w3-border-bottom{border-bottom:1px solid #ccc!important}
+.w3-border-left{border-left:1px solid #ccc!important}.w3-border-right{border-right:1px solid #ccc!important}
+.w3-topbar{border-top:6px solid #ccc!important}.w3-bottombar{border-bottom:6px solid #ccc!important}
+.w3-leftbar{border-left:6px solid #ccc!important}.w3-rightbar{border-right:6px solid #ccc!important}
+.w3-section,.w3-code{margin-top:16px!important;margin-bottom:16px!important}
+.w3-margin{margin:16px!important}.w3-margin-top{margin-top:16px!important}.w3-margin-bottom{margin-bottom:16px!important}
+.w3-margin-left{margin-left:16px!important}.w3-margin-right{margin-right:16px!important}
+.w3-padding-small{padding:4px 8px!important}.w3-padding{padding:8px 16px!important}.w3-padding-large{padding:12px 24px!important}
+.w3-padding-16{padding-top:16px!important;padding-bottom:16px!important}.w3-padding-24{padding-top:24px!important;padding-bottom:24px!important}
+.w3-padding-32{padding-top:32px!important;padding-bottom:32px!important}.w3-padding-48{padding-top:48px!important;padding-bottom:48px!important}
+.w3-padding-64{padding-top:64px!important;padding-bottom:64px!important}
+.w3-left{float:left!important}.w3-right{float:right!important}
+.w3-button:hover{color:#000!important;background-color:#ccc!important}
+.w3-transparent,.w3-hover-none:hover{background-color:transparent!important}
+.w3-hover-none:hover{box-shadow:none!important}
+/* DEFAULT COLORS */
+.w3-amber,.w3-hover-amber:hover{color:#000!important;background-color:#ffc107!important}
+.w3-aqua,.w3-hover-aqua:hover{color:#000!important;background-color:#00ffff!important}
+.w3-blue,.w3-hover-blue:hover{color:#fff!important;background-color:#2196F3!important}
+.w3-light-blue,.w3-hover-light-blue:hover{color:#000!important;background-color:#87CEEB!important}
+.w3-brown,.w3-hover-brown:hover{color:#fff!important;background-color:#795548!important}
+.w3-cyan,.w3-hover-cyan:hover{color:#000!important;background-color:#00bcd4!important}
+.w3-blue-grey,.w3-hover-blue-grey:hover{color:#fff!important;background-color:#607d8b!important}
+.w3-green,.w3-hover-green:hover{color:#fff!important;background-color:#4CAF50!important}
+.w3-light-green,.w3-hover-light-green:hover{color:#000!important;background-color:#8bc34a!important}
+.w3-indigo,.w3-hover-indigo:hover{color:#fff!important;background-color:#3f51b5!important}
+.w3-khaki,.w3-hover-khaki:hover{color:#000!important;background-color:#f0e68c!important}
+.w3-lime,.w3-hover-lime:hover{color:#000!important;background-color:#cddc39!important}
+.w3-orange,.w3-hover-orange:hover{color:#000!important;background-color:#ff9800!important}
+.w3-deep-orange,.w3-hover-deep-orange:hover{color:#fff!important;background-color:#ff5722!important}
+.w3-pink,.w3-hover-pink:hover{color:#fff!important;background-color:#e91e63!important}
+.w3-purple,.w3-hover-purple:hover{color:#fff!important;background-color:#9c27b0!important}
+.w3-deep-purple,.w3-hover-deep-purple:hover{color:#fff!important;background-color:#673ab7!important}
+.w3-red,.w3-hover-red:hover{color:#fff!important;background-color:#f44336!important}
+.w3-sand,.w3-hover-sand:hover{color:#000!important;background-color:#fdf5e6!important}
+.w3-teal,.w3-hover-teal:hover{color:#fff!important;background-color:#009688!important}
+.w3-yellow,.w3-hover-yellow:hover{color:#000!important;background-color:#ffeb3b!important}
+.w3-white,.w3-hover-white:hover{color:#000!important;background-color:#fff!important}
+.w3-black,.w3-hover-black:hover{color:#fff!important;background-color:#000!important}
+.w3-grey,.w3-hover-grey:hover{color:#000!important;background-color:#9e9e9e!important}
+.w3-light-grey,.w3-hover-light-grey:hover{color:#000!important;background-color:#f1f1f1!important}
+.w3-dark-grey,.w3-hover-dark-grey:hover{color:#fff!important;background-color:#616161!important}
+.w3-pale-red,.w3-hover-pale-red:hover{color:#000!important;background-color:#ffe7e7!important}.w3-pale-green,.w3-hover-pale-green:hover{color:#000!important;background-color:#e7ffe7!important}
+.w3-pale-yellow,.w3-hover-pale-yellow:hover{color:#000!important;background-color:#ffffd7!important}.w3-pale-blue,.w3-hover-pale-blue:hover{color:#000!important;background-color:#e7ffff!important}
+.w3-text-amber,.w3-hover-text-amber:hover{color:#ffc107!important}
+.w3-text-aqua,.w3-hover-text-aqua:hover{color:#00ffff!important}
+.w3-text-blue,.w3-hover-text-blue:hover{color:#2196F3!important}
+.w3-text-light-blue,.w3-hover-text-light-blue:hover{color:#87CEEB!important}
+.w3-text-brown,.w3-hover-text-brown:hover{color:#795548!important}
+.w3-text-cyan,.w3-hover-text-cyan:hover{color:#00bcd4!important}
+.w3-text-blue-grey,.w3-hover-text-blue-grey:hover{color:#607d8b!important}
+.w3-text-green,.w3-hover-text-green:hover{color:#4CAF50!important}
+.w3-text-light-green,.w3-hover-text-light-green:hover{color:#8bc34a!important}
+.w3-text-indigo,.w3-hover-text-indigo:hover{color:#3f51b5!important}
+.w3-text-khaki,.w3-hover-text-khaki:hover{color:#b4aa50!important}
+.w3-text-lime,.w3-hover-text-lime:hover{color:#cddc39!important}
+.w3-text-orange,.w3-hover-text-orange:hover{color:#ff9800!important}
+.w3-text-deep-orange,.w3-hover-text-deep-orange:hover{color:#ff5722!important}
+.w3-text-pink,.w3-hover-text-pink:hover{color:#e91e63!important}
+.w3-text-purple,.w3-hover-text-purple:hover{color:#9c27b0!important}
+.w3-text-deep-purple,.w3-hover-text-deep-purple:hover{color:#673ab7!important}
+.w3-text-red,.w3-hover-text-red:hover{color:#f44336!important}
+.w3-text-sand,.w3-hover-text-sand:hover{color:#fdf5e6!important}
+.w3-text-teal,.w3-hover-text-teal:hover{color:#009688!important}
+.w3-text-yellow,.w3-hover-text-yellow:hover{color:#d2be0e!important}
+.w3-text-white,.w3-hover-text-white:hover{color:#fff!important}
+.w3-text-black,.w3-hover-text-black:hover{color:#000!important}
+.w3-text-grey,.w3-hover-text-grey:hover{color:#757575!important}
+.w3-text-light-grey,.w3-hover-text-light-grey:hover{color:#f1f1f1!important}
+.w3-text-dark-grey,.w3-hover-text-dark-grey:hover{color:#3a3a3a!important}
+.w3-border-amber,.w3-hover-border-amber:hover{border-color:#ffc107!important}
+.w3-border-aqua,.w3-hover-border-aqua:hover{border-color:#00ffff!important}
+.w3-border-blue,.w3-hover-border-blue:hover{border-color:#2196F3!important}
+.w3-border-light-blue,.w3-hover-border-light-blue:hover{border-color:#87CEEB!important}
+.w3-border-brown,.w3-hover-border-brown:hover{border-color:#795548!important}
+.w3-border-cyan,.w3-hover-border-cyan:hover{border-color:#00bcd4!important}
+.w3-border-blue-grey,.w3-hover-blue-grey:hover{border-color:#607d8b!important}
+.w3-border-green,.w3-hover-border-green:hover{border-color:#4CAF50!important}
+.w3-border-light-green,.w3-hover-border-light-green:hover{border-color:#8bc34a!important}
+.w3-border-indigo,.w3-hover-border-indigo:hover{border-color:#3f51b5!important}
+.w3-border-khaki,.w3-hover-border-khaki:hover{border-color:#f0e68c!important}
+.w3-border-lime,.w3-hover-border-lime:hover{border-color:#cddc39!important}
+.w3-border-orange,.w3-hover-border-orange:hover{border-color:#ff9800!important}
+.w3-border-deep-orange,.w3-hover-border-deep-orange:hover{border-color:#ff5722!important}
+.w3-border-pink,.w3-hover-border-pink:hover{border-color:#e91e63!important}
+.w3-border-purple,.w3-hover-border-purple:hover{border-color:#9c27b0!important}
+.w3-border-deep-purple,.w3-hover-border-deep-purple:hover{border-color:#673ab7!important}
+.w3-border-red,.w3-hover-border-red:hover{border-color:#f44336!important}
+.w3-border-sand,.w3-hover-border-sand:hover{border-color:#fdf5e6!important}
+.w3-border-teal,.w3-hover-border-teal:hover{border-color:#009688!important}
+.w3-border-yellow,.w3-hover-border-yellow:hover{border-color:#ffeb3b!important}
+.w3-border-white,.w3-hover-border-white:hover{border-color:#fff!important}
+.w3-border-black,.w3-hover-border-black:hover{border-color:#000!important}
+.w3-border-grey,.w3-hover-border-grey:hover{border-color:#9e9e9e!important}
+.w3-border-light-grey,.w3-hover-border-light-grey:hover{border-color:#f1f1f1!important}
+.w3-border-dark-grey,.w3-hover-border-dark-grey:hover{border-color:#616161!important}
+.w3-border-pale-red,.w3-hover-border-pale-red:hover{border-color:#ffe7e7!important}.w3-border-pale-green,.w3-hover-border-pale-green:hover{border-color:#e7ffe7!important}
+.w3-border-pale-yellow,.w3-hover-border-pale-yellow:hover{border-color:#ffffd7!important}.w3-border-pale-blue,.w3-hover-border-pale-blue:hover{border-color:#e7ffff!important}
+/* DEFAULT THEME */
+.w3-theme-l5 {color:#000 !important; background-color:#f6f8fc !important}
+.w3-theme-l4 {color:#000 !important; background-color:#e1e9f6 !important}
+.w3-theme-l3 {color:#000 !important; background-color:#c3d3ed !important}
+.w3-theme-l2 {color:#000 !important; background-color:#a5bee4 !important}
+.w3-theme-l1 {color:#fff !important; background-color:#88a8db !important}
+.w3-theme-d1 {color:#fff !important; background-color:#5180cb !important}
+.w3-theme-d2 {color:#fff !important; background-color:#3a6fc3 !important}
+.w3-theme-d3 {color:#fff !important; background-color:#3361aa !important}
+.w3-theme-d4 {color:#fff !important; background-color:#2c5392 !important}
+.w3-theme-d5 {color:#fff !important; background-color:#24457a !important}
+
+.w3-theme-light {color:#000 !important; background-color:#f6f8fc !important}
+.w3-theme-dark {color:#fff !important; background-color:#24457a !important}
+.w3-theme-action {color:#fff !important; background-color:#24457a !important}
+
+.w3-theme {color:#fff !important; background-color:#6a92d3 !important}
+.w3-text-theme {color:#6a92d3 !important}
+.w3-border-theme {border-color:#6a92d3 !important}
+
+.w3-hover-theme:hover {color:#fff !important; background-color:#6a92d3 !important}
+.w3-hover-text-theme:hover {color:#6a92d3 !important}
+.w3-hover-border-theme:hover {border-color:#6a92d3 !important}
+
+.w3-label { color: rgb(153, 150, 150);}
+#main {margin-left: 210px;}
+@media (max-width:768px){
+ #sidebar { display: none;}
+ #main { margin-left: 0px;}
+}
+
+.w3-select {
+ display: block;
+ font-size: 16px;
+ font-family: sans-serif;
+ font-weight: normal;
+ color: #444;
+ line-height: 1.3;
+ padding: .6em 1.4em .5em .8em;
+ width: 100%;
+ max-width: 100%;
+ box-sizing: border-box;
+ margin: 0;
+ border-bottom: 1px solid #aaa;
+ box-shadow: 0 1px 0 1px rgba(0,0,0,.04);
+ /* border-radius: .5em; */
+ -moz-appearance: none;
+ -webkit-appearance: none;
+ appearance: none;
+ background-color: #e8f0fe;
+ background-image: url('data:image/svg+xml;charset=US-ASCII,%3Csvg%20xmlns%3D%22http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%22%20width%3D%22292.4%22%20height%3D%22292.4%22%3E%3Cpath%20fill%3D%22%23000%22%20d%3D%22M287%2069.4a17.6%2017.6%200%200%200-13-5.4H18.4c-5%200-9.3%201.8-12.9%205.4A17.6%2017.6%200%200%200%200%2082.2c0%205%201.8%209.3%205.4%2012.9l128%20127.9c3.6%203.6%207.8%205.4%2012.8%205.4s9.2-1.8%2012.8-5.4L287%2095c3.5-3.5%205.4-7.8%205.4-12.8%200-5-1.9-9.2-5.5-12.8z%22%2F%3E%3C%2Fsvg%3E'),
+ linear-gradient(to bottom, #e8f0fe 0%,#e8f0fe 100%);
+ background-repeat: no-repeat, repeat;
+ background-position: right .7em top 50%, 0 0;
+ background-size: .65em auto, 100%;
+}
+.w3-select::-ms-expand {
+ display: none;
+}
+.w3-select:hover {
+ border-color: #888;
+}
+.w3-select:focus {
+ border-color: #aaa;
+ box-shadow: 0 0 1px 1px #6a92d3;
+ box-shadow: 0 0 0 1px -moz-mac-focusring;
+ color: #222;
+ outline: none;
+}
+
+
+.w3-select option {
+ font-weight:normal;
+}
+
+.w3-table {
+ table-layout: fixed;
+}
+
+.w3-text-line-through { text-decoration: line-through; }
+
+#snackbar {
+ visibility: hidden;
+ min-width: 250px;
+ margin-left: -125px;
+ background-color: #333;
+ color: #fff;
+ text-align: center;
+ border-radius: 2px;
+ padding: 16px;
+ position: fixed;
+ z-index: 1;
+ left: 50%;
+ bottom: 30px;
+ font-size: 17px;
+}
+
+#snackbar.show {
+ visibility: visible;
+ -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
+ animation: fadein 0.5s, fadeout 0.5s 2.5s;
+}
+
+@-webkit-keyframes fadein {
+ from {bottom: 0; opacity: 0;}
+ to {bottom: 30px; opacity: 1;}
+}
+
+@keyframes fadein {
+ from {bottom: 0; opacity: 0;}
+ to {bottom: 30px; opacity: 1;}
+}
+
+@-webkit-keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 0; opacity: 0;}
+}
+
+@keyframes fadeout {
+ from {bottom: 30px; opacity: 1;}
+ to {bottom: 0; opacity: 0;}
+}
+
+.tabulator-header-filter > input {
+ background-color: #e8f0fe;
+ border: 1px solid #ccc;
+ font-weight: normal;
+}
+
+.w3-readonly {
+ pointer-events:none;
+ padding:8px;display:block;border:0px;width:100%;background-color: #fff;
+}
+
+.right-side-bg {
+ background: url("../img/bg1.jpg");
+ background-size: cover;
+ min-height: 100vh;
+}
+
+/* .mceContentBody {
+ background: #e8f0fe;
+ color:#000;
+} */
+
+/* .tabulator-row-even {
+ background-color: #757575;
+} */
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="svg8"
+ version="1.1"
+ viewBox="0 0 150 35"
+ height="35mm"
+ width="150mm">
+ <defs
+ id="defs2" />
+ <metadata
+ id="metadata5">
+ <rdf:RDF>
+ <cc:Work
+ rdf:about="">
+ <dc:format>image/svg+xml</dc:format>
+ <dc:type
+ rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
+ <dc:title></dc:title>
+ </cc:Work>
+ </rdf:RDF>
+ </metadata>
+ <g
+ transform="translate(0,-262)"
+ id="layer1">
+ <text
+ id="text817"
+ y="-85.511909"
+ x="-172.35715"
+ style="font-style:normal;font-weight:normal;font-size:22.57777786px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ xml:space="preserve"><tspan
+ style="stroke-width:0.26458332"
+ y="-85.511909"
+ x="-172.35715"
+ id="tspan815">Hourtrax</tspan></text>
+ <g
+ id="text829"
+ style="font-style:normal;font-weight:normal;font-size:22.57777786px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;stroke-width:0.26458332"
+ aria-label="HourTrax">
+ <g
+ id="text850"
+ style="font-style:normal;font-weight:normal;font-size:39.52468491px;line-height:1.25;font-family:sans-serif;letter-spacing:0px;word-spacing:0px;fill:#88aa00;fill-opacity:1;stroke:none;stroke-width:0.12254968"
+ aria-label="Hourtrax">
+ <rect
+ y="262.5293"
+ x="0.33899626"
+ height="34.49929"
+ width="149.42519"
+ id="rect4553"
+ style="fill:#000000;fill-opacity:1;stroke:#000000;stroke-width:1.04347825;stroke-linecap:square;stroke-linejoin:round;stroke-miterlimit:4;stroke-dasharray:none;stroke-opacity:1" />
+ <path
+ id="path4536"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 14.312061,278.28467 1.437262,1.43727 -1.437262,1.43726 H 4.9698631 l -1.4372613,-1.43726 1.4372613,-1.43727 z m 2.155892,1.79658 0.718631,0.71863 v 10.06083 q -0.359315,1.43726 -1.796577,1.79658 l -1.077946,-2.87452 v -7.54563 z m -2.155892,-2.87452 v -7.54562 l 1.077946,-2.87453 q 1.437262,0.35932 1.796577,1.79658 v 10.06083 l -0.718631,0.71863 z m -9.3421979,5.03041 v 7.54563 l -1.0779459,2.87452 q -1.4372613,-0.35932 -1.7965766,-1.79658 v -10.06083 l 0.7186306,-0.71863 z m -2.1558919,-2.5152 -0.7186306,-0.71863 v -10.06083 q 0.3593153,-1.43726 1.7965766,-1.79658 l 1.0779459,2.87452 v 7.54562 z" />
+ <path
+ id="path4538"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 32.27502,269.66111 h -7.904937 l -1.437261,-1.43726 1.437261,-1.43727 h 7.904937 l 1.437261,1.43727 z m 0.71863,7.54562 v -7.54562 l 1.077946,-1.07795 1.796577,1.79658 v 8.26425 l -0.718631,0.71863 z m 2.155892,2.87452 0.718631,0.71863 v 8.26425 l -1.796577,1.79658 -1.077946,-1.07794 v -7.54563 z m -13.653982,-0.71863 -0.71863,-0.71863 v -8.26425 l 1.796576,-1.79658 1.077946,1.07795 v 7.54562 z m 12.216721,11.85741 -1.437261,1.43726 h -7.904937 l -1.437261,-1.43726 1.437261,-1.43726 h 7.904937 z m -10.060829,-8.98289 v 7.54563 l -1.077946,1.07794 -1.796576,-1.79658 v -8.26425 l 0.71863,-0.71863 z" />
+ <path
+ id="path4540"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 53.831132,280.08125 0.71863,0.71863 v 10.06083 q -0.359315,1.43726 -1.796576,1.79658 l -1.077946,-2.87452 v -7.54563 z m -1.796577,12.57604 h -10.77946 q -1.437261,-0.35932 -1.796576,-1.79658 l 2.874522,-1.07794 h 8.623568 z m -12.576036,-2.51521 v -9.3422 l 0.71863,-0.71863 2.155892,2.15589 v 6.82699 z M 51.67524,277.20673 v -7.54562 l 1.077946,-2.87453 q 1.437261,0.35932 1.796576,1.79658 v 10.06083 l -0.71863,0.71863 z m -11.498091,2.51521 -0.71863,-0.71863 v -10.06083 q 0.359315,-1.43726 1.796576,-1.79658 l 1.077946,2.87452 v 7.54562 z" />
+ <path
+ id="path4542"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 70.356831,278.28467 1.437261,1.43727 -1.437261,1.43726 h -9.342199 l -1.437261,-1.43726 1.437261,-1.43727 z m -8.623568,3.59316 h 2.155892 l 9.342198,9.3422 q -0.71863,1.43726 -2.874522,1.43726 l -8.623568,-8.62357 z m -0.718631,0.35931 v 7.54563 l -1.077946,2.87452 q -1.437261,-0.35932 -1.796576,-1.79658 v -10.06083 l 0.71863,-0.71863 z M 69.6382,269.66111 h -8.587636 l -2.874523,-1.07795 q 0.359316,-1.43726 1.796577,-1.79658 h 10.743528 z m 0.718631,7.54562 v -7.54562 l 1.077946,-2.87453 q 1.437261,0.35932 1.796576,1.79658 v 10.06083 l -0.71863,0.71863 z m -9.342199,-6.82699 v 6.82699 l -2.155892,2.15589 -0.71863,-0.71863 v -9.3422 z" />
+ <path
+ id="path4544"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 84.331387,280.08125 1.437261,1.43726 v 9.3422 q -0.359315,1.43726 -1.796576,1.79658 l -1.077946,-2.87452 v -8.26426 z m -1.437261,-2.15589 v -7.54562 h 2.874522 v 7.54562 l -1.437261,1.43726 z m -3.197906,-8.26425 -2.874523,-1.07795 q 0.359315,-1.43726 1.796577,-1.79658 h 11.462158 q 1.437262,0.35932 1.796577,1.79658 l -2.874523,1.07795 z" />
+ <path
+ id="path4546"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 107.72001,278.28467 1.43726,1.43727 -1.43726,1.43726 h -9.342203 l -1.437261,-1.43726 1.437261,-1.43727 z m -8.623573,3.59316 h 2.155893 l 9.3422,9.3422 q -0.71863,1.43726 -2.87452,1.43726 l -8.623573,-8.62357 z m -0.71863,0.35931 v 7.54563 l -1.077946,2.87452 q -1.437261,-0.35932 -1.796577,-1.79658 v -10.06083 l 0.718631,-0.71863 z m 8.623563,-12.57603 h -8.587632 l -2.874522,-1.07795 q 0.359315,-1.43726 1.796576,-1.79658 h 10.743528 z m 0.71864,7.54562 v -7.54562 l 1.07794,-2.87453 q 1.43726,0.35932 1.79658,1.79658 v 10.06083 l -0.71863,0.71863 z m -9.342203,-6.82699 v 6.82699 l -2.155892,2.15589 -0.718631,-0.71863 v -9.3422 z" />
+ <path
+ id="path4548"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 126.4016,278.28467 1.43726,1.43727 -1.43726,1.43726 h -9.3422 l -1.43726,-1.43726 1.43726,-1.43727 z m 2.15589,1.79658 0.71863,0.71863 v 10.06083 q -0.35931,1.43726 -1.79657,1.79658 l -1.07795,-2.87452 v -7.54563 z m -2.87452,-10.42014 h -8.58764 l -2.87452,-1.07795 q 0.35932,-1.43726 1.79658,-1.79658 h 10.74353 z m -8.62357,0.71863 v 6.82699 l -2.15589,2.15589 -0.71863,-0.71863 v -9.3422 z m 9.3422,6.82699 v -7.54562 l 1.07795,-2.87453 q 1.43726,0.35932 1.79657,1.79658 v 10.06083 l -0.71863,0.71863 z m -9.3422,5.03041 v 7.54563 l -1.07794,2.87452 q -1.43727,-0.35932 -1.79658,-1.79658 v -10.06083 l 0.71863,-0.71863 z" />
+ <path
+ id="path4550"
+ style="font-style:normal;font-variant:normal;font-weight:normal;font-stretch:normal;font-size:39.52468491px;font-family:Digital-7;-inkscape-font-specification:'Digital-7, Normal';font-variant-ligatures:normal;font-variant-caps:normal;font-variant-numeric:normal;font-feature-settings:normal;text-align:start;writing-mode:lr-tb;text-anchor:start;fill:#00ff00;stroke-width:0.12254968;stroke:#000000;stroke-opacity:1"
+ d="m 140.7714,280.08125 h 1.61691 l 5.53346,11.13878 q -0.71863,1.43726 -2.87452,1.43726 l -4.27585,-8.69543 z m 0.0359,-4.59923 4.27585,-8.69544 q 2.15589,0 2.87452,1.43727 l -5.53345,11.13877 h -1.61692 z m -0.7905,8.47984 -4.27585,8.69543 q -2.15589,0 -2.87452,-1.43726 l 5.53345,-11.13878 h 1.61692 z m 0.0359,-4.59924 h -1.61692 l -5.53346,-11.13877 q 0.71863,-1.43727 2.87452,-1.43727 l 4.27586,8.73137 z" />
+ </g>
+ </g>
+ </g>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 21.86 21.95"> \r<path d="M4.25434577465057,17.082643032074C2.84602999687195,17.5303168296814 1.81604528427124,18.6656227111816 1.45804834365845,19.1021921634674 1.46238231658936,19.0173134803772 1.31138324737549,19.2887859344482 1.31138324737549,19.2887861728668 1.31138324737549,19.2887859344482 1.36938619613647,19.21142578125 1.45804834365845,19.1021921634674 1.45671606063843,19.1355009078979 1.43371629714966,19.2175168991089 1.36672067642212,19.3958678245544 1.12471961975098,20.0383725166321 1.87337684631348,20.0218968391418 1.87337684631348,20.0218968391418 3.99601817131042,19.6766510009766 4.25434577465057,17.082643032074 4.25434577465057,17.082643032074z M16.4143095016479,14.8966616988182C16.0198554992676,14.8966332674026 15.7765197753906,14.9219824075699 15.7765197753906,14.9219823479652 18.0354871749878,16.8996350765228 20.1364603042603,16.4387052059174 20.1364603042603,16.438705265522 20.99644947052,16.3233882784843 19.6841344833374,15.5272401422262 19.6841344833374,15.5272402893752 18.4711809158325,14.9892573356628 17.1673593521118,14.896714925766 16.4143095016479,14.8966616988182z M8.69495344161987,9.55705070495605C8.69495344161987,9.55705070495605,7.87929582595825,13.8027962446213,6.85997670888901,15.0620182752609L12.5132346153259,14.1584331989288C12.5132346153259,14.1584331989288,9.69593596458435,11.4458794593811,8.69495344161987,9.55705070495605z M8.8259060382843,1.71509075164795C8.81890082359314,1.714430809021 8.81186652183533,1.71454429626465 8.80480861663818,1.71547985076904 8.74156975746155,1.72386455535889 8.67642998695374,1.79833221435547 8.61328387260437,1.97523021697998 8.61328387260437,1.97523021697998 8.30862140655518,3.54245281219482 9.07161116600037,6.14720153808594 9.07161140441895,6.14720249176025 9.72127032279968,4.08073425292969 9.23227906227112,2.49847316741943 9.23227906227112,2.49847221374512 9.04306721687317,1.73554706573486 8.8259060382843,1.71509075164795z M8.11416697502136,0.000368118286132813C8.7158465385437,-0.0245113372802734 9.2582745552063,1.22027111053467 9.2582745552063,1.22027111053467 10.9449224472046,5.09427070617676 9.34994292259216,7.5693736076355 9.34994292259216,7.5693736076355 11.0199189186096,11.8007955551147 14.3668718338013,14.0603017807007 14.3668718338013,14.0603017807007 17.6188259124756,13.8726366758347 19.9911279678345,14.75544911623 19.9911279678345,14.7554491758347 21.8574342727661,15.8105289638042 21.2324438095093,16.7961323261261 21.2324438095093,16.7961324453354 19.2768077850342,19.1412303447723 13.5322184562683,15.4846273269504 13.5322184562683,15.4846273437142L6.12765185534954,16.8255001306534C5.05766916275024,20.7600255012512 1.4820556640625,21.6843814849854 1.4820556640625,21.6843814849854 -0.222256660461426,21.9515552520752 0.0107417106628418,20.0408792495728 0.0107417106628418,20.0408792495728 1.34105587005615,16.8949791193008 4.68633639812469,16.1711768507957 4.68633651733398,16.1711766719818 6.00398603454232,14.6580341458321 8.15762710571289,7.54573726654053 8.15762710571289,7.54573726654053 5.9816578142345,2.29003429412842 7.51063323020935,0.541594505310059 7.51063334941864,0.541594505310059 7.70646417140961,0.158027648925781 7.91360747814178,0.00866127014160156 8.11416697502136,0.000368118286132813z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.89 36.72"> \r<path d="M7.6448536,28.572465C5.1143398,29.321172 3.2635136,31.219585 2.6202049,31.95009 2.6280251,31.808189 2.356535,32.261993 2.356535,32.261993 2.356535,32.261993 2.4607849,32.133092 2.6202049,31.95009 2.6175251,32.005491 2.5765038,32.142791 2.4554157,32.441694 2.0205956,33.515901 3.3663025,33.488502 3.3663025,33.488502 7.1807442,32.910997 7.6448536,28.572465 7.6448536,28.572465z M29.497485,24.916215C28.788642,24.916154 28.351388,24.958539 28.351388,24.958539 32.41118,28.265863 36.186571,27.494958 36.186571,27.494958 37.732168,27.302356 35.374073,25.970947 35.374073,25.970947 33.193819,25.071157 30.85073,24.916334 29.497485,24.916215z M15.625316,15.985075C15.625316,15.985075,14.15922,23.086126,12.327924,25.192241L22.486601,23.68123C22.486601,23.68123,17.424112,19.144097,15.625316,15.985075z M34.571964,7.8262539C34.769434,7.8133474,34.994606,7.8998456,35.23263,8.0976054L36.79708,9.4043382C37.556257,10.040459,38.799718,11.079494,39.559395,11.712915L41.125042,13.021558C41.886219,13.65698,41.874519,14.685113,41.104244,15.304233L39.515696,16.582876C38.74422,17.206696,37.483257,18.22163,36.711882,18.842151L35.123232,20.120092C34.353255,20.743913,33.731476,20.222995,33.742476,18.966455L33.763976,16.552374 24.553265,16.552374C23.904886,16.552374,23.379,16.025556,23.379,15.377135L23.379,12.830751C23.379,12.18303,23.904886,11.656913,24.553265,11.656913L33.808373,11.656913 33.829072,9.2285321C33.837186,8.3641583,34.137532,7.8546474,34.571964,7.8262539z M15.822783,2.8691583C15.709185,2.8831162 15.592195,3.0075927 15.478817,3.3033819 15.478817,3.3033819 14.930717,5.9252309 16.302514,10.281932 16.302515,10.281933 17.469812,6.8248974 16.590914,4.1791182 16.590914,4.1791182 16.228488,2.8193059 15.822783,2.8691583z M14.581626,0.00061225891C15.662847,-0.04088068 16.637714,2.0410428 16.637714,2.0410433 19.668307,8.5202198 16.802514,12.66025 16.802514,12.66025 19.803807,19.737801 25.818194,23.517129 25.818194,23.517129 31.661881,23.203327 35.925572,24.679838 35.925572,24.679838 39.279064,26.44415 38.156467,28.093362 38.156467,28.093362 34.641575,32.015291 24.318197,25.899246 24.318197,25.899246L11.011526,28.142162C9.0889406,34.722911 2.6631737,36.269222 2.6631737,36.269222 -0.40004921,36.715724 0.019384384,33.519802 0.019384384,33.519802 2.4100056,28.258064 8.4217119,27.047655 8.4217119,27.047655 10.789427,24.516437 14.660018,12.62055 14.660018,12.62055 10.749126,3.8301156 13.497121,0.90566444 13.497121,0.90566492 13.848995,0.26420975 14.221219,0.014443398 14.581626,0.00061225891z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 79.8 79.17"> \r<path d="M13.045322,52.508999L38.248989,52.508999C38.248989,52.508999,38.709995,54.995648,38.821999,55.457997L13.045322,55.457997C12.36961,55.457997,11.824001,54.911156,11.824001,54.235421L11.824001,53.730179C11.824001,53.055943,12.36961,52.508999,13.045322,52.508999z M12.988497,43.084L35.285229,43.084C35.295528,43.222233,35.28653,43.361367,35.235729,43.495499L34.257832,46.034001 12.988497,46.034001C12.313898,46.034001,11.767,45.486973,11.767,44.811112L11.767,44.306992C11.767,43.631032,12.313898,43.084,12.988497,43.084z M12.819266,33.830998L34.476269,33.830998 34.78746,34.530152C34.934555,34.864831,34.862957,35.259301,34.606464,35.521084L33.347397,36.779999 12.819266,36.779999C12.144886,36.779999,11.598,36.233235,11.598,35.557484L11.598,35.052315C11.598,34.377965,12.144886,33.830998,12.819266,33.830998z M57.891598,25.708001C50.128597,25.708001 43.836998,32.000382 43.836998,39.763001 43.836998,47.525021 50.128597,53.822003 57.891598,53.822003 65.655899,53.822003 71.948997,47.525021 71.948997,39.763001 71.948997,32.000382 65.655899,25.708001 57.891598,25.708001z M12.779442,24.672001L38.249001,24.672001 38.249001,27.31778C38.249001,27.423289,38.228298,27.523594,38.194397,27.620001L12.779442,27.620001C12.103619,27.620001,11.558001,27.073063,11.558,26.398518L11.558,25.893282C11.558001,25.217438,12.103619,24.672,12.779442,24.672001z M57.891987,18.101C58.184948,18.101,58.477921,18.212676,58.70192,18.436024L60.959702,20.691228C61.204403,20.937331,61.572899,21.00623,61.888096,20.865729L64.812477,19.572726C65.391876,19.313626,66.065071,19.579127,66.321671,20.156027L67.843864,23.587134C67.984261,23.902134,68.300652,24.109236,68.648453,24.109236L72.400932,24.109236C73.032631,24.109236,73.544319,24.619635,73.544319,25.253737L73.544319,28.449044C73.544319,28.795344,73.759026,29.104045,74.079315,29.227744L77.061203,30.378645C77.65229,30.605446,77.946495,31.270747,77.718689,31.85925L76.367004,35.359253C76.240807,35.684655,76.318909,36.054555,76.565002,36.300557L79.219986,38.951661C79.667885,39.399663,79.667885,40.126164,79.219986,40.574063L76.959602,42.831868C76.7173,43.074067,76.64711,43.443871,76.787704,43.758969L78.080696,46.679577C78.337189,47.261674,78.07679,47.936078,77.497299,48.192578L74.068916,49.713383C73.751221,49.854081,73.544319,50.171887,73.544319,50.519387L73.544319,54.266888C73.544319,54.902188,73.032631,55.416592,72.400932,55.416592L72.272133,55.416592 79.644485,73.135323C79.803284,73.518021,79.415283,73.898423,79.036392,73.728921L70.430946,69.932213C70.140549,69.804619,69.805847,69.939919,69.688843,70.230416L66.173065,78.778534C66.01297,79.17183,65.459679,79.17183,65.295479,78.782433L58.140621,61.623501C58.110821,61.546799 58.102921,61.464802 58.084721,61.389306 57.929722,61.4114 57.776123,61.408803 57.622326,61.371003L50.464973,78.562333C50.30217,78.950532,49.747475,78.950532,49.588676,78.55983L46.0718,70.011719C45.952,69.722619,45.617203,69.582017,45.327003,69.712113L36.721661,73.509026C36.341358,73.676926,35.954563,73.296822,36.112061,72.916726L43.394718,55.416592 43.384212,55.416592C42.75272,55.416592,42.23962,54.902188,42.23962,54.266888L42.23962,51.074086C42.23962,50.728982,42.026226,50.417782,41.704525,50.296784L38.725445,49.144478C38.133049,48.917782,37.839951,48.253777,38.066647,47.665276L39.416939,44.162572C39.540539,43.838471,39.462341,43.471268,39.217541,43.225171L36.563961,40.574063C36.118664,40.126164,36.118664,39.399663,36.563961,38.951661L38.827045,36.691254C39.067844,36.447754,39.135544,36.07536,38.997543,35.76286L37.702053,32.84105C37.446751,32.264149,37.705853,31.585747,38.283947,31.328049L41.717525,29.811144C42.035324,29.670445,42.23962,29.355445,42.23962,29.007643L42.23962,25.253737C42.23962,24.619635,42.75272,24.109236,43.384212,24.109236L46.579494,24.109236C46.922096,24.109236,47.233292,23.895533,47.35569,23.572733L48.506485,20.592228C48.734383,20.003728,49.398579,19.709427,49.989571,19.936028L53.490948,21.28493C53.816547,21.41383,54.186245,21.33323,54.432346,21.088427L57.08213,18.436024C57.306076,18.212676,57.599026,18.101,57.891987,18.101z M12.767801,14.355L28.895399,14.355C29.571199,14.355,30.118,14.900437,30.118,15.576283L30.118,16.081517C30.118,16.757363,29.571199,17.303,28.895399,17.302998L12.767801,17.302998C12.092001,17.303,11.545,16.757363,11.545,16.081517L11.545,15.576283C11.545,14.900437,12.092001,14.355,12.767801,14.355z M2.0428958,0L58.252697,0C59.380299,5.5027613E-07,60.297001,0.91663225,60.297001,2.0428625L60.297001,15.915388 59.062599,14.68368C58.755394,14.377679 58.349094,14.208378 57.915493,14.208378 57.481892,14.208378 57.075592,14.377679 56.768391,14.682281L54.987083,16.466191 54.987083,6.9309488C54.987083,6.0376936,54.259182,5.3111892,53.364677,5.3111888L6.9309335,5.3111888C6.0377102,5.3111892,5.3112183,6.0376936,5.3112187,6.9309488L5.3112187,65.583657C5.3112183,66.478165,6.0377102,67.204667,6.9309335,67.204667L34.447914,67.204667 32.238407,72.515999 2.0428958,72.515999C0.91667557,72.515999,0,71.59919,0,70.471688L0,2.0428625C0,0.91663225,0.91667557,5.5027613E-07,2.0428958,0z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 51.96 68.12"> \r<path d="M37.080555,47.576L38.291435,47.576 38.291435,48.950867C39.222343,48.979565,39.857681,49.200859,40.330234,49.437954L39.931873,50.797321C39.577709,50.635822 38.926773,50.294731 37.922974,50.294731 36.889175,50.294731 36.52071,50.82592 36.52071,51.328606 36.52071,51.935291 37.05196,52.273685 38.307034,52.776371 39.960472,53.396156 40.700001,54.193035 40.700001,55.508102 40.700001,56.763271 39.827686,57.872646 38.202846,58.138241L38.202846,59.659 36.992065,59.659 36.992065,58.226837C36.062454,58.198139,35.131546,57.929943,34.598999,57.575752L34.99876,56.187786C35.575504,56.528877 36.401024,56.838871 37.301933,56.838871 38.232841,56.838871 38.868179,56.380482 38.868179,55.672199 38.868179,55.005516 38.35133,54.578526 37.257637,54.180038 35.70829,53.617451 34.70319,52.909168 34.70319,51.5368 34.70319,50.266033 35.588604,49.289558 37.080555,49.023766z M19.890465,44.274742C18.776022,45.96743,17.721376,47.70702,16.707029,49.442707L19.890465,49.442707z M10.073271,39.625072L10.073271,49.442707 16.087261,49.442707C14.479343,47.218723 13.008019,44.855537 11.292008,42.739552 11.601892,42.252655 12.000272,41.852859 12.487246,41.54166 13.336102,42.229156 14.060065,42.85675 15.086012,43.593845 15.231905,43.696545 16.205755,44.364643 16.286449,44.35944 16.47394,44.343842 16.968815,43.468746 17.273399,43.091148 18.04686,42.134056 18.941313,41.134064 19.890465,40.161568L19.890465,39.625072z M29.507999,39.112L41.888,39.112 41.888,41.778999 29.507999,41.778999z M25.371981,35.487C25.884954,35.487 26.403128,35.487 26.9188,35.487 27.012497,35.684898 26.543821,35.932396 26.285934,36.192795 24.460527,38.015682 22.787514,40.10677 21.223696,42.322956L21.223696,50.775997 8.7399997,50.775997 8.7399997,38.291679 21.223696,38.291679 21.223696,38.847778C22.605225,37.545586,24.04265,36.358093,25.371981,35.487z M19.890465,26.353916C18.777222,28.046638,17.721376,29.784861,16.708328,31.520683L19.890465,31.520683z M29.507999,26.334999L41.888,26.334999 41.888,29.000999 29.507999,29.000999z M10.073271,21.705454L10.073271,31.520683 16.08596,31.520683C14.477943,29.296654 13.008019,26.934523 11.292008,24.817295 11.601892,24.330389 12.000272,23.931984 12.487246,23.620779 13.336102,24.306988 14.060065,24.935898 15.086012,25.674107 15.231905,25.775707 16.205755,26.443716 16.286449,26.437216 16.47394,26.424116 16.968815,25.546604 17.273399,25.169001 18.04686,24.211887 18.941313,23.213175 19.890465,22.240461L19.890465,21.705454z M25.371981,17.566C25.884954,17.566 26.403128,17.566 26.9188,17.566 27.012497,17.762503 26.543821,18.011305 26.285934,18.27051 24.460527,20.094633 22.787514,22.18586 21.223696,24.401989L21.223696,32.854 8.7399997,32.854 8.7399997,20.372036 21.223696,20.372036 21.223696,20.926744C22.605225,19.624626,24.04265,18.438412,25.371981,17.566z M4.8593511,5.1484103L4.8593511,62.978733 47.09613,62.978733 47.09613,18.101395 33.713406,18.101395 33.713406,5.1484103z M0,0L33.713406,0 36.46339,0 51.958,15.170411 51.958,68.122002 0,68.122002z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 48.81 64"> \r<path d="M14.004001,37.829998L14.004001,50.509998 35.589001,50.509998 35.589001,37.829998z M25.777,25.152L29.323999,25.152 29.323999,33.303001 25.777,33.303001z M10.307,23.341L17.438477,23.341 17.438477,35.000359 31.927826,35.000359 31.927826,23.341 34.154617,23.341 39.285999,28.471783 39.285999,52.32 10.307,52.32z M4.5664377,4.83533L4.5664377,59.166 44.24757,59.166 44.24757,17.005899 31.675993,17.005899 31.675993,4.83533z M0,0L31.675993,0 34.259209,0 45.368675,10.8783 48.813999,14.2494 48.813999,64 0,64z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 47.4 47.92"> \r<path d="M8.1099597,36.94997L8.1099597,41.793968 39.213959,41.793968 39.213959,36.94997z M12.42,0.049999889L18.4,0.049999889 18.4,12.252 12.42,12.252z M0,0L7.9001866,0 7.9001866,14.64218 39.210766,14.64218 39.210766,0 47.401001,0 47.401001,47.917 0,47.917z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="book-address" d="M25,4H10A3.99992,3.99992,0,0,0,6,8V24a4,4,0,0,0,4,4H25a1,1,0,0,0,1-1V25H10a1,1,0,0,1,0-2H26V5A1,1,0,0,0,25,4ZM20.06287,18.49219A.50775.50775,0,0,1,19.555,19h-7.11a.50775.50775,0,0,1-.50788-.50781V17.526a1.01619,1.01619,0,0,1,.4704-.85705l1.56085-.99292-.14721-1.17725a1.48129,1.48129,0,0,1-.77161-.811l-.10876-.32617a.74083.74083,0,0,1,.05438-.63537V10.89563a3.00482,3.00482,0,1,1,6.00964,0V12.7262a.74083.74083,0,0,1,.05438.63537l-.10876.32617a1.48129,1.48129,0,0,1-.77161.811L18.03162,15.676l1.56085.99292a1.01619,1.01619,0,0,1,.4704.85705ZM31,20v3a1,1,0,0,1-1,1H28V19h2A1,1,0,0,1,31,20Zm0-7v3a1,1,0,0,1-1,1H28V12h2A1,1,0,0,1,31,13Zm0-7V9a1,1,0,0,1-1,1H28V5h2A1,1,0,0,1,31,6Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="book-address" d="M25,4H10A3.99992,3.99992,0,0,0,6,8V24a4,4,0,0,0,4,4H25a1,1,0,0,0,1-1V25H10a1,1,0,0,1,0-2H26V5A1,1,0,0,0,25,4ZM20.06287,18.49219A.50775.50775,0,0,1,19.555,19h-7.11a.50775.50775,0,0,1-.50788-.50781V17.526a1.01619,1.01619,0,0,1,.4704-.85705l1.56085-.99292-.14721-1.17725a1.48129,1.48129,0,0,1-.77161-.811l-.10876-.32617a.74083.74083,0,0,1,.05438-.63537V10.89563a3.00482,3.00482,0,1,1,6.00964,0V12.7262a.74083.74083,0,0,1,.05438.63537l-.10876.32617a1.48129,1.48129,0,0,1-.77161.811L18.03162,15.676l1.56085.99292a1.01619,1.01619,0,0,1,.4704.85705ZM31,20v3a1,1,0,0,1-1,1H28V19h2A1,1,0,0,1,31,20Zm0-7v3a1,1,0,0,1-1,1H28V12h2A1,1,0,0,1,31,13Zm0-7V9a1,1,0,0,1-1,1H28V5h2A1,1,0,0,1,31,6Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="thumbnails-small" d="M19,22v4a1,1,0,0,1-1,1H14a1,1,0,0,1-1-1V22a1,1,0,0,1,1-1h4A1,1,0,0,1,19,22Zm-9-1H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,10,21Zm0-8H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,10,13Zm8,0H14a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,18,13ZM10,5H6A1,1,0,0,0,5,6v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5ZM26,5H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,26,5Zm0,8H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,26,13Zm0,8H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,26,21ZM18,5H14a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,18,5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="thumbnails-small" d="M19,22v4a1,1,0,0,1-1,1H14a1,1,0,0,1-1-1V22a1,1,0,0,1,1-1h4A1,1,0,0,1,19,22Zm-9-1H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,10,21Zm0-8H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,10,13Zm8,0H14a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,18,13ZM10,5H6A1,1,0,0,0,5,6v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5ZM26,5H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,26,5Zm0,8H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V14A1,1,0,0,0,26,13Zm0,8H22a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,26,21ZM18,5H14a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,18,5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="archive" d="M6,27a1,1,0,0,0,1,1H25a1,1,0,0,0,1-1V13H6Zm6-10a1,1,0,0,1,1-1h6a1,1,0,0,1,1,1v1a1,1,0,0,1-1,1H13a1,1,0,0,1-1-1ZM28,7v4H4V7A1,1,0,0,1,5,6H27A1,1,0,0,1,28,7Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="archive" d="M6,27a1,1,0,0,0,1,1H25a1,1,0,0,0,1-1V13H6Zm6-10a1,1,0,0,1,1-1h6a1,1,0,0,1,1,1v1a1,1,0,0,1-1,1H13a1,1,0,0,1-1-1ZM28,7v4H4V7A1,1,0,0,1,5,6H27A1,1,0,0,1,28,7Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="table" d="M25,4H8A3.00328,3.00328,0,0,0,5,7V26a2.00229,2.00229,0,0,0,2,2H26a2.00229,2.00229,0,0,0,2-2V7A3.00328,3.00328,0,0,0,25,4ZM12,25.5a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm7,12a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm7,12a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="table" d="M25,4H8A3.00328,3.00328,0,0,0,5,7V26a2.00229,2.00229,0,0,0,2,2H26a2.00229,2.00229,0,0,0,2-2V7A3.00328,3.00328,0,0,0,25,4ZM12,25.5a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm7,12a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm7,12a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Zm0-6a.5.5,0,0,1-.5.5h-4a.5.5,0,0,1-.5-.5v-3a.5.5,0,0,1,.5-.5h4a.5.5,0,0,1,.5.5Z"/>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="glyphicons-basic"
+ viewBox="0 0 32 32"
+ version="1.1"
+ >
+
+
+ <path
+
+ d="m 12.442612,9.98438 v 4.2998 a 1.947,1.947 0 0 0 -0.91315,2.22729 l -1.6097998,1.60987 a 1,1 0 0 0 1.4141798,1.41418 l 1.6098,-1.60974 a 1.99075,1.99075 0 0 0 1.499,-3.65527 V 9.98438 a 1,1 0 1 0 -2,0 z m 1.11773,-5.98389 A 12.01,12.01 0 0 1 25.404522,15 h 2.09638 a 0.50006,0.50006 0 0 1 0.41113,0.78467 l -3.54578,5.12158 a 0.5,0.5 0 0 1 -0.82214,0 l -3.54578,-5.12158 A 0.50006,0.50006 0 0 1 20.409462,15 h 1.98672 a 9.0112,9.0112 0 0 0 -8.7652,-7.99829 9.102,9.102 0 0 0 -9.1716898,8.72412 8.9935,8.9935 0 0 0 15.1688898,6.8147 0.99317,0.99317 0 0 1 1.50342,0.15136 l 0.57239,0.82691 A 1.01274,1.01274 0 0 1 21.541272,24.84351 11.98253,11.98253 0 0 1 1.4648222,15.5144 12.11761,12.11761 0 0 1 13.560342,4.00049 Z"
+ />
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="UTF-8" standalone="no"?>
+<svg
+ xmlns:dc="http://purl.org/dc/elements/1.1/"
+ xmlns:cc="http://creativecommons.org/ns#"
+ xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
+ xmlns:svg="http://www.w3.org/2000/svg"
+ xmlns="http://www.w3.org/2000/svg"
+ id="glyphicons-basic"
+ viewBox="0 0 32 32"
+ version="1.1"
+ >
+ <path fill="#fff" d="m 12.442612,9.98438 v 4.2998 a 1.947,1.947 0 0 0 -0.91315,2.22729 l -1.6097998,1.60987 a 1,1 0 0 0 1.4141798,1.41418 l 1.6098,-1.60974 a 1.99075,1.99075 0 0 0 1.499,-3.65527 V 9.98438 a 1,1 0 1 0 -2,0 z m 1.11773,-5.98389 A 12.01,12.01 0 0 1 25.404522,15 h 2.09638 a 0.50006,0.50006 0 0 1 0.41113,0.78467 l -3.54578,5.12158 a 0.5,0.5 0 0 1 -0.82214,0 l -3.54578,-5.12158 A 0.50006,0.50006 0 0 1 20.409462,15 h 1.98672 a 9.0112,9.0112 0 0 0 -8.7652,-7.99829 9.102,9.102 0 0 0 -9.1716898,8.72412 8.9935,8.9935 0 0 0 15.1688898,6.8147 0.99317,0.99317 0 0 1 1.50342,0.15136 l 0.57239,0.82691 A 1.01274,1.01274 0 0 1 21.541272,24.84351 11.98253,11.98253 0 0 1 1.4648222,15.5144 12.11761,12.11761 0 0 1 13.560342,4.00049 Z"
+ />
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="shield-star" d="M25.5459,4.8501A23.59806,23.59806,0,0,0,16,3,23.59806,23.59806,0,0,0,6.4541,4.8501,2.50667,2.50667,0,0,0,5,7.12158V14.5c0,7.81592,9.88086,13.106,10.30176,13.32715a1.49672,1.49672,0,0,0,1.39648,0C17.11914,27.606,27,22.31592,27,14.5V7.12158A2.50667,2.50667,0,0,0,25.5459,4.8501Zm-3.24884,7.92651-1.79132,1.30127-1.69074,1.228.64539,1.98748.68225,2.10065a.42931.42931,0,0,1-.66058.48L17.6944,18.57562l-1.69031-1.2279-1.69037,1.2279L12.52606,19.874a.42931.42931,0,0,1-.66058-.48l.68225-2.10065.64539-1.98748-1.69074-1.228L9.71106,12.77661A.42931.42931,0,0,1,9.96338,12H14.2666l.64557-1.98755.68359-2.10522a.42927.42927,0,0,1,.81659,0l.6836,2.10522L17.74152,12h4.30322A.42931.42931,0,0,1,22.29706,12.77661Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="shield-star" d="M25.5459,4.8501A23.59806,23.59806,0,0,0,16,3,23.59806,23.59806,0,0,0,6.4541,4.8501,2.50667,2.50667,0,0,0,5,7.12158V14.5c0,7.81592,9.88086,13.106,10.30176,13.32715a1.49672,1.49672,0,0,0,1.39648,0C17.11914,27.606,27,22.31592,27,14.5V7.12158A2.50667,2.50667,0,0,0,25.5459,4.8501Zm-3.24884,7.92651-1.79132,1.30127-1.69074,1.228.64539,1.98748.68225,2.10065a.42931.42931,0,0,1-.66058.48L17.6944,18.57562l-1.69031-1.2279-1.69037,1.2279L12.52606,19.874a.42931.42931,0,0,1-.66058-.48l.68225-2.10065.64539-1.98748-1.69074-1.228L9.71106,12.77661A.42931.42931,0,0,1,9.96338,12H14.2666l.64557-1.98755.68359-2.10522a.42927.42927,0,0,1,.81659,0l.6836,2.10522L17.74152,12h4.30322A.42931.42931,0,0,1,22.29706,12.77661Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="shield-empty-star" d="M25.5459,4.8501A23.59806,23.59806,0,0,0,16,3,23.59806,23.59806,0,0,0,6.4541,4.8501,2.50667,2.50667,0,0,0,5,7.12158V14.5c0,7.81592,9.88086,13.106,10.30176,13.32715a1.49672,1.49672,0,0,0,1.39648,0C17.11914,27.606,27,22.31592,27,14.5V7.12158A2.50667,2.50667,0,0,0,25.5459,4.8501ZM24,14.5c0,4.47656-4.67969,8.14746-7.46973,9.93751l-.542.34716-.54-.34863C13.209,22.99121,8,19.13037,8,14.5V7.43018l.66309-.23731A21.9176,21.9176,0,0,1,16,6a22.137,22.137,0,0,1,7.33691,1.19287L24,7.43018Zm-1.70294-1.72339-1.79132,1.30127-1.69074,1.228.64539,1.98748.68225,2.10065a.42931.42931,0,0,1-.66058.48L17.6944,18.57562l-1.69031-1.2279-1.69037,1.2279L12.52606,19.874a.42931.42931,0,0,1-.66058-.48l.68225-2.10065.64539-1.98748-1.69074-1.228L9.71106,12.77661A.42931.42931,0,0,1,9.96338,12H14.2666l.64557-1.98755.68359-2.10522a.42927.42927,0,0,1,.81659,0l.6836,2.10522L17.74152,12h4.30322A.42931.42931,0,0,1,22.29706,12.77661Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="shield-empty-star" d="M25.5459,4.8501A23.59806,23.59806,0,0,0,16,3,23.59806,23.59806,0,0,0,6.4541,4.8501,2.50667,2.50667,0,0,0,5,7.12158V14.5c0,7.81592,9.88086,13.106,10.30176,13.32715a1.49672,1.49672,0,0,0,1.39648,0C17.11914,27.606,27,22.31592,27,14.5V7.12158A2.50667,2.50667,0,0,0,25.5459,4.8501ZM24,14.5c0,4.47656-4.67969,8.14746-7.46973,9.93751l-.542.34716-.54-.34863C13.209,22.99121,8,19.13037,8,14.5V7.43018l.66309-.23731A21.9176,21.9176,0,0,1,16,6a22.137,22.137,0,0,1,7.33691,1.19287L24,7.43018Zm-1.70294-1.72339-1.79132,1.30127-1.69074,1.228.64539,1.98748.68225,2.10065a.42931.42931,0,0,1-.66058.48L17.6944,18.57562l-1.69031-1.2279-1.69037,1.2279L12.52606,19.874a.42931.42931,0,0,1-.66058-.48l.68225-2.10065.64539-1.98748-1.69074-1.228L9.71106,12.77661A.42931.42931,0,0,1,9.96338,12H14.2666l.64557-1.98755.68359-2.10522a.42927.42927,0,0,1,.81659,0l.6836,2.10522L17.74152,12h4.30322A.42931.42931,0,0,1,22.29706,12.77661Z"/>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 21.33 19.09"> \r<path d="M14.253,2.9820002L21.333001,8.2267867 21.333001,10.959683 14.253,16.181 14.253,13.338545 18.888108,9.6147043 18.888108,9.5705148 14.253,5.8464543z M7.0810001,2.9820002L7.0810001,5.8257047 2.4467559,9.5495254 2.4467559,9.5924951 7.0810001,13.317745 7.0810001,16.181 0,10.937683 0,8.2045766z M11.312985,0L13.231,0.33202956 9.9977758,19.091 8.0810004,18.760201z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="three-dimensional-full" d="M5,10.56616l10,6.00025V27.56616L5.48535,21.85742A1.00022,1.00022,0,0,1,5,21ZM16.51465,3.14258a1.003,1.003,0,0,0-1.0293,0L6.00012,8.83374l9.99988,6,9.99988-6ZM17,16.56641V27.56616l9.51465-5.70874A1.00022,1.00022,0,0,0,27,21V10.56616Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="three-dimensional-full" d="M5,10.56616l10,6.00025V27.56616L5.48535,21.85742A1.00022,1.00022,0,0,1,5,21ZM16.51465,3.14258a1.003,1.003,0,0,0-1.0293,0L6.00012,8.83374l9.99988,6,9.99988-6ZM17,16.56641V27.56616l9.51465-5.70874A1.00022,1.00022,0,0,0,27,21V10.56616Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="three-dimensional" d="M26.96533,9.74023a.96585.96585,0,0,0-.037-.09033.99455.99455,0,0,0-.06158-.14721,8.74417,8.74417,0,0,0-.15613-.20484,1.02264,1.02264,0,0,0-.09283-.07348.984.984,0,0,0-.10315-.08179l-10-6a1.003,1.003,0,0,0-1.0293,0l-10,6a1.0128,1.0128,0,0,0-.10248.0813,1.02233,1.02233,0,0,0-.09356.07422.99185.99185,0,0,0-.08667.11206.99314.99314,0,0,0-.0694.09253,1.00047,1.00047,0,0,0-.06012.14355c-.01215.032-.0296.06128-.03851.09424A1.00027,1.00027,0,0,0,5,10V21a1.00022,1.00022,0,0,0,.48535.85742l10,6,.01087.00464.01062.00806a.97332.97332,0,0,0,.16388.0664c.02374.0083.04565.022.06976.02832a.97535.97535,0,0,0,.519,0c.02411-.00634.046-.02.06976-.02832a.97332.97332,0,0,0,.16388-.0664l.01062-.00806.01087-.00464,10-6A1.00022,1.00022,0,0,0,27,21V10A.99964.99964,0,0,0,26.96533,9.74023ZM15,25.2334,7,20.43359v-8.667l8,4.79981Zm1-10.39966L7.94354,10,16,5.166,24.05646,10Zm9,5.59985L17,25.2334v-8.667l8-4.79981Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="three-dimensional" d="M26.96533,9.74023a.96585.96585,0,0,0-.037-.09033.99455.99455,0,0,0-.06158-.14721,8.74417,8.74417,0,0,0-.15613-.20484,1.02264,1.02264,0,0,0-.09283-.07348.984.984,0,0,0-.10315-.08179l-10-6a1.003,1.003,0,0,0-1.0293,0l-10,6a1.0128,1.0128,0,0,0-.10248.0813,1.02233,1.02233,0,0,0-.09356.07422.99185.99185,0,0,0-.08667.11206.99314.99314,0,0,0-.0694.09253,1.00047,1.00047,0,0,0-.06012.14355c-.01215.032-.0296.06128-.03851.09424A1.00027,1.00027,0,0,0,5,10V21a1.00022,1.00022,0,0,0,.48535.85742l10,6,.01087.00464.01062.00806a.97332.97332,0,0,0,.16388.0664c.02374.0083.04565.022.06976.02832a.97535.97535,0,0,0,.519,0c.02411-.00634.046-.02.06976-.02832a.97332.97332,0,0,0,.16388-.0664l.01062-.00806.01087-.00464,10-6A1.00022,1.00022,0,0,0,27,21V10A.99964.99964,0,0,0,26.96533,9.74023ZM15,25.2334,7,20.43359v-8.667l8,4.79981Zm1-10.39966L7.94354,10,16,5.166,24.05646,10Zm9,5.59985L17,25.2334v-8.667l8-4.79981Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="dashboard" d="M24.91113,25.00391a1.44289,1.44289,0,0,1-2.23492-.01831.99436.99436,0,0,1-.31195-.20728l-2.12207-2.12207a.99989.99989,0,0,1,1.41406-1.41406l1.35187,1.3518A8.82919,8.82919,0,0,0,24.93536,18H23a1,1,0,0,1,0-2h1.93689c-.00818-.07617-.00787-.15125-.01794-.22754a8.8523,8.8523,0,0,0-1.896-4.381l-1.36572,1.36633a.99989.99989,0,0,1-1.41407-1.41406l1.36652-1.36719a8.88709,8.88709,0,0,0-4.55792-1.918c-.01734-.002-.03443-.00134-.05176-.00317V10a1,1,0,0,1-2,0V8.05811a8.86289,8.86289,0,0,0-4.60925,1.91857l1.36706,1.36707a.99367.99367,0,0,1,.29193.70117l5.16413,3.77478a1.71311,1.71311,0,1,1-2.394,2.39392l-3.7746-5.16382a.99625.99625,0,0,1-.70154-.292L8.97736,11.39136A9.01057,9.01057,0,0,0,7.05835,16H9a1,1,0,0,1,0,2h-1.937a8.946,8.946,0,0,0,1.92718,4.5957l1.35352-1.35351a.99989.99989,0,0,1,1.41406,1.41406L9.63574,24.77832a.99127.99127,0,0,1-.30694.20386,1.44467,1.44467,0,0,1-2.238.02173A11.98608,11.98608,0,0,1,17.3877,5.07812a11.97564,11.97564,0,0,1,7.52343,19.92579Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="dashboard" d="M24.91113,25.00391a1.44289,1.44289,0,0,1-2.23492-.01831.99436.99436,0,0,1-.31195-.20728l-2.12207-2.12207a.99989.99989,0,0,1,1.41406-1.41406l1.35187,1.3518A8.82919,8.82919,0,0,0,24.93536,18H23a1,1,0,0,1,0-2h1.93689c-.00818-.07617-.00787-.15125-.01794-.22754a8.8523,8.8523,0,0,0-1.896-4.381l-1.36572,1.36633a.99989.99989,0,0,1-1.41407-1.41406l1.36652-1.36719a8.88709,8.88709,0,0,0-4.55792-1.918c-.01734-.002-.03443-.00134-.05176-.00317V10a1,1,0,0,1-2,0V8.05811a8.86289,8.86289,0,0,0-4.60925,1.91857l1.36706,1.36707a.99367.99367,0,0,1,.29193.70117l5.16413,3.77478a1.71311,1.71311,0,1,1-2.394,2.39392l-3.7746-5.16382a.99625.99625,0,0,1-.70154-.292L8.97736,11.39136A9.01057,9.01057,0,0,0,7.05835,16H9a1,1,0,0,1,0,2h-1.937a8.946,8.946,0,0,0,1.92718,4.5957l1.35352-1.35351a.99989.99989,0,0,1,1.41406,1.41406L9.63574,24.77832a.99127.99127,0,0,1-.30694.20386,1.44467,1.44467,0,0,1-2.238.02173A11.98608,11.98608,0,0,1,17.3877,5.07812a11.97564,11.97564,0,0,1,7.52343,19.92579Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="save" d="M28,23v4a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V23a1,1,0,0,1,1-1H27A1,1,0,0,1,28,23ZM15.18628,19.36078a1,1,0,0,0,1.62744,0l5.55682-7.77954A1,1,0,0,0,21.55682,10H19V4a1,1,0,0,0-1-1H14a1,1,0,0,0-1,1v6H10.44318a1,1,0,0,0-.81372,1.58124Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="save" d="M28,23v4a1,1,0,0,1-1,1H5a1,1,0,0,1-1-1V23a1,1,0,0,1,1-1H27A1,1,0,0,1,28,23ZM15.18628,19.36078a1,1,0,0,0,1.62744,0l5.55682-7.77954A1,1,0,0,0,21.55682,10H19V4a1,1,0,0,0-1-1H14a1,1,0,0,0-1,1v6H10.44318a1,1,0,0,0-.81372,1.58124Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="copy-duplicate" d="M23,15.5V11l5,5H23.5A.5.5,0,0,1,23,15.5ZM11,10V4.5a.5.5,0,0,0-.5-.5H6A1,1,0,0,0,5,5V20a1,1,0,0,0,1,1h7V12a2.97194,2.97194,0,0,1,.18372-1H12A1,1,0,0,1,11,10Zm10,7V11.5a.5.5,0,0,0-.5-.5H16a1,1,0,0,0-1,1V27a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18.5a.5.5,0,0,0-.5-.5H22A1,1,0,0,1,21,17ZM13,4V8.5a.5.5,0,0,0,.5.5H18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="copy-duplicate" d="M23,15.5V11l5,5H23.5A.5.5,0,0,1,23,15.5ZM11,10V4.5a.5.5,0,0,0-.5-.5H6A1,1,0,0,0,5,5V20a1,1,0,0,0,1,1h7V12a2.97194,2.97194,0,0,1,.18372-1H12A1,1,0,0,1,11,10Zm10,7V11.5a.5.5,0,0,0-.5-.5H16a1,1,0,0,0-1,1V27a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18.5a.5.5,0,0,0-.5-.5H22A1,1,0,0,1,21,17ZM13,4V8.5a.5.5,0,0,0,.5.5H18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="square-edit" d="M24,16.65674l3-3V23.5A3.50424,3.50424,0,0,1,23.5,27H8.5A3.50424,3.50424,0,0,1,5,23.5V8.5A3.50424,3.50424,0,0,1,8.5,5h15a3.48475,3.48475,0,0,1,.756.08728L21.34326,8H8.5a.50641.50641,0,0,0-.5.5v15a.50641.50641,0,0,0,.5.5h15a.50641.50641,0,0,0,.5-.5ZM13.81323,20.63306c-.20654.5122.04108.76013.55316.55322,1.38123-.55786,3.8205-1.54492,3.84064-1.56519,0,0-2.82855-2.82812-2.85669-2.80029Zm12.8938-9.512L23.8786,8.293l-7.08588,7.08545L19.62128,18.207Zm2.92462-3.63183-2.12127-2.1211a.49991.49991,0,0,0-.7071,0L25.29285,6.87842,28.12128,9.707l1.51037-1.51025A.50052.50052,0,0,0,29.63165,7.48926Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="square-edit" d="M24,16.65674l3-3V23.5A3.50424,3.50424,0,0,1,23.5,27H8.5A3.50424,3.50424,0,0,1,5,23.5V8.5A3.50424,3.50424,0,0,1,8.5,5h15a3.48475,3.48475,0,0,1,.756.08728L21.34326,8H8.5a.50641.50641,0,0,0-.5.5v15a.50641.50641,0,0,0,.5.5h15a.50641.50641,0,0,0,.5-.5ZM13.81323,20.63306c-.20654.5122.04108.76013.55316.55322,1.38123-.55786,3.8205-1.54492,3.84064-1.56519,0,0-2.82855-2.82812-2.85669-2.80029Zm12.8938-9.512L23.8786,8.293l-7.08588,7.08545L19.62128,18.207Zm2.92462-3.63183-2.12127-2.1211a.49991.49991,0,0,0-.7071,0L25.29285,6.87842,28.12128,9.707l1.51037-1.51025A.50052.50052,0,0,0,29.63165,7.48926Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-filetypes" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="file" d="M20,11h5.5a.5.5,0,0,1,.5.5V27a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V5A1,1,0,0,1,8,4H18.5a.5.5,0,0,1,.5.5V10A1,1,0,0,0,20,11Zm1.5-2H26L21,4V8.5A.5.5,0,0,0,21.5,9Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-filetypes" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="file" d="M20,11h5.5a.5.5,0,0,1,.5.5V27a1,1,0,0,1-1,1H8a1,1,0,0,1-1-1V5A1,1,0,0,1,8,4H18.5a.5.5,0,0,1,.5.5V10A1,1,0,0,0,20,11Zm1.5-2H26L21,4V8.5A.5.5,0,0,0,21.5,9Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="folder-open" d="M6.05975,11.51489,4,19.75391V7A2.00006,2.00006,0,0,1,6,5h4.17157a1.99993,1.99993,0,0,1,1.41425.58582L13,7H26a2.00006,2.00006,0,0,1,2,2v1H8A1.9999,1.9999,0,0,0,6.05975,11.51489ZM29.43848,12H9.56152a1.99988,1.99988,0,0,0-1.94024,1.51489L4,28H28l3.37872-13.51489A2,2,0,0,0,29.43848,12Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="folder-open" d="M6.05975,11.51489,4,19.75391V7A2.00006,2.00006,0,0,1,6,5h4.17157a1.99993,1.99993,0,0,1,1.41425.58582L13,7H26a2.00006,2.00006,0,0,1,2,2v1H8A1.9999,1.9999,0,0,0,6.05975,11.51489ZM29.43848,12H9.56152a1.99988,1.99988,0,0,0-1.94024,1.51489L4,28H28l3.37872-13.51489A2,2,0,0,0,29.43848,12Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="globe" d="M12.142,6.77588A9.93171,9.93171,0,0,0,10.01489,10H8.0191A10.04454,10.04454,0,0,1,12.142,6.77588ZM6.84082,12h2.5578a17.33119,17.33119,0,0,0-.372,3H6.05072A9.91039,9.91039,0,0,1,6.84082,12Zm0,8a9.91039,9.91039,0,0,1-.7901-3H9.02661a17.33119,17.33119,0,0,0,.372,3ZM8.0191,22h1.99579A9.93171,9.93171,0,0,0,12.142,25.22412,10.04454,10.04454,0,0,1,8.0191,22ZM15,25.06036A9.08814,9.08814,0,0,1,12.1947,22H15ZM15,20H11.43512a14.63849,14.63849,0,0,1-.41174-3H15Zm0-5H11.02338a14.63849,14.63849,0,0,1,.41174-3H15Zm0-5H12.1947A9.08814,9.08814,0,0,1,15,6.93964Zm8.9809,0h-1.996a9.934,9.934,0,0,0-2.12768-3.22443A10.0449,10.0449,0,0,1,23.9809,10ZM17,6.93982A9.09076,9.09076,0,0,1,19.805,10H17ZM17,12h3.56476a14.63792,14.63792,0,0,1,.41186,3H17Zm0,5h3.97662a14.63792,14.63792,0,0,1-.41186,3H17Zm0,8.06018V22h2.805A9.09076,9.09076,0,0,1,17,25.06018Zm2.85724.16425A9.934,9.934,0,0,0,21.98492,22h1.996A10.0449,10.0449,0,0,1,19.85724,25.22443ZM25.15924,20H22.60132a17.325,17.325,0,0,0,.37207-3h2.97589A9.91,9.91,0,0,1,25.15924,20Zm-2.18585-5a17.325,17.325,0,0,0-.37207-3h2.55792a9.91,9.91,0,0,1,.79,3ZM28,16A12,12,0,1,0,16,28,12,12,0,0,0,28,16Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="globe" d="M12.142,6.77588A9.93171,9.93171,0,0,0,10.01489,10H8.0191A10.04454,10.04454,0,0,1,12.142,6.77588ZM6.84082,12h2.5578a17.33119,17.33119,0,0,0-.372,3H6.05072A9.91039,9.91039,0,0,1,6.84082,12Zm0,8a9.91039,9.91039,0,0,1-.7901-3H9.02661a17.33119,17.33119,0,0,0,.372,3ZM8.0191,22h1.99579A9.93171,9.93171,0,0,0,12.142,25.22412,10.04454,10.04454,0,0,1,8.0191,22ZM15,25.06036A9.08814,9.08814,0,0,1,12.1947,22H15ZM15,20H11.43512a14.63849,14.63849,0,0,1-.41174-3H15Zm0-5H11.02338a14.63849,14.63849,0,0,1,.41174-3H15Zm0-5H12.1947A9.08814,9.08814,0,0,1,15,6.93964Zm8.9809,0h-1.996a9.934,9.934,0,0,0-2.12768-3.22443A10.0449,10.0449,0,0,1,23.9809,10ZM17,6.93982A9.09076,9.09076,0,0,1,19.805,10H17ZM17,12h3.56476a14.63792,14.63792,0,0,1,.41186,3H17Zm0,5h3.97662a14.63792,14.63792,0,0,1-.41186,3H17Zm0,8.06018V22h2.805A9.09076,9.09076,0,0,1,17,25.06018Zm2.85724.16425A9.934,9.934,0,0,0,21.98492,22h1.996A10.0449,10.0449,0,0,1,19.85724,25.22443ZM25.15924,20H22.60132a17.325,17.325,0,0,0,.37207-3h2.97589A9.91,9.91,0,0,1,25.15924,20Zm-2.18585-5a17.325,17.325,0,0,0-.37207-3h2.55792a9.91,9.91,0,0,1,.79,3ZM28,16A12,12,0,1,0,16,28,12,12,0,0,0,28,16Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="inbox" d="M25.5,5H6.5A2.50263,2.50263,0,0,0,4,7.5v18A2.50263,2.50263,0,0,0,6.5,28h19A2.50263,2.50263,0,0,0,28,25.5V7.5A2.50263,2.50263,0,0,0,25.5,5ZM25,18H20.90991a.5.5,0,0,0-.49029.40186l-.83924,4.19628A.5.5,0,0,1,19.09009,23H12.90991a.5.5,0,0,1-.49029-.40186l-.83924-4.19628A.5.5,0,0,0,11.09009,18H7V8H25Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="inbox" d="M25.5,5H6.5A2.50263,2.50263,0,0,0,4,7.5v18A2.50263,2.50263,0,0,0,6.5,28h19A2.50263,2.50263,0,0,0,28,25.5V7.5A2.50263,2.50263,0,0,0,25.5,5ZM25,18H20.90991a.5.5,0,0,0-.49029.40186l-.83924,4.19628A.5.5,0,0,1,19.09009,23H12.90991a.5.5,0,0,1-.49029-.40186l-.83924-4.19628A.5.5,0,0,0,11.09009,18H7V8H25Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="book-library" d="M18,4H13a1,1,0,0,0-1,1V27a1,1,0,0,0,1,1h5a1,1,0,0,0,1-1V5A1,1,0,0,0,18,4ZM17,25.5a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5Zm0-18a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5ZM27.03668,4.55933a1,1,0,0,0-1.15845-.81116l-4.924.86822a1,1,0,0,0-.81115,1.15845l3.82025,21.66577a.99991.99991,0,0,0,1.15845.81116l4.924-.86823a.9999.9999,0,0,0,.81115-1.15844Zm1.18463,21.11511-1.96966.34729a.50009.50009,0,0,1-.57923-.40558l-.17364-.9848a.5.5,0,0,1,.40558-.57923l1.96966-.34735a.50009.50009,0,0,1,.57923.40558l.17364.98486A.50008.50008,0,0,1,28.22131,25.67444ZM9,4H4A1,1,0,0,0,3,5V27a1,1,0,0,0,1,1H9a1,1,0,0,0,1-1V5A1,1,0,0,0,9,4ZM8,25.5a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5Zm0-18a.5.5,0,0,1-.5.5h-2A.5.5,0,0,1,5,7.5v-1A.5.5,0,0,1,5.5,6h2a.5.5,0,0,1,.5.5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="book-library" d="M18,4H13a1,1,0,0,0-1,1V27a1,1,0,0,0,1,1h5a1,1,0,0,0,1-1V5A1,1,0,0,0,18,4ZM17,25.5a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5Zm0-18a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5ZM27.03668,4.55933a1,1,0,0,0-1.15845-.81116l-4.924.86822a1,1,0,0,0-.81115,1.15845l3.82025,21.66577a.99991.99991,0,0,0,1.15845.81116l4.924-.86823a.9999.9999,0,0,0,.81115-1.15844Zm1.18463,21.11511-1.96966.34729a.50009.50009,0,0,1-.57923-.40558l-.17364-.9848a.5.5,0,0,1,.40558-.57923l1.96966-.34735a.50009.50009,0,0,1,.57923.40558l.17364.98486A.50008.50008,0,0,1,28.22131,25.67444ZM9,4H4A1,1,0,0,0,3,5V27a1,1,0,0,0,1,1H9a1,1,0,0,0,1-1V5A1,1,0,0,0,9,4ZM8,25.5a.5.5,0,0,1-.5.5h-2a.5.5,0,0,1-.5-.5v-1a.5.5,0,0,1,.5-.5h2a.5.5,0,0,1,.5.5Zm0-18a.5.5,0,0,1-.5.5h-2A.5.5,0,0,1,5,7.5v-1A.5.5,0,0,1,5.5,6h2a.5.5,0,0,1,.5.5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="star" d="M27.34766,14.17944l-6.39209,4.64307,2.43744,7.506a.65414.65414,0,0,1-.62238.85632.643.643,0,0,1-.38086-.12744l-6.38568-4.6383-6.38574,4.6383a.643.643,0,0,1-.38086.12744.65419.65419,0,0,1-.62238-.85632l2.43744-7.506L4.66046,14.17944A.65194.65194,0,0,1,5.04358,13h7.89978L15.384,5.48438a.652.652,0,0,1,1.24018,0L19.06476,13h7.89978A.652.652,0,0,1,27.34766,14.17944Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="star" d="M27.34766,14.17944l-6.39209,4.64307,2.43744,7.506a.65414.65414,0,0,1-.62238.85632.643.643,0,0,1-.38086-.12744l-6.38568-4.6383-6.38574,4.6383a.643.643,0,0,1-.38086.12744.65419.65419,0,0,1-.62238-.85632l2.43744-7.506L4.66046,14.17944A.65194.65194,0,0,1,5.04358,13h7.89978L15.384,5.48438a.652.652,0,0,1,1.24018,0L19.06476,13h7.89978A.652.652,0,0,1,27.34766,14.17944Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="thumbnails-list" d="M11,14v4a1,1,0,0,1-1,1H6a1,1,0,0,1-1-1V14a1,1,0,0,1,1-1h4A1,1,0,0,1,11,14Zm-1,7H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,10,21ZM10,5H6A1,1,0,0,0,5,6v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5Zm17,6H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V12A1,1,0,0,0,27,11Zm0-6H14a1,1,0,0,0-1,1V7a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V6A1,1,0,0,0,27,5Zm0,18H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V24A1,1,0,0,0,27,23Zm0-6H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18A1,1,0,0,0,27,17Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="thumbnails-list" d="M11,14v4a1,1,0,0,1-1,1H6a1,1,0,0,1-1-1V14a1,1,0,0,1,1-1h4A1,1,0,0,1,11,14Zm-1,7H6a1,1,0,0,0-1,1v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V22A1,1,0,0,0,10,21ZM10,5H6A1,1,0,0,0,5,6v4a1,1,0,0,0,1,1h4a1,1,0,0,0,1-1V6A1,1,0,0,0,10,5Zm17,6H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V12A1,1,0,0,0,27,11Zm0-6H14a1,1,0,0,0-1,1V7a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V6A1,1,0,0,0,27,5Zm0,18H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V24A1,1,0,0,0,27,23Zm0-6H14a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18A1,1,0,0,0,27,17Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="door" d="M25.08307,4.92358l-10-.83337A.9908.9908,0,0,0,14.01849,5H14V26h.01849a.9907.9907,0,0,0,1.06458.90967l10-.83325A1.00012,1.00012,0,0,0,26,25.07983V5.92017A1,1,0,0,0,25.08307,4.92358ZM17,17a1,1,0,1,1,1-1A1,1,0,0,1,17,17ZM8,5h4V7H8V24h4v2H8a2.0026,2.0026,0,0,1-2-2V7A2.0026,2.0026,0,0,1,8,5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="door" d="M25.08307,4.92358l-10-.83337A.9908.9908,0,0,0,14.01849,5H14V26h.01849a.9907.9907,0,0,0,1.06458.90967l10-.83325A1.00012,1.00012,0,0,0,26,25.07983V5.92017A1,1,0,0,0,25.08307,4.92358ZM17,17a1,1,0,1,1,1-1A1,1,0,0,1,17,17ZM8,5h4V7H8V24h4v2H8a2.0026,2.0026,0,0,1-2-2V7A2.0026,2.0026,0,0,1,8,5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-halflings" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+ <path id="menu" d="M17,4V5a1,1,0,0,1-1,1H4A1,1,0,0,1,3,5V4A1,1,0,0,1,4,3H16A1,1,0,0,1,17,4ZM16,8H4A1,1,0,0,0,3,9v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V9A1,1,0,0,0,16,8Zm0,5H4a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V14A1,1,0,0,0,16,13Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-halflings" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 20 20">
+ <path fill="#fff" id="menu" d="M17,4V5a1,1,0,0,1-1,1H4A1,1,0,0,1,3,5V4A1,1,0,0,1,4,3H16A1,1,0,0,1,17,4ZM16,8H4A1,1,0,0,0,3,9v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V9A1,1,0,0,0,16,8Zm0,5H4a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H16a1,1,0,0,0,1-1V14A1,1,0,0,0,16,13Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="newspaper" d="M12.5,14h11a.5.5,0,0,0,.5-.5v-4a.5.5,0,0,0-.5-.5h-11a.5.5,0,0,0-.5.5v4A.5.5,0,0,0,12.5,14Zm10.99994,2h-4a.5.5,0,0,0-.5.5v1a.5.5,0,0,0,.5.5h4a.5.5,0,0,0,.5-.5v-1A.5.5,0,0,0,23.49994,16Zm0,4h-4a.5.5,0,0,0-.5.5v1a.5.5,0,0,0,.5.5h4a.5.5,0,0,0,.5-.5v-1A.5.5,0,0,0,23.49994,20Zm-11,2h4a.5.5,0,0,0,.5-.5v-1a.5.5,0,0,0-.5-.5h-4a.5.5,0,0,0-.5.5v1A.5.5,0,0,0,12.49994,22ZM27,5H9A.99943.99943,0,0,0,8,6V23a1,1,0,0,1-2,0V6A2.0026,2.0026,0,0,0,4,8V23a3.0035,3.0035,0,0,0,2.99805,3H25a3.00328,3.00328,0,0,0,3-3V6A.99943.99943,0,0,0,27,5ZM26,23a1.00067,1.00067,0,0,1-1,1H9.8291A2.99932,2.99932,0,0,0,10,23V7H26ZM12.49994,18h4a.5.5,0,0,0,.5-.5v-1a.5.5,0,0,0-.5-.5h-4a.5.5,0,0,0-.5.5v1A.5.5,0,0,0,12.49994,18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="newspaper" d="M12.5,14h11a.5.5,0,0,0,.5-.5v-4a.5.5,0,0,0-.5-.5h-11a.5.5,0,0,0-.5.5v4A.5.5,0,0,0,12.5,14Zm10.99994,2h-4a.5.5,0,0,0-.5.5v1a.5.5,0,0,0,.5.5h4a.5.5,0,0,0,.5-.5v-1A.5.5,0,0,0,23.49994,16Zm0,4h-4a.5.5,0,0,0-.5.5v1a.5.5,0,0,0,.5.5h4a.5.5,0,0,0,.5-.5v-1A.5.5,0,0,0,23.49994,20Zm-11,2h4a.5.5,0,0,0,.5-.5v-1a.5.5,0,0,0-.5-.5h-4a.5.5,0,0,0-.5.5v1A.5.5,0,0,0,12.49994,22ZM27,5H9A.99943.99943,0,0,0,8,6V23a1,1,0,0,1-2,0V6A2.0026,2.0026,0,0,0,4,8V23a3.0035,3.0035,0,0,0,2.99805,3H25a3.00328,3.00328,0,0,0,3-3V6A.99943.99943,0,0,0,27,5ZM26,23a1.00067,1.00067,0,0,1-1,1H9.8291A2.99932,2.99932,0,0,0,10,23V7H26ZM12.49994,18h4a.5.5,0,0,0,.5-.5v-1a.5.5,0,0,0-.5-.5h-4a.5.5,0,0,0-.5.5v1A.5.5,0,0,0,12.49994,18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="list-numbers" d="M14,13V12a1,1,0,0,1,1-1h8a1,1,0,0,1,1,1v1a1,1,0,0,1-1,1H15A1,1,0,0,1,14,13Zm9,10H15a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1h8a1,1,0,0,0,1-1V24A1,1,0,0,0,23,23Zm4-6H15a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18A1,1,0,0,0,27,17ZM27,5H15a1,1,0,0,0-1,1V7a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V6A1,1,0,0,0,27,5ZM10,23H7.55078a1.35879,1.35879,0,0,1,.74805-.62891c.58887-.21,2.37988-.84668,2.37988-2.65722A2.71758,2.71758,0,0,0,7.96387,17a3.16884,3.16884,0,0,0-2.47852,1.21289A1.00005,1.00005,0,1,0,7.01465,19.502,1.20239,1.20239,0,0,1,7.96387,19a.715.715,0,0,1,.71484.71387c0,.11914,0,.39941-1.05078.77246a3.61537,3.61537,0,0,0-2.30566,3.5664A1.00079,1.00079,0,0,0,6.32129,25H10a1,1,0,0,0,0-2ZM6.707,8.707,7,8.41406V12a1,1,0,0,0,2,0V6a.99991.99991,0,0,0-1.707-.707l-2,2A.99989.99989,0,0,0,6.707,8.707Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="list-numbers" d="M14,13V12a1,1,0,0,1,1-1h8a1,1,0,0,1,1,1v1a1,1,0,0,1-1,1H15A1,1,0,0,1,14,13Zm9,10H15a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1h8a1,1,0,0,0,1-1V24A1,1,0,0,0,23,23Zm4-6H15a1,1,0,0,0-1,1v1a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V18A1,1,0,0,0,27,17ZM27,5H15a1,1,0,0,0-1,1V7a1,1,0,0,0,1,1H27a1,1,0,0,0,1-1V6A1,1,0,0,0,27,5ZM10,23H7.55078a1.35879,1.35879,0,0,1,.74805-.62891c.58887-.21,2.37988-.84668,2.37988-2.65722A2.71758,2.71758,0,0,0,7.96387,17a3.16884,3.16884,0,0,0-2.47852,1.21289A1.00005,1.00005,0,1,0,7.01465,19.502,1.20239,1.20239,0,0,1,7.96387,19a.715.715,0,0,1,.71484.71387c0,.11914,0,.39941-1.05078.77246a3.61537,3.61537,0,0,0-2.30566,3.5664A1.00079,1.00079,0,0,0,6.32129,25H10a1,1,0,0,0,0-2ZM6.707,8.707,7,8.41406V12a1,1,0,0,0,2,0V6a.99991.99991,0,0,0-1.707-.707l-2,2A.99989.99989,0,0,0,6.707,8.707Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="package" d="M22.95465,14.261,11.06659,6.19409l3.96173-2.37671,11.99982,7.99951ZM9.17657,7.32812,5.028,9.81689l12.00019,8L21.06476,15.395ZM4,19.53516l12,7.99975V19.53516l-12-8Zm20-3.56885v2.71655a.50018.50018,0,0,1-.24274.429l-1,.59985A.5.5,0,0,1,22,19.283V17.166l-4,2.40014v7.99951l10-5.99926V13.56616Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="package" d="M22.95465,14.261,11.06659,6.19409l3.96173-2.37671,11.99982,7.99951ZM9.17657,7.32812,5.028,9.81689l12.00019,8L21.06476,15.395ZM4,19.53516l12,7.99975V19.53516l-12-8Zm20-3.56885v2.71655a.50018.50018,0,0,1-.24274.429l-1,.59985A.5.5,0,0,1,22,19.283V17.166l-4,2.40014v7.99951l10-5.99926V13.56616Z"/>
+</svg>
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r x="0px" y="0px" width="50px" height="50px" viewBox="0 0 21.33 19.47"> \r<path d="M10.208355,9.1199993C12.612583,9.7242854,14.759528,12.045893,15.395582,12.783964L15.395582,10.446957 16.770383,10.446957 16.937071,10.446957 16.937071,13.155049 17.936999,13.155049 17.936999,14.404999 8.7709993,14.404999 8.7709993,13.155049 10.208355,13.155049z M3.0494571,5.0820036L1.5072389,5.2330029 2.9751782,18.001206 4.2987695,17.872308z M16.20795,2.8799996C17.162367,2.8799996 17.937,3.6549211 17.937,4.6095648 17.937,5.5640788 17.162367,6.3389997 16.20795,6.3389997 15.253633,6.3389997 14.479,5.5640788 14.479,4.6095648 14.479,3.6549211 15.253633,2.8799996 16.20795,2.8799996z M5.6295609,2.5832963L4.2096009,2.7212958 5.6295609,17.263011 5.6295609,4.830605 5.6289208,4.830605C5.6289208,4.3033175,5.6289208,3.8489199,5.6289208,3.4882617L5.6295609,3.4882617z M7.0135413,1.3384929L7.0135413,2.4478674 7.0135413,3.3527627 7.0135413,4.6952858 7.0135413,16.443915 15.815578,16.443915 17.189259,16.443915 18.547239,16.443915 19.93662,16.443915 19.949619,16.443915 19.949619,1.3384929 18.462741,1.3384929z M5.6295609,0L21.333,0 21.333,17.781208 19.19173,17.781208 4.4302378,19.2212 4.4283776,19.2018 1.7272058,19.466 0,4.0363588 2.9198489,3.7513204 2.7024121,1.5259919 5.6295609,1.2395535z"/> \r</svg>
\ No newline at end of file
--- /dev/null
+<?xml version="1.0" encoding="utf-8"?> \r
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r
+ x="0px" y="0px" width="50px" height="50px" viewBox="0 0 21.33 19.47"> \r
+<path fill="#fff" d="M10.208355,9.1199993C12.612583,9.7242854,14.759528,12.045893,15.395582,12.783964L15.395582,10.446957 16.770383,10.446957 16.937071,10.446957 16.937071,13.155049 17.936999,13.155049 17.936999,14.404999 8.7709993,14.404999 8.7709993,13.155049 10.208355,13.155049z M3.0494571,5.0820036L1.5072389,5.2330029 2.9751782,18.001206 4.2987695,17.872308z M16.20795,2.8799996C17.162367,2.8799996 17.937,3.6549211 17.937,4.6095648 17.937,5.5640788 17.162367,6.3389997 16.20795,6.3389997 15.253633,6.3389997 14.479,5.5640788 14.479,4.6095648 14.479,3.6549211 15.253633,2.8799996 16.20795,2.8799996z M5.6295609,2.5832963L4.2096009,2.7212958 5.6295609,17.263011 5.6295609,4.830605 5.6289208,4.830605C5.6289208,4.3033175,5.6289208,3.8489199,5.6289208,3.4882617L5.6295609,3.4882617z M7.0135413,1.3384929L7.0135413,2.4478674 7.0135413,3.3527627 7.0135413,4.6952858 7.0135413,16.443915 15.815578,16.443915 17.189259,16.443915 18.547239,16.443915 19.93662,16.443915 19.949619,16.443915 19.949619,1.3384929 18.462741,1.3384929z M5.6295609,0L21.333,0 21.333,17.781208 19.19173,17.781208 4.4302378,19.2212 4.4283776,19.2018 1.7272058,19.466 0,4.0363588 2.9198489,3.7513204 2.7024121,1.5259919 5.6295609,1.2395535z"/> \r
+</svg>
\ No newline at end of file
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="square-empty-plus" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM25,24.5a.50641.50641,0,0,1-.5.5H7.5a.50641.50641,0,0,1-.5-.5V7.5A.50641.50641,0,0,1,7.5,7h17a.50641.50641,0,0,1,.5.5ZM22,15v2a1,1,0,0,1-1,1H18v3a1,1,0,0,1-1,1H15a1,1,0,0,1-1-1V18H11a1,1,0,0,1-1-1V15a1,1,0,0,1,1-1h3V11a1,1,0,0,1,1-1h2a1,1,0,0,1,1,1v3h3A1,1,0,0,1,22,15Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="square-empty-plus" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM25,24.5a.50641.50641,0,0,1-.5.5H7.5a.50641.50641,0,0,1-.5-.5V7.5A.50641.50641,0,0,1,7.5,7h17a.50641.50641,0,0,1,.5.5ZM22,15v2a1,1,0,0,1-1,1H18v3a1,1,0,0,1-1,1H15a1,1,0,0,1-1-1V18H11a1,1,0,0,1-1-1V15a1,1,0,0,1,1-1h3V11a1,1,0,0,1,1-1h2a1,1,0,0,1,1,1v3h3A1,1,0,0,1,22,15Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="square-empty-remove" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM25,24.5a.50641.50641,0,0,1-.5.5H7.5a.50641.50641,0,0,1-.5-.5V7.5A.50641.50641,0,0,1,7.5,7h17a.50641.50641,0,0,1,.5.5ZM21.30328,13.52515,18.82843,16l2.47485,2.47485a.50007.50007,0,0,1,0,.70716L19.182,21.30328a.50007.50007,0,0,1-.70716,0L16,18.82843l-2.47485,2.47485a.50007.50007,0,0,1-.70716,0L10.69672,19.182a.50007.50007,0,0,1,0-.70716L13.17157,16l-2.47485-2.47485a.50007.50007,0,0,1,0-.70716L12.818,10.69672a.50007.50007,0,0,1,.70716,0L16,13.17157l2.47485-2.47485a.50007.50007,0,0,1,.70716,0L21.30328,12.818A.50007.50007,0,0,1,21.30328,13.52515Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="square-empty-remove" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM25,24.5a.50641.50641,0,0,1-.5.5H7.5a.50641.50641,0,0,1-.5-.5V7.5A.50641.50641,0,0,1,7.5,7h17a.50641.50641,0,0,1,.5.5ZM21.30328,13.52515,18.82843,16l2.47485,2.47485a.50007.50007,0,0,1,0,.70716L19.182,21.30328a.50007.50007,0,0,1-.70716,0L16,18.82843l-2.47485,2.47485a.50007.50007,0,0,1-.70716,0L10.69672,19.182a.50007.50007,0,0,1,0-.70716L13.17157,16l-2.47485-2.47485a.50007.50007,0,0,1,0-.70716L12.818,10.69672a.50007.50007,0,0,1,.70716,0L16,13.17157l2.47485-2.47485a.50007.50007,0,0,1,.70716,0L21.30328,12.818A.50007.50007,0,0,1,21.30328,13.52515Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="squares" d="M29,6.5v13a3.495,3.495,0,0,1-3,3.44946V6.5a.50641.50641,0,0,0-.5-.5H9.05054A3.495,3.495,0,0,1,12.5,3h13A3.50424,3.50424,0,0,1,29,6.5Zm-5,5v13A3.50424,3.50424,0,0,1,20.5,28H7.5A3.50424,3.50424,0,0,1,4,24.5v-13A3.50424,3.50424,0,0,1,7.5,8h13A3.50424,3.50424,0,0,1,24,11.5Zm-3,0a.50641.50641,0,0,0-.5-.5H7.5a.50641.50641,0,0,0-.5.5v13a.50641.50641,0,0,0,.5.5h13a.50641.50641,0,0,0,.5-.5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="squares" d="M29,6.5v13a3.495,3.495,0,0,1-3,3.44946V6.5a.50641.50641,0,0,0-.5-.5H9.05054A3.495,3.495,0,0,1,12.5,3h13A3.50424,3.50424,0,0,1,29,6.5Zm-5,5v13A3.50424,3.50424,0,0,1,20.5,28H7.5A3.50424,3.50424,0,0,1,4,24.5v-13A3.50424,3.50424,0,0,1,7.5,8h13A3.50424,3.50424,0,0,1,24,11.5Zm-3,0a.50641.50641,0,0,0-.5-.5H7.5a.50641.50641,0,0,0-.5.5v13a.50641.50641,0,0,0,.5.5h13a.50641.50641,0,0,0,.5-.5Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="target" d="M27.12134,8a1,1,0,0,0,.70709-.29291L29.682,5.85352A.5.5,0,0,0,29.32843,5H27V2.67145a.5.5,0,0,0-.85358-.35358L24.29291,4.17145A1,1,0,0,0,24,4.87854v1.7074l-.2713.2713a11.96915,11.96915,0,1,0,2.57782,3.02765l-1.46234,1.46234a10.05462,10.05462,0,1,1-2.525-3.08051l-1.426,1.426A7.92944,7.92944,0,0,0,16,8a8.00767,8.00767,0,1,0,7.34821,4.8432l-1.56842,1.56842a6.03264,6.03264,0,1,1-2.312-3.29346l-1.44848,1.44849A3.95571,3.95571,0,0,0,16,12a4,4,0,1,0,4,4,3.95571,3.95571,0,0,0-.56665-2.01929L25.41406,8ZM16,18a2,2,0,0,1,0-4,1.975,1.975,0,0,1,.51135.07458l-.67053.67054a.99989.99989,0,1,0,1.41406,1.41406l.67054-.67053A1.975,1.975,0,0,1,18,16,2.0026,2.0026,0,0,1,16,18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="target" d="M27.12134,8a1,1,0,0,0,.70709-.29291L29.682,5.85352A.5.5,0,0,0,29.32843,5H27V2.67145a.5.5,0,0,0-.85358-.35358L24.29291,4.17145A1,1,0,0,0,24,4.87854v1.7074l-.2713.2713a11.96915,11.96915,0,1,0,2.57782,3.02765l-1.46234,1.46234a10.05462,10.05462,0,1,1-2.525-3.08051l-1.426,1.426A7.92944,7.92944,0,0,0,16,8a8.00767,8.00767,0,1,0,7.34821,4.8432l-1.56842,1.56842a6.03264,6.03264,0,1,1-2.312-3.29346l-1.44848,1.44849A3.95571,3.95571,0,0,0,16,12a4,4,0,1,0,4,4,3.95571,3.95571,0,0,0-.56665-2.01929L25.41406,8ZM16,18a2,2,0,0,1,0-4,1.975,1.975,0,0,1,.51135.07458l-.67053.67054a.99989.99989,0,1,0,1.41406,1.41406l.67054-.67053A1.975,1.975,0,0,1,18,16,2.0026,2.0026,0,0,1,16,18Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path id="user-squared" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM12,14.18628V12a4,4,0,0,1,8,0v2.18628a.67538.67538,0,0,1,.18378.76245l-.36756,1.10254a1.491,1.491,0,0,1-.93255.87939L18.719,18.24805A1.99992,1.99992,0,0,1,16.73444,20H15.26556a1.99992,1.99992,0,0,1-1.98455-1.752l-.16468-1.31739a1.491,1.491,0,0,1-.93255-.87939l-.36756-1.10254A.67538.67538,0,0,1,12,14.18628ZM23,24.5a.5.5,0,0,1-.5.5H9.5a.5.5,0,0,1-.5-.5V22.54126a2,2,0,0,1,.85309-1.63843l1.78656-1.25049A3.99566,3.99566,0,0,0,15.26562,22h1.46876a3.99566,3.99566,0,0,0,3.626-2.34766l1.78656,1.25049A2,2,0,0,1,23,22.54126Z"/>
+</svg>
--- /dev/null
+<svg id="glyphicons-basic" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 32 32">
+ <path fill="#fff" id="user-squared" d="M24.5,4H7.5A3.50424,3.50424,0,0,0,4,7.5v17A3.50424,3.50424,0,0,0,7.5,28h17A3.50424,3.50424,0,0,0,28,24.5V7.5A3.50424,3.50424,0,0,0,24.5,4ZM12,14.18628V12a4,4,0,0,1,8,0v2.18628a.67538.67538,0,0,1,.18378.76245l-.36756,1.10254a1.491,1.491,0,0,1-.93255.87939L18.719,18.24805A1.99992,1.99992,0,0,1,16.73444,20H15.26556a1.99992,1.99992,0,0,1-1.98455-1.752l-.16468-1.31739a1.491,1.491,0,0,1-.93255-.87939l-.36756-1.10254A.67538.67538,0,0,1,12,14.18628ZM23,24.5a.5.5,0,0,1-.5.5H9.5a.5.5,0,0,1-.5-.5V22.54126a2,2,0,0,1,.85309-1.63843l1.78656-1.25049A3.99566,3.99566,0,0,0,15.26562,22h1.46876a3.99566,3.99566,0,0,0,3.626-2.34766l1.78656,1.25049A2,2,0,0,1,23,22.54126Z"/>
+</svg>
--- /dev/null
+var admin = {\r
+ current_dataset: {},\r
+ loadapp: function(appident){\r
+ console.log(appident);\r
+ console.log(location.origin + '/app/' + appident + '/index.html');\r
+ location.href=location.origin + '/app/' + appident + '/index.html';\r
+ },\r
+ loadpage: function(modulepage,modulename){\r
+ console.log(admin.current_dataset);\r
+ console.log("Load module:" + modulepage);\r
+ if (modulename){\r
+ document.getElementById("modulename").innerHTML = modulename;\r
+ }\r
+ var pm = [];\r
+ for (var i in admin.current_dataset){\r
+ pm.push(i + "=" + encodeURIComponent(admin.current_dataset[i]));\r
+ } \r
+ if (pm.length > 0){\r
+ modulepage = modulepage + "?" + pm.join("&");\r
+ }\r
+ console.log(modulepage);\r
+ document.getElementById("moduleframe").setAttribute('src',modulepage);\r
+ },\r
+ sidebarclick: function(modulepage,modulename){\r
+ admin.ladpage(modulepage,modulename);\r
+ },\r
+ logout: function(){\r
+ req.reqdata("POST",location.href,{"logout":"1"},admin.reloadpage);\r
+\r
+ },\r
+ reloadpage(page){\r
+ location.href=location.href;\r
+\r
+ },\r
+ getdatasets: function(){\r
+ req.reqdata("POST","db.cgi",{"db":app,"type":"array","sql":"select * from datastores;"},admin.loaddatasets);\r
+ },\r
+ loaddatasets: function(data){\r
+ console.log(data);\r
+ var gdt = document.getElementById('globaldatasets');\r
+ gdt.innerHTML = '';\r
+ if (data && data.sqldata){\r
+ var opts = ';'\r
+ for (var i in data.sqldata){\r
+ opts += '<option value="'+ data.sqldata[i].datastore +'">'+data.sqldata[i].name+'</option>';\r
+ }\r
+ gdt.innerHTML = opts;\r
+ }\r
+ if (admin.current_dataset.db){\r
+\r
+ }else {\r
+ admin.current_dataset["db"]=gdt.value;\r
+ }\r
+ console.log(admin.current_dataset);\r
+ }\r
+}\r
+\r
+function reload_page(){\r
+ location.href=location.href;\r
+}\r
+\r
+function closeSidebar(){\r
+ document.getElementById("sidebar").style.display = "none";\r
+ document.getElementById("main").style.margin = "0 0 0 0";\r
+ document.getElementById("modulename").style.setProperty("margin-left","0px");\r
+}\r
+\r
+function openSidebar(){\r
+ document.getElementById("sidebar").style.display = "block";\r
+ document.getElementById("main").style.setProperty("margin-left","210px");\r
+ document.getElementById("modulename").style.setProperty("margin-left","150px");\r
+}\r
+\r
+document.addEventListener("DOMContentLoaded", function() {\r
+ if (app && app != ""){\r
+ //initpage()\r
+ }\r
+});
\ No newline at end of file
--- /dev/null
+var admin = {\r
+ lastrow: null,\r
+ lastpage: null,\r
+ lasttracktable: null,\r
+ currentrowdata: null,\r
+ loadpage: function (pagename){\r
+ //disable all first\r
+ admin.lastrow = null;\r
+ document.getElementById(admin.lastpage).style.display = 'none';\r
+ if (pagename == 'page_track'){\r
+ document.getElementById("select_table").style.display = 'inline';\r
+ \r
+ document.getElementById("page_track").style.display = 'block';\r
+ admin.change_tracktable();\r
+ \r
+ } else if (pagename == 'page_staff'){\r
+ document.getElementById("page_staff").style.display = 'block';\r
+ admin.loadtable_staff();\r
+ }else if (pagename == 'page_exportdata'){\r
+ document.getElementById("page_exportdata").style.display = 'block';\r
+ } else if (pagename == 'page_sysconfig'){\r
+ sysconfig.showsection(sysconfig.lastsection);\r
+ document.getElementById("page_sysconfig").style.display = 'block';\r
+ \r
+ }\r
+ admin.lastpage=pagename;\r
+ },\r
+ change_tracktable: function(){\r
+ document.getElementById("cmb_trackdate").style.display = 'none';\r
+ document.getElementById("cmb_trackmonth").style.display = 'none';\r
+ document.getElementById("select_staff").style.display = 'none';\r
+ if (admin.lasttracktable != null){\r
+ document.getElementById(admin.lasttracktable).style.display = 'none';\r
+ }\r
+ var tablesel = document.getElementById("select_table").value;\r
+ //console.log(tablesel);\r
+ document.getElementById('table_' + tablesel).style.display = 'block';\r
+ admin.lasttracktable = 'table_' + tablesel;\r
+ if (tablesel == "trackbyday"){\r
+ document.getElementById('cmb_trackdate').style.display = 'inline';\r
+ admin.loadtable_trackbyday();\r
+ }else if (tablesel == "trackbystaff"){\r
+ document.getElementById("cmb_trackmonth").style.display = 'inline';\r
+ document.getElementById("select_staff").style.display = 'inline';\r
+ admin.loadtable_trackbystaff();\r
+ } else {\r
+ admin.loadtable_trackincomplete();\r
+ }\r
+ },\r
+ loadtable_staff: function(){\r
+ admin.lastrow = null;\r
+ document.getElementById("table_staff_tbody").innerHTML="";\r
+ var xq = {"type":"querysorted","sql":"select st.id,st.prename,st.surname,st.pin,st.disabled,st.blocked, co.startdate, co.weekhours from staff st left join contract co on (st.id=co.idstaff) order by st.surname,st.prename,st.id;"};\r
+ var tbldata = req.reqdata('POST','sqlite/query',xq,null);\r
+ var ntbldata = ''; \r
+ for (var i in tbldata.sqldata){\r
+ var row = '<tr data-id="'+tbldata.sqldata[i].id+'" onclick="admin.setRowEditable(this);" >';\r
+ //row += '<td><input type="text" value="'+ tbldata.sqldata[i].id+'" onfocusout="admin.changeData(this);" style="width: 50px;" class="textright" placeholder="Id" id="staff_id_'+ i+'" disabled="1"/></td>';\r
+ row += '<td><input type="text" value="'+ tbldata.sqldata[i].surname+'" onfocusout="admin.changeData(this);" placeholder="Nom" id="staff_surname_'+ i+'" disabled="1"/></td>';\r
+ row += '<td><input type="text" value="'+ tbldata.sqldata[i].prename+'" onfocusout="admin.changeData(this);" placeholder="Prénom" id="staff_prename_'+ i+'" disabled="1"/></td>';\r
+ row += '<td><input type="date" value="'+ tbldata.sqldata[i].startdate+'" onfocusout="admin.changeData(this);" style="width: 150px;" id="contract_startdate_'+ i+'" disabled="1"/></td>';\r
+ row += '<td><input type="number" value="'+ tbldata.sqldata[i].weekhours+'" onfocusout="admin.changeData(this);" style="width: 40px;" class="textright" id="contract_weekhours_'+ i+'" disabled="1"/>h</td>';\r
+ row += '<td><input type="checkbox" value="true" onchange="admin.changeData(this);" id="staff_blocked_'+ i+'" '+((tbldata.sqldata[i].blocked == true)?'checked="1"':'')+' disabled="1"/></td>';\r
+ row += '<td><input type="checkbox" value="true" onchange="admin.changeData(this);" id="staff_disabled_'+ i+'" '+((tbldata.sqldata[i].disabled == true)?'checked="1"':'')+' disabled="1"/></td>';\r
+ row += '<td><input type="password" ' + ((tbldata.sqldata[i].pin!=null)?'value="'+ tbldata.sqldata[i].pin +'"':"")+' onfocusout="admin.changeData(this);" placeholder="Code Pin" id="staff_pin_'+ i+'" disabled="1"/></td>';\r
+ row += '<td><button id="staff_delete" onclick="admin.deleteRow(\'staff\',\''+ tbldata.sqldata[i].id +'\');">Supprimer</button></td>';\r
+ row += '</tr>';\r
+ ntbldata += row;\r
+ }\r
+ document.getElementById("table_staff_tbody").innerHTML=ntbldata;\r
+ },\r
+ loadtable_trackbyday: function(){\r
+ admin.lastrow = null;\r
+ document.getElementById("table_trackbyday_tbody").innerHTML="";\r
+ var trackdate = document.getElementById("cmb_trackdate").value;\r
+ //console.log("trackdate" + trackdate);\r
+ var xq = {"type":"querysorted","sql":"select hr.id,co.idstaff,st.prename,st.surname,hr.stamp_in, hr.stamp_out from staff st left join contract co on (st.id=co.idstaff) left join (select id,idstaff,stamp_in,stamp_out from hours where date(stamp_in) = date('"+trackdate +"')) hr on (st.id=hr.idstaff) where st.disabled is null and co.startdate <= date('"+ trackdate +"') order by st.surname,st.prename,co.idstaff;"};\r
+ var tbldata = req.reqdata('POST','sqlite/query',xq,null);\r
+ var ntbldata = ''; \r
+ for (var i in tbldata.sqldata){\r
+ var row='<tr data-id="'+tbldata.sqldata[i].id+'" data-idstaff="'+tbldata.sqldata[i].idstaff+'" onclick="admin.setRowEditable(this);">';\r
+ row += '<td>'+tbldata.sqldata[i].surname+' '+tbldata.sqldata[i].prename+'</td>';\r
+ row += '<td><input type="time" id="hours_stampin_'+ i +'" value="'+((tbldata.sqldata[i].stamp_out != null)?tbldata.sqldata[i].stamp_in.substring(11,16):'')+'" onfocusout="admin.changeData(this);" disabled="1"/></td>';\r
+ row += '<td><input type="time" id="hours_stampout_'+ i +'" value="'+((tbldata.sqldata[i].stamp_out != null)?tbldata.sqldata[i].stamp_out.substring(11,16):'')+'" onfocusout="admin.changeData(this);" disabled="1"/></td>';\r
+ row +='</tr>';\r
+ ntbldata += row;\r
+ }\r
+ document.getElementById("table_trackbyday_tbody").innerHTML=ntbldata;\r
+ },\r
+ loadtable_trackbystaff: function(){\r
+ admin.lastrow = null;\r
+ document.getElementById("table_trackbystaff_tbody").innerHTML="";\r
+ var trackdate = document.getElementById("cmb_trackmonth").value;\r
+ var staffid = document.getElementById("select_staff").value;\r
+ var bdate = new Date(trackdate + "-01");\r
+ var edate = new Date(bdate.getFullYear(),bdate.getMonth()+1,1);\r
+ var sqldays = new Array();\r
+ var cdate2 = new Date();\r
+ for (var cdate2=bdate;cdate2<=edate;cdate2.setDate(cdate2.getDate() +1)){\r
+ sqldays.push ("SELECT date('" + cdate2.toISOString().substring(0,10) +"') as daydate");\r
+ }\r
+ var sqlret = sqldays.join(' UNION ALL ');\r
+ \r
+ var sql = "select md.daydate,hr.id,hr.stamp_in,hr.stamp_out,hr.idstaff from (" + sqlret +") md left join (select * from hours where idstaff='"+staffid+"' and date(stamp_in) between date('"+trackdate+"-01') and date('"+trackdate+"-01','+1 month','-1 day')) hr on (date(hr.stamp_in)= md.daydate);";\r
+ var xq = {"type":"querysorted","sql":sql};\r
+ var tbldata = req.reqdata('POST','sqlite/query',xq,null);\r
+ var ntbldata = ''; \r
+ \r
+// var cdate = new Date(bdate);\r
+// \r
+// while (cdate <= enddate){\r
+// console.log("cdate:" + cdate.toISOString());\r
+// cdate.setDate(cdate.getDate() + 1);\r
+// } \r
+ for (var i in tbldata.sqldata){\r
+ \r
+ var row='<tr data-id="'+((tbldata.sqldata[i].id != null)?tbldata.sqldata[i].id:'')+'" data-idstaff="'+staffid+'" onclick="admin.setRowEditable(this);">';\r
+ row += '<td><input type="date" id="hours_stampdate_'+ i +'" value="'+tbldata.sqldata[i].daydate+'" disabled="1" readonly="1"/></td>';\r
+ row += '<td><input type="time" id="hours_stampin_'+ i+'" value="'+((tbldata.sqldata[i].stamp_in != null)?tbldata.sqldata[i].stamp_in.substring(11,16):"")+'" onfocusout="admin.changeData(this);" disabled="1"/></td>';\r
+ row += '<td><input type="time" id="hours_stampout_'+ i +'" value="'+((tbldata.sqldata[i].stamp_out != null)?tbldata.sqldata[i].stamp_out.substring(11,16):'')+'" onfocusout="admin.changeData(this);" disabled="1"/></td>';\r
+ row +='</tr>';\r
+ ntbldata += row;\r
+ }\r
+ document.getElementById("table_trackbystaff_tbody").innerHTML=ntbldata;\r
+ },\r
+ loadtable_trackincomplete: function(){\r
+ admin.lastrow = null;\r
+ document.getElementById("table_trackincomplete_tbody").innerHTML="";\r
+ var xq = {"type":"querysorted","sql":"select hr.id,hr.idstaff,st.prename,st.surname,hr.stamp_in,hr.stamp_out from hours hr left join staff st on (hr.idstaff=st.id) where stamp_out is null order by hr.stamp_in,st.surname,st.prename,st.id; "};\r
+ var tbldata = req.reqdata('POST','sqlite/query',xq,null);\r
+ var ntbldata = ''; \r
+ for (var i in tbldata.sqldata){\r
+ \r
+ var row='<tr data-id="'+tbldata.sqldata[i].id+'" data-idstaff="'+tbldata.sqldata[i].idstaff+'" onclick="admin.setRowEditable(this);">';\r
+ row += '<td><input type="date" id="hours_stampdate_'+ i+'" value="'+tbldata.sqldata[i].stamp_in.substring(0,10)+'" disabled="1" onfocusout="admin.changeData(this);" readonly="1"/></td>';\r
+ row += '<td>'+tbldata.sqldata[i].surname+' '+tbldata.sqldata[i].prename+'</td>';\r
+ row += '<td><input type="time" id="hours_stampin_'+ i+'" value="'+tbldata.sqldata[i].stamp_in.substring(11,16)+'" disabled="1"/></td>';\r
+ row += '<td><input type="time" id="hours_stampout_'+ i+'" value="'+((tbldata.sqldata[i].stamp_out != null)?tbldata.sqldata[i].stamp_out.substring(11,16):'')+'" onfocusout="admin.changeData(this);" disabled="1"/></td>';\r
+ row +='</tr>';\r
+ ntbldata += row;\r
+ }\r
+ document.getElementById("table_trackincomplete_tbody").innerHTML=ntbldata;\r
+ },\r
+ deleteRow: function(table,id){\r
+ \r
+ var xq = {"type":"exec","sql":"delete from "+ table+" WHERE id='"+ id +"';"};\r
+ var ret = req.reqdata('POST','sqlite/exec',xq,null);\r
+ if (ret){\r
+ admin.loadpage(admin.lastpage);\r
+ }\r
+ },\r
+ addRow: function(){\r
+ \r
+ },\r
+ export_data: function(){\r
+ \r
+ },\r
+ save_config: function(){\r
+ \r
+ },\r
+ changeData: function(field){\r
+ var dbfield = field.id.split("_");\r
+ \r
+ var where=[];\r
+ for (var i in admin.currentrowdata){\r
+ where.push( i + "='" +admin.currentrowdata[i] + "'");\r
+ }\r
+ var sql = "";\r
+ var value= "'" + field.value + "'";\r
+ if (field.type == "date"){\r
+ value= "date('"+ field.value+"')";\r
+ } else if (field.type == "number"){\r
+ value= field.value;\r
+ } else if (field.type == "checkbox"){\r
+ if (field.checked == true){\r
+ value= "'1'";\r
+ } else {\r
+ value= "null";\r
+ }\r
+ \r
+ }\r
+ if (field.value == ''){\r
+ value = "null";\r
+ }\r
+ if (where.length > 0 ){\r
+ sql = "UPDATE " + dbfield[0] +" SET " + dbfield[1] + "=" + value + " WHERE "+ where.join(" AND ") +";";\r
+ } else {\r
+ sql = "INSERT INTO " + dbfield[0] + " (" + dbfield[1] + ") VALUES (" + value + ");";\r
+ }\r
+ console.log(sql);\r
+ var xu = {"type":"exec","sql":sql};\r
+ var tbldata = req.reqdata('POST','sqlite/query',xu,req.asyncNoEvent);\r
+ //console.log(field.type);\r
+ //console.log(field.id + " " + field.tagName + " " + field.type);\r
+ \r
+ },\r
+ \r
+ load_select_staff: function(selected){\r
+ document.getElementById("select_staff").innerHTML='';\r
+ var xq = {"type":"querysorted","sql":"select id,prename,surname from staff order by surname,prename,id"};\r
+ var cmbdata = req.reqdata('POST','sqlite/query',xq,null);\r
+ var tcmbdata = '';\r
+ for (var i in cmbdata.sqldata){\r
+ tcmbdata += '<option value="'+cmbdata.sqldata[i].id+'">'+cmbdata.sqldata[i].surname+' '+cmbdata.sqldata[i].prename+'</option>';\r
+ }\r
+ document.getElementById("select_staff").innerHTML=tcmbdata;\r
+ },\r
+ setRowEditable: function(row){\r
+ //console.log("set Editable!");\r
+ if (row == admin.lastrow){\r
+ return false;\r
+ }\r
+ if (admin.lastrow != null){\r
+ var lins = admin.lastrow.getElementsByTagName('input');\r
+ for (var z=0;z < lins.length; z++){\r
+ //console.log("YUppi " + z);\r
+ document.getElementById(lins[z].id).setAttribute('disabled',true);\r
+ }\r
+ }\r
+ admin.currentrowdata = row.dataset;\r
+ var ins = row.getElementsByTagName('input');\r
+ for (var z=0;z < ins.length; z++){\r
+ //console.log("Yeah " + z);\r
+ if (document.getElementById(ins[z].id).getAttribute('readonly') == null){\r
+ document.getElementById(ins[z].id).removeAttribute('disabled');\r
+ }\r
+ \r
+ }\r
+ \r
+ ////console.log(row.dataset);\r
+ admin.lastrow = row;\r
+ return true;\r
+ }\r
+ }\r
+window.onload = function() {\r
+ //console.log('window - onload');\r
+ admin.lastpage = 'page_track';\r
+ admin.loadpage('page_track');\r
+ var cdate = new Date();\r
+ //console.log(cdate.toISOString().substring(0,10));\r
+ document.getElementById("cmb_trackdate").value = cdate.toISOString().substring(0,10);\r
+ document.getElementById("cmb_trackmonth").value = cdate.toISOString().substring(0,7);\r
+ admin.load_select_staff(null);\r
+ var nav = navigator.userAgent\r
+ \r
+ /*if (nav.indexOf("Chrome/65") == -1){\r
+ location.href='/supported.html';\r
+ }*/s\r
+};s
\ No newline at end of file
--- /dev/null
+var fsaveelements = document.querySelectorAll("input.fieldsave");\r
+for (var i = 0; i < fsaveelements.length; i++) {\r
+ fsaveelements[i].addEventListener('blur', function (event) {\r
+ savefield(event.currentTarget.id);\r
+ }, false);\r
+}\r
+\r
+function savefield(obj){\r
+ // console.log("save");\r
+ var field = {"ident":obj.id};\r
+ //var obj = document.getElementById(objid);\r
+ var fieldname = obj.getAttribute('name');\r
+ var xsp = fieldname.split("_");\r
+ // console.log(xsp);\r
+ // console.log(xsp[0] + "_id");\r
+ var identfield = document.getElementById("id");\r
+ field["ident_" + xsp[0] + "_id"] = identfield.value; \r
+ if (obj.tagName == 'TEXTAREA'){\r
+ field[obj.getAttribute('name')] = obj.innerHTML;\r
+ } else if (obj.tagName == "SELECT"){\r
+ field[obj.getAttribute('name')] = obj.value;\r
+ } else if ((obj.getAttribute('type') == "checkbox")){\r
+ if ($("#" +objid).prop('checked')){\r
+ field[obj.getAttribute('name')] = obj.value;\r
+ } else {\r
+ field[obj.getAttribute('name')] = "";\r
+ }\r
+ \r
+ } else if (obj.getAttribute('type') == "file") {\r
+ if (obj.value != ""){\r
+ alert("file save TODO!")\r
+ return false;\r
+ }\r
+ } else {\r
+ field[obj.getAttribute('name')] = obj.value;\r
+ }\r
+\r
+ field["fn"] = "savefield";\r
+ // console.log(field);\r
+ \r
+ req.reqdata("POST","index.cgi",field,fieldsaved);\r
+ return false;\r
+}\r
+\r
+function fieldsaved(data){\r
+ console.log("field saved");\r
+ // console.log(data);\r
+}
\ No newline at end of file
--- /dev/null
+function saveform(frmid,aftercallback){
+ var flds=getformcontent(frmid,null);
+ flds["fn"] ="saveform";
+
+ //console.log(flds);
+ if (aftercallback){
+ req.reqdata("POST","index.cgi",flds,aftercallback);
+ formsaved({});
+ }
+ else {
+ req.reqdata("POST","index.cgi",flds,formsaved);
+ }
+ return false;
+}
+
+function formsaved(data){
+ var sb = document.getElementById("snackbar");
+ sb.className="show w3-green";
+ sb.innerHTML = 'Les données ont été sauvegarder!';
+ setTimeout(function(){ sb.className = sb.className.replace("show w3-green", ""); }, 3000);
+ return false;
+}
+
+function showsnackbar(xclass,xmessage){
+ var sb = document.getElementById("snackbar");
+ sb.className="show " + xclass;
+ sb.innerHTML = xmessage;
+ setTimeout(function(){ sb.className = sb.className.replace(sb.className, ""); }, 3000);
+ return false;
+}
+
+function getformcontent(frmid,dataflds){
+ var frm = document.getElementById("frm_" + frmid);
+ var flds = [];
+ if (dataflds){
+ flds = dataflds;
+ }
+
+ for (var i = 0; i < frm.elements.length; i++) {
+ var field = frm.elements[i];
+ //console.log("field:" + field.id + " Name:" + field.getAttribute("name"));
+ if (field.tagName == "INPUT" || field.tagName == "SELECT" || field.tagName == "TEXTAREA"){
+ if (field.classList.contains("tagedit")){
+ var fvalue=field.value.trim();
+ var ndata = null;
+ if (fvalue != ""){
+ ndata = fvalue.split(",");
+ }
+
+ flds[field.getAttribute("name")] = ndata;
+ }else if (field.tagName == "TEXTAREA" ){
+ if (field.classList.contains("richeditarea")){
+ flds[field.getAttribute("name")] = tinymce.get(field.id).getContent();
+ } else {
+ flds[field.getAttribute("name")] = field.innerHTML;
+ }
+
+ }else if (field.type == "checkbox" ){
+ if (field.checked){
+ flds[field.getAttribute("name")] = "1";
+ } else {
+ flds[field.getAttribute("name")] = "";
+ }
+
+ }
+ else {
+ if (field.tagName == "SELECT" && field.multiple == true){
+ var opts = field.selectedOptions;
+ var vals = [];
+ for (var o in opts){
+ if (opts[o].value){
+ vals.push(opts[o].value);
+ }
+ }
+ if (vals.length > 0) {
+ flds[field.getAttribute("name")] = vals;
+ } else {
+ flds[field.getAttribute("name")] = "";
+ }
+
+ } else {
+ flds[field.getAttribute("name")] = field.value;
+ }
+
+ }
+
+ }
+ }
+ return flds;
+}
+
+function cleanform(frmname){
+ //console.log("Clean Form: " + frmname);
+ var frm = document.getElementById("frm_" + frmname);
+
+ for (var f in frm){
+ //console.log(frm[f].id);
+ if (frm[f] && frm[f].id){
+ if (frm[f].tagName == 'INPUT'){
+ //console.log("is INPUT" + frm[f].id + " type:" + frm[f].type + " class:" + frm[f].classList);
+ if (frm[f].type == "checkbox"){
+ frm[f].checked = false;
+ } else if (frm[f].classList.contains("datefield")){
+ if (frm[f]._flatpickr){ frm[f]._flatpickr.clear(); }
+ } else if (frm[f].classList.contains("choices__input")){
+ if (choice[frmname][frm[f].id]){
+ choice[frmname][frm[f].id].removeActiveItems();
+ }
+ } else {
+ frm[f].value = "";
+ }
+ }
+ if (frm[f].tagName == 'SELECT'){
+ //console.log("is INPUT" + frm[f].id + " multiple:" + frm[f].multiple + " class:" + frm[f].classList);
+ if (frm[f].multiple == true){
+ if (frm[f].classList.contains("choices__input")){
+ choice[frmname][frm[f].id].removeActiveItems();
+ }
+ } else {
+ frm[f].value = "";
+ }
+
+ }
+ if (frm[f].tagName == 'TEXTAREA'){
+ //console.log("is INPUT" + frm[f].id + " class:" + frm[f].classList);
+ if (frm[f].classList.contains("richeditarea")){
+ tinymce.get(frm[f].id).setContent("");
+ } else {
+ frm[f].innerHTML = "";
+ }
+ }
+ }
+ }
+ return false;
+}
+
+function fillformbydataclass(dataclass,data,readonly = false){
+ //console.log(data);
+ var frm = document.querySelectorAll('.data_'+ dataclass);
+ if (data){
+ for (var f in frm){
+ console.log(frm[f].id + "=>" + data[frm[f].id]);
+ if (data[frm[f].id]){
+ console.log(frm[f].id + " => " + data[frm[f].id]);
+ if (readonly){ frm[f].readonly = true;}
+ if (frm[f].tagName == 'INPUT'){
+ if (frm[f].type == "checkbox"){
+ if (data[frm[f].id] == "1"){
+ frm[f].checked = true;
+ } else {
+ frm[f].checked = false;
+ }
+ } else if (frm[f].classList.contains("datefield")){
+ frm[f]._flatpickr.setDate(data[frm[f].id]);
+ } else if (frm[f].classList.contains("choices__input")){
+ if ((data[frm[f].id] != null) && (data[frm[f].id] != '[""]')){
+ choice[dataclass][frm[f].id].setValue(JSON.parse(data[frm[f].id]));
+ }
+ } else {
+ frm[f].value=data[frm[f].id];
+ }
+ }
+ if (frm[f].tagName == 'SELECT'){
+ if (frm[f].classList.contains("choices__input")){
+ if (frm[f].multiple == true){
+ //console.log(data[frm[f].id]);
+ choice[dataclass][frm[f].id].setChoiceByValue(JSON.parse(data[frm[f].id]));
+ }else {
+ choice[dataclass][frm[f].id].setChoiceByValue(data[frm[f].id]);
+ }
+ } else {
+ frm[f].value=data[frm[f].id];
+ }
+
+ }
+ }
+
+ }
+ }
+}
+
+function fillselectlist(obj,data,vidcol,vvalcol){
+ var sellist = [];
+ obj.clearStore();
+ sellist.push({value:"",label:""});
+ if (data){
+ for (var i in data){
+ sellist.push({value:data[i][vidcol],label:data[i][vvalcol]});
+ }
+ }
+ obj.setChoices(sellist, 'value', 'label', true);
+ return false;
+}
\ No newline at end of file
--- /dev/null
+document.addEventListener("DOMContentLoaded", function() {
+ console.log( "Iframe "+ location.pathname.substring(location.pathname.lastIndexOf("/")) +" ready!" );
+ mpref.loadconfig();
+ initpage();
+});
+
+var mpref ={
+ cfg: null,
+ getSearchParams: function (k){
+ //alert(location.href);
+ var p={};
+ console.log("params =>" + location.search);
+ location.search.replace(/[?&]+([^=&]+)=([^&]*)/gi,function(s,k,v){p[k]=v});
+ return k?p[k]:p;
+ },
+ loadconfig: function(){
+ this.cfg = this.getSearchParams();
+ //var page = location.pathname.substring(location.pathname.lastIndexOf("/"));
+ //page = page.replace(/\.html/,'');
+ //apppref.getpreference(page);
+ //appdb.dbfile = this.cfg.dbfile;
+ //appdb.url = decodeURIComponent(this.cfg.serviceurl) + 'sqlite/' + decodeURIComponent(this.cfg.dbfile);
+ }
+}
--- /dev/null
+var api = location.origin+'/api/';
+// if (location.pathname.indexOf('modules') > 0){
+// api = location.origin + location.pathname.substring(0, location.pathname.indexOf('module')) + 'api/';
+// }
+console.log(api);
+var req = {
+ multipartform: function(url,frmdata,callback=null){
+ var ret = null;
+ var rdata = null;
+ var async = false;
+ if (callback){
+ async=true;
+ }
+
+ var request = new XMLHttpRequest();
+
+ console.log(frmdata);
+ var sendurl = api + url;
+ console.log("Multipart sending URL: " + "POST" + " => " +sendurl);
+ request.open("POST", sendurl, true);
+ request.onload = function(){
+ if (request.status >= 200 && request.status <= 400){
+ //console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
+ if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
+ var xparse = JSON.parse(request.responseText);
+ ret = xparse.result;
+ //console.log(ret);
+ }
+ else {
+ ret = request.responseText;
+ }
+ if (async){
+ callback(ret);
+ }
+ } else {
+ alert("ServerERROR:" + request.status + "\n" + request.responseText);
+ }
+ };
+ request.onerror = function(){
+ alert("Connection ERROR!\n" + url);
+ };
+
+ request.setRequestHeader('Content-Type','multipart/form-data');
+ request.send(frmdata);
+ return ret;
+ },
+ reqdata: function(method,url,data,callback=null){
+
+ var ret = null;
+ var rdata = null;
+ var async = false;
+ if (callback){
+ async=true;
+ }
+
+ var request = new XMLHttpRequest();
+ if (typeof data == 'object'){
+ var xdata = [];
+ for (var i in data){
+ var value = '';
+ if (typeof(data[i]) == 'object'){
+ value = encodeURIComponent(JSON.stringify(data[i]));
+ } else {
+ value = encodeURIComponent(data[i]);
+ }
+ xdata.push(i + "=" + value);
+ }
+ rdata = xdata.join("&");
+ }else {
+ rdata = data;
+ }
+ //console.log(rdata);
+ //console.log("Data to send: " + decodeURIComponent(rdata));
+ var sendurl = api + url;
+ if (method.toUpperCase() == 'GET'){
+ sendurl = sendurl + '?' + rdata;
+ }
+ console.log("sending URL: " + method + " => " +sendurl + '?' + rdata);
+ request.open(method.toUpperCase(), sendurl, true);
+ request.onload = function(){
+ if (request.status >= 200 && request.status <= 400){
+ // console.log("Status returned: " + request.status + "resp:" + request.getResponseHeader("Content-Type"));
+ if (request.getResponseHeader("Content-Type").indexOf('application/json') == 0){
+ //console.log(xparse);
+ var xparse = JSON.parse(request.responseText);
+ ret = xparse.result;
+ //console.log(ret);
+ }
+ // else if (request.getResponseHeader("Content-Type").indexOf('application/vnd.ms-excel') == 0){
+ // var filename = "";
+ // var disposition = request.getResponseHeader('Content-Disposition');
+ // if (disposition && disposition.indexOf('attachment') !== -1) {
+ // var filenameRegex = /filename[^;=\n]*=((['"]).*?\2|[^;\n]*)/;
+ // var matches = filenameRegex.exec(disposition);
+ // if (matches != null && matches[1]) filename = matches[1].replace(/['"]/g, '');
+ // }
+ // var type = request.getResponseHeader('Content-Type');
+ // var blob = new Blob([this.response], { type: type });
+ // var URL = window.URL;
+ // var downloadUrl = URL.createObjectURL(blob);
+ // if (filename) {
+ // var a = document.createElement("a");
+ // if (typeof a.download === 'undefined') {
+ // window.location = downloadUrl;
+ // } else {
+ // a.href = downloadUrl;
+ // a.download = filename;
+ // document.body.appendChild(a);
+ // a.click();
+ // }
+ // } else {
+ // window.location = downloadUrl;
+ // }
+ //setTimeout(function () { URL.revokeObjectURL(downloadUrl); }, 100);
+ // }
+ else {
+ ret = request.responseText;
+ console.log("TEXT returned:" + ret);
+ }
+ ////console.log("data returned: " + request.responseText);
+ if (async){
+ callback(ret);
+ }
+
+ } else {
+ //console.log("ServerERROR: " + request.status + "\n" + request.responseText);
+ alert("ServerERROR:" + request.status + "\n" + request.responseText);
+ }
+ };
+ request.onerror = function(){
+ //console.log("ERROR: connection ERROR\n" + url);
+ alert("Connection ERROR!\n" + url);
+ };
+ if (method.toUpperCase() == 'POST'){
+ request.setRequestHeader('Content-Type','application/x-www-form-urlencoded; charset=UTF-8');
+ request.send(rdata);
+ } else {
+ //request.withCredentials = true;
+ request.send();
+ }
+ return ret;
+ },
+ asyncNoEvent: function(data){
+ console.log("query done");
+ console.log(data);
+ console.log("done");
+ }
+
+}
\ No newline at end of file
--- /dev/null
+var sysconfig={\r
+ lastsection: null,\r
+ showsection: function(){\r
+ var sectionsel = document.getElementById("select_sysconfig").value;\r
+ if (sysconfig.lastsection != null){\r
+ document.getElementById(sysconfig.lastsection).style.display = 'none';\r
+ document.getElementById(sectionsel).style.display = 'block';\r
+ sysconfig.lastsection = sectionsel;\r
+ } else {\r
+ document.getElementById("sysexport").style.display = 'block';\r
+ sysconfig.lastsection = "sysexport";\r
+ }\r
+ console.log(sysconfig.lastsection);\r
+ if (sysconfig.lastsection == 'sysaccess'){\r
+ req.reqdata("GET",'app/getaccess','',sysconfig.getSystemUser);\r
+ } else if (sysconfig.lastsection == 'syssync'){\r
+ req.reqdata("GET",'app/preferences/hourtrax','',sysconfig.getSyncData);\r
+ } else if (sysconfig.lastsection == 'sysexport'){\r
+ var xa = {"type":"querysorted","sql":"select distinct strftime('%Y-%m',stamp_in) as exportmonth from hours order by stamp_in DESC;"};\r
+ req.reqdata("POST",'sqlite/query',xa,sysconfig.setExportConfig);\r
+ } else if (sysconfig.lastsection == 'syssystem' ){\r
+ req.reqdata("GET",'system/getconfig','',sysconfig.getSystemConfig);\r
+ }\r
+ \r
+ },\r
+ setExportConfig: function(data){\r
+ console.log("setExportConfig");\r
+ console.log(data);\r
+ document.getElementById('cmb_exportmonth').innerHTML = "";\r
+ var expm=[];\r
+ if (data.sqldata){\r
+ for (var m in data.sqldata){\r
+ expm.push('<option value="'+data.sqldata[m].exportmonth+'">'+data.sqldata[m].exportmonth+'</option>');\r
+ }\r
+ }\r
+ document.getElementById('cmb_exportmonth').innerHTML = expm.join('');\r
+ },\r
+ getSyncData: function(data){\r
+ console.log("getSyncData");\r
+ console.log(data);\r
+ var section = document.getElementById("syssync");\r
+ var elements = section.querySelectorAll('input');\r
+ if ((data) && (data.sync)){\r
+ elements.forEach( function (index, value) {\r
+ var ident = index.id.substring(14);\r
+ if (data.sync[ident] != null){\r
+ index.value=data.sync[ident];\r
+ }\r
+ });\r
+ }\r
+ elements = section.querySelectorAll('textarea');\r
+ elements.forEach( function (index, value) {\r
+ var ident = index.id.substring(14);\r
+ if (data.sync[ident] != null){\r
+ index.innerHTML=data.sync[ident];\r
+ }\r
+ });\r
+ },\r
+ setSyncData: function(){\r
+ var section = document.getElementById("syssync");\r
+ var elements = section.querySelectorAll('input');\r
+ var syncdata={ "sync":{}};\r
+ elements.forEach( function (index, value) {\r
+ var ident = index.id.substring(14);\r
+ syncdata.sync[ident] = ((index.value)?index.value:null);\r
+ });\r
+ elements = section.querySelectorAll('textarea');\r
+ elements.forEach( function (index, value) {\r
+ var ident = index.id.substring(14);\r
+ syncdata.sync[ident] = ((index.value)?index.value:null);\r
+ });\r
+ console.log(syncdata);\r
+ req.reqdata("POST",'app/preferences/hourtrax',syncdata,req.asyncNoEvent);\r
+ },\r
+ getSystemUser: function(data){\r
+ console.log(data);\r
+ document.getElementById("sysconfig_user").value = data.login;\r
+ },\r
+ setSystemUser: function(){\r
+ var pwd1 = document.getElementById("sysconfig_pwd1").value;\r
+ var pwd2 = document.getElementById("sysconfig_pwd2").value;\r
+ var user = document.getElementById("sysconfig_user").value;\r
+ if (user == ""){\r
+ alert("Nom du utilisateur requis!");\r
+ return;\r
+ }\r
+ if (pwd1 != pwd2){\r
+ alert("les mot de passe ne sont pas identiques");\r
+ return;\r
+ }\r
+ if (pwd1.length < 8){\r
+ alert("le mot de passe doit avoir au moin 8 charactères!");\r
+ return;\r
+ }\r
+ var xa = {"login":user,"passwd":pwd1};\r
+ req.reqdata('POST','app/setaccess',xa,req.asyncNoEvent);\r
+ },\r
+ setNetworkConfig: function(){\r
+ var hostname = document.getElementById("sysconfig_hostname").value;\r
+ var wlanssid = document.getElementById("sysconfig_wlanssid").value;\r
+ var wlanpwd = document.getElementById("sysconfig_wlanpwd").value;\r
+ \r
+ var xa = {"hostname":{"hostname":hostname},"wlan":{"ssid":wlanssid,"passphrase":wlanpwd}};\r
+ req.reqdata('POST','system/setconfig',xa,sysconfig.showsection);\r
+ },\r
+ getSystemConfig: function(data){\r
+ console.log(data);\r
+ var ssids = data.wlan.networks;\r
+ \r
+ var currentssid = '';\r
+ if (data.wlan.ssid){\r
+ currentssid = data.wlan.ssid;\r
+ }\r
+ //gethostname\r
+ document.getElementById("sysconfig_hostname").value = data.hostname;\r
+ document.getElementById("sysconfig_wlanssid").innerHTML ="";\r
+ var strssids ="";\r
+ for (var i in ssids){\r
+ strssids += '<option value="'+ ssids[i] +'">'+ ssids[i] + '</option>'; \r
+ }\r
+ document.getElementById("sysconfig_wlanssid").innerHTML = strssids;\r
+ document.getElementById("sysconfig_wlanssid").value = currentssid;\r
+ document.getElementById("sysconfig_wlanpwd").value = "";\r
+ document.getElementById("sysconfig_netstatus").innerHTML ="";\r
+ var netstatus = "";\r
+ for (var e in data.activenet){\r
+ if (e != "lo"){\r
+ netstatus += '<strong>'+ e +'</strong>:' + data.activenet[e]+ '<br/>';\r
+ }\r
+ }\r
+ document.getElementById("sysconfig_netstatus").innerHTML = netstatus;\r
+ },\r
+ \r
+ exportdata: function(){\r
+ var monthdate = document.getElementById('cmb_exportmonth').value;\r
+ \r
+ \r
+ var xa = {"type":"CSV","sql":"select st.surname || ' ' ||st.prename as name, hr.stamp_in as entry, hr.stamp_out as exit from hours hr left join staff st on (st.id=hr.idstaff) where hr.stamp_in between date('" + monthdate+"-01') and date('" + monthdate+"-01','+1 month','-1 day') and hr.stamp_out between date('" + monthdate+"-01') and date('" + monthdate+"-01','+1 month','-1 day');","filename":"export_" +monthdate+".csv"}\r
+ \r
+ req.reqdata("POST",'sqlite/export',xa,null);\r
+ \r
+ },\r
+ shutdown: function(){\r
+ req.reqdata("GET",'system/shutdown','',req.asyncNoEvent);\r
+ },\r
+ restart:function(){\r
+ req.reqdata("GET",'system/restart','',req.asyncNoEvent);\r
+ }\r
+}
\ No newline at end of file
--- /dev/null
+/*=============================================
+= Generic styling =
+=============================================*/
+* {
+ -webkit-font-smoothing: antialiased;
+ -moz-osx-font-smoothing: grayscale;
+}
+
+*,
+*:before,
+*:after {
+ box-sizing: border-box;
+}
+
+html,
+body {
+ position: relative;
+ margin: 0;
+ width: 100%;
+ height: 100%;
+}
+
+body {
+ font-family: "Helvetica Neue", Helvetica, Arial, "Lucida Grande", sans-serif;
+ font-size: 16px;
+ line-height: 1.4;
+ color: #FFFFFF;
+ background-color: #333;
+ overflow-x: hidden;
+}
+
+label {
+ display: block;
+ margin-bottom: 8px;
+ font-size: 14px;
+ font-weight: 500;
+ cursor: pointer;
+}
+
+p {
+ margin-top: 0;
+}
+
+hr {
+ display: block;
+ margin: 30px 0;
+ border: 0;
+ border-bottom: 1px solid #eaeaea;
+ height: 1px;
+}
+
+h1,
+h2,
+h3,
+h4,
+h5,
+h6 {
+ margin-top: 0;
+ margin-bottom: 12px;
+ font-weight: 400;
+ line-height: 1.2;
+}
+
+a,
+a:visited,
+a:focus {
+ color: #FFFFFF;
+ text-decoration: none;
+ font-weight: 600;
+}
+
+.form-control {
+ display: block;
+ width: 100%;
+ background-color: #f9f9f9;
+ padding: 12px;
+ border: 1px solid #ddd;
+ border-radius: 2.5px;
+ font-size: 14px;
+ -webkit-appearance: none;
+ -moz-appearance: none;
+ appearance: none;
+ margin-bottom: 24px;
+}
+
+h1,
+.h1 {
+ font-size: 32px;
+}
+
+h2,
+.h2 {
+ font-size: 24px;
+}
+
+h3,
+.h3 {
+ font-size: 20px;
+}
+
+h4,
+.h4 {
+ font-size: 18px;
+}
+
+h5,
+.h5 {
+ font-size: 16px;
+}
+
+h6,
+.h6 {
+ font-size: 14px;
+}
+
+p {
+ margin-bottom: 8px;
+}
+
+label + p {
+ margin-top: -4px;
+}
+
+.container {
+ display: block;
+ margin: auto;
+ max-width: 40em;
+ padding: 48px;
+}
+
+@media (max-width: 620px) {
+ .container {
+ padding: 0;
+ }
+}
+
+.section {
+ background-color: #FFFFFF;
+ padding: 24px;
+ color: #333;
+}
+
+.section a,
+.section a:visited,
+.section a:focus {
+ color: #00bcd4;
+}
+
+.logo {
+ display: block;
+ margin-bottom: 12px;
+}
+
+.logo__img {
+ width: 100%;
+ height: auto;
+ display: inline-block;
+ max-width: 100%;
+ vertical-align: top;
+ padding: 6px 0;
+}
+
+.visible-ie {
+ display: none;
+}
+
+.push-bottom {
+ margin-bottom: 24px;
+}
+
+.zero-bottom {
+ margin-bottom: 0;
+}
+
+.zero-top {
+ margin-top: 0;
+}
+
+.text-center {
+ text-align: center;
+}
+
+.is-hidden {
+ display: none;
+}
+
+[data-test-hook] {
+ margin-bottom: 24px;
+}
+
+/*===== End of Section comment block ======*/
--- /dev/null
+*{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*,:after,:before{box-sizing:border-box}body,html{position:relative;margin:0;width:100%;height:100%}body{font-family:"Helvetica Neue",Helvetica,Arial,"Lucida Grande",sans-serif;font-size:16px;line-height:1.4;color:#fff;background-color:#333;overflow-x:hidden}hr,label{display:block}label,p{margin-bottom:8px}label{font-size:14px;font-weight:500;cursor:pointer}p{margin-top:0}hr{margin:30px 0;border:0;border-bottom:1px solid #eaeaea;height:1px}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:12px;font-weight:400;line-height:1.2}a,a:focus,a:visited{color:#fff;text-decoration:none;font-weight:600}.form-control{display:block;width:100%;background-color:#f9f9f9;padding:12px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;-webkit-appearance:none;-moz-appearance:none;appearance:none;margin-bottom:24px}.h1,h1{font-size:32px}.h2,h2{font-size:24px}.h3,h3{font-size:20px}.h4,h4{font-size:18px}.h5,h5{font-size:16px}.h6,h6{font-size:14px}label+p{margin-top:-4px}.container{display:block;margin:auto;max-width:40em;padding:48px}@media (max-width:620px){.container{padding:0}}.section{background-color:#fff;padding:24px;color:#333}.section a,.section a:focus,.section a:visited{color:#00bcd4}.logo{display:block;margin-bottom:12px}.logo__img{width:100%;height:auto;display:inline-block;max-width:100%;vertical-align:top;padding:6px 0}.visible-ie{display:none}.push-bottom{margin-bottom:24px}.zero-bottom{margin-bottom:0}.zero-top{margin-top:0}.text-center{text-align:center}.is-hidden{display:none}[data-test-hook]{margin-bottom:24px}
\ No newline at end of file
--- /dev/null
+/*===============================
+= Choices =
+===============================*/
+.choices {
+ position: relative;
+ margin-bottom: 24px;
+ font-size: 16px;
+}
+
+.choices:focus {
+ outline: none;
+}
+
+.choices:last-child {
+ margin-bottom: 0;
+}
+
+.choices.is-disabled .choices__inner,
+.choices.is-disabled .choices__input {
+ background-color: #EAEAEA;
+ cursor: not-allowed;
+ user-select: none;
+}
+
+.choices.is-disabled .choices__item {
+ cursor: not-allowed;
+}
+
+.choices[data-type*="select-one"] {
+ cursor: pointer;
+}
+
+.choices[data-type*="select-one"] .choices__inner {
+ padding-bottom: 7.5px;
+
+}
+
+.choices[data-type*="select-one"] .choices__input {
+ display: block;
+ width: 100%;
+ padding: 10px;
+ border-bottom: 1px solid #DDDDDD;
+ background-color: #FFFFFF;
+ margin: 0;
+}
+
+.choices[data-type*="select-one"] .choices__button {
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+ padding: 0;
+ background-size: 8px;
+ position: absolute;
+ top: 50%;
+ right: 0;
+ margin-top: -10px;
+ margin-right: 25px;
+ height: 20px;
+ width: 20px;
+ /* border-radius: 10em; */
+ opacity: .5;
+}
+
+.choices[data-type*="select-one"] .choices__button:hover, .choices[data-type*="select-one"] .choices__button:focus {
+ opacity: 1;
+}
+
+.choices[data-type*="select-one"] .choices__button:focus {
+ box-shadow: 0px 0px 0px 2px #00BCD4;
+}
+
+.choices[data-type*="select-one"]:after {
+ content: "";
+ height: 0;
+ width: 0;
+ border-style: solid;
+ border-color: #333333 transparent transparent transparent;
+ border-width: 5px;
+ position: absolute;
+ right: 11.5px;
+ top: 50%;
+ margin-top: -2.5px;
+ pointer-events: none;
+}
+
+.choices[data-type*="select-one"].is-open:after {
+ border-color: transparent transparent #333333 transparent;
+ margin-top: -7.5px;
+}
+
+.choices[data-type*="select-one"][dir="rtl"]:after {
+ left: 11.5px;
+ right: auto;
+}
+
+.choices[data-type*="select-one"][dir="rtl"] .choices__button {
+ right: auto;
+ left: 0;
+ margin-left: 25px;
+ margin-right: 0;
+}
+
+.choices[data-type*="select-multiple"] .choices__inner,
+.choices[data-type*="text"] .choices__inner {
+ cursor: text;
+}
+
+.choices[data-type*="select-multiple"] .choices__button,
+.choices[data-type*="text"] .choices__button {
+ position: relative;
+ display: inline-block;
+ margin-top: 0;
+ margin-right: -4px;
+ margin-bottom: 0;
+ margin-left: 8px;
+ padding-left: 16px;
+ border-left: 1px solid #008fa1;
+ background-image: url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);
+ background-size: 8px;
+ width: 8px;
+ line-height: 1;
+ opacity: .75;
+ border-radius: 0;
+}
+
+.choices[data-type*="select-multiple"] .choices__button:hover, .choices[data-type*="select-multiple"] .choices__button:focus,
+.choices[data-type*="text"] .choices__button:hover,
+.choices[data-type*="text"] .choices__button:focus {
+ opacity: 1;
+}
+
+.choices__inner {
+ display: inline-block;
+ vertical-align: top;
+ width: 100%;
+ background-color: #e8f0fe;
+ padding: 7.5px 7.5px 3.75px;
+ border: 1px solid #ccc;
+ /* border-radius: 2.5px; */
+ /* font-size: 14px; */
+ min-height: 44px;
+ overflow: hidden;
+ /* font-weight: bold; */
+}
+
+.is-focused .choices__inner,
+.is-open .choices__inner {
+ border-color: #b7b7b7;
+}
+
+.is-open .choices__inner {
+ /* border-radius: 2.5px 2.5px 0 0; */
+}
+
+.is-flipped.is-open .choices__inner {
+ /* border-radius: 0 0 2.5px 2.5px; */
+}
+
+.choices__list {
+ margin: 0;
+ padding-left: 0;
+ list-style: none;
+}
+
+.choices__list--single {
+ display: inline-block;
+ padding: 4px 16px 4px 4px;
+ width: 100%;
+}
+
+[dir="rtl"] .choices__list--single {
+ padding-right: 4px;
+ padding-left: 16px;
+}
+
+.choices__list--single .choices__item {
+ width: 100%;
+}
+
+.choices__list--multiple {
+ display: inline;
+}
+
+.choices__list--multiple .choices__item {
+ display: inline-block;
+ vertical-align: middle;
+ /* border-radius: 20px; */
+ padding: 4px 6px;
+ font-size: 16px;
+ height: 40px;
+ /* font-size: 12px; */
+ /* font-weight: 500; */
+ margin-right: 3.75px;
+ /* margin-bottom: 3.75px; */
+ background-color: #607d8b;
+ border: 1px solid #607d8b;
+ color: #FFFFFF;
+ /* font-weightfont-weight: bold; */
+ word-break: break-all;
+}
+
+.choices__list--multiple .choices__item[data-deletable] {
+ padding-right: 5px;
+}
+
+[dir="rtl"] .choices__list--multiple .choices__item {
+ margin-right: 0;
+ margin-left: 3.75px;
+}
+
+.choices__list--multiple .choices__item.is-highlighted {
+ background-color: #00a5bb;
+ border: 1px solid #008fa1;
+}
+
+.is-disabled .choices__list--multiple .choices__item {
+ background-color: #aaaaaa;
+ border: 1px solid #919191;
+}
+
+.choices__list--dropdown {
+ display: none;
+ z-index: 1;
+ position: absolute;
+ width: 100%;
+ background-color: #FFFFFF;
+ border: 1px solid #DDDDDD;
+ top: 100%;
+ margin-top: -1px;
+ /* border-bottom-left-radius: 2.5px; */
+ /* border-bottom-right-radius: 2.5px; */
+ overflow: hidden;
+ word-break: break-all;
+}
+
+.choices__list--dropdown.is-active {
+ display: block;
+}
+
+.is-open .choices__list--dropdown {
+ border-color: #b7b7b7;
+}
+
+.is-flipped .choices__list--dropdown {
+ top: auto;
+ bottom: 100%;
+ margin-top: 0;
+ margin-bottom: -1px;
+ /* border-radius: .25rem .25rem 0 0; */
+}
+
+.choices__list--dropdown .choices__list {
+ position: relative;
+ max-height: 300px;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+ will-change: scroll-position;
+}
+
+.choices__list--dropdown .choices__item {
+ position: relative;
+ padding: 10px;
+ font-size: 14px;
+}
+
+[dir="rtl"] .choices__list--dropdown .choices__item {
+ text-align: right;
+}
+
+@media (min-width: 640px) {
+ .choices__list--dropdown .choices__item--selectable {
+ padding-right: 100px;
+ }
+ .choices__list--dropdown .choices__item--selectable:after {
+ content: attr(data-select-text);
+ font-size: 12px;
+ opacity: 0;
+ position: absolute;
+ right: 10px;
+ top: 50%;
+ transform: translateY(-50%);
+ }
+ [dir="rtl"] .choices__list--dropdown .choices__item--selectable {
+ text-align: right;
+ padding-left: 100px;
+ padding-right: 10px;
+ }
+ [dir="rtl"] .choices__list--dropdown .choices__item--selectable:after {
+ right: auto;
+ left: 10px;
+ }
+}
+
+.choices__list--dropdown .choices__item--selectable.is-highlighted {
+ background-color: #f2f2f2;
+}
+
+.choices__list--dropdown .choices__item--selectable.is-highlighted:after {
+ opacity: .5;
+}
+
+.choices__item {
+ cursor: default;
+}
+
+.choices__item--selectable {
+ cursor: pointer;
+}
+
+.choices__item--disabled {
+ cursor: not-allowed;
+ user-select: none;
+ opacity: .5;
+}
+
+.choices__heading {
+ /* font-weight: 600; */
+ font-size: 12px;
+ padding: 10px;
+ border-bottom: 1px solid #f7f7f7;
+ color: gray;
+}
+
+.choices__button {
+ text-indent: -9999px;
+ -webkit-appearance: none;
+ appearance: none;
+ border: 0;
+ background-color: transparent;
+ background-repeat: no-repeat;
+ background-position: center;
+ cursor: pointer;
+}
+
+.choices__button:focus {
+ outline: none;
+}
+
+.choices__input {
+ display: inline-block;
+ vertical-align: baseline;
+ background-color: #f9f9f9;
+ font-size: 14px;
+ margin-bottom: 5px;
+ border: 0;
+ border-radius: 0;
+ max-width: 100%;
+ padding: 4px 0 4px 2px;
+}
+
+.choices__input:focus {
+ outline: 0;
+}
+
+[dir="rtl"] .choices__input {
+ padding-right: 2px;
+ padding-left: 0;
+}
+
+.choices__placeholder {
+ opacity: .5;
+}
+
+.choices__input.is-hidden,
+.choices[data-type*="select-one"] .choices__input.is-hidden,
+.choices[data-type*="select-multiple"] .choices__input.is-hidden {
+ display: none;
+}
+
+/*===== End of Choices ======*/
--- /dev/null
+(function webpackUniversalModuleDefinition(root, factory) {
+ //CommonJS2
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ //AMD
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ //CommonJS
+ else if(typeof exports === 'object')
+ exports["Choices"] = factory();
+ //Window
+ else
+ root["Choices"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "/public/assets/scripts/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = 9);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.diff = exports.cloneObject = exports.existsInArray = exports.isIE11 = exports.fetchFromObject = exports.getWindowHeight = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.calcWidthOfInput = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.findAncestorByAttrName = exports.wrap = exports.isElement = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;
+
+var _this = void 0;
+
+var getRandomNumber = function getRandomNumber(min, max) {
+ return Math.floor(Math.random() * (max - min) + min);
+};
+
+exports.getRandomNumber = getRandomNumber;
+
+var generateChars = function generateChars(length) {
+ var chars = '';
+
+ for (var i = 0; i < length; i++) {
+ var randomChar = getRandomNumber(0, 36);
+ chars += randomChar.toString(36);
+ }
+
+ return chars;
+};
+
+exports.generateChars = generateChars;
+
+var generateId = function generateId(element, prefix) {
+ var id = element.id || element.name && "".concat(element.name, "-").concat(generateChars(2)) || generateChars(4);
+ id = id.replace(/(:|\.|\[|\]|,)/g, '');
+ id = "".concat(prefix, "-").concat(id);
+ return id;
+};
+
+exports.generateId = generateId;
+
+var getType = function getType(obj) {
+ return Object.prototype.toString.call(obj).slice(8, -1);
+};
+
+exports.getType = getType;
+
+var isType = function isType(type, obj) {
+ return obj !== undefined && obj !== null && getType(obj) === type;
+};
+
+exports.isType = isType;
+
+var isElement = function isElement(element) {
+ return element instanceof Element;
+};
+
+exports.isElement = isElement;
+
+var wrap = function wrap(element) {
+ var wrapper = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.createElement('div');
+
+ if (element.nextSibling) {
+ element.parentNode.insertBefore(wrapper, element.nextSibling);
+ } else {
+ element.parentNode.appendChild(wrapper);
+ }
+
+ return wrapper.appendChild(element);
+};
+
+exports.wrap = wrap;
+
+var findAncestorByAttrName = function findAncestorByAttrName(el, attr) {
+ var target = el;
+
+ while (target) {
+ if (target.hasAttribute(attr)) {
+ return target;
+ }
+
+ target = target.parentElement;
+ }
+
+ return null;
+};
+
+exports.findAncestorByAttrName = findAncestorByAttrName;
+
+var getAdjacentEl = function getAdjacentEl(startEl, className) {
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+ if (!startEl || !className) {
+ return;
+ }
+
+ var parent = startEl.parentNode.parentNode;
+ var children = Array.from(parent.querySelectorAll(className));
+ var startPos = children.indexOf(startEl);
+ var operatorDirection = direction > 0 ? 1 : -1;
+ return children[startPos + operatorDirection];
+};
+
+exports.getAdjacentEl = getAdjacentEl;
+
+var isScrolledIntoView = function isScrolledIntoView(el, parent) {
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+ if (!el) {
+ return;
+ }
+
+ var isVisible;
+
+ if (direction > 0) {
+ // In view from bottom
+ isVisible = parent.scrollTop + parent.offsetHeight >= el.offsetTop + el.offsetHeight;
+ } else {
+ // In view from top
+ isVisible = el.offsetTop >= parent.scrollTop;
+ }
+
+ return isVisible;
+};
+
+exports.isScrolledIntoView = isScrolledIntoView;
+
+var sanitise = function sanitise(value) {
+ if (!isType('String', value)) {
+ return value;
+ }
+
+ return value.replace(/&/g, '&').replace(/>/g, '&rt;').replace(/</g, '<').replace(/"/g, '"');
+};
+
+exports.sanitise = sanitise;
+
+var strToEl = function () {
+ var tmpEl = document.createElement('div');
+ return function (str) {
+ var cleanedInput = str.trim();
+ tmpEl.innerHTML = cleanedInput;
+ var firldChild = tmpEl.children[0];
+
+ while (tmpEl.firstChild) {
+ tmpEl.removeChild(tmpEl.firstChild);
+ }
+
+ return firldChild;
+ };
+}();
+/**
+ * Determines the width of a passed input based on its value and passes
+ * it to the supplied callback function.
+ */
+
+
+exports.strToEl = strToEl;
+
+var calcWidthOfInput = function calcWidthOfInput(input, callback) {
+ var value = input.value || input.placeholder;
+ var width = input.offsetWidth;
+
+ if (value) {
+ var testEl = strToEl("<span>".concat(sanitise(value), "</span>"));
+ testEl.style.position = 'absolute';
+ testEl.style.padding = '0';
+ testEl.style.top = '-9999px';
+ testEl.style.left = '-9999px';
+ testEl.style.width = 'auto';
+ testEl.style.whiteSpace = 'pre';
+
+ if (document.body.contains(input) && window.getComputedStyle) {
+ var inputStyle = window.getComputedStyle(input);
+
+ if (inputStyle) {
+ testEl.style.fontSize = inputStyle.fontSize;
+ testEl.style.fontFamily = inputStyle.fontFamily;
+ testEl.style.fontWeight = inputStyle.fontWeight;
+ testEl.style.fontStyle = inputStyle.fontStyle;
+ testEl.style.letterSpacing = inputStyle.letterSpacing;
+ testEl.style.textTransform = inputStyle.textTransform;
+ testEl.style.padding = inputStyle.padding;
+ }
+ }
+
+ document.body.appendChild(testEl);
+ requestAnimationFrame(function () {
+ if (value && testEl.offsetWidth !== input.offsetWidth) {
+ width = testEl.offsetWidth + 4;
+ }
+
+ document.body.removeChild(testEl);
+ callback.call(_this, "".concat(width, "px"));
+ });
+ } else {
+ callback.call(_this, "".concat(width, "px"));
+ }
+};
+
+exports.calcWidthOfInput = calcWidthOfInput;
+
+var sortByAlpha = function sortByAlpha(a, b) {
+ var labelA = "".concat(a.label || a.value).toLowerCase();
+ var labelB = "".concat(b.label || b.value).toLowerCase();
+
+ if (labelA < labelB) {
+ return -1;
+ }
+
+ if (labelA > labelB) {
+ return 1;
+ }
+
+ return 0;
+};
+
+exports.sortByAlpha = sortByAlpha;
+
+var sortByScore = function sortByScore(a, b) {
+ return a.score - b.score;
+};
+
+exports.sortByScore = sortByScore;
+
+var dispatchEvent = function dispatchEvent(element, type) {
+ var customArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+ var event = new CustomEvent(type, {
+ detail: customArgs,
+ bubbles: true,
+ cancelable: true
+ });
+ return element.dispatchEvent(event);
+};
+
+exports.dispatchEvent = dispatchEvent;
+
+var getWindowHeight = function getWindowHeight() {
+ var body = document.body;
+ var html = document.documentElement;
+ return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
+};
+
+exports.getWindowHeight = getWindowHeight;
+
+var fetchFromObject = function fetchFromObject(object, path) {
+ var index = path.indexOf('.');
+
+ if (index > -1) {
+ return fetchFromObject(object[path.substring(0, index)], path.substr(index + 1));
+ }
+
+ return object[path];
+};
+
+exports.fetchFromObject = fetchFromObject;
+
+var isIE11 = function isIE11() {
+ return !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
+};
+
+exports.isIE11 = isIE11;
+
+var existsInArray = function existsInArray(array, value) {
+ var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value';
+ return array.some(function (item) {
+ if (isType('String', value)) {
+ return item[key] === value.trim();
+ }
+
+ return item[key] === value;
+ });
+};
+
+exports.existsInArray = existsInArray;
+
+var cloneObject = function cloneObject(obj) {
+ return JSON.parse(JSON.stringify(obj));
+};
+
+exports.cloneObject = cloneObject;
+
+var diff = function diff(a, b) {
+ var aKeys = Object.keys(a).sort();
+ var bKeys = Object.keys(b).sort();
+ return aKeys.filter(function (i) {
+ return bKeys.indexOf(i) < 0;
+ });
+};
+
+exports.diff = diff;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.SCROLLING_SPEED = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = exports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;
+
+var _utils = __webpack_require__(0);
+
+var DEFAULT_CLASSNAMES = {
+ containerOuter: 'choices',
+ containerInner: 'choices__inner',
+ input: 'choices__input',
+ inputCloned: 'choices__input--cloned',
+ list: 'choices__list',
+ listItems: 'choices__list--multiple',
+ listSingle: 'choices__list--single',
+ listDropdown: 'choices__list--dropdown',
+ item: 'choices__item',
+ itemSelectable: 'choices__item--selectable',
+ itemDisabled: 'choices__item--disabled',
+ itemChoice: 'choices__item--choice',
+ placeholder: 'choices__placeholder',
+ group: 'choices__group',
+ groupHeading: 'choices__heading',
+ button: 'choices__button',
+ activeState: 'is-active',
+ focusState: 'is-focused',
+ openState: 'is-open',
+ disabledState: 'is-disabled',
+ highlightedState: 'is-highlighted',
+ hiddenState: 'is-hidden',
+ flippedState: 'is-flipped',
+ loadingState: 'is-loading',
+ noResults: 'has-no-results',
+ noChoices: 'has-no-choices'
+};
+exports.DEFAULT_CLASSNAMES = DEFAULT_CLASSNAMES;
+var DEFAULT_CONFIG = {
+ items: [],
+ choices: [],
+ silent: false,
+ renderChoiceLimit: -1,
+ maxItemCount: -1,
+ addItems: true,
+ addItemFilterFn: null,
+ removeItems: true,
+ removeItemButton: false,
+ editItems: false,
+ duplicateItemsAllowed: true,
+ delimiter: ',',
+ paste: true,
+ searchEnabled: true,
+ searchChoices: true,
+ searchFloor: 1,
+ searchResultLimit: 4,
+ searchFields: ['label', 'value'],
+ position: 'auto',
+ resetScrollPosition: true,
+ shouldSort: true,
+ shouldSortItems: false,
+ sortFn: _utils.sortByAlpha,
+ placeholder: true,
+ placeholderValue: null,
+ searchPlaceholderValue: null,
+ prependValue: null,
+ appendValue: null,
+ renderSelectedChoices: 'auto',
+ loadingText: 'Loading...',
+ noResultsText: 'No results found',
+ noChoicesText: 'No choices to choose from',
+ itemSelectText: 'Press to select',
+ uniqueItemText: 'Only unique values can be added',
+ customAddItemText: 'Only values matching specific conditions can be added',
+ addItemText: function addItemText(value) {
+ return "Press Enter to add <b>\"".concat((0, _utils.sanitise)(value), "\"</b>");
+ },
+ maxItemText: function maxItemText(maxItemCount) {
+ return "Only ".concat(maxItemCount, " values can be added");
+ },
+ itemComparer: function itemComparer(choice, item) {
+ return choice === item;
+ },
+ fuseOptions: {
+ includeScore: true
+ },
+ callbackOnInit: null,
+ callbackOnCreateTemplates: null,
+ classNames: DEFAULT_CLASSNAMES
+};
+exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
+var EVENTS = {
+ showDropdown: 'showDropdown',
+ hideDropdown: 'hideDropdown',
+ change: 'change',
+ choice: 'choice',
+ search: 'search',
+ addItem: 'addItem',
+ removeItem: 'removeItem',
+ highlightItem: 'highlightItem',
+ highlightChoice: 'highlightChoice'
+};
+exports.EVENTS = EVENTS;
+var ACTION_TYPES = {
+ ADD_CHOICE: 'ADD_CHOICE',
+ FILTER_CHOICES: 'FILTER_CHOICES',
+ ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',
+ CLEAR_CHOICES: 'CLEAR_CHOICES',
+ ADD_GROUP: 'ADD_GROUP',
+ ADD_ITEM: 'ADD_ITEM',
+ REMOVE_ITEM: 'REMOVE_ITEM',
+ HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',
+ CLEAR_ALL: 'CLEAR_ALL'
+};
+exports.ACTION_TYPES = ACTION_TYPES;
+var KEY_CODES = {
+ BACK_KEY: 46,
+ DELETE_KEY: 8,
+ ENTER_KEY: 13,
+ A_KEY: 65,
+ ESC_KEY: 27,
+ UP_KEY: 38,
+ DOWN_KEY: 40,
+ PAGE_UP_KEY: 33,
+ PAGE_DOWN_KEY: 34
+};
+exports.KEY_CODES = KEY_CODES;
+var SCROLLING_SPEED = 4;
+exports.SCROLLING_SPEED = SCROLLING_SPEED;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
+/* global window */
+
+
+var root;
+
+if (typeof self !== 'undefined') {
+ root = self;
+} else if (typeof window !== 'undefined') {
+ root = window;
+} else if (typeof global !== 'undefined') {
+ root = global;
+} else if (true) {
+ root = module;
+} else {}
+
+var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(root);
+/* harmony default export */ __webpack_exports__["a"] = (result);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(3), __webpack_require__(14)(module)))
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+ return this;
+})();
+
+try {
+ // This works if eval is allowed (see CSP)
+ g = g || new Function("return this")();
+} catch (e) {
+ // This works if the window reference is available
+ if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var WrappedElement =
+/*#__PURE__*/
+function () {
+ function WrappedElement(_ref) {
+ var element = _ref.element,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, WrappedElement);
+
+ Object.assign(this, {
+ element: element,
+ classNames: classNames
+ });
+
+ if (!(0, _utils.isElement)(element)) {
+ throw new TypeError('Invalid element passed');
+ }
+
+ this.isDisabled = false;
+ }
+
+ _createClass(WrappedElement, [{
+ key: "conceal",
+ value: function conceal() {
+ // Hide passed input
+ this.element.classList.add(this.classNames.input);
+ this.element.classList.add(this.classNames.hiddenState); // Remove element from tab index
+
+ this.element.tabIndex = '-1'; // Backup original styles if any
+
+ var origStyle = this.element.getAttribute('style');
+
+ if (origStyle) {
+ this.element.setAttribute('data-choice-orig-style', origStyle);
+ }
+
+ this.element.setAttribute('aria-hidden', 'true');
+ this.element.setAttribute('data-choice', 'active');
+ }
+ }, {
+ key: "reveal",
+ value: function reveal() {
+ // Reinstate passed element
+ this.element.classList.remove(this.classNames.input);
+ this.element.classList.remove(this.classNames.hiddenState);
+ this.element.removeAttribute('tabindex'); // Recover original styles if any
+
+ var origStyle = this.element.getAttribute('data-choice-orig-style');
+
+ if (origStyle) {
+ this.element.removeAttribute('data-choice-orig-style');
+ this.element.setAttribute('style', origStyle);
+ } else {
+ this.element.removeAttribute('style');
+ }
+
+ this.element.removeAttribute('aria-hidden');
+ this.element.removeAttribute('data-choice'); // Re-assign values - this is weird, I know
+
+ this.element.value = this.element.value;
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.removeAttribute('disabled');
+ this.element.disabled = false;
+ this.isDisabled = false;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.setAttribute('disabled', '');
+ this.element.disabled = true;
+ this.isDisabled = true;
+ }
+ }, {
+ key: "triggerEvent",
+ value: function triggerEvent(eventType, data) {
+ (0, _utils.dispatchEvent)(this.element, eventType, data);
+ }
+ }, {
+ key: "value",
+ get: function get() {
+ return this.element.value;
+ }
+ }]);
+
+ return WrappedElement;
+}();
+
+exports.default = WrappedElement;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.TEMPLATES = void 0;
+
+var _classnames = _interopRequireDefault(__webpack_require__(27));
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var TEMPLATES = {
+ containerOuter: function containerOuter(globalClasses, direction, isSelectElement, isSelectOneElement, searchEnabled, passedElementType) {
+ var tabIndex = isSelectOneElement ? 'tabindex="0"' : '';
+ var role = isSelectElement ? 'role="listbox"' : '';
+ var ariaAutoComplete = '';
+
+ if (isSelectElement && searchEnabled) {
+ role = 'role="combobox"';
+ ariaAutoComplete = 'aria-autocomplete="list"';
+ }
+
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(globalClasses.containerOuter, "\"\n data-type=\"").concat(passedElementType, "\"\n ").concat(role, "\n ").concat(tabIndex, "\n ").concat(ariaAutoComplete, "\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n dir=\"").concat(direction, "\"\n >\n </div>\n "));
+ },
+ containerInner: function containerInner(globalClasses) {
+ return (0, _utils.strToEl)("\n <div class=\"".concat(globalClasses.containerInner, "\"></div>\n "));
+ },
+ itemList: function itemList(globalClasses, isSelectOneElement) {
+ var _classNames;
+
+ var localClasses = (0, _classnames.default)(globalClasses.list, (_classNames = {}, _defineProperty(_classNames, globalClasses.listSingle, isSelectOneElement), _defineProperty(_classNames, globalClasses.listItems, !isSelectOneElement), _classNames));
+ return (0, _utils.strToEl)("\n <div class=\"".concat(localClasses, "\"></div>\n "));
+ },
+ placeholder: function placeholder(globalClasses, value) {
+ return (0, _utils.strToEl)("\n <div class=\"".concat(globalClasses.placeholder, "\">\n ").concat(value, "\n </div>\n "));
+ },
+ item: function item(globalClasses, data, removeItemButton) {
+ var _classNames2;
+
+ var ariaSelected = data.active ? 'aria-selected="true"' : '';
+ var ariaDisabled = data.disabled ? 'aria-disabled="true"' : '';
+ var localClasses = (0, _classnames.default)(globalClasses.item, (_classNames2 = {}, _defineProperty(_classNames2, globalClasses.highlightedState, data.highlighted), _defineProperty(_classNames2, globalClasses.itemSelectable, !data.highlighted), _defineProperty(_classNames2, globalClasses.placeholder, data.placeholder), _classNames2));
+
+ if (removeItemButton) {
+ var _classNames3;
+
+ localClasses = (0, _classnames.default)(globalClasses.item, (_classNames3 = {}, _defineProperty(_classNames3, globalClasses.highlightedState, data.highlighted), _defineProperty(_classNames3, globalClasses.itemSelectable, !data.disabled), _defineProperty(_classNames3, globalClasses.placeholder, data.placeholder), _classNames3));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-item\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n data-custom-properties='").concat(data.customProperties, "'\n data-deletable\n ").concat(ariaSelected, "\n ").concat(ariaDisabled, "\n >\n ").concat(data.label, "<!--\n --><button\n type=\"button\"\n class=\"").concat(globalClasses.button, "\"\n data-button\n aria-label=\"Remove item: '").concat(data.value, "'\"\n >\n Remove item\n </button>\n </div>\n "));
+ }
+
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-item\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n ").concat(ariaSelected, "\n ").concat(ariaDisabled, "\n >\n ").concat(data.label, "\n </div>\n "));
+ },
+ choiceList: function choiceList(globalClasses, isSelectOneElement) {
+ var ariaMultiSelectable = !isSelectOneElement ? 'aria-multiselectable="true"' : '';
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(globalClasses.list, "\"\n dir=\"ltr\"\n role=\"listbox\"\n ").concat(ariaMultiSelectable, "\n >\n </div>\n "));
+ },
+ choiceGroup: function choiceGroup(globalClasses, data) {
+ var ariaDisabled = data.disabled ? 'aria-disabled="true"' : '';
+ var localClasses = (0, _classnames.default)(globalClasses.group, _defineProperty({}, globalClasses.itemDisabled, data.disabled));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-group\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n role=\"group\"\n ").concat(ariaDisabled, "\n >\n <div class=\"").concat(globalClasses.groupHeading, "\">").concat(data.value, "</div>\n </div>\n "));
+ },
+ choice: function choice(globalClasses, data, itemSelectText) {
+ var _classNames5;
+
+ var role = data.groupId > 0 ? 'role="treeitem"' : 'role="option"';
+ var localClasses = (0, _classnames.default)(globalClasses.item, globalClasses.itemChoice, (_classNames5 = {}, _defineProperty(_classNames5, globalClasses.itemDisabled, data.disabled), _defineProperty(_classNames5, globalClasses.itemSelectable, !data.disabled), _defineProperty(_classNames5, globalClasses.placeholder, data.placeholder), _classNames5));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-select-text=\"").concat(itemSelectText, "\"\n data-choice\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n ").concat(data.disabled ? 'data-choice-disabled aria-disabled="true"' : 'data-choice-selectable', "\n id=\"").concat(data.elementId, "\"\n ").concat(role, "\n >\n ").concat(data.label, "\n </div>\n "));
+ },
+ input: function input(globalClasses) {
+ var localClasses = (0, _classnames.default)(globalClasses.input, globalClasses.inputCloned);
+ return (0, _utils.strToEl)("\n <input\n type=\"text\"\n class=\"".concat(localClasses, "\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n role=\"textbox\"\n aria-autocomplete=\"list\"\n >\n "));
+ },
+ dropdown: function dropdown(globalClasses) {
+ var localClasses = (0, _classnames.default)(globalClasses.list, globalClasses.listDropdown);
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n aria-expanded=\"false\"\n >\n </div>\n "));
+ },
+ notice: function notice(globalClasses, label) {
+ var _classNames6;
+
+ var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var localClasses = (0, _classnames.default)(globalClasses.item, globalClasses.itemChoice, (_classNames6 = {}, _defineProperty(_classNames6, globalClasses.noResults, type === 'no-results'), _defineProperty(_classNames6, globalClasses.noChoices, type === 'no-choices'), _classNames6));
+ return (0, _utils.strToEl)("\n <div class=\"".concat(localClasses, "\">\n ").concat(label, "\n </div>\n "));
+ },
+ option: function option(data) {
+ return (0, _utils.strToEl)("\n <option value=\"".concat(data.value, "\" ").concat(data.active ? 'selected' : '', " ").concat(data.disabled ? 'disabled' : '', " ").concat(data.customProperties ? "data-custom-properties=".concat(data.customProperties) : '', ">").concat(data.label, "</option>\n "));
+ }
+};
+exports.TEMPLATES = TEMPLATES;
+var _default = TEMPLATES;
+exports.default = _default;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+
+// EXTERNAL MODULE: ./node_modules/lodash-es/_freeGlobal.js
+var _freeGlobal = __webpack_require__(8);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_root.js
+
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = _freeGlobal["a" /* default */] || freeSelf || Function('return this')();
+
+/* harmony default export */ var _root = (root);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_Symbol.js
+
+
+/** Built-in value references. */
+var Symbol = _root.Symbol;
+
+/* harmony default export */ var _Symbol = (Symbol);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_getRawTag.js
+
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var _getRawTag_hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
+
+/** Built-in value references. */
+var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
+
+/**
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the raw `toStringTag`.
+ */
+function getRawTag(value) {
+ var isOwn = _getRawTag_hasOwnProperty.call(value, symToStringTag),
+ tag = value[symToStringTag];
+
+ try {
+ value[symToStringTag] = undefined;
+ var unmasked = true;
+ } catch (e) {}
+
+ var result = nativeObjectToString.call(value);
+ if (unmasked) {
+ if (isOwn) {
+ value[symToStringTag] = tag;
+ } else {
+ delete value[symToStringTag];
+ }
+ }
+ return result;
+}
+
+/* harmony default export */ var _getRawTag = (getRawTag);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_objectToString.js
+/** Used for built-in method references. */
+var _objectToString_objectProto = Object.prototype;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var _objectToString_nativeObjectToString = _objectToString_objectProto.toString;
+
+/**
+ * Converts `value` to a string using `Object.prototype.toString`.
+ *
+ * @private
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ */
+function objectToString(value) {
+ return _objectToString_nativeObjectToString.call(value);
+}
+
+/* harmony default export */ var _objectToString = (objectToString);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetTag.js
+
+
+
+
+/** `Object#toString` result references. */
+var nullTag = '[object Null]',
+ undefinedTag = '[object Undefined]';
+
+/** Built-in value references. */
+var _baseGetTag_symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
+
+/**
+ * The base implementation of `getTag` without fallbacks for buggy environments.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+function baseGetTag(value) {
+ if (value == null) {
+ return value === undefined ? undefinedTag : nullTag;
+ }
+ return (_baseGetTag_symToStringTag && _baseGetTag_symToStringTag in Object(value))
+ ? _getRawTag(value)
+ : _objectToString(value);
+}
+
+/* harmony default export */ var _baseGetTag = (baseGetTag);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_overArg.js
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+ return function(arg) {
+ return func(transform(arg));
+ };
+}
+
+/* harmony default export */ var _overArg = (overArg);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_getPrototype.js
+
+
+/** Built-in value references. */
+var getPrototype = _overArg(Object.getPrototypeOf, Object);
+
+/* harmony default export */ var _getPrototype = (getPrototype);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/isObjectLike.js
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return value != null && typeof value == 'object';
+}
+
+/* harmony default export */ var lodash_es_isObjectLike = (isObjectLike);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/isPlainObject.js
+
+
+
+
+/** `Object#toString` result references. */
+var objectTag = '[object Object]';
+
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+ isPlainObject_objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var isPlainObject_hasOwnProperty = isPlainObject_objectProto.hasOwnProperty;
+
+/** Used to infer the `Object` constructor. */
+var objectCtorString = funcToString.call(Object);
+
+/**
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.8.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * }
+ *
+ * _.isPlainObject(new Foo);
+ * // => false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+ if (!lodash_es_isObjectLike(value) || _baseGetTag(value) != objectTag) {
+ return false;
+ }
+ var proto = _getPrototype(value);
+ if (proto === null) {
+ return true;
+ }
+ var Ctor = isPlainObject_hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
+ funcToString.call(Ctor) == objectCtorString;
+}
+
+/* harmony default export */ var lodash_es_isPlainObject = (isPlainObject);
+
+// EXTERNAL MODULE: ./node_modules/symbol-observable/es/index.js
+var es = __webpack_require__(2);
+
+// CONCATENATED MODULE: ./node_modules/redux/es/createStore.js
+
+
+
+/**
+ * These are private action types reserved by Redux.
+ * For any unknown actions, you must return the current state.
+ * If the current state is undefined, you must return the initial state.
+ * Do not reference these action types directly in your code.
+ */
+var ActionTypes = {
+ INIT: '@@redux/INIT'
+
+ /**
+ * Creates a Redux store that holds the state tree.
+ * The only way to change the data in the store is to call `dispatch()` on it.
+ *
+ * There should only be a single store in your app. To specify how different
+ * parts of the state tree respond to actions, you may combine several reducers
+ * into a single reducer function by using `combineReducers`.
+ *
+ * @param {Function} reducer A function that returns the next state tree, given
+ * the current state tree and the action to handle.
+ *
+ * @param {any} [preloadedState] The initial state. You may optionally specify it
+ * to hydrate the state from the server in universal apps, or to restore a
+ * previously serialized user session.
+ * If you use `combineReducers` to produce the root reducer function, this must be
+ * an object with the same shape as `combineReducers` keys.
+ *
+ * @param {Function} [enhancer] The store enhancer. You may optionally specify it
+ * to enhance the store with third-party capabilities such as middleware,
+ * time travel, persistence, etc. The only store enhancer that ships with Redux
+ * is `applyMiddleware()`.
+ *
+ * @returns {Store} A Redux store that lets you read the state, dispatch actions
+ * and subscribe to changes.
+ */
+};function createStore_createStore(reducer, preloadedState, enhancer) {
+ var _ref2;
+
+ if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
+ enhancer = preloadedState;
+ preloadedState = undefined;
+ }
+
+ if (typeof enhancer !== 'undefined') {
+ if (typeof enhancer !== 'function') {
+ throw new Error('Expected the enhancer to be a function.');
+ }
+
+ return enhancer(createStore_createStore)(reducer, preloadedState);
+ }
+
+ if (typeof reducer !== 'function') {
+ throw new Error('Expected the reducer to be a function.');
+ }
+
+ var currentReducer = reducer;
+ var currentState = preloadedState;
+ var currentListeners = [];
+ var nextListeners = currentListeners;
+ var isDispatching = false;
+
+ function ensureCanMutateNextListeners() {
+ if (nextListeners === currentListeners) {
+ nextListeners = currentListeners.slice();
+ }
+ }
+
+ /**
+ * Reads the state tree managed by the store.
+ *
+ * @returns {any} The current state tree of your application.
+ */
+ function getState() {
+ return currentState;
+ }
+
+ /**
+ * Adds a change listener. It will be called any time an action is dispatched,
+ * and some part of the state tree may potentially have changed. You may then
+ * call `getState()` to read the current state tree inside the callback.
+ *
+ * You may call `dispatch()` from a change listener, with the following
+ * caveats:
+ *
+ * 1. The subscriptions are snapshotted just before every `dispatch()` call.
+ * If you subscribe or unsubscribe while the listeners are being invoked, this
+ * will not have any effect on the `dispatch()` that is currently in progress.
+ * However, the next `dispatch()` call, whether nested or not, will use a more
+ * recent snapshot of the subscription list.
+ *
+ * 2. The listener should not expect to see all state changes, as the state
+ * might have been updated multiple times during a nested `dispatch()` before
+ * the listener is called. It is, however, guaranteed that all subscribers
+ * registered before the `dispatch()` started will be called with the latest
+ * state by the time it exits.
+ *
+ * @param {Function} listener A callback to be invoked on every dispatch.
+ * @returns {Function} A function to remove this change listener.
+ */
+ function subscribe(listener) {
+ if (typeof listener !== 'function') {
+ throw new Error('Expected listener to be a function.');
+ }
+
+ var isSubscribed = true;
+
+ ensureCanMutateNextListeners();
+ nextListeners.push(listener);
+
+ return function unsubscribe() {
+ if (!isSubscribed) {
+ return;
+ }
+
+ isSubscribed = false;
+
+ ensureCanMutateNextListeners();
+ var index = nextListeners.indexOf(listener);
+ nextListeners.splice(index, 1);
+ };
+ }
+
+ /**
+ * Dispatches an action. It is the only way to trigger a state change.
+ *
+ * The `reducer` function, used to create the store, will be called with the
+ * current state tree and the given `action`. Its return value will
+ * be considered the **next** state of the tree, and the change listeners
+ * will be notified.
+ *
+ * The base implementation only supports plain object actions. If you want to
+ * dispatch a Promise, an Observable, a thunk, or something else, you need to
+ * wrap your store creating function into the corresponding middleware. For
+ * example, see the documentation for the `redux-thunk` package. Even the
+ * middleware will eventually dispatch plain object actions using this method.
+ *
+ * @param {Object} action A plain object representing “what changed”. It is
+ * a good idea to keep actions serializable so you can record and replay user
+ * sessions, or use the time travelling `redux-devtools`. An action must have
+ * a `type` property which may not be `undefined`. It is a good idea to use
+ * string constants for action types.
+ *
+ * @returns {Object} For convenience, the same action object you dispatched.
+ *
+ * Note that, if you use a custom middleware, it may wrap `dispatch()` to
+ * return something else (for example, a Promise you can await).
+ */
+ function dispatch(action) {
+ if (!lodash_es_isPlainObject(action)) {
+ throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
+ }
+
+ if (typeof action.type === 'undefined') {
+ throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
+ }
+
+ if (isDispatching) {
+ throw new Error('Reducers may not dispatch actions.');
+ }
+
+ try {
+ isDispatching = true;
+ currentState = currentReducer(currentState, action);
+ } finally {
+ isDispatching = false;
+ }
+
+ var listeners = currentListeners = nextListeners;
+ for (var i = 0; i < listeners.length; i++) {
+ var listener = listeners[i];
+ listener();
+ }
+
+ return action;
+ }
+
+ /**
+ * Replaces the reducer currently used by the store to calculate the state.
+ *
+ * You might need this if your app implements code splitting and you want to
+ * load some of the reducers dynamically. You might also need this if you
+ * implement a hot reloading mechanism for Redux.
+ *
+ * @param {Function} nextReducer The reducer for the store to use instead.
+ * @returns {void}
+ */
+ function replaceReducer(nextReducer) {
+ if (typeof nextReducer !== 'function') {
+ throw new Error('Expected the nextReducer to be a function.');
+ }
+
+ currentReducer = nextReducer;
+ dispatch({ type: ActionTypes.INIT });
+ }
+
+ /**
+ * Interoperability point for observable/reactive libraries.
+ * @returns {observable} A minimal observable of state changes.
+ * For more information, see the observable proposal:
+ * https://github.com/tc39/proposal-observable
+ */
+ function observable() {
+ var _ref;
+
+ var outerSubscribe = subscribe;
+ return _ref = {
+ /**
+ * The minimal observable subscription method.
+ * @param {Object} observer Any object that can be used as an observer.
+ * The observer object should have a `next` method.
+ * @returns {subscription} An object with an `unsubscribe` method that can
+ * be used to unsubscribe the observable from the store, and prevent further
+ * emission of values from the observable.
+ */
+ subscribe: function subscribe(observer) {
+ if (typeof observer !== 'object') {
+ throw new TypeError('Expected the observer to be an object.');
+ }
+
+ function observeState() {
+ if (observer.next) {
+ observer.next(getState());
+ }
+ }
+
+ observeState();
+ var unsubscribe = outerSubscribe(observeState);
+ return { unsubscribe: unsubscribe };
+ }
+ }, _ref[es["a" /* default */]] = function () {
+ return this;
+ }, _ref;
+ }
+
+ // When a store is created, an "INIT" action is dispatched so that every
+ // reducer returns their initial state. This effectively populates
+ // the initial state tree.
+ dispatch({ type: ActionTypes.INIT });
+
+ return _ref2 = {
+ dispatch: dispatch,
+ subscribe: subscribe,
+ getState: getState,
+ replaceReducer: replaceReducer
+ }, _ref2[es["a" /* default */]] = observable, _ref2;
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/utils/warning.js
+/**
+ * Prints a warning in the console if it exists.
+ *
+ * @param {String} message The warning message.
+ * @returns {void}
+ */
+function warning(message) {
+ /* eslint-disable no-console */
+ if (typeof console !== 'undefined' && typeof console.error === 'function') {
+ console.error(message);
+ }
+ /* eslint-enable no-console */
+ try {
+ // This error was thrown as a convenience so that if you enable
+ // "break on all exceptions" in your console,
+ // it would pause the execution at this line.
+ throw new Error(message);
+ /* eslint-disable no-empty */
+ } catch (e) {}
+ /* eslint-enable no-empty */
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/combineReducers.js
+
+
+
+
+function getUndefinedStateErrorMessage(key, action) {
+ var actionType = action && action.type;
+ var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
+
+ return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';
+}
+
+function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
+ var reducerKeys = Object.keys(reducers);
+ var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
+
+ if (reducerKeys.length === 0) {
+ return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
+ }
+
+ if (!lodash_es_isPlainObject(inputState)) {
+ return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
+ }
+
+ var unexpectedKeys = Object.keys(inputState).filter(function (key) {
+ return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
+ });
+
+ unexpectedKeys.forEach(function (key) {
+ unexpectedKeyCache[key] = true;
+ });
+
+ if (unexpectedKeys.length > 0) {
+ return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
+ }
+}
+
+function assertReducerShape(reducers) {
+ Object.keys(reducers).forEach(function (key) {
+ var reducer = reducers[key];
+ var initialState = reducer(undefined, { type: ActionTypes.INIT });
+
+ if (typeof initialState === 'undefined') {
+ throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');
+ }
+
+ var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
+ if (typeof reducer(undefined, { type: type }) === 'undefined') {
+ throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + ActionTypes.INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');
+ }
+ });
+}
+
+/**
+ * Turns an object whose values are different reducer functions, into a single
+ * reducer function. It will call every child reducer, and gather their results
+ * into a single state object, whose keys correspond to the keys of the passed
+ * reducer functions.
+ *
+ * @param {Object} reducers An object whose values correspond to different
+ * reducer functions that need to be combined into one. One handy way to obtain
+ * it is to use ES6 `import * as reducers` syntax. The reducers may never return
+ * undefined for any action. Instead, they should return their initial state
+ * if the state passed to them was undefined, and the current state for any
+ * unrecognized action.
+ *
+ * @returns {Function} A reducer function that invokes every reducer inside the
+ * passed object, and builds a state object with the same shape.
+ */
+function combineReducers(reducers) {
+ var reducerKeys = Object.keys(reducers);
+ var finalReducers = {};
+ for (var i = 0; i < reducerKeys.length; i++) {
+ var key = reducerKeys[i];
+
+ if (false) {}
+
+ if (typeof reducers[key] === 'function') {
+ finalReducers[key] = reducers[key];
+ }
+ }
+ var finalReducerKeys = Object.keys(finalReducers);
+
+ var unexpectedKeyCache = void 0;
+ if (false) {}
+
+ var shapeAssertionError = void 0;
+ try {
+ assertReducerShape(finalReducers);
+ } catch (e) {
+ shapeAssertionError = e;
+ }
+
+ return function combination() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var action = arguments[1];
+
+ if (shapeAssertionError) {
+ throw shapeAssertionError;
+ }
+
+ if (false) { var warningMessage; }
+
+ var hasChanged = false;
+ var nextState = {};
+ for (var _i = 0; _i < finalReducerKeys.length; _i++) {
+ var _key = finalReducerKeys[_i];
+ var reducer = finalReducers[_key];
+ var previousStateForKey = state[_key];
+ var nextStateForKey = reducer(previousStateForKey, action);
+ if (typeof nextStateForKey === 'undefined') {
+ var errorMessage = getUndefinedStateErrorMessage(_key, action);
+ throw new Error(errorMessage);
+ }
+ nextState[_key] = nextStateForKey;
+ hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
+ }
+ return hasChanged ? nextState : state;
+ };
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/bindActionCreators.js
+function bindActionCreator(actionCreator, dispatch) {
+ return function () {
+ return dispatch(actionCreator.apply(undefined, arguments));
+ };
+}
+
+/**
+ * Turns an object whose values are action creators, into an object with the
+ * same keys, but with every function wrapped into a `dispatch` call so they
+ * may be invoked directly. This is just a convenience method, as you can call
+ * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
+ *
+ * For convenience, you can also pass a single function as the first argument,
+ * and get a function in return.
+ *
+ * @param {Function|Object} actionCreators An object whose values are action
+ * creator functions. One handy way to obtain it is to use ES6 `import * as`
+ * syntax. You may also pass a single function.
+ *
+ * @param {Function} dispatch The `dispatch` function available on your Redux
+ * store.
+ *
+ * @returns {Function|Object} The object mimicking the original object, but with
+ * every action creator wrapped into the `dispatch` call. If you passed a
+ * function as `actionCreators`, the return value will also be a single
+ * function.
+ */
+function bindActionCreators(actionCreators, dispatch) {
+ if (typeof actionCreators === 'function') {
+ return bindActionCreator(actionCreators, dispatch);
+ }
+
+ if (typeof actionCreators !== 'object' || actionCreators === null) {
+ throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
+ }
+
+ var keys = Object.keys(actionCreators);
+ var boundActionCreators = {};
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var actionCreator = actionCreators[key];
+ if (typeof actionCreator === 'function') {
+ boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
+ }
+ }
+ return boundActionCreators;
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/compose.js
+/**
+ * Composes single-argument functions from right to left. The rightmost
+ * function can take multiple arguments as it provides the signature for
+ * the resulting composite function.
+ *
+ * @param {...Function} funcs The functions to compose.
+ * @returns {Function} A function obtained by composing the argument functions
+ * from right to left. For example, compose(f, g, h) is identical to doing
+ * (...args) => f(g(h(...args))).
+ */
+
+function compose() {
+ for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
+ funcs[_key] = arguments[_key];
+ }
+
+ if (funcs.length === 0) {
+ return function (arg) {
+ return arg;
+ };
+ }
+
+ if (funcs.length === 1) {
+ return funcs[0];
+ }
+
+ return funcs.reduce(function (a, b) {
+ return function () {
+ return a(b.apply(undefined, arguments));
+ };
+ });
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/applyMiddleware.js
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+
+
+/**
+ * Creates a store enhancer that applies middleware to the dispatch method
+ * of the Redux store. This is handy for a variety of tasks, such as expressing
+ * asynchronous actions in a concise manner, or logging every action payload.
+ *
+ * See `redux-thunk` package as an example of the Redux middleware.
+ *
+ * Because middleware is potentially asynchronous, this should be the first
+ * store enhancer in the composition chain.
+ *
+ * Note that each middleware will be given the `dispatch` and `getState` functions
+ * as named arguments.
+ *
+ * @param {...Function} middlewares The middleware chain to be applied.
+ * @returns {Function} A store enhancer applying the middleware.
+ */
+function applyMiddleware() {
+ for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
+ middlewares[_key] = arguments[_key];
+ }
+
+ return function (createStore) {
+ return function (reducer, preloadedState, enhancer) {
+ var store = createStore(reducer, preloadedState, enhancer);
+ var _dispatch = store.dispatch;
+ var chain = [];
+
+ var middlewareAPI = {
+ getState: store.getState,
+ dispatch: function dispatch(action) {
+ return _dispatch(action);
+ }
+ };
+ chain = middlewares.map(function (middleware) {
+ return middleware(middlewareAPI);
+ });
+ _dispatch = compose.apply(undefined, chain)(store.dispatch);
+
+ return _extends({}, store, {
+ dispatch: _dispatch
+ });
+ };
+ };
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/index.js
+/* concated harmony reexport createStore */__webpack_require__.d(__webpack_exports__, "createStore", function() { return createStore_createStore; });
+/* concated harmony reexport combineReducers */__webpack_require__.d(__webpack_exports__, "combineReducers", function() { return combineReducers; });
+/* concated harmony reexport bindActionCreators */__webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return bindActionCreators; });
+/* concated harmony reexport applyMiddleware */__webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return applyMiddleware; });
+/* concated harmony reexport compose */__webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
+
+
+
+
+
+
+
+/*
+* This is a dummy function to check if the function name has been altered by minification.
+* If the function has been minified and NODE_ENV !== 'production', warn the user.
+*/
+function isCrushed() {}
+
+if (false) {}
+
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return symbolObservablePonyfill; });
+function symbolObservablePonyfill(root) {
+ var result;
+ var Symbol = root.Symbol;
+
+ if (typeof Symbol === 'function') {
+ if (Symbol.observable) {
+ result = Symbol.observable;
+ } else {
+ result = Symbol('observable');
+ Symbol.observable = result;
+ }
+ } else {
+ result = '@@observable';
+ }
+
+ return result;
+};
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/* harmony default export */ __webpack_exports__["a"] = (freeGlobal);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(3)))
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(10);
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _fuse = _interopRequireDefault(__webpack_require__(11));
+
+var _deepmerge = _interopRequireDefault(__webpack_require__(12));
+
+var _store = _interopRequireDefault(__webpack_require__(13));
+
+var _components = __webpack_require__(20);
+
+var _constants = __webpack_require__(1);
+
+var _templates = __webpack_require__(5);
+
+var _choices = __webpack_require__(28);
+
+var _items = __webpack_require__(29);
+
+var _groups = __webpack_require__(30);
+
+var _misc = __webpack_require__(31);
+
+var _general = __webpack_require__(32);
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+/**
+ * Choices
+ * @author Josh Johnson<josh@joshuajohnson.co.uk>
+ */
+var Choices =
+/*#__PURE__*/
+function () {
+ function Choices() {
+ var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '[data-choice]';
+ var userConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ _classCallCheck(this, Choices);
+
+ if ((0, _utils.isType)('String', element)) {
+ var elements = Array.from(document.querySelectorAll(element)); // If there are multiple elements, create a new instance
+ // for each element besides the first one (as that already has an instance)
+
+ if (elements.length > 1) {
+ return this._generateInstances(elements, userConfig);
+ }
+ }
+
+ this.config = _deepmerge.default.all([_constants.DEFAULT_CONFIG, Choices.userDefaults, userConfig], // When merging array configs, replace with a copy of the userConfig array,
+ // instead of concatenating with the default array
+ {
+ arrayMerge: function arrayMerge(destinationArray, sourceArray) {
+ return [].concat(sourceArray);
+ }
+ });
+ var invalidConfigOptions = (0, _utils.diff)(this.config, _constants.DEFAULT_CONFIG);
+
+ if (invalidConfigOptions.length) {
+ console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));
+ }
+
+ if (!['auto', 'always'].includes(this.config.renderSelectedChoices)) {
+ this.config.renderSelectedChoices = 'auto';
+ } // Retrieve triggering element (i.e. element with 'data-choice' trigger)
+
+
+ var passedElement = (0, _utils.isType)('String', element) ? document.querySelector(element) : element;
+
+ if (!passedElement) {
+ return console.error('Could not find passed element or passed element was of an invalid type');
+ }
+
+ this._isTextElement = passedElement.type === 'text';
+ this._isSelectOneElement = passedElement.type === 'select-one';
+ this._isSelectMultipleElement = passedElement.type === 'select-multiple';
+ this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;
+
+ if (this._isTextElement) {
+ this.passedElement = new _components.WrappedInput({
+ element: passedElement,
+ classNames: this.config.classNames,
+ delimiter: this.config.delimiter
+ });
+ } else if (this._isSelectElement) {
+ this.passedElement = new _components.WrappedSelect({
+ element: passedElement,
+ classNames: this.config.classNames
+ });
+ }
+
+ if (!this.passedElement) {
+ return console.error('Passed element was of an invalid type');
+ }
+
+ if (this.config.shouldSortItems === true && this._isSelectOneElement && !this.config.silent) {
+ console.warn("shouldSortElements: Type of passed element is 'select-one', falling back to false.");
+ }
+
+ this.initialised = false;
+ this._store = new _store.default(this.render);
+ this._initialState = {};
+ this._currentState = {};
+ this._prevState = {};
+ this._currentValue = '';
+ this._canSearch = this.config.searchEnabled;
+ this._isScrollingOnIe = false;
+ this._highlightPosition = 0;
+ this._wasTap = true;
+ this._placeholderValue = this._generatePlaceholderValue();
+ this._baseId = (0, _utils.generateId)(this.passedElement.element, 'choices-');
+ this._direction = this.passedElement.element.getAttribute('dir') || 'ltr';
+ this._idNames = {
+ itemChoice: 'item-choice'
+ }; // Assign preset choices from passed object
+
+ this._presetChoices = this.config.choices; // Assign preset items from passed object first
+
+ this._presetItems = this.config.items; // Then add any values passed from attribute
+
+ if (this.passedElement.value) {
+ this._presetItems = this._presetItems.concat(this.passedElement.value.split(this.config.delimiter));
+ }
+
+ this._render = this._render.bind(this);
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ this._onKeyUp = this._onKeyUp.bind(this);
+ this._onKeyDown = this._onKeyDown.bind(this);
+ this._onClick = this._onClick.bind(this);
+ this._onTouchMove = this._onTouchMove.bind(this);
+ this._onTouchEnd = this._onTouchEnd.bind(this);
+ this._onMouseDown = this._onMouseDown.bind(this);
+ this._onMouseOver = this._onMouseOver.bind(this);
+ this._onFormReset = this._onFormReset.bind(this);
+ this._onAKey = this._onAKey.bind(this);
+ this._onEnterKey = this._onEnterKey.bind(this);
+ this._onEscapeKey = this._onEscapeKey.bind(this);
+ this._onDirectionKey = this._onDirectionKey.bind(this);
+ this._onDeleteKey = this._onDeleteKey.bind(this); // If element has already been initialised with Choices, fail silently
+
+ if (this.passedElement.element.getAttribute('data-choice') === 'active') {
+ console.warn('Trying to initialise Choices on element already initialised');
+ } // Let's go
+
+
+ this.init();
+ }
+ /* ========================================
+ = Public functions =
+ ======================================== */
+
+
+ _createClass(Choices, [{
+ key: "init",
+ value: function init() {
+ if (this.initialised) {
+ return;
+ }
+
+ this._createTemplates();
+
+ this._createElements();
+
+ this._createStructure(); // Set initial state (We need to clone the state because some reducers
+ // modify the inner objects properties in the state) 🤢
+
+
+ this._initialState = (0, _utils.cloneObject)(this._store.state);
+
+ this._store.subscribe(this._render);
+
+ this._render();
+
+ this._addEventListeners();
+
+ var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');
+
+ if (shouldDisable) {
+ this.disable();
+ }
+
+ this.initialised = true;
+ var callbackOnInit = this.config.callbackOnInit; // Run callback if it is a function
+
+ if (callbackOnInit && (0, _utils.isType)('Function', callbackOnInit)) {
+ callbackOnInit.call(this);
+ }
+ }
+ }, {
+ key: "destroy",
+ value: function destroy() {
+ if (!this.initialised) {
+ return;
+ }
+
+ this._removeEventListeners();
+
+ this.passedElement.reveal();
+ this.containerOuter.unwrap(this.passedElement.element);
+
+ if (this._isSelectElement) {
+ this.passedElement.options = this._presetChoices;
+ }
+
+ this.clearStore();
+ this.config.templates = null;
+ this.initialised = false;
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ if (this.passedElement.isDisabled) {
+ this.passedElement.enable();
+ }
+
+ if (this.containerOuter.isDisabled) {
+ this._addEventListeners();
+
+ this.input.enable();
+ this.containerOuter.enable();
+ }
+
+ return this;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ if (!this.passedElement.isDisabled) {
+ this.passedElement.disable();
+ }
+
+ if (!this.containerOuter.isDisabled) {
+ this._removeEventListeners();
+
+ this.input.disable();
+ this.containerOuter.disable();
+ }
+
+ return this;
+ }
+ }, {
+ key: "highlightItem",
+ value: function highlightItem(item) {
+ var runEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+ if (!item) {
+ return this;
+ }
+
+ var id = item.id,
+ _item$groupId = item.groupId,
+ groupId = _item$groupId === void 0 ? -1 : _item$groupId,
+ _item$value = item.value,
+ value = _item$value === void 0 ? '' : _item$value,
+ _item$label = item.label,
+ label = _item$label === void 0 ? '' : _item$label;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.highlightItem)(id, true));
+
+ if (runEvent) {
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group && group.value ? group.value : null
+ });
+ }
+
+ return this;
+ }
+ }, {
+ key: "unhighlightItem",
+ value: function unhighlightItem(item) {
+ if (!item) {
+ return this;
+ }
+
+ var id = item.id,
+ _item$groupId2 = item.groupId,
+ groupId = _item$groupId2 === void 0 ? -1 : _item$groupId2,
+ _item$value2 = item.value,
+ value = _item$value2 === void 0 ? '' : _item$value2,
+ _item$label2 = item.label,
+ label = _item$label2 === void 0 ? '' : _item$label2;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.highlightItem)(id, false));
+
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group && group.value ? group.value : null
+ });
+ return this;
+ }
+ }, {
+ key: "highlightAll",
+ value: function highlightAll() {
+ var _this = this;
+
+ this._store.items.forEach(function (item) {
+ return _this.highlightItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "unhighlightAll",
+ value: function unhighlightAll() {
+ var _this2 = this;
+
+ this._store.items.forEach(function (item) {
+ return _this2.unhighlightItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeActiveItemsByValue",
+ value: function removeActiveItemsByValue(value) {
+ var _this3 = this;
+
+ this._store.activeItems.filter(function (item) {
+ return item.value === value;
+ }).forEach(function (item) {
+ return _this3._removeItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeActiveItems",
+ value: function removeActiveItems(excludedId) {
+ var _this4 = this;
+
+ this._store.activeItems.filter(function (_ref) {
+ var id = _ref.id;
+ return id !== excludedId;
+ }).forEach(function (item) {
+ return _this4._removeItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeHighlightedItems",
+ value: function removeHighlightedItems() {
+ var _this5 = this;
+
+ var runEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+ this._store.highlightedActiveItems.forEach(function (item) {
+ _this5._removeItem(item); // If this action was performed by the user
+ // trigger the event
+
+
+ if (runEvent) {
+ _this5._triggerChange(item.value);
+ }
+ });
+
+ return this;
+ }
+ }, {
+ key: "showDropdown",
+ value: function showDropdown(preventInputFocus) {
+ var _this6 = this;
+
+ if (this.dropdown.isActive) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ _this6.dropdown.show();
+
+ _this6.containerOuter.open(_this6.dropdown.distanceFromTopWindow());
+
+ if (!preventInputFocus && _this6._canSearch) {
+ _this6.input.focus();
+ }
+
+ _this6.passedElement.triggerEvent(_constants.EVENTS.showDropdown, {});
+ });
+ return this;
+ }
+ }, {
+ key: "hideDropdown",
+ value: function hideDropdown(preventInputBlur) {
+ var _this7 = this;
+
+ if (!this.dropdown.isActive) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ _this7.dropdown.hide();
+
+ _this7.containerOuter.close();
+
+ if (!preventInputBlur && _this7._canSearch) {
+ _this7.input.removeActiveDescendant();
+
+ _this7.input.blur();
+ }
+
+ _this7.passedElement.triggerEvent(_constants.EVENTS.hideDropdown, {});
+ });
+ return this;
+ }
+ }, {
+ key: "getValue",
+ value: function getValue() {
+ var valueOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+ var values = this._store.activeItems.reduce(function (selectedItems, item) {
+ var itemValue = valueOnly ? item.value : item;
+ selectedItems.push(itemValue);
+ return selectedItems;
+ }, []);
+
+ return this._isSelectOneElement ? values[0] : values;
+ }
+ }, {
+ key: "setValue",
+ value: function setValue(args) {
+ var _this8 = this;
+
+ if (!this.initialised) {
+ return this;
+ }
+
+ [].concat(args).forEach(function (value) {
+ return _this8._setChoiceOrItem(value);
+ });
+ return this;
+ }
+ }, {
+ key: "setChoiceByValue",
+ value: function setChoiceByValue(value) {
+ var _this9 = this;
+
+ if (!this.initialised || this._isTextElement) {
+ return this;
+ } // If only one value has been passed, convert to array
+
+
+ var choiceValue = (0, _utils.isType)('Array', value) ? value : [value]; // Loop through each value and
+
+ choiceValue.forEach(function (val) {
+ return _this9._findAndSelectChoiceByValue(val);
+ });
+ return this;
+ }
+ }, {
+ key: "setChoices",
+ value: function setChoices() {
+ var _this10 = this;
+
+ var choices = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+ var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var replaceChoices = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+
+ if (!this._isSelectElement || !value) {
+ return this;
+ } // Clear choices if needed
+
+
+ if (replaceChoices) {
+ this.clearChoices();
+ }
+
+ this.containerOuter.removeLoadingState();
+
+ var addGroupsAndChoices = function addGroupsAndChoices(groupOrChoice) {
+ if (groupOrChoice.choices) {
+ _this10._addGroup({
+ group: groupOrChoice,
+ id: groupOrChoice.id || null,
+ valueKey: value,
+ labelKey: label
+ });
+ } else {
+ _this10._addChoice({
+ value: groupOrChoice[value],
+ label: groupOrChoice[label],
+ isSelected: groupOrChoice.selected,
+ isDisabled: groupOrChoice.disabled,
+ customProperties: groupOrChoice.customProperties,
+ placeholder: groupOrChoice.placeholder
+ });
+ }
+ };
+
+ this._setLoading(true);
+
+ choices.forEach(addGroupsAndChoices);
+
+ this._setLoading(false);
+
+ return this;
+ }
+ }, {
+ key: "clearChoices",
+ value: function clearChoices() {
+ this._store.dispatch((0, _choices.clearChoices)());
+ }
+ }, {
+ key: "clearStore",
+ value: function clearStore() {
+ this._store.dispatch((0, _misc.clearAll)());
+
+ return this;
+ }
+ }, {
+ key: "clearInput",
+ value: function clearInput() {
+ var shouldSetInputWidth = !this._isSelectOneElement;
+ this.input.clear(shouldSetInputWidth);
+
+ if (!this._isTextElement && this._canSearch) {
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ }
+
+ return this;
+ }
+ }, {
+ key: "ajax",
+ value: function ajax(fn) {
+ var _this11 = this;
+
+ if (!this.initialised || !this._isSelectElement || !fn) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ return _this11._handleLoadingState(true);
+ });
+ fn(this._ajaxCallback());
+ return this;
+ }
+ /* ===== End of Public functions ====== */
+
+ /* =============================================
+ = Private functions =
+ ============================================= */
+
+ }, {
+ key: "_render",
+ value: function _render() {
+ if (this._store.isLoading()) {
+ return;
+ }
+
+ this._currentState = this._store.state;
+ var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;
+ var shouldRenderChoices = this._isSelectElement;
+ var shouldRenderItems = this._currentState.items !== this._prevState.items;
+
+ if (!stateChanged) {
+ return;
+ }
+
+ if (shouldRenderChoices) {
+ this._renderChoices();
+ }
+
+ if (shouldRenderItems) {
+ this._renderItems();
+ }
+
+ this._prevState = this._currentState;
+ }
+ }, {
+ key: "_renderChoices",
+ value: function _renderChoices() {
+ var _this12 = this;
+
+ var _this$_store = this._store,
+ activeGroups = _this$_store.activeGroups,
+ activeChoices = _this$_store.activeChoices;
+ var choiceListFragment = document.createDocumentFragment();
+ this.choiceList.clear();
+
+ if (this.config.resetScrollPosition) {
+ requestAnimationFrame(function () {
+ return _this12.choiceList.scrollToTop();
+ });
+ } // If we have grouped options
+
+
+ if (activeGroups.length >= 1 && !this._isSearching) {
+ // If we have a placeholder choice along with groups
+ var activePlaceholders = activeChoices.filter(function (activeChoice) {
+ return activeChoice.placeholder === true && activeChoice.groupId === -1;
+ });
+
+ if (activePlaceholders.length >= 1) {
+ choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);
+ }
+
+ choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);
+ } else if (activeChoices.length >= 1) {
+ choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);
+ } // If we have choices to show
+
+
+ if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {
+ var activeItems = this._store.activeItems;
+
+ var canAddItem = this._canAddItem(activeItems, this.input.value); // ...and we can select them
+
+
+ if (canAddItem.response) {
+ // ...append them and highlight the first choice
+ this.choiceList.append(choiceListFragment);
+
+ this._highlightChoice();
+ } else {
+ // ...otherwise show a notice
+ this.choiceList.append(this._getTemplate('notice', canAddItem.notice));
+ }
+ } else {
+ // Otherwise show a notice
+ var dropdownItem;
+ var notice;
+
+ if (this._isSearching) {
+ notice = (0, _utils.isType)('Function', this.config.noResultsText) ? this.config.noResultsText() : this.config.noResultsText;
+ dropdownItem = this._getTemplate('notice', notice, 'no-results');
+ } else {
+ notice = (0, _utils.isType)('Function', this.config.noChoicesText) ? this.config.noChoicesText() : this.config.noChoicesText;
+ dropdownItem = this._getTemplate('notice', notice, 'no-choices');
+ }
+
+ this.choiceList.append(dropdownItem);
+ }
+ }
+ }, {
+ key: "_renderItems",
+ value: function _renderItems() {
+ var activeItems = this._store.activeItems || [];
+ this.itemList.clear(); // Create a fragment to store our list items
+ // (so we don't have to update the DOM for each item)
+
+ var itemListFragment = this._createItemsFragment(activeItems); // If we have items to add, append them
+
+
+ if (itemListFragment.childNodes) {
+ this.itemList.append(itemListFragment);
+ }
+ }
+ }, {
+ key: "_createGroupsFragment",
+ value: function _createGroupsFragment(groups, choices, fragment) {
+ var _this13 = this;
+
+ var groupFragment = fragment || document.createDocumentFragment();
+
+ var getGroupChoices = function getGroupChoices(group) {
+ return choices.filter(function (choice) {
+ if (_this13._isSelectOneElement) {
+ return choice.groupId === group.id;
+ }
+
+ return choice.groupId === group.id && (_this13.config.renderSelectedChoices === 'always' || !choice.selected);
+ });
+ }; // If sorting is enabled, filter groups
+
+
+ if (this.config.shouldSort) {
+ groups.sort(this.config.sortFn);
+ }
+
+ groups.forEach(function (group) {
+ var groupChoices = getGroupChoices(group);
+
+ if (groupChoices.length >= 1) {
+ var dropdownGroup = _this13._getTemplate('choiceGroup', group);
+
+ groupFragment.appendChild(dropdownGroup);
+
+ _this13._createChoicesFragment(groupChoices, groupFragment, true);
+ }
+ });
+ return groupFragment;
+ }
+ }, {
+ key: "_createChoicesFragment",
+ value: function _createChoicesFragment(choices, fragment) {
+ var _this14 = this;
+
+ var withinGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+ // Create a fragment to store our list items (so we don't have to update the DOM for each item)
+ var choicesFragment = fragment || document.createDocumentFragment();
+ var _this$config = this.config,
+ renderSelectedChoices = _this$config.renderSelectedChoices,
+ searchResultLimit = _this$config.searchResultLimit,
+ renderChoiceLimit = _this$config.renderChoiceLimit;
+ var filter = this._isSearching ? _utils.sortByScore : this.config.sortFn;
+
+ var appendChoice = function appendChoice(choice) {
+ var shouldRender = renderSelectedChoices === 'auto' ? _this14._isSelectOneElement || !choice.selected : true;
+
+ if (shouldRender) {
+ var dropdownItem = _this14._getTemplate('choice', choice, _this14.config.itemSelectText);
+
+ choicesFragment.appendChild(dropdownItem);
+ }
+ };
+
+ var rendererableChoices = choices;
+
+ if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {
+ rendererableChoices = choices.filter(function (choice) {
+ return !choice.selected;
+ });
+ } // Split array into placeholders and "normal" choices
+
+
+ var _rendererableChoices$ = rendererableChoices.reduce(function (acc, choice) {
+ if (choice.placeholder) {
+ acc.placeholderChoices.push(choice);
+ } else {
+ acc.normalChoices.push(choice);
+ }
+
+ return acc;
+ }, {
+ placeholderChoices: [],
+ normalChoices: []
+ }),
+ placeholderChoices = _rendererableChoices$.placeholderChoices,
+ normalChoices = _rendererableChoices$.normalChoices; // If sorting is enabled or the user is searching, filter choices
+
+
+ if (this.config.shouldSort || this._isSearching) {
+ normalChoices.sort(filter);
+ }
+
+ var choiceLimit = rendererableChoices.length; // Prepend placeholeder
+
+ var sortedChoices = [].concat(placeholderChoices, normalChoices);
+
+ if (this._isSearching) {
+ choiceLimit = searchResultLimit;
+ } else if (renderChoiceLimit > 0 && !withinGroup) {
+ choiceLimit = renderChoiceLimit;
+ } // Add each choice to dropdown within range
+
+
+ for (var i = 0; i < choiceLimit; i += 1) {
+ if (sortedChoices[i]) {
+ appendChoice(sortedChoices[i]);
+ }
+ }
+
+ return choicesFragment;
+ }
+ }, {
+ key: "_createItemsFragment",
+ value: function _createItemsFragment(items) {
+ var _this15 = this;
+
+ var fragment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+ // Create fragment to add elements to
+ var _this$config2 = this.config,
+ shouldSortItems = _this$config2.shouldSortItems,
+ sortFn = _this$config2.sortFn,
+ removeItemButton = _this$config2.removeItemButton;
+ var itemListFragment = fragment || document.createDocumentFragment(); // If sorting is enabled, filter items
+
+ if (shouldSortItems && !this._isSelectOneElement) {
+ items.sort(sortFn);
+ }
+
+ if (this._isTextElement) {
+ // Update the value of the hidden input
+ this.passedElement.value = items;
+ } else {
+ // Update the options of the hidden input
+ this.passedElement.options = items;
+ }
+
+ var addItemToFragment = function addItemToFragment(item) {
+ // Create new list element
+ var listItem = _this15._getTemplate('item', item, removeItemButton); // Append it to list
+
+
+ itemListFragment.appendChild(listItem);
+ }; // Add each list item to list
+
+
+ items.forEach(function (item) {
+ return addItemToFragment(item);
+ });
+ return itemListFragment;
+ }
+ }, {
+ key: "_triggerChange",
+ value: function _triggerChange(value) {
+ if (value === undefined || value === null) {
+ return;
+ }
+
+ this.passedElement.triggerEvent(_constants.EVENTS.change, {
+ value: value
+ });
+ }
+ }, {
+ key: "_selectPlaceholderChoice",
+ value: function _selectPlaceholderChoice() {
+ var placeholderChoice = this._store.placeholderChoice;
+
+ if (placeholderChoice) {
+ this._addItem({
+ value: placeholderChoice.value,
+ label: placeholderChoice.label,
+ choiceId: placeholderChoice.id,
+ groupId: placeholderChoice.groupId,
+ placeholder: placeholderChoice.placeholder
+ });
+
+ this._triggerChange(placeholderChoice.value);
+ }
+ }
+ }, {
+ key: "_handleButtonAction",
+ value: function _handleButtonAction(activeItems, element) {
+ if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {
+ return;
+ }
+
+ var itemId = element.parentNode.getAttribute('data-id');
+ var itemToRemove = activeItems.find(function (item) {
+ return item.id === parseInt(itemId, 10);
+ }); // Remove item associated with button
+
+ this._removeItem(itemToRemove);
+
+ this._triggerChange(itemToRemove.value);
+
+ if (this._isSelectOneElement) {
+ this._selectPlaceholderChoice();
+ }
+ }
+ }, {
+ key: "_handleItemAction",
+ value: function _handleItemAction(activeItems, element) {
+ var _this16 = this;
+
+ var hasShiftKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+ if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {
+ return;
+ }
+
+ var passedId = element.getAttribute('data-id'); // We only want to select one item with a click
+ // so we deselect any items that aren't the target
+ // unless shift is being pressed
+
+ activeItems.forEach(function (item) {
+ if (item.id === parseInt(passedId, 10) && !item.highlighted) {
+ _this16.highlightItem(item);
+ } else if (!hasShiftKey && item.highlighted) {
+ _this16.unhighlightItem(item);
+ }
+ }); // Focus input as without focus, a user cannot do anything with a
+ // highlighted item
+
+ this.input.focus();
+ }
+ }, {
+ key: "_handleChoiceAction",
+ value: function _handleChoiceAction(activeItems, element) {
+ if (!activeItems || !element) {
+ return;
+ } // If we are clicking on an option
+
+
+ var id = element.getAttribute('data-id');
+
+ var choice = this._store.getChoiceById(id);
+
+ var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : null;
+ var hasActiveDropdown = this.dropdown.isActive; // Update choice keyCode
+
+ choice.keyCode = passedKeyCode;
+ this.passedElement.triggerEvent(_constants.EVENTS.choice, {
+ choice: choice
+ });
+
+ if (choice && !choice.selected && !choice.disabled) {
+ var canAddItem = this._canAddItem(activeItems, choice.value);
+
+ if (canAddItem.response) {
+ this._addItem({
+ value: choice.value,
+ label: choice.label,
+ choiceId: choice.id,
+ groupId: choice.groupId,
+ customProperties: choice.customProperties,
+ placeholder: choice.placeholder,
+ keyCode: choice.keyCode
+ });
+
+ this._triggerChange(choice.value);
+ }
+ }
+
+ this.clearInput(); // We wont to close the dropdown if we are dealing with a single select box
+
+ if (hasActiveDropdown && this._isSelectOneElement) {
+ this.hideDropdown(true);
+ this.containerOuter.focus();
+ }
+ }
+ }, {
+ key: "_handleBackspace",
+ value: function _handleBackspace(activeItems) {
+ if (!this.config.removeItems || !activeItems) {
+ return;
+ }
+
+ var lastItem = activeItems[activeItems.length - 1];
+ var hasHighlightedItems = activeItems.some(function (item) {
+ return item.highlighted;
+ }); // If editing the last item is allowed and there are not other selected items,
+ // we can edit the item value. Otherwise if we can remove items, remove all selected items
+
+ if (this.config.editItems && !hasHighlightedItems && lastItem) {
+ this.input.value = lastItem.value;
+ this.input.setWidth();
+
+ this._removeItem(lastItem);
+
+ this._triggerChange(lastItem.value);
+ } else {
+ if (!hasHighlightedItems) {
+ // Highlight last item if none already highlighted
+ this.highlightItem(lastItem, false);
+ }
+
+ this.removeHighlightedItems(true);
+ }
+ }
+ }, {
+ key: "_setLoading",
+ value: function _setLoading(isLoading) {
+ this._store.dispatch((0, _general.setIsLoading)(isLoading));
+ }
+ }, {
+ key: "_handleLoadingState",
+ value: function _handleLoadingState() {
+ var setLoading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+ var placeholderItem = this.itemList.getChild(".".concat(this.config.classNames.placeholder));
+
+ if (setLoading) {
+ this.disable();
+ this.containerOuter.addLoadingState();
+
+ if (this._isSelectOneElement) {
+ if (!placeholderItem) {
+ placeholderItem = this._getTemplate('placeholder', this.config.loadingText);
+ this.itemList.append(placeholderItem);
+ } else {
+ placeholderItem.innerHTML = this.config.loadingText;
+ }
+ } else {
+ this.input.placeholder = this.config.loadingText;
+ }
+ } else {
+ this.enable();
+ this.containerOuter.removeLoadingState();
+
+ if (this._isSelectOneElement) {
+ placeholderItem.innerHTML = this._placeholderValue || '';
+ } else {
+ this.input.placeholder = this._placeholderValue || '';
+ }
+ }
+ }
+ }, {
+ key: "_handleSearch",
+ value: function _handleSearch(value) {
+ if (!value || !this.input.isFocussed) {
+ return;
+ }
+
+ var choices = this._store.choices;
+ var _this$config3 = this.config,
+ searchFloor = _this$config3.searchFloor,
+ searchChoices = _this$config3.searchChoices;
+ var hasUnactiveChoices = choices.some(function (option) {
+ return !option.active;
+ }); // Check that we have a value to search and the input was an alphanumeric character
+
+ if (value && value.length >= searchFloor) {
+ var resultCount = searchChoices ? this._searchChoices(value) : 0; // Trigger search event
+
+ this.passedElement.triggerEvent(_constants.EVENTS.search, {
+ value: value,
+ resultCount: resultCount
+ });
+ } else if (hasUnactiveChoices) {
+ // Otherwise reset choices to active
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ }
+ }
+ }, {
+ key: "_canAddItem",
+ value: function _canAddItem(activeItems, value) {
+ var canAddItem = true;
+ var notice = (0, _utils.isType)('Function', this.config.addItemText) ? this.config.addItemText(value) : this.config.addItemText;
+
+ if (!this._isSelectOneElement) {
+ var isDuplicateValue = (0, _utils.existsInArray)(activeItems, value);
+
+ if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {
+ // If there is a max entry limit and we have reached that limit
+ // don't update
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.maxItemText) ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;
+ }
+
+ if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.uniqueItemText) ? this.config.uniqueItemText(value) : this.config.uniqueItemText;
+ }
+
+ if (this._isTextElement && this.config.addItems && canAddItem && (0, _utils.isType)('Function', this.config.addItemFilterFn) && !this.config.addItemFilterFn(value)) {
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.customAddItemText) ? this.config.customAddItemText(value) : this.config.customAddItemText;
+ }
+ }
+
+ return {
+ response: canAddItem,
+ notice: notice
+ };
+ }
+ }, {
+ key: "_ajaxCallback",
+ value: function _ajaxCallback() {
+ var _this17 = this;
+
+ return function (results, value, label) {
+ if (!results || !value) {
+ return;
+ }
+
+ var parsedResults = (0, _utils.isType)('Object', results) ? [results] : results;
+
+ if (parsedResults && (0, _utils.isType)('Array', parsedResults) && parsedResults.length) {
+ // Remove loading states/text
+ _this17._handleLoadingState(false);
+
+ _this17._setLoading(true); // Add each result as a choice
+
+
+ parsedResults.forEach(function (result) {
+ if (result.choices) {
+ _this17._addGroup({
+ group: result,
+ id: result.id || null,
+ valueKey: value,
+ labelKey: label
+ });
+ } else {
+ _this17._addChoice({
+ value: (0, _utils.fetchFromObject)(result, value),
+ label: (0, _utils.fetchFromObject)(result, label),
+ isSelected: result.selected,
+ isDisabled: result.disabled,
+ customProperties: result.customProperties,
+ placeholder: result.placeholder
+ });
+ }
+ });
+
+ _this17._setLoading(false);
+
+ if (_this17._isSelectOneElement) {
+ _this17._selectPlaceholderChoice();
+ }
+ } else {
+ // No results, remove loading state
+ _this17._handleLoadingState(false);
+ }
+ };
+ }
+ }, {
+ key: "_searchChoices",
+ value: function _searchChoices(value) {
+ var newValue = (0, _utils.isType)('String', value) ? value.trim() : value;
+ var currentValue = (0, _utils.isType)('String', this._currentValue) ? this._currentValue.trim() : this._currentValue;
+
+ if (newValue.length < 1 && newValue === "".concat(currentValue, " ")) {
+ return 0;
+ } // If new value matches the desired length and is not the same as the current value with a space
+
+
+ var haystack = this._store.searchableChoices;
+ var needle = newValue;
+ var keys = [].concat(this.config.searchFields);
+ var options = Object.assign(this.config.fuseOptions, {
+ keys: keys
+ });
+ var fuse = new _fuse.default(haystack, options);
+ var results = fuse.search(needle);
+ this._currentValue = newValue;
+ this._highlightPosition = 0;
+ this._isSearching = true;
+
+ this._store.dispatch((0, _choices.filterChoices)(results));
+
+ return results.length;
+ }
+ }, {
+ key: "_addEventListeners",
+ value: function _addEventListeners() {
+ document.addEventListener('keyup', this._onKeyUp);
+ document.addEventListener('keydown', this._onKeyDown);
+ document.addEventListener('click', this._onClick);
+ document.addEventListener('touchmove', this._onTouchMove);
+ document.addEventListener('touchend', this._onTouchEnd);
+ document.addEventListener('mousedown', this._onMouseDown);
+ document.addEventListener('mouseover', this._onMouseOver);
+
+ if (this._isSelectOneElement) {
+ this.containerOuter.element.addEventListener('focus', this._onFocus);
+ this.containerOuter.element.addEventListener('blur', this._onBlur);
+ }
+
+ this.input.element.addEventListener('focus', this._onFocus);
+ this.input.element.addEventListener('blur', this._onBlur);
+
+ if (this.input.element.form) {
+ this.input.element.form.addEventListener('reset', this._onFormReset);
+ }
+
+ this.input.addEventListeners();
+ }
+ }, {
+ key: "_removeEventListeners",
+ value: function _removeEventListeners() {
+ document.removeEventListener('keyup', this._onKeyUp);
+ document.removeEventListener('keydown', this._onKeyDown);
+ document.removeEventListener('click', this._onClick);
+ document.removeEventListener('touchmove', this._onTouchMove);
+ document.removeEventListener('touchend', this._onTouchEnd);
+ document.removeEventListener('mousedown', this._onMouseDown);
+ document.removeEventListener('mouseover', this._onMouseOver);
+
+ if (this._isSelectOneElement) {
+ this.containerOuter.element.removeEventListener('focus', this._onFocus);
+ this.containerOuter.element.removeEventListener('blur', this._onBlur);
+ }
+
+ this.input.element.removeEventListener('focus', this._onFocus);
+ this.input.element.removeEventListener('blur', this._onBlur);
+
+ if (this.input.element.form) {
+ this.input.element.form.removeEventListener('reset', this._onFormReset);
+ }
+
+ this.input.removeEventListeners();
+ }
+ }, {
+ key: "_onKeyDown",
+ value: function _onKeyDown(event) {
+ var _keyDownActions;
+
+ var target = event.target,
+ keyCode = event.keyCode,
+ ctrlKey = event.ctrlKey,
+ metaKey = event.metaKey;
+
+ if (target !== this.input.element && !this.containerOuter.element.contains(target)) {
+ return;
+ }
+
+ var activeItems = this._store.activeItems;
+ var hasFocusedInput = this.input.isFocussed;
+ var hasActiveDropdown = this.dropdown.isActive;
+ var hasItems = this.itemList.hasChildren;
+ var keyString = String.fromCharCode(keyCode);
+ var BACK_KEY = _constants.KEY_CODES.BACK_KEY,
+ DELETE_KEY = _constants.KEY_CODES.DELETE_KEY,
+ ENTER_KEY = _constants.KEY_CODES.ENTER_KEY,
+ A_KEY = _constants.KEY_CODES.A_KEY,
+ ESC_KEY = _constants.KEY_CODES.ESC_KEY,
+ UP_KEY = _constants.KEY_CODES.UP_KEY,
+ DOWN_KEY = _constants.KEY_CODES.DOWN_KEY,
+ PAGE_UP_KEY = _constants.KEY_CODES.PAGE_UP_KEY,
+ PAGE_DOWN_KEY = _constants.KEY_CODES.PAGE_DOWN_KEY;
+ var hasCtrlDownKeyPressed = ctrlKey || metaKey; // If a user is typing and the dropdown is not active
+
+ if (!this._isTextElement && /[a-zA-Z0-9-_ ]/.test(keyString)) {
+ this.showDropdown();
+ } // Map keys to key actions
+
+
+ var keyDownActions = (_keyDownActions = {}, _defineProperty(_keyDownActions, A_KEY, this._onAKey), _defineProperty(_keyDownActions, ENTER_KEY, this._onEnterKey), _defineProperty(_keyDownActions, ESC_KEY, this._onEscapeKey), _defineProperty(_keyDownActions, UP_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, PAGE_UP_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, DOWN_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, PAGE_DOWN_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, DELETE_KEY, this._onDeleteKey), _defineProperty(_keyDownActions, BACK_KEY, this._onDeleteKey), _keyDownActions); // If keycode has a function, run it
+
+ if (keyDownActions[keyCode]) {
+ keyDownActions[keyCode]({
+ event: event,
+ target: target,
+ keyCode: keyCode,
+ metaKey: metaKey,
+ activeItems: activeItems,
+ hasFocusedInput: hasFocusedInput,
+ hasActiveDropdown: hasActiveDropdown,
+ hasItems: hasItems,
+ hasCtrlDownKeyPressed: hasCtrlDownKeyPressed
+ });
+ }
+ }
+ }, {
+ key: "_onKeyUp",
+ value: function _onKeyUp(_ref2) {
+ var target = _ref2.target,
+ keyCode = _ref2.keyCode;
+
+ if (target !== this.input.element) {
+ return;
+ }
+
+ var value = this.input.value;
+ var activeItems = this._store.activeItems;
+
+ var canAddItem = this._canAddItem(activeItems, value);
+
+ var backKey = _constants.KEY_CODES.BACK_KEY,
+ deleteKey = _constants.KEY_CODES.DELETE_KEY; // We are typing into a text input and have a value, we want to show a dropdown
+ // notice. Otherwise hide the dropdown
+
+ if (this._isTextElement) {
+ var canShowDropdownNotice = canAddItem.notice && value;
+
+ if (canShowDropdownNotice) {
+ var dropdownItem = this._getTemplate('notice', canAddItem.notice);
+
+ this.dropdown.element.innerHTML = dropdownItem.outerHTML;
+ this.showDropdown(true);
+ } else {
+ this.hideDropdown(true);
+ }
+ } else {
+ var userHasRemovedValue = (keyCode === backKey || keyCode === deleteKey) && !target.value;
+ var canReactivateChoices = !this._isTextElement && this._isSearching;
+ var canSearch = this._canSearch && canAddItem.response;
+
+ if (userHasRemovedValue && canReactivateChoices) {
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ } else if (canSearch) {
+ this._handleSearch(this.input.value);
+ }
+ }
+
+ this._canSearch = this.config.searchEnabled;
+ }
+ }, {
+ key: "_onAKey",
+ value: function _onAKey(_ref3) {
+ var hasItems = _ref3.hasItems,
+ hasCtrlDownKeyPressed = _ref3.hasCtrlDownKeyPressed;
+
+ // If CTRL + A or CMD + A have been pressed and there are items to select
+ if (hasCtrlDownKeyPressed && hasItems) {
+ this._canSearch = false;
+ var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;
+
+ if (shouldHightlightAll) {
+ this.highlightAll();
+ }
+ }
+ }
+ }, {
+ key: "_onEnterKey",
+ value: function _onEnterKey(_ref4) {
+ var event = _ref4.event,
+ target = _ref4.target,
+ activeItems = _ref4.activeItems,
+ hasActiveDropdown = _ref4.hasActiveDropdown;
+ var enterKey = _constants.KEY_CODES.ENTER_KEY;
+ var targetWasButton = target.hasAttribute('data-button');
+
+ if (this._isTextElement && target.value) {
+ var value = this.input.value;
+
+ var canAddItem = this._canAddItem(activeItems, value);
+
+ if (canAddItem.response) {
+ this.hideDropdown(true);
+
+ this._addItem({
+ value: value
+ });
+
+ this._triggerChange(value);
+
+ this.clearInput();
+ }
+ }
+
+ if (targetWasButton) {
+ this._handleButtonAction(activeItems, target);
+
+ event.preventDefault();
+ }
+
+ if (hasActiveDropdown) {
+ var highlightedChoice = this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));
+
+ if (highlightedChoice) {
+ // add enter keyCode value
+ if (activeItems[0]) {
+ activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign
+ }
+
+ this._handleChoiceAction(activeItems, highlightedChoice);
+ }
+
+ event.preventDefault();
+ } else if (this._isSelectOneElement) {
+ this.showDropdown();
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onEscapeKey",
+ value: function _onEscapeKey(_ref5) {
+ var hasActiveDropdown = _ref5.hasActiveDropdown;
+
+ if (hasActiveDropdown) {
+ this.hideDropdown(true);
+ this.containerOuter.focus();
+ }
+ }
+ }, {
+ key: "_onDirectionKey",
+ value: function _onDirectionKey(_ref6) {
+ var event = _ref6.event,
+ hasActiveDropdown = _ref6.hasActiveDropdown,
+ keyCode = _ref6.keyCode,
+ metaKey = _ref6.metaKey;
+ var downKey = _constants.KEY_CODES.DOWN_KEY,
+ pageUpKey = _constants.KEY_CODES.PAGE_UP_KEY,
+ pageDownKey = _constants.KEY_CODES.PAGE_DOWN_KEY; // If up or down key is pressed, traverse through options
+
+ if (hasActiveDropdown || this._isSelectOneElement) {
+ this.showDropdown();
+ this._canSearch = false;
+ var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;
+ var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;
+ var selectableChoiceIdentifier = '[data-choice-selectable]';
+ var nextEl;
+
+ if (skipKey) {
+ if (directionInt > 0) {
+ nextEl = Array.from(this.dropdown.element.querySelectorAll(selectableChoiceIdentifier)).pop();
+ } else {
+ nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);
+ }
+ } else {
+ var currentEl = this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));
+
+ if (currentEl) {
+ nextEl = (0, _utils.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);
+ } else {
+ nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);
+ }
+ }
+
+ if (nextEl) {
+ // We prevent default to stop the cursor moving
+ // when pressing the arrow
+ if (!(0, _utils.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {
+ this.choiceList.scrollToChoice(nextEl, directionInt);
+ }
+
+ this._highlightChoice(nextEl);
+ } // Prevent default to maintain cursor position whilst
+ // traversing dropdown options
+
+
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onDeleteKey",
+ value: function _onDeleteKey(_ref7) {
+ var event = _ref7.event,
+ target = _ref7.target,
+ hasFocusedInput = _ref7.hasFocusedInput,
+ activeItems = _ref7.activeItems;
+
+ // If backspace or delete key is pressed and the input has no value
+ if (hasFocusedInput && !target.value && !this._isSelectOneElement) {
+ this._handleBackspace(activeItems);
+
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onTouchMove",
+ value: function _onTouchMove() {
+ if (this._wasTap) {
+ this._wasTap = false;
+ }
+ }
+ }, {
+ key: "_onTouchEnd",
+ value: function _onTouchEnd(event) {
+ var _ref8 = event || event.touches[0],
+ target = _ref8.target;
+
+ var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);
+
+ if (touchWasWithinContainer) {
+ var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;
+
+ if (containerWasExactTarget) {
+ if (this._isTextElement) {
+ this.input.focus();
+ } else if (this._isSelectMultipleElement) {
+ this.showDropdown();
+ }
+ } // Prevents focus event firing
+
+
+ event.stopPropagation();
+ }
+
+ this._wasTap = true;
+ }
+ }, {
+ key: "_onMouseDown",
+ value: function _onMouseDown(event) {
+ var target = event.target,
+ shiftKey = event.shiftKey; // If we have our mouse down on the scrollbar and are on IE11...
+
+ if (this.choiceList.element.contains(target) && (0, _utils.isIE11)()) {
+ this._isScrollingOnIe = true;
+ }
+
+ if (!this.containerOuter.element.contains(target) || target === this.input.element) {
+ return;
+ }
+
+ var activeItems = this._store.activeItems;
+ var hasShiftKey = shiftKey;
+ var buttonTarget = (0, _utils.findAncestorByAttrName)(target, 'data-button');
+ var itemTarget = (0, _utils.findAncestorByAttrName)(target, 'data-item');
+ var choiceTarget = (0, _utils.findAncestorByAttrName)(target, 'data-choice');
+
+ if (buttonTarget) {
+ this._handleButtonAction(activeItems, buttonTarget);
+ } else if (itemTarget) {
+ this._handleItemAction(activeItems, itemTarget, hasShiftKey);
+ } else if (choiceTarget) {
+ this._handleChoiceAction(activeItems, choiceTarget);
+ }
+
+ event.preventDefault();
+ }
+ }, {
+ key: "_onMouseOver",
+ value: function _onMouseOver(_ref9) {
+ var target = _ref9.target;
+ var targetWithinDropdown = target === this.dropdown || this.dropdown.element.contains(target);
+ var shouldHighlightChoice = targetWithinDropdown && target.hasAttribute('data-choice');
+
+ if (shouldHighlightChoice) {
+ this._highlightChoice(target);
+ }
+ }
+ }, {
+ key: "_onClick",
+ value: function _onClick(_ref10) {
+ var target = _ref10.target;
+ var clickWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (clickWasWithinContainer) {
+ if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {
+ if (this._isTextElement) {
+ if (document.activeElement !== this.input.element) {
+ this.input.focus();
+ }
+ } else {
+ this.showDropdown();
+ this.containerOuter.focus();
+ }
+ } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {
+ this.hideDropdown();
+ }
+ } else {
+ var hasHighlightedItems = this._store.highlightedActiveItems;
+
+ if (hasHighlightedItems) {
+ this.unhighlightAll();
+ }
+
+ this.containerOuter.removeFocusState();
+ this.hideDropdown(true);
+ }
+ }
+ }, {
+ key: "_onFocus",
+ value: function _onFocus(_ref11) {
+ var _this18 = this;
+
+ var target = _ref11.target;
+ var focusWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (!focusWasWithinContainer) {
+ return;
+ }
+
+ var focusActions = {
+ text: function text() {
+ if (target === _this18.input.element) {
+ _this18.containerOuter.addFocusState();
+ }
+ },
+ 'select-one': function selectOne() {
+ _this18.containerOuter.addFocusState();
+
+ if (target === _this18.input.element) {
+ _this18.showDropdown(true);
+ }
+ },
+ 'select-multiple': function selectMultiple() {
+ if (target === _this18.input.element) {
+ _this18.showDropdown(true); // If element is a select box, the focused element is the container and the dropdown
+ // isn't already open, focus and show dropdown
+
+
+ _this18.containerOuter.addFocusState();
+ }
+ }
+ };
+ focusActions[this.passedElement.element.type]();
+ }
+ }, {
+ key: "_onBlur",
+ value: function _onBlur(_ref12) {
+ var _this19 = this;
+
+ var target = _ref12.target;
+ var blurWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (blurWasWithinContainer && !this._isScrollingOnIe) {
+ var activeItems = this._store.activeItems;
+ var hasHighlightedItems = activeItems.some(function (item) {
+ return item.highlighted;
+ });
+ var blurActions = {
+ text: function text() {
+ if (target === _this19.input.element) {
+ _this19.containerOuter.removeFocusState();
+
+ if (hasHighlightedItems) {
+ _this19.unhighlightAll();
+ }
+
+ _this19.hideDropdown(true);
+ }
+ },
+ 'select-one': function selectOne() {
+ _this19.containerOuter.removeFocusState();
+
+ if (target === _this19.input.element || target === _this19.containerOuter.element && !_this19._canSearch) {
+ _this19.hideDropdown(true);
+ }
+ },
+ 'select-multiple': function selectMultiple() {
+ if (target === _this19.input.element) {
+ _this19.containerOuter.removeFocusState();
+
+ _this19.hideDropdown(true);
+
+ if (hasHighlightedItems) {
+ _this19.unhighlightAll();
+ }
+ }
+ }
+ };
+ blurActions[this.passedElement.element.type]();
+ } else {
+ // On IE11, clicking the scollbar blurs our input and thus
+ // closes the dropdown. To stop this, we refocus our input
+ // if we know we are on IE *and* are scrolling.
+ this._isScrollingOnIe = false;
+ this.input.element.focus();
+ }
+ }
+ }, {
+ key: "_onFormReset",
+ value: function _onFormReset() {
+ this._store.dispatch((0, _misc.resetTo)(this._initialState));
+ }
+ }, {
+ key: "_highlightChoice",
+ value: function _highlightChoice() {
+ var _this20 = this;
+
+ var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));
+
+ if (!choices.length) {
+ return;
+ }
+
+ var passedEl = el;
+ var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState))); // Remove any highlighted choices
+
+ highlightedChoices.forEach(function (choice) {
+ choice.classList.remove(_this20.config.classNames.highlightedState);
+ choice.setAttribute('aria-selected', 'false');
+ });
+
+ if (passedEl) {
+ this._highlightPosition = choices.indexOf(passedEl);
+ } else {
+ // Highlight choice based on last known highlight location
+ if (choices.length > this._highlightPosition) {
+ // If we have an option to highlight
+ passedEl = choices[this._highlightPosition];
+ } else {
+ // Otherwise highlight the option before
+ passedEl = choices[choices.length - 1];
+ }
+
+ if (!passedEl) {
+ passedEl = choices[0];
+ }
+ }
+
+ passedEl.classList.add(this.config.classNames.highlightedState);
+ passedEl.setAttribute('aria-selected', 'true');
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightChoice, {
+ el: passedEl
+ });
+
+ if (this.dropdown.isActive) {
+ // IE11 ignores aria-label and blocks virtual keyboard
+ // if aria-activedescendant is set without a dropdown
+ this.input.setActiveDescendant(passedEl.id);
+ this.containerOuter.setActiveDescendant(passedEl.id);
+ }
+ }
+ }, {
+ key: "_addItem",
+ value: function _addItem(_ref13) {
+ var value = _ref13.value,
+ _ref13$label = _ref13.label,
+ label = _ref13$label === void 0 ? null : _ref13$label,
+ _ref13$choiceId = _ref13.choiceId,
+ choiceId = _ref13$choiceId === void 0 ? -1 : _ref13$choiceId,
+ _ref13$groupId = _ref13.groupId,
+ groupId = _ref13$groupId === void 0 ? -1 : _ref13$groupId,
+ _ref13$customProperti = _ref13.customProperties,
+ customProperties = _ref13$customProperti === void 0 ? null : _ref13$customProperti,
+ _ref13$placeholder = _ref13.placeholder,
+ placeholder = _ref13$placeholder === void 0 ? false : _ref13$placeholder,
+ _ref13$keyCode = _ref13.keyCode,
+ keyCode = _ref13$keyCode === void 0 ? null : _ref13$keyCode;
+ var passedValue = (0, _utils.isType)('String', value) ? value.trim() : value;
+ var passedKeyCode = keyCode;
+ var passedCustomProperties = customProperties;
+ var items = this._store.items;
+ var passedLabel = label || passedValue;
+ var passedOptionId = parseInt(choiceId, 10) || -1;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+ var id = items ? items.length + 1 : 1; // If a prepended value has been passed, prepend it
+
+ if (this.config.prependValue) {
+ passedValue = this.config.prependValue + passedValue.toString();
+ } // If an appended value has been passed, append it
+
+
+ if (this.config.appendValue) {
+ passedValue += this.config.appendValue.toString();
+ }
+
+ this._store.dispatch((0, _items.addItem)({
+ value: passedValue,
+ label: passedLabel,
+ id: id,
+ choiceId: passedOptionId,
+ groupId: groupId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: passedKeyCode
+ }));
+
+ if (this._isSelectOneElement) {
+ this.removeActiveItems(id);
+ } // Trigger change event
+
+
+ this.passedElement.triggerEvent(_constants.EVENTS.addItem, {
+ id: id,
+ value: passedValue,
+ label: passedLabel,
+ customProperties: passedCustomProperties,
+ groupValue: group && group.value ? group.value : undefined,
+ keyCode: passedKeyCode
+ });
+ return this;
+ }
+ }, {
+ key: "_removeItem",
+ value: function _removeItem(item) {
+ if (!item || !(0, _utils.isType)('Object', item)) {
+ return this;
+ }
+
+ var id = item.id,
+ value = item.value,
+ label = item.label,
+ choiceId = item.choiceId,
+ groupId = item.groupId;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.removeItem)(id, choiceId));
+
+ if (group && group.value) {
+ this.passedElement.triggerEvent(_constants.EVENTS.removeItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group.value
+ });
+ } else {
+ this.passedElement.triggerEvent(_constants.EVENTS.removeItem, {
+ id: id,
+ value: value,
+ label: label
+ });
+ }
+
+ return this;
+ }
+ }, {
+ key: "_addChoice",
+ value: function _addChoice(_ref14) {
+ var value = _ref14.value,
+ _ref14$label = _ref14.label,
+ label = _ref14$label === void 0 ? null : _ref14$label,
+ _ref14$isSelected = _ref14.isSelected,
+ isSelected = _ref14$isSelected === void 0 ? false : _ref14$isSelected,
+ _ref14$isDisabled = _ref14.isDisabled,
+ isDisabled = _ref14$isDisabled === void 0 ? false : _ref14$isDisabled,
+ _ref14$groupId = _ref14.groupId,
+ groupId = _ref14$groupId === void 0 ? -1 : _ref14$groupId,
+ _ref14$customProperti = _ref14.customProperties,
+ customProperties = _ref14$customProperti === void 0 ? null : _ref14$customProperti,
+ _ref14$placeholder = _ref14.placeholder,
+ placeholder = _ref14$placeholder === void 0 ? false : _ref14$placeholder,
+ _ref14$keyCode = _ref14.keyCode,
+ keyCode = _ref14$keyCode === void 0 ? null : _ref14$keyCode;
+
+ if (typeof value === 'undefined' || value === null) {
+ return;
+ } // Generate unique id
+
+
+ var choices = this._store.choices;
+ var choiceLabel = label || value;
+ var choiceId = choices ? choices.length + 1 : 1;
+ var choiceElementId = "".concat(this._baseId, "-").concat(this._idNames.itemChoice, "-").concat(choiceId);
+
+ this._store.dispatch((0, _choices.addChoice)({
+ value: value,
+ label: choiceLabel,
+ id: choiceId,
+ groupId: groupId,
+ disabled: isDisabled,
+ elementId: choiceElementId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ }));
+
+ if (isSelected) {
+ this._addItem({
+ value: value,
+ label: choiceLabel,
+ choiceId: choiceId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ });
+ }
+ }
+ }, {
+ key: "_addGroup",
+ value: function _addGroup(_ref15) {
+ var _this21 = this;
+
+ var group = _ref15.group,
+ id = _ref15.id,
+ _ref15$valueKey = _ref15.valueKey,
+ valueKey = _ref15$valueKey === void 0 ? 'value' : _ref15$valueKey,
+ _ref15$labelKey = _ref15.labelKey,
+ labelKey = _ref15$labelKey === void 0 ? 'label' : _ref15$labelKey;
+ var groupChoices = (0, _utils.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));
+ var groupId = id || Math.floor(new Date().valueOf() * Math.random());
+ var isDisabled = group.disabled ? group.disabled : false;
+
+ if (groupChoices) {
+ this._store.dispatch((0, _groups.addGroup)(group.label, groupId, true, isDisabled));
+
+ var addGroupChoices = function addGroupChoices(choice) {
+ var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;
+
+ _this21._addChoice({
+ value: choice[valueKey],
+ label: (0, _utils.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,
+ isSelected: choice.selected,
+ isDisabled: isOptDisabled,
+ groupId: groupId,
+ customProperties: choice.customProperties,
+ placeholder: choice.placeholder
+ });
+ };
+
+ groupChoices.forEach(addGroupChoices);
+ } else {
+ this._store.dispatch((0, _groups.addGroup)(group.label, group.id, false, group.disabled));
+ }
+ }
+ }, {
+ key: "_getTemplate",
+ value: function _getTemplate(template) {
+ var _templates$template;
+
+ if (!template) {
+ return null;
+ }
+
+ var _this$config4 = this.config,
+ templates = _this$config4.templates,
+ classNames = _this$config4.classNames;
+
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ return (_templates$template = templates[template]).call.apply(_templates$template, [this, classNames].concat(args));
+ }
+ }, {
+ key: "_createTemplates",
+ value: function _createTemplates() {
+ var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;
+ var userTemplates = {};
+
+ if (callbackOnCreateTemplates && (0, _utils.isType)('Function', callbackOnCreateTemplates)) {
+ userTemplates = callbackOnCreateTemplates.call(this, _utils.strToEl);
+ }
+
+ this.config.templates = (0, _deepmerge.default)(_templates.TEMPLATES, userTemplates);
+ }
+ }, {
+ key: "_createElements",
+ value: function _createElements() {
+ this.containerOuter = new _components.Container({
+ element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type,
+ position: this.config.position
+ });
+ this.containerInner = new _components.Container({
+ element: this._getTemplate('containerInner'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type,
+ position: this.config.position
+ });
+ this.input = new _components.Input({
+ element: this._getTemplate('input'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type
+ });
+ this.choiceList = new _components.List({
+ element: this._getTemplate('choiceList', this._isSelectOneElement)
+ });
+ this.itemList = new _components.List({
+ element: this._getTemplate('itemList', this._isSelectOneElement)
+ });
+ this.dropdown = new _components.Dropdown({
+ element: this._getTemplate('dropdown'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type
+ });
+ }
+ }, {
+ key: "_createStructure",
+ value: function _createStructure() {
+ // Hide original element
+ this.passedElement.conceal(); // Wrap input in container preserving DOM ordering
+
+ this.containerInner.wrap(this.passedElement.element); // Wrapper inner container with outer container
+
+ this.containerOuter.wrap(this.containerInner.element);
+
+ if (this._isSelectOneElement) {
+ this.input.placeholder = this.config.searchPlaceholderValue || '';
+ } else if (this._placeholderValue) {
+ this.input.placeholder = this._placeholderValue;
+ this.input.setWidth(true);
+ }
+
+ this.containerOuter.element.appendChild(this.containerInner.element);
+ this.containerOuter.element.appendChild(this.dropdown.element);
+ this.containerInner.element.appendChild(this.itemList.element);
+
+ if (!this._isTextElement) {
+ this.dropdown.element.appendChild(this.choiceList.element);
+ }
+
+ if (!this._isSelectOneElement) {
+ this.containerInner.element.appendChild(this.input.element);
+ } else if (this.config.searchEnabled) {
+ this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);
+ }
+
+ if (this._isSelectElement) {
+ this._addPredefinedChoices();
+ } else if (this._isTextElement) {
+ this._addPredefinedItems();
+ }
+ }
+ }, {
+ key: "_addPredefinedChoices",
+ value: function _addPredefinedChoices() {
+ var _this22 = this;
+
+ var passedGroups = this.passedElement.optionGroups;
+ this._highlightPosition = 0;
+ this._isSearching = false;
+
+ this._setLoading(true);
+
+ if (passedGroups && passedGroups.length) {
+ // If we have a placeholder option
+ var placeholderChoice = this.passedElement.placeholderOption;
+
+ if (placeholderChoice && placeholderChoice.parentNode.tagName === 'SELECT') {
+ this._addChoice({
+ value: placeholderChoice.value,
+ label: placeholderChoice.innerHTML,
+ isSelected: placeholderChoice.selected,
+ isDisabled: placeholderChoice.disabled,
+ placeholder: true
+ });
+ }
+
+ passedGroups.forEach(function (group) {
+ return _this22._addGroup({
+ group: group,
+ id: group.id || null
+ });
+ });
+ } else {
+ var passedOptions = this.passedElement.options;
+ var filter = this.config.sortFn;
+ var allChoices = this._presetChoices; // Create array of options from option elements
+
+ passedOptions.forEach(function (o) {
+ allChoices.push({
+ value: o.value,
+ label: o.innerHTML,
+ selected: o.selected,
+ disabled: o.disabled || o.parentNode.disabled,
+ placeholder: o.hasAttribute('placeholder'),
+ customProperties: o.getAttribute('data-custom-properties')
+ });
+ }); // If sorting is enabled or the user is searching, filter choices
+
+ if (this.config.shouldSort) allChoices.sort(filter); // Determine whether there is a selected choice
+
+ var hasSelectedChoice = allChoices.some(function (choice) {
+ return choice.selected;
+ });
+
+ var handleChoice = function handleChoice(choice, index) {
+ var value = choice.value,
+ label = choice.label,
+ customProperties = choice.customProperties,
+ placeholder = choice.placeholder;
+
+ if (_this22._isSelectElement) {
+ // If the choice is actually a group
+ if (choice.choices) {
+ _this22._addGroup({
+ group: choice,
+ id: choice.id || null
+ });
+ } else {
+ // If there is a selected choice already or the choice is not
+ // the first in the array, add each choice normally
+ // Otherwise pre-select the first choice in the array if it's a single select
+ var shouldPreselect = _this22._isSelectOneElement && !hasSelectedChoice && index === 0;
+ var isSelected = shouldPreselect ? true : choice.selected;
+ var isDisabled = shouldPreselect ? false : choice.disabled;
+
+ _this22._addChoice({
+ value: value,
+ label: label,
+ isSelected: isSelected,
+ isDisabled: isDisabled,
+ customProperties: customProperties,
+ placeholder: placeholder
+ });
+ }
+ } else {
+ _this22._addChoice({
+ value: value,
+ label: label,
+ isSelected: choice.selected,
+ isDisabled: choice.disabled,
+ customProperties: customProperties,
+ placeholder: placeholder
+ });
+ }
+ }; // Add each choice
+
+
+ allChoices.forEach(function (choice, index) {
+ return handleChoice(choice, index);
+ });
+ }
+
+ this._setLoading(false);
+ }
+ }, {
+ key: "_addPredefinedItems",
+ value: function _addPredefinedItems() {
+ var _this23 = this;
+
+ var handlePresetItem = function handlePresetItem(item) {
+ var itemType = (0, _utils.getType)(item);
+
+ if (itemType === 'Object' && item.value) {
+ _this23._addItem({
+ value: item.value,
+ label: item.label,
+ choiceId: item.id,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ } else if (itemType === 'String') {
+ _this23._addItem({
+ value: item
+ });
+ }
+ };
+
+ this._presetItems.forEach(function (item) {
+ return handlePresetItem(item);
+ });
+ }
+ }, {
+ key: "_setChoiceOrItem",
+ value: function _setChoiceOrItem(item) {
+ var _this24 = this;
+
+ var itemType = (0, _utils.getType)(item).toLowerCase();
+ var handleType = {
+ object: function object() {
+ if (!item.value) {
+ return;
+ } // If we are dealing with a select input, we need to create an option first
+ // that is then selected. For text inputs we can just add items normally.
+
+
+ if (!_this24._isTextElement) {
+ _this24._addChoice({
+ value: item.value,
+ label: item.label,
+ isSelected: true,
+ isDisabled: false,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ } else {
+ _this24._addItem({
+ value: item.value,
+ label: item.label,
+ choiceId: item.id,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ }
+ },
+ string: function string() {
+ if (!_this24._isTextElement) {
+ _this24._addChoice({
+ value: item,
+ label: item,
+ isSelected: true,
+ isDisabled: false
+ });
+ } else {
+ _this24._addItem({
+ value: item
+ });
+ }
+ }
+ };
+ handleType[itemType]();
+ }
+ }, {
+ key: "_findAndSelectChoiceByValue",
+ value: function _findAndSelectChoiceByValue(val) {
+ var _this25 = this;
+
+ var choices = this._store.choices; // Check 'value' property exists and the choice isn't already selected
+
+ var foundChoice = choices.find(function (choice) {
+ return _this25.config.itemComparer(choice.value, val);
+ });
+
+ if (foundChoice && !foundChoice.selected) {
+ this._addItem({
+ value: foundChoice.value,
+ label: foundChoice.label,
+ choiceId: foundChoice.id,
+ groupId: foundChoice.groupId,
+ customProperties: foundChoice.customProperties,
+ placeholder: foundChoice.placeholder,
+ keyCode: foundChoice.keyCode
+ });
+ }
+ }
+ }, {
+ key: "_generateInstances",
+ value: function _generateInstances(elements, config) {
+ return elements.reduce(function (instances, element) {
+ instances.push(new Choices(element, config));
+ return instances;
+ }, [this]);
+ }
+ }, {
+ key: "_generatePlaceholderValue",
+ value: function _generatePlaceholderValue() {
+ if (this._isSelectOneElement) {
+ return false;
+ }
+
+ return this.config.placeholder ? this.config.placeholderValue || this.passedElement.element.getAttribute('placeholder') : false;
+ }
+ /* ===== End of Private functions ====== */
+
+ }]);
+
+ return Choices;
+}();
+
+Choices.userDefaults = {}; // We cannot export default here due to Webpack: https://github.com/webpack/webpack/issues/3929
+
+module.exports = Choices;
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*!
+ * Fuse.js v3.4.2 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(true)
+ module.exports = factory();
+ else {}
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/bitap/bitap_matched_indices.js":
+/*!********************************************!*\
+ !*** ./src/bitap/bitap_matched_indices.js ***!
+ \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function () {
+ var matchmask = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var minMatchCharLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+ var matchedIndices = [];
+ var start = -1;
+ var end = -1;
+ var i = 0;
+
+ for (var len = matchmask.length; i < len; i += 1) {
+ var match = matchmask[i];
+
+ if (match && start === -1) {
+ start = i;
+ } else if (!match && start !== -1) {
+ end = i - 1;
+
+ if (end - start + 1 >= minMatchCharLength) {
+ matchedIndices.push([start, end]);
+ }
+
+ start = -1;
+ }
+ } // (i-1 - start) + 1 => i - start
+
+
+ if (matchmask[i - 1] && i - start >= minMatchCharLength) {
+ matchedIndices.push([start, i - 1]);
+ }
+
+ return matchedIndices;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_pattern_alphabet.js":
+/*!*********************************************!*\
+ !*** ./src/bitap/bitap_pattern_alphabet.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (pattern) {
+ var mask = {};
+ var len = pattern.length;
+
+ for (var i = 0; i < len; i += 1) {
+ mask[pattern.charAt(i)] = 0;
+ }
+
+ for (var _i = 0; _i < len; _i += 1) {
+ mask[pattern.charAt(_i)] |= 1 << len - _i - 1;
+ }
+
+ return mask;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_regex_search.js":
+/*!*****************************************!*\
+ !*** ./src/bitap/bitap_regex_search.js ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var SPECIAL_CHARS_REGEX = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;
+
+module.exports = function (text, pattern) {
+ var tokenSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : / +/g;
+ var regex = new RegExp(pattern.replace(SPECIAL_CHARS_REGEX, '\\$&').replace(tokenSeparator, '|'));
+ var matches = text.match(regex);
+ var isMatch = !!matches;
+ var matchedIndices = [];
+
+ if (isMatch) {
+ for (var i = 0, matchesLen = matches.length; i < matchesLen; i += 1) {
+ var match = matches[i];
+ matchedIndices.push([text.indexOf(match), match.length - 1]);
+ }
+ }
+
+ return {
+ // TODO: revisit this score
+ score: isMatch ? 0.5 : 1,
+ isMatch: isMatch,
+ matchedIndices: matchedIndices
+ };
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_score.js":
+/*!**********************************!*\
+ !*** ./src/bitap/bitap_score.js ***!
+ \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (pattern, _ref) {
+ var _ref$errors = _ref.errors,
+ errors = _ref$errors === void 0 ? 0 : _ref$errors,
+ _ref$currentLocation = _ref.currentLocation,
+ currentLocation = _ref$currentLocation === void 0 ? 0 : _ref$currentLocation,
+ _ref$expectedLocation = _ref.expectedLocation,
+ expectedLocation = _ref$expectedLocation === void 0 ? 0 : _ref$expectedLocation,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance;
+ var accuracy = errors / pattern.length;
+ var proximity = Math.abs(expectedLocation - currentLocation);
+
+ if (!distance) {
+ // Dodge divide by zero error.
+ return proximity ? 1.0 : accuracy;
+ }
+
+ return accuracy + proximity / distance;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_search.js":
+/*!***********************************!*\
+ !*** ./src/bitap/bitap_search.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var bitapScore = __webpack_require__(/*! ./bitap_score */ "./src/bitap/bitap_score.js");
+
+var matchedIndices = __webpack_require__(/*! ./bitap_matched_indices */ "./src/bitap/bitap_matched_indices.js");
+
+module.exports = function (text, pattern, patternAlphabet, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng;
+ var expectedLocation = location; // Set starting location at beginning text and initialize the alphabet.
+
+ var textLen = text.length; // Highest score beyond which we give up.
+
+ var currentThreshold = threshold; // Is there a nearby exact match? (speedup)
+
+ var bestLocation = text.indexOf(pattern, expectedLocation);
+ var patternLen = pattern.length; // a mask of the matches
+
+ var matchMask = [];
+
+ for (var i = 0; i < textLen; i += 1) {
+ matchMask[i] = 0;
+ }
+
+ if (bestLocation !== -1) {
+ var score = bitapScore(pattern, {
+ errors: 0,
+ currentLocation: bestLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+ currentThreshold = Math.min(score, currentThreshold); // What about in the other direction? (speed up)
+
+ bestLocation = text.lastIndexOf(pattern, expectedLocation + patternLen);
+
+ if (bestLocation !== -1) {
+ var _score = bitapScore(pattern, {
+ errors: 0,
+ currentLocation: bestLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+
+ currentThreshold = Math.min(_score, currentThreshold);
+ }
+ } // Reset the best location
+
+
+ bestLocation = -1;
+ var lastBitArr = [];
+ var finalScore = 1;
+ var binMax = patternLen + textLen;
+ var mask = 1 << patternLen - 1;
+
+ for (var _i = 0; _i < patternLen; _i += 1) {
+ // Scan for the best match; each iteration allows for one more error.
+ // Run a binary search to determine how far from the match location we can stray
+ // at this error level.
+ var binMin = 0;
+ var binMid = binMax;
+
+ while (binMin < binMid) {
+ var _score3 = bitapScore(pattern, {
+ errors: _i,
+ currentLocation: expectedLocation + binMid,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+
+ if (_score3 <= currentThreshold) {
+ binMin = binMid;
+ } else {
+ binMax = binMid;
+ }
+
+ binMid = Math.floor((binMax - binMin) / 2 + binMin);
+ } // Use the result from this iteration as the maximum for the next.
+
+
+ binMax = binMid;
+ var start = Math.max(1, expectedLocation - binMid + 1);
+ var finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen; // Initialize the bit array
+
+ var bitArr = Array(finish + 2);
+ bitArr[finish + 1] = (1 << _i) - 1;
+
+ for (var j = finish; j >= start; j -= 1) {
+ var currentLocation = j - 1;
+ var charMatch = patternAlphabet[text.charAt(currentLocation)];
+
+ if (charMatch) {
+ matchMask[currentLocation] = 1;
+ } // First pass: exact match
+
+
+ bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch; // Subsequent passes: fuzzy match
+
+ if (_i !== 0) {
+ bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];
+ }
+
+ if (bitArr[j] & mask) {
+ finalScore = bitapScore(pattern, {
+ errors: _i,
+ currentLocation: currentLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ }); // This match will almost certainly be better than any existing match.
+ // But check anyway.
+
+ if (finalScore <= currentThreshold) {
+ // Indeed it is
+ currentThreshold = finalScore;
+ bestLocation = currentLocation; // Already passed `loc`, downhill from here on in.
+
+ if (bestLocation <= expectedLocation) {
+ break;
+ } // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.
+
+
+ start = Math.max(1, 2 * expectedLocation - bestLocation);
+ }
+ }
+ } // No hope for a (better) match at greater error levels.
+
+
+ var _score2 = bitapScore(pattern, {
+ errors: _i + 1,
+ currentLocation: expectedLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ }); // console.log('score', score, finalScore)
+
+
+ if (_score2 > currentThreshold) {
+ break;
+ }
+
+ lastBitArr = bitArr;
+ } // console.log('FINAL SCORE', finalScore)
+ // Count exact matches (those with a score of 0) to be "almost" exact
+
+
+ return {
+ isMatch: bestLocation >= 0,
+ score: finalScore === 0 ? 0.001 : finalScore,
+ matchedIndices: matchedIndices(matchMask, minMatchCharLength)
+ };
+};
+
+/***/ }),
+
+/***/ "./src/bitap/index.js":
+/*!****************************!*\
+ !*** ./src/bitap/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var bitapRegexSearch = __webpack_require__(/*! ./bitap_regex_search */ "./src/bitap/bitap_regex_search.js");
+
+var bitapSearch = __webpack_require__(/*! ./bitap_search */ "./src/bitap/bitap_search.js");
+
+var patternAlphabet = __webpack_require__(/*! ./bitap_pattern_alphabet */ "./src/bitap/bitap_pattern_alphabet.js");
+
+var Bitap =
+/*#__PURE__*/
+function () {
+ function Bitap(pattern, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$maxPatternLength = _ref.maxPatternLength,
+ maxPatternLength = _ref$maxPatternLength === void 0 ? 32 : _ref$maxPatternLength,
+ _ref$isCaseSensitive = _ref.isCaseSensitive,
+ isCaseSensitive = _ref$isCaseSensitive === void 0 ? false : _ref$isCaseSensitive,
+ _ref$tokenSeparator = _ref.tokenSeparator,
+ tokenSeparator = _ref$tokenSeparator === void 0 ? / +/g : _ref$tokenSeparator,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng;
+
+ _classCallCheck(this, Bitap);
+
+ this.options = {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ maxPatternLength: maxPatternLength,
+ isCaseSensitive: isCaseSensitive,
+ tokenSeparator: tokenSeparator,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength
+ };
+ this.pattern = this.options.isCaseSensitive ? pattern : pattern.toLowerCase();
+
+ if (this.pattern.length <= maxPatternLength) {
+ this.patternAlphabet = patternAlphabet(this.pattern);
+ }
+ }
+
+ _createClass(Bitap, [{
+ key: "search",
+ value: function search(text) {
+ if (!this.options.isCaseSensitive) {
+ text = text.toLowerCase();
+ } // Exact match
+
+
+ if (this.pattern === text) {
+ return {
+ isMatch: true,
+ score: 0,
+ matchedIndices: [[0, text.length - 1]]
+ };
+ } // When pattern length is greater than the machine word length, just do a a regex comparison
+
+
+ var _this$options = this.options,
+ maxPatternLength = _this$options.maxPatternLength,
+ tokenSeparator = _this$options.tokenSeparator;
+
+ if (this.pattern.length > maxPatternLength) {
+ return bitapRegexSearch(text, this.pattern, tokenSeparator);
+ } // Otherwise, use Bitap algorithm
+
+
+ var _this$options2 = this.options,
+ location = _this$options2.location,
+ distance = _this$options2.distance,
+ threshold = _this$options2.threshold,
+ findAllMatches = _this$options2.findAllMatches,
+ minMatchCharLength = _this$options2.minMatchCharLength;
+ return bitapSearch(text, this.pattern, this.patternAlphabet, {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength
+ });
+ }
+ }]);
+
+ return Bitap;
+}(); // let x = new Bitap("od mn war", {})
+// let result = x.search("Old Man's War")
+// console.log(result)
+
+
+module.exports = Bitap;
+
+/***/ }),
+
+/***/ "./src/helpers/deep_value.js":
+/*!***********************************!*\
+ !*** ./src/helpers/deep_value.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArray = __webpack_require__(/*! ./is_array */ "./src/helpers/is_array.js");
+
+var deepValue = function deepValue(obj, path, list) {
+ if (!path) {
+ // If there's no path left, we've gotten to the object we care about.
+ list.push(obj);
+ } else {
+ var dotIndex = path.indexOf('.');
+ var firstSegment = path;
+ var remaining = null;
+
+ if (dotIndex !== -1) {
+ firstSegment = path.slice(0, dotIndex);
+ remaining = path.slice(dotIndex + 1);
+ }
+
+ var value = obj[firstSegment];
+
+ if (value !== null && value !== undefined) {
+ if (!remaining && (typeof value === 'string' || typeof value === 'number')) {
+ list.push(value.toString());
+ } else if (isArray(value)) {
+ // Search each item in the array.
+ for (var i = 0, len = value.length; i < len; i += 1) {
+ deepValue(value[i], remaining, list);
+ }
+ } else if (remaining) {
+ // An object. Recurse further.
+ deepValue(value, remaining, list);
+ }
+ }
+ }
+
+ return list;
+};
+
+module.exports = function (obj, path) {
+ return deepValue(obj, path, []);
+};
+
+/***/ }),
+
+/***/ "./src/helpers/is_array.js":
+/*!*********************************!*\
+ !*** ./src/helpers/is_array.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (obj) {
+ return !Array.isArray ? Object.prototype.toString.call(obj) === '[object Array]' : Array.isArray(obj);
+};
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Bitap = __webpack_require__(/*! ./bitap */ "./src/bitap/index.js");
+
+var deepValue = __webpack_require__(/*! ./helpers/deep_value */ "./src/helpers/deep_value.js");
+
+var isArray = __webpack_require__(/*! ./helpers/is_array */ "./src/helpers/is_array.js");
+
+var Fuse =
+/*#__PURE__*/
+function () {
+ function Fuse(list, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$maxPatternLength = _ref.maxPatternLength,
+ maxPatternLength = _ref$maxPatternLength === void 0 ? 32 : _ref$maxPatternLength,
+ _ref$caseSensitive = _ref.caseSensitive,
+ caseSensitive = _ref$caseSensitive === void 0 ? false : _ref$caseSensitive,
+ _ref$tokenSeparator = _ref.tokenSeparator,
+ tokenSeparator = _ref$tokenSeparator === void 0 ? / +/g : _ref$tokenSeparator,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng,
+ _ref$id = _ref.id,
+ id = _ref$id === void 0 ? null : _ref$id,
+ _ref$keys = _ref.keys,
+ keys = _ref$keys === void 0 ? [] : _ref$keys,
+ _ref$shouldSort = _ref.shouldSort,
+ shouldSort = _ref$shouldSort === void 0 ? true : _ref$shouldSort,
+ _ref$getFn = _ref.getFn,
+ getFn = _ref$getFn === void 0 ? deepValue : _ref$getFn,
+ _ref$sortFn = _ref.sortFn,
+ sortFn = _ref$sortFn === void 0 ? function (a, b) {
+ return a.score - b.score;
+ } : _ref$sortFn,
+ _ref$tokenize = _ref.tokenize,
+ tokenize = _ref$tokenize === void 0 ? false : _ref$tokenize,
+ _ref$matchAllTokens = _ref.matchAllTokens,
+ matchAllTokens = _ref$matchAllTokens === void 0 ? false : _ref$matchAllTokens,
+ _ref$includeMatches = _ref.includeMatches,
+ includeMatches = _ref$includeMatches === void 0 ? false : _ref$includeMatches,
+ _ref$includeScore = _ref.includeScore,
+ includeScore = _ref$includeScore === void 0 ? false : _ref$includeScore,
+ _ref$verbose = _ref.verbose,
+ verbose = _ref$verbose === void 0 ? false : _ref$verbose;
+
+ _classCallCheck(this, Fuse);
+
+ this.options = {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ maxPatternLength: maxPatternLength,
+ isCaseSensitive: caseSensitive,
+ tokenSeparator: tokenSeparator,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength,
+ id: id,
+ keys: keys,
+ includeMatches: includeMatches,
+ includeScore: includeScore,
+ shouldSort: shouldSort,
+ getFn: getFn,
+ sortFn: sortFn,
+ verbose: verbose,
+ tokenize: tokenize,
+ matchAllTokens: matchAllTokens
+ };
+ this.setCollection(list);
+ }
+
+ _createClass(Fuse, [{
+ key: "setCollection",
+ value: function setCollection(list) {
+ this.list = list;
+ return list;
+ }
+ }, {
+ key: "search",
+ value: function search(pattern) {
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
+ limit: false
+ };
+
+ this._log("---------\nSearch pattern: \"".concat(pattern, "\""));
+
+ var _this$_prepareSearche = this._prepareSearchers(pattern),
+ tokenSearchers = _this$_prepareSearche.tokenSearchers,
+ fullSearcher = _this$_prepareSearche.fullSearcher;
+
+ var _this$_search = this._search(tokenSearchers, fullSearcher),
+ weights = _this$_search.weights,
+ results = _this$_search.results;
+
+ this._computeScore(weights, results);
+
+ if (this.options.shouldSort) {
+ this._sort(results);
+ }
+
+ if (opts.limit && typeof opts.limit === 'number') {
+ results = results.slice(0, opts.limit);
+ }
+
+ return this._format(results);
+ }
+ }, {
+ key: "_prepareSearchers",
+ value: function _prepareSearchers() {
+ var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+ var tokenSearchers = [];
+
+ if (this.options.tokenize) {
+ // Tokenize on the separator
+ var tokens = pattern.split(this.options.tokenSeparator);
+
+ for (var i = 0, len = tokens.length; i < len; i += 1) {
+ tokenSearchers.push(new Bitap(tokens[i], this.options));
+ }
+ }
+
+ var fullSearcher = new Bitap(pattern, this.options);
+ return {
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ };
+ }
+ }, {
+ key: "_search",
+ value: function _search() {
+ var tokenSearchers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var fullSearcher = arguments.length > 1 ? arguments[1] : undefined;
+ var list = this.list;
+ var resultMap = {};
+ var results = []; // Check the first item in the list, if it's a string, then we assume
+ // that every item in the list is also a string, and thus it's a flattened array.
+
+ if (typeof list[0] === 'string') {
+ // Iterate over every item
+ for (var i = 0, len = list.length; i < len; i += 1) {
+ this._analyze({
+ key: '',
+ value: list[i],
+ record: i,
+ index: i
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+
+ return {
+ weights: null,
+ results: results
+ };
+ } // Otherwise, the first item is an Object (hopefully), and thus the searching
+ // is done on the values of the keys of each item.
+
+
+ var weights = {};
+
+ for (var _i = 0, _len = list.length; _i < _len; _i += 1) {
+ var item = list[_i]; // Iterate over every key
+
+ for (var j = 0, keysLen = this.options.keys.length; j < keysLen; j += 1) {
+ var key = this.options.keys[j];
+
+ if (typeof key !== 'string') {
+ weights[key.name] = {
+ weight: 1 - key.weight || 1
+ };
+
+ if (key.weight <= 0 || key.weight > 1) {
+ throw new Error('Key weight has to be > 0 and <= 1');
+ }
+
+ key = key.name;
+ } else {
+ weights[key] = {
+ weight: 1
+ };
+ }
+
+ this._analyze({
+ key: key,
+ value: this.options.getFn(item, key),
+ record: item,
+ index: _i
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+ }
+
+ return {
+ weights: weights,
+ results: results
+ };
+ }
+ }, {
+ key: "_analyze",
+ value: function _analyze(_ref2, _ref3) {
+ var key = _ref2.key,
+ _ref2$arrayIndex = _ref2.arrayIndex,
+ arrayIndex = _ref2$arrayIndex === void 0 ? -1 : _ref2$arrayIndex,
+ value = _ref2.value,
+ record = _ref2.record,
+ index = _ref2.index;
+ var _ref3$tokenSearchers = _ref3.tokenSearchers,
+ tokenSearchers = _ref3$tokenSearchers === void 0 ? [] : _ref3$tokenSearchers,
+ _ref3$fullSearcher = _ref3.fullSearcher,
+ fullSearcher = _ref3$fullSearcher === void 0 ? [] : _ref3$fullSearcher,
+ _ref3$resultMap = _ref3.resultMap,
+ resultMap = _ref3$resultMap === void 0 ? {} : _ref3$resultMap,
+ _ref3$results = _ref3.results,
+ results = _ref3$results === void 0 ? [] : _ref3$results;
+
+ // Check if the texvaluet can be searched
+ if (value === undefined || value === null) {
+ return;
+ }
+
+ var exists = false;
+ var averageScore = -1;
+ var numTextMatches = 0;
+
+ if (typeof value === 'string') {
+ this._log("\nKey: ".concat(key === '' ? '-' : key));
+
+ var mainSearchResult = fullSearcher.search(value);
+
+ this._log("Full text: \"".concat(value, "\", score: ").concat(mainSearchResult.score));
+
+ if (this.options.tokenize) {
+ var words = value.split(this.options.tokenSeparator);
+ var scores = [];
+
+ for (var i = 0; i < tokenSearchers.length; i += 1) {
+ var tokenSearcher = tokenSearchers[i];
+
+ this._log("\nPattern: \"".concat(tokenSearcher.pattern, "\"")); // let tokenScores = []
+
+
+ var hasMatchInText = false;
+
+ for (var j = 0; j < words.length; j += 1) {
+ var word = words[j];
+ var tokenSearchResult = tokenSearcher.search(word);
+ var obj = {};
+
+ if (tokenSearchResult.isMatch) {
+ obj[word] = tokenSearchResult.score;
+ exists = true;
+ hasMatchInText = true;
+ scores.push(tokenSearchResult.score);
+ } else {
+ obj[word] = 1;
+
+ if (!this.options.matchAllTokens) {
+ scores.push(1);
+ }
+ }
+
+ this._log("Token: \"".concat(word, "\", score: ").concat(obj[word])); // tokenScores.push(obj)
+
+ }
+
+ if (hasMatchInText) {
+ numTextMatches += 1;
+ }
+ }
+
+ averageScore = scores[0];
+ var scoresLen = scores.length;
+
+ for (var _i2 = 1; _i2 < scoresLen; _i2 += 1) {
+ averageScore += scores[_i2];
+ }
+
+ averageScore = averageScore / scoresLen;
+
+ this._log('Token score average:', averageScore);
+ }
+
+ var finalScore = mainSearchResult.score;
+
+ if (averageScore > -1) {
+ finalScore = (finalScore + averageScore) / 2;
+ }
+
+ this._log('Score average:', finalScore);
+
+ var checkTextMatches = this.options.tokenize && this.options.matchAllTokens ? numTextMatches >= tokenSearchers.length : true;
+
+ this._log("\nCheck Matches: ".concat(checkTextMatches)); // If a match is found, add the item to <rawResults>, including its score
+
+
+ if ((exists || mainSearchResult.isMatch) && checkTextMatches) {
+ // Check if the item already exists in our results
+ var existingResult = resultMap[index];
+
+ if (existingResult) {
+ // Use the lowest score
+ // existingResult.score, bitapResult.score
+ existingResult.output.push({
+ key: key,
+ arrayIndex: arrayIndex,
+ value: value,
+ score: finalScore,
+ matchedIndices: mainSearchResult.matchedIndices
+ });
+ } else {
+ // Add it to the raw result list
+ resultMap[index] = {
+ item: record,
+ output: [{
+ key: key,
+ arrayIndex: arrayIndex,
+ value: value,
+ score: finalScore,
+ matchedIndices: mainSearchResult.matchedIndices
+ }]
+ };
+ results.push(resultMap[index]);
+ }
+ }
+ } else if (isArray(value)) {
+ for (var _i3 = 0, len = value.length; _i3 < len; _i3 += 1) {
+ this._analyze({
+ key: key,
+ arrayIndex: _i3,
+ value: value[_i3],
+ record: record,
+ index: index
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+ }
+ }
+ }, {
+ key: "_computeScore",
+ value: function _computeScore(weights, results) {
+ this._log('\n\nComputing score:\n');
+
+ for (var i = 0, len = results.length; i < len; i += 1) {
+ var output = results[i].output;
+ var scoreLen = output.length;
+ var currScore = 1;
+ var bestScore = 1;
+
+ for (var j = 0; j < scoreLen; j += 1) {
+ var weight = weights ? weights[output[j].key].weight : 1;
+ var score = weight === 1 ? output[j].score : output[j].score || 0.001;
+ var nScore = score * weight;
+
+ if (weight !== 1) {
+ bestScore = Math.min(bestScore, nScore);
+ } else {
+ output[j].nScore = nScore;
+ currScore *= nScore;
+ }
+ }
+
+ results[i].score = bestScore === 1 ? currScore : bestScore;
+
+ this._log(results[i]);
+ }
+ }
+ }, {
+ key: "_sort",
+ value: function _sort(results) {
+ this._log('\n\nSorting....');
+
+ results.sort(this.options.sortFn);
+ }
+ }, {
+ key: "_format",
+ value: function _format(results) {
+ var finalOutput = [];
+
+ if (this.options.verbose) {
+ var cache = [];
+
+ this._log('\n\nOutput:\n\n', JSON.stringify(results, function (key, value) {
+ if (_typeof(value) === 'object' && value !== null) {
+ if (cache.indexOf(value) !== -1) {
+ // Circular reference found, discard key
+ return;
+ } // Store value in our collection
+
+
+ cache.push(value);
+ }
+
+ return value;
+ }));
+
+ cache = null;
+ }
+
+ var transformers = [];
+
+ if (this.options.includeMatches) {
+ transformers.push(function (result, data) {
+ var output = result.output;
+ data.matches = [];
+
+ for (var i = 0, len = output.length; i < len; i += 1) {
+ var item = output[i];
+
+ if (item.matchedIndices.length === 0) {
+ continue;
+ }
+
+ var obj = {
+ indices: item.matchedIndices,
+ value: item.value
+ };
+
+ if (item.key) {
+ obj.key = item.key;
+ }
+
+ if (item.hasOwnProperty('arrayIndex') && item.arrayIndex > -1) {
+ obj.arrayIndex = item.arrayIndex;
+ }
+
+ data.matches.push(obj);
+ }
+ });
+ }
+
+ if (this.options.includeScore) {
+ transformers.push(function (result, data) {
+ data.score = result.score;
+ });
+ }
+
+ for (var i = 0, len = results.length; i < len; i += 1) {
+ var result = results[i];
+
+ if (this.options.id) {
+ result.item = this.options.getFn(result.item, this.options.id)[0];
+ }
+
+ if (!transformers.length) {
+ finalOutput.push(result.item);
+ continue;
+ }
+
+ var data = {
+ item: result.item
+ };
+
+ for (var j = 0, _len2 = transformers.length; j < _len2; j += 1) {
+ transformers[j](result, data);
+ }
+
+ finalOutput.push(data);
+ }
+
+ return finalOutput;
+ }
+ }, {
+ key: "_log",
+ value: function _log() {
+ if (this.options.verbose) {
+ var _console;
+
+ (_console = console).log.apply(_console, arguments);
+ }
+ }
+ }]);
+
+ return Fuse;
+}();
+
+module.exports = Fuse;
+
+/***/ })
+
+/******/ });
+});
+
+/***/ }),
+/* 12 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var isMergeableObject = function isMergeableObject(value) {
+ return isNonNullObject(value)
+ && !isSpecial(value)
+};
+
+function isNonNullObject(value) {
+ return !!value && typeof value === 'object'
+}
+
+function isSpecial(value) {
+ var stringValue = Object.prototype.toString.call(value);
+
+ return stringValue === '[object RegExp]'
+ || stringValue === '[object Date]'
+ || isReactElement(value)
+}
+
+// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
+var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
+var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
+
+function isReactElement(value) {
+ return value.$$typeof === REACT_ELEMENT_TYPE
+}
+
+function emptyTarget(val) {
+ return Array.isArray(val) ? [] : {}
+}
+
+function cloneUnlessOtherwiseSpecified(value, options) {
+ return (options.clone !== false && options.isMergeableObject(value))
+ ? deepmerge(emptyTarget(value), value, options)
+ : value
+}
+
+function defaultArrayMerge(target, source, options) {
+ return target.concat(source).map(function(element) {
+ return cloneUnlessOtherwiseSpecified(element, options)
+ })
+}
+
+function mergeObject(target, source, options) {
+ var destination = {};
+ if (options.isMergeableObject(target)) {
+ Object.keys(target).forEach(function(key) {
+ destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
+ });
+ }
+ Object.keys(source).forEach(function(key) {
+ if (!options.isMergeableObject(source[key]) || !target[key]) {
+ destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
+ } else {
+ destination[key] = deepmerge(target[key], source[key], options);
+ }
+ });
+ return destination
+}
+
+function deepmerge(target, source, options) {
+ options = options || {};
+ options.arrayMerge = options.arrayMerge || defaultArrayMerge;
+ options.isMergeableObject = options.isMergeableObject || isMergeableObject;
+
+ var sourceIsArray = Array.isArray(source);
+ var targetIsArray = Array.isArray(target);
+ var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
+
+ if (!sourceAndTargetTypesMatch) {
+ return cloneUnlessOtherwiseSpecified(source, options)
+ } else if (sourceIsArray) {
+ return options.arrayMerge(target, source, options)
+ } else {
+ return mergeObject(target, source, options)
+ }
+}
+
+deepmerge.all = function deepmergeAll(array, options) {
+ if (!Array.isArray(array)) {
+ throw new Error('first argument should be an array')
+ }
+
+ return array.reduce(function(prev, next) {
+ return deepmerge(prev, next, options)
+ }, {})
+};
+
+var deepmerge_1 = deepmerge;
+
+/* harmony default export */ __webpack_exports__["default"] = (deepmerge_1);
+
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _redux = __webpack_require__(6);
+
+var _index = _interopRequireDefault(__webpack_require__(15));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Store =
+/*#__PURE__*/
+function () {
+ function Store() {
+ _classCallCheck(this, Store);
+
+ this._store = (0, _redux.createStore)(_index.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
+ }
+ /**
+ * Subscribe store to function call (wrapped Redux method)
+ * @param {Function} onChange Function to trigger when state changes
+ * @return
+ */
+
+
+ _createClass(Store, [{
+ key: "subscribe",
+ value: function subscribe(onChange) {
+ this._store.subscribe(onChange);
+ }
+ /**
+ * Dispatch event to store (wrapped Redux method)
+ * @param {Function} action Action function to trigger
+ * @return
+ */
+
+ }, {
+ key: "dispatch",
+ value: function dispatch(action) {
+ this._store.dispatch(action);
+ }
+ /**
+ * Get store object (wrapping Redux method)
+ * @return {Object} State
+ */
+
+ }, {
+ key: "isLoading",
+
+ /**
+ * Get loading state from store
+ * @return {Boolean} Loading State
+ */
+ value: function isLoading() {
+ return this.state.general.loading;
+ }
+ /**
+ * Get single choice by it's ID
+ * @return {Object} Found choice
+ */
+
+ }, {
+ key: "getChoiceById",
+ value: function getChoiceById(id) {
+ if (id) {
+ var choices = this.activeChoices;
+ var foundChoice = choices.find(function (choice) {
+ return choice.id === parseInt(id, 10);
+ });
+ return foundChoice;
+ }
+
+ return false;
+ }
+ /**
+ * Get group by group id
+ * @param {Number} id Group ID
+ * @return {Object} Group data
+ */
+
+ }, {
+ key: "getGroupById",
+ value: function getGroupById(id) {
+ return this.groups.find(function (group) {
+ return group.id === parseInt(id, 10);
+ });
+ }
+ }, {
+ key: "state",
+ get: function get() {
+ return this._store.getState();
+ }
+ /**
+ * Get items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "items",
+ get: function get() {
+ return this.state.items;
+ }
+ /**
+ * Get active items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "activeItems",
+ get: function get() {
+ return this.items.filter(function (item) {
+ return item.active === true;
+ });
+ }
+ /**
+ * Get highlighted items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "highlightedActiveItems",
+ get: function get() {
+ return this.items.filter(function (item) {
+ return item.active && item.highlighted;
+ });
+ }
+ /**
+ * Get choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "choices",
+ get: function get() {
+ return this.state.choices;
+ }
+ /**
+ * Get active choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "activeChoices",
+ get: function get() {
+ var choices = this.choices;
+ var values = choices.filter(function (choice) {
+ return choice.active === true;
+ });
+ return values;
+ }
+ /**
+ * Get selectable choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "selectableChoices",
+ get: function get() {
+ return this.choices.filter(function (choice) {
+ return choice.disabled !== true;
+ });
+ }
+ /**
+ * Get choices that can be searched (excluding placeholders)
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "searchableChoices",
+ get: function get() {
+ return this.selectableChoices.filter(function (choice) {
+ return choice.placeholder !== true;
+ });
+ }
+ /**
+ * Get placeholder choice from store
+ * @return {Object} Found placeholder
+ */
+
+ }, {
+ key: "placeholderChoice",
+ get: function get() {
+ return [].concat(this.choices).reverse().find(function (choice) {
+ return choice.placeholder === true;
+ });
+ }
+ /**
+ * Get groups from store
+ * @return {Array} Group objects
+ */
+
+ }, {
+ key: "groups",
+ get: function get() {
+ return this.state.groups;
+ }
+ /**
+ * Get active groups from store
+ * @return {Array} Group objects
+ */
+
+ }, {
+ key: "activeGroups",
+ get: function get() {
+ var groups = this.groups;
+ var choices = this.choices;
+ return groups.filter(function (group) {
+ var isActive = group.active === true && group.disabled === false;
+ var hasActiveOptions = choices.some(function (choice) {
+ return choice.active === true && choice.disabled === false;
+ });
+ return isActive && hasActiveOptions;
+ }, []);
+ }
+ }]);
+
+ return Store;
+}();
+
+exports.default = Store;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports) {
+
+module.exports = function(originalModule) {
+ if (!originalModule.webpackPolyfill) {
+ var module = Object.create(originalModule);
+ // module.parent = undefined by default
+ if (!module.children) module.children = [];
+ Object.defineProperty(module, "loaded", {
+ enumerable: true,
+ get: function() {
+ return module.l;
+ }
+ });
+ Object.defineProperty(module, "id", {
+ enumerable: true,
+ get: function() {
+ return module.i;
+ }
+ });
+ Object.defineProperty(module, "exports", {
+ enumerable: true
+ });
+ module.webpackPolyfill = 1;
+ }
+ return module;
+};
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _redux = __webpack_require__(6);
+
+var _items = _interopRequireDefault(__webpack_require__(16));
+
+var _groups = _interopRequireDefault(__webpack_require__(17));
+
+var _choices = _interopRequireDefault(__webpack_require__(18));
+
+var _general = _interopRequireDefault(__webpack_require__(19));
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var appReducer = (0, _redux.combineReducers)({
+ items: _items.default,
+ groups: _groups.default,
+ choices: _choices.default,
+ general: _general.default
+});
+
+var rootReducer = function rootReducer(passedState, action) {
+ var state = passedState; // If we are clearing all items, groups and options we reassign
+ // state and then pass that state to our proper reducer. This isn't
+ // mutating our actual state
+ // See: http://stackoverflow.com/a/35641992
+
+ if (action.type === 'CLEAR_ALL') {
+ state = undefined;
+ } else if (action.type === 'RESET_TO') {
+ return (0, _utils.cloneObject)(action.state);
+ }
+
+ return appReducer(state, action);
+};
+
+var _default = rootReducer;
+exports.default = _default;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = items;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function items() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_ITEM':
+ {
+ // Add object to items array
+ var newState = [].concat(state, [{
+ id: action.id,
+ choiceId: action.choiceId,
+ groupId: action.groupId,
+ value: action.value,
+ label: action.label,
+ active: true,
+ highlighted: false,
+ customProperties: action.customProperties,
+ placeholder: action.placeholder || false,
+ keyCode: null
+ }]);
+ return newState.map(function (obj) {
+ var item = obj;
+ item.highlighted = false;
+ return item;
+ });
+ }
+
+ case 'REMOVE_ITEM':
+ {
+ // Set item to inactive
+ return state.map(function (obj) {
+ var item = obj;
+
+ if (item.id === action.id) {
+ item.active = false;
+ }
+
+ return item;
+ });
+ }
+
+ case 'HIGHLIGHT_ITEM':
+ {
+ return state.map(function (obj) {
+ var item = obj;
+
+ if (item.id === action.id) {
+ item.highlighted = action.highlighted;
+ }
+
+ return item;
+ });
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = groups;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function groups() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_GROUP':
+ {
+ return [].concat(state, [{
+ id: action.id,
+ value: action.value,
+ active: action.active,
+ disabled: action.disabled
+ }]);
+ }
+
+ case 'CLEAR_CHOICES':
+ {
+ return [];
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = choices;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function choices() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_CHOICE':
+ {
+ /*
+ A disabled choice appears in the choice dropdown but cannot be selected
+ A selected choice has been added to the passed input's value (added as an item)
+ An active choice appears within the choice dropdown
+ */
+ return [].concat(state, [{
+ id: action.id,
+ elementId: action.elementId,
+ groupId: action.groupId,
+ value: action.value,
+ label: action.label || action.value,
+ disabled: action.disabled || false,
+ selected: false,
+ active: true,
+ score: 9999,
+ customProperties: action.customProperties,
+ placeholder: action.placeholder || false,
+ keyCode: null
+ }]);
+ }
+
+ case 'ADD_ITEM':
+ {
+ // If all choices need to be activated
+ if (action.activateOptions) {
+ return state.map(function (obj) {
+ var choice = obj;
+ choice.active = action.active;
+ return choice;
+ });
+ } // When an item is added and it has an associated choice,
+ // we want to disable it so it can't be chosen again
+
+
+ if (action.choiceId > -1) {
+ return state.map(function (obj) {
+ var choice = obj;
+
+ if (choice.id === parseInt(action.choiceId, 10)) {
+ choice.selected = true;
+ }
+
+ return choice;
+ });
+ }
+
+ return state;
+ }
+
+ case 'REMOVE_ITEM':
+ {
+ // When an item is removed and it has an associated choice,
+ // we want to re-enable it so it can be chosen again
+ if (action.choiceId > -1) {
+ return state.map(function (obj) {
+ var choice = obj;
+
+ if (choice.id === parseInt(action.choiceId, 10)) {
+ choice.selected = false;
+ }
+
+ return choice;
+ });
+ }
+
+ return state;
+ }
+
+ case 'FILTER_CHOICES':
+ {
+ return state.map(function (obj) {
+ var choice = obj; // Set active state based on whether choice is
+ // within filtered results
+
+ choice.active = action.results.some(function (_ref) {
+ var item = _ref.item,
+ score = _ref.score;
+
+ if (item.id === choice.id) {
+ choice.score = score;
+ return true;
+ }
+
+ return false;
+ });
+ return choice;
+ });
+ }
+
+ case 'ACTIVATE_CHOICES':
+ {
+ return state.map(function (obj) {
+ var choice = obj;
+ choice.active = action.active;
+ return choice;
+ });
+ }
+
+ case 'CLEAR_CHOICES':
+ {
+ return defaultState;
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.defaultState = void 0;
+var defaultState = {
+ loading: false
+};
+exports.defaultState = defaultState;
+
+var general = function general() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'SET_IS_LOADING':
+ {
+ return {
+ loading: action.isLoading
+ };
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+};
+
+var _default = general;
+exports.default = _default;
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "Dropdown", {
+ enumerable: true,
+ get: function get() {
+ return _dropdown.default;
+ }
+});
+Object.defineProperty(exports, "Container", {
+ enumerable: true,
+ get: function get() {
+ return _container.default;
+ }
+});
+Object.defineProperty(exports, "Input", {
+ enumerable: true,
+ get: function get() {
+ return _input.default;
+ }
+});
+Object.defineProperty(exports, "List", {
+ enumerable: true,
+ get: function get() {
+ return _list.default;
+ }
+});
+Object.defineProperty(exports, "WrappedInput", {
+ enumerable: true,
+ get: function get() {
+ return _wrappedInput.default;
+ }
+});
+Object.defineProperty(exports, "WrappedSelect", {
+ enumerable: true,
+ get: function get() {
+ return _wrappedSelect.default;
+ }
+});
+
+var _dropdown = _interopRequireDefault(__webpack_require__(21));
+
+var _container = _interopRequireDefault(__webpack_require__(22));
+
+var _input = _interopRequireDefault(__webpack_require__(23));
+
+var _list = _interopRequireDefault(__webpack_require__(24));
+
+var _wrappedInput = _interopRequireDefault(__webpack_require__(25));
+
+var _wrappedSelect = _interopRequireDefault(__webpack_require__(26));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Dropdown =
+/*#__PURE__*/
+function () {
+ function Dropdown(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, Dropdown);
+
+ Object.assign(this, {
+ element: element,
+ type: type,
+ classNames: classNames
+ });
+ this.isActive = false;
+ }
+ /**
+ * Determine how far the top of our element is from
+ * the top of the window
+ * @return {Number} Vertical position
+ */
+
+
+ _createClass(Dropdown, [{
+ key: "distanceFromTopWindow",
+ value: function distanceFromTopWindow() {
+ this.dimensions = this.element.getBoundingClientRect();
+ this.position = Math.ceil(this.dimensions.top + window.pageYOffset + this.element.offsetHeight);
+ return this.position;
+ }
+ /**
+ * Find element that matches passed selector
+ * @return {HTMLElement}
+ */
+
+ }, {
+ key: "getChild",
+ value: function getChild(selector) {
+ return this.element.querySelector(selector);
+ }
+ /**
+ * Show dropdown to user by adding active state class
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "show",
+ value: function show() {
+ this.element.classList.add(this.classNames.activeState);
+ this.element.setAttribute('aria-expanded', 'true');
+ this.isActive = true;
+ return this;
+ }
+ /**
+ * Hide dropdown from user
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "hide",
+ value: function hide() {
+ this.element.classList.remove(this.classNames.activeState);
+ this.element.setAttribute('aria-expanded', 'false');
+ this.isActive = false;
+ return this;
+ }
+ }]);
+
+ return Dropdown;
+}();
+
+exports.default = Dropdown;
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Container =
+/*#__PURE__*/
+function () {
+ function Container(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames,
+ position = _ref.position;
+
+ _classCallCheck(this, Container);
+
+ Object.assign(this, {
+ element: element,
+ classNames: classNames,
+ type: type,
+ position: position
+ });
+ this.isOpen = false;
+ this.isFlipped = false;
+ this.isFocussed = false;
+ this.isDisabled = false;
+ this.isLoading = false;
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ }
+ /**
+ * Add event listeners
+ */
+
+
+ _createClass(Container, [{
+ key: "addEventListeners",
+ value: function addEventListeners() {
+ this.element.addEventListener('focus', this._onFocus);
+ this.element.addEventListener('blur', this._onBlur);
+ }
+ /**
+ * Remove event listeners
+ */
+
+ /** */
+
+ }, {
+ key: "removeEventListeners",
+ value: function removeEventListeners() {
+ this.element.removeEventListener('focus', this._onFocus);
+ this.element.removeEventListener('blur', this._onBlur);
+ }
+ /**
+ * Determine whether container should be flipped
+ * based on passed dropdown position
+ * @param {Number} dropdownPos
+ * @returns
+ */
+
+ }, {
+ key: "shouldFlip",
+ value: function shouldFlip(dropdownPos) {
+ var windowHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _utils.getWindowHeight)();
+
+ if (dropdownPos === undefined) {
+ return false;
+ } // If flip is enabled and the dropdown bottom position is
+ // greater than the window height flip the dropdown.
+
+
+ var shouldFlip = false;
+
+ if (this.position === 'auto') {
+ shouldFlip = dropdownPos >= windowHeight;
+ } else if (this.position === 'top') {
+ shouldFlip = true;
+ }
+
+ return shouldFlip;
+ }
+ /**
+ * Set active descendant attribute
+ * @param {Number} activeDescendant ID of active descendant
+ */
+
+ }, {
+ key: "setActiveDescendant",
+ value: function setActiveDescendant(activeDescendantID) {
+ this.element.setAttribute('aria-activedescendant', activeDescendantID);
+ }
+ /**
+ * Remove active descendant attribute
+ */
+
+ }, {
+ key: "removeActiveDescendant",
+ value: function removeActiveDescendant() {
+ this.element.removeAttribute('aria-activedescendant');
+ }
+ }, {
+ key: "open",
+ value: function open(dropdownPos) {
+ this.element.classList.add(this.classNames.openState);
+ this.element.setAttribute('aria-expanded', 'true');
+ this.isOpen = true;
+
+ if (this.shouldFlip(dropdownPos)) {
+ this.element.classList.add(this.classNames.flippedState);
+ this.isFlipped = true;
+ }
+ }
+ }, {
+ key: "close",
+ value: function close() {
+ this.element.classList.remove(this.classNames.openState);
+ this.element.setAttribute('aria-expanded', 'false');
+ this.removeActiveDescendant();
+ this.isOpen = false; // A dropdown flips if it does not have space within the page
+
+ if (this.isFlipped) {
+ this.element.classList.remove(this.classNames.flippedState);
+ this.isFlipped = false;
+ }
+ }
+ }, {
+ key: "focus",
+ value: function focus() {
+ if (!this.isFocussed) {
+ this.element.focus();
+ }
+ }
+ }, {
+ key: "addFocusState",
+ value: function addFocusState() {
+ this.element.classList.add(this.classNames.focusState);
+ }
+ }, {
+ key: "removeFocusState",
+ value: function removeFocusState() {
+ this.element.classList.remove(this.classNames.focusState);
+ }
+ /**
+ * Remove disabled state
+ */
+
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.classList.remove(this.classNames.disabledState);
+ this.element.removeAttribute('aria-disabled');
+
+ if (this.type === 'select-one') {
+ this.element.setAttribute('tabindex', '0');
+ }
+
+ this.isDisabled = false;
+ }
+ /**
+ * Set disabled state
+ */
+
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.classList.add(this.classNames.disabledState);
+ this.element.setAttribute('aria-disabled', 'true');
+
+ if (this.type === 'select-one') {
+ this.element.setAttribute('tabindex', '-1');
+ }
+
+ this.isDisabled = true;
+ }
+ }, {
+ key: "wrap",
+ value: function wrap(element) {
+ (0, _utils.wrap)(element, this.element);
+ }
+ }, {
+ key: "unwrap",
+ value: function unwrap(element) {
+ // Move passed element outside this element
+ this.element.parentNode.insertBefore(element, this.element); // Remove this element
+
+ this.element.parentNode.removeChild(this.element);
+ }
+ /**
+ * Add loading state to element
+ */
+
+ }, {
+ key: "addLoadingState",
+ value: function addLoadingState() {
+ this.element.classList.add(this.classNames.loadingState);
+ this.element.setAttribute('aria-busy', 'true');
+ this.isLoading = true;
+ }
+ /**
+ * Remove loading state from element
+ */
+
+ }, {
+ key: "removeLoadingState",
+ value: function removeLoadingState() {
+ this.element.classList.remove(this.classNames.loadingState);
+ this.element.removeAttribute('aria-busy');
+ this.isLoading = false;
+ }
+ /**
+ * Set focussed state
+ */
+
+ }, {
+ key: "_onFocus",
+ value: function _onFocus() {
+ this.isFocussed = true;
+ }
+ /**
+ * Remove blurred state
+ */
+
+ }, {
+ key: "_onBlur",
+ value: function _onBlur() {
+ this.isFocussed = false;
+ }
+ }]);
+
+ return Container;
+}();
+
+exports.default = Container;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Input =
+/*#__PURE__*/
+function () {
+ function Input(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames,
+ placeholderValue = _ref.placeholderValue;
+
+ _classCallCheck(this, Input);
+
+ Object.assign(this, {
+ element: element,
+ type: type,
+ classNames: classNames,
+ placeholderValue: placeholderValue
+ });
+ this.element = element;
+ this.classNames = classNames;
+ this.isFocussed = this.element === document.activeElement;
+ this.isDisabled = false;
+ this._onPaste = this._onPaste.bind(this);
+ this._onInput = this._onInput.bind(this);
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ }
+
+ _createClass(Input, [{
+ key: "addEventListeners",
+ value: function addEventListeners() {
+ this.element.addEventListener('input', this._onInput);
+ this.element.addEventListener('paste', this._onPaste);
+ this.element.addEventListener('focus', this._onFocus);
+ this.element.addEventListener('blur', this._onBlur);
+
+ if (this.element.form) {
+ this.element.form.addEventListener('reset', this._onFormReset);
+ }
+ }
+ }, {
+ key: "removeEventListeners",
+ value: function removeEventListeners() {
+ this.element.removeEventListener('input', this._onInput);
+ this.element.removeEventListener('paste', this._onPaste);
+ this.element.removeEventListener('focus', this._onFocus);
+ this.element.removeEventListener('blur', this._onBlur);
+
+ if (this.element.form) {
+ this.element.form.removeEventListener('reset', this._onFormReset);
+ }
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.removeAttribute('disabled');
+ this.isDisabled = false;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.setAttribute('disabled', '');
+ this.isDisabled = true;
+ }
+ }, {
+ key: "focus",
+ value: function focus() {
+ if (!this.isFocussed) {
+ this.element.focus();
+ }
+ }
+ }, {
+ key: "blur",
+ value: function blur() {
+ if (this.isFocussed) {
+ this.element.blur();
+ }
+ }
+ /**
+ * Set value of input to blank
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "clear",
+ value: function clear() {
+ var setWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+
+ if (this.element.value) {
+ this.element.value = '';
+ }
+
+ if (setWidth) {
+ this.setWidth();
+ }
+
+ return this;
+ }
+ /**
+ * Set the correct input width based on placeholder
+ * value or input value
+ * @return
+ */
+
+ }, {
+ key: "setWidth",
+ value: function setWidth(enforceWidth) {
+ var _this = this;
+
+ var callback = function callback(width) {
+ _this.element.style.width = width;
+ };
+
+ if (this._placeholderValue) {
+ // If there is a placeholder, we only want to set the width of the input when it is a greater
+ // length than 75% of the placeholder. This stops the input jumping around.
+ var valueHasDesiredLength = this.element.value.length >= this._placeholderValue.length / 1.25;
+
+ if (this.element.value && valueHasDesiredLength || enforceWidth) {
+ this.calcWidth(callback);
+ }
+ } else {
+ // If there is no placeholder, resize input to contents
+ this.calcWidth(callback);
+ }
+ }
+ }, {
+ key: "calcWidth",
+ value: function calcWidth(callback) {
+ return (0, _utils.calcWidthOfInput)(this.element, callback);
+ }
+ }, {
+ key: "setActiveDescendant",
+ value: function setActiveDescendant(activeDescendantID) {
+ this.element.setAttribute('aria-activedescendant', activeDescendantID);
+ }
+ }, {
+ key: "removeActiveDescendant",
+ value: function removeActiveDescendant() {
+ this.element.removeAttribute('aria-activedescendant');
+ }
+ }, {
+ key: "_onInput",
+ value: function _onInput() {
+ if (this.type !== 'select-one') {
+ this.setWidth();
+ }
+ }
+ }, {
+ key: "_onPaste",
+ value: function _onPaste(event) {
+ var target = event.target;
+
+ if (target === this.element && this.preventPaste) {
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onFocus",
+ value: function _onFocus() {
+ this.isFocussed = true;
+ }
+ }, {
+ key: "_onBlur",
+ value: function _onBlur() {
+ this.isFocussed = false;
+ }
+ }, {
+ key: "placeholder",
+ set: function set(placeholder) {
+ this.element.placeholder = placeholder;
+ }
+ }, {
+ key: "value",
+ set: function set(value) {
+ this.element.value = value;
+ },
+ get: function get() {
+ return (0, _utils.sanitise)(this.element.value);
+ }
+ }]);
+
+ return Input;
+}();
+
+exports.default = Input;
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _constants = __webpack_require__(1);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var List =
+/*#__PURE__*/
+function () {
+ function List(_ref) {
+ var element = _ref.element;
+
+ _classCallCheck(this, List);
+
+ Object.assign(this, {
+ element: element
+ });
+ this.scrollPos = this.element.scrollTop;
+ this.height = this.element.offsetHeight;
+ this.hasChildren = !!this.element.children;
+ }
+
+ _createClass(List, [{
+ key: "clear",
+ value: function clear() {
+ this.element.innerHTML = '';
+ }
+ }, {
+ key: "append",
+ value: function append(node) {
+ this.element.appendChild(node);
+ }
+ }, {
+ key: "getChild",
+ value: function getChild(selector) {
+ return this.element.querySelector(selector);
+ }
+ }, {
+ key: "scrollToTop",
+ value: function scrollToTop() {
+ this.element.scrollTop = 0;
+ }
+ }, {
+ key: "scrollToChoice",
+ value: function scrollToChoice(choice, direction) {
+ var _this = this;
+
+ if (!choice) {
+ return;
+ }
+
+ var dropdownHeight = this.element.offsetHeight;
+ var choiceHeight = choice.offsetHeight; // Distance from bottom of element to top of parent
+
+ var choicePos = choice.offsetTop + choiceHeight; // Scroll position of dropdown
+
+ var containerScrollPos = this.element.scrollTop + dropdownHeight; // Difference between the choice and scroll position
+
+ var endpoint = direction > 0 ? this.element.scrollTop + choicePos - containerScrollPos : choice.offsetTop;
+ requestAnimationFrame(function (time) {
+ _this._animateScroll(time, endpoint, direction);
+ });
+ }
+ }, {
+ key: "_scrollDown",
+ value: function _scrollDown(scrollPos, strength, endpoint) {
+ var easing = (endpoint - scrollPos) / strength;
+ var distance = easing > 1 ? easing : 1;
+ this.element.scrollTop = scrollPos + distance;
+ }
+ }, {
+ key: "_scrollUp",
+ value: function _scrollUp(scrollPos, strength, endpoint) {
+ var easing = (scrollPos - endpoint) / strength;
+ var distance = easing > 1 ? easing : 1;
+ this.element.scrollTop = scrollPos - distance;
+ }
+ }, {
+ key: "_animateScroll",
+ value: function _animateScroll(time, endpoint, direction) {
+ var _this2 = this;
+
+ var strength = _constants.SCROLLING_SPEED;
+ var choiceListScrollTop = this.element.scrollTop;
+ var continueAnimation = false;
+
+ if (direction > 0) {
+ this._scrollDown(choiceListScrollTop, strength, endpoint);
+
+ if (choiceListScrollTop < endpoint) {
+ continueAnimation = true;
+ }
+ } else {
+ this._scrollUp(choiceListScrollTop, strength, endpoint);
+
+ if (choiceListScrollTop > endpoint) {
+ continueAnimation = true;
+ }
+ }
+
+ if (continueAnimation) {
+ requestAnimationFrame(function () {
+ _this2._animateScroll(time, endpoint, direction);
+ });
+ }
+ }
+ }]);
+
+ return List;
+}();
+
+exports.default = List;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _wrappedElement = _interopRequireDefault(__webpack_require__(4));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
+
+function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var WrappedInput =
+/*#__PURE__*/
+function (_WrappedElement) {
+ _inherits(WrappedInput, _WrappedElement);
+
+ function WrappedInput(_ref) {
+ var _this;
+
+ var element = _ref.element,
+ classNames = _ref.classNames,
+ delimiter = _ref.delimiter;
+
+ _classCallCheck(this, WrappedInput);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(WrappedInput).call(this, {
+ element: element,
+ classNames: classNames
+ }));
+ _this.delimiter = delimiter;
+ return _this;
+ }
+
+ _createClass(WrappedInput, [{
+ key: "value",
+ set: function set(items) {
+ var itemValues = items.map(function (_ref2) {
+ var value = _ref2.value;
+ return value;
+ });
+ var joinedValues = itemValues.join(this.delimiter);
+ this.element.setAttribute('value', joinedValues);
+ this.element.value = joinedValues;
+ } // @todo figure out why we need this? Perhaps a babel issue
+ ,
+ get: function get() {
+ return _get(_getPrototypeOf(WrappedInput.prototype), "value", this);
+ }
+ }]);
+
+ return WrappedInput;
+}(_wrappedElement.default);
+
+exports.default = WrappedInput;
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _wrappedElement = _interopRequireDefault(__webpack_require__(4));
+
+var _templates = _interopRequireDefault(__webpack_require__(5));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var WrappedSelect =
+/*#__PURE__*/
+function (_WrappedElement) {
+ _inherits(WrappedSelect, _WrappedElement);
+
+ function WrappedSelect(_ref) {
+ var element = _ref.element,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, WrappedSelect);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(WrappedSelect).call(this, {
+ element: element,
+ classNames: classNames
+ }));
+ }
+
+ _createClass(WrappedSelect, [{
+ key: "appendDocFragment",
+ value: function appendDocFragment(fragment) {
+ this.element.innerHTML = '';
+ this.element.appendChild(fragment);
+ }
+ }, {
+ key: "placeholderOption",
+ get: function get() {
+ return this.element.querySelector('option[placeholder]');
+ }
+ }, {
+ key: "optionGroups",
+ get: function get() {
+ return Array.from(this.element.getElementsByTagName('OPTGROUP'));
+ }
+ }, {
+ key: "options",
+ get: function get() {
+ return Array.from(this.element.options);
+ },
+ set: function set(options) {
+ var fragment = document.createDocumentFragment();
+
+ var addOptionToFragment = function addOptionToFragment(data) {
+ // Create a standard select option
+ var template = _templates.default.option(data); // Append it to fragment
+
+
+ fragment.appendChild(template);
+ }; // Add each list item to list
+
+
+ options.forEach(function (optionData) {
+ return addOptionToFragment(optionData);
+ });
+ this.appendDocFragment(fragment);
+ }
+ }]);
+
+ return WrappedSelect;
+}(_wrappedElement.default);
+
+exports.default = WrappedSelect;
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+/* global define */
+
+(function () {
+ 'use strict';
+
+ var hasOwn = {}.hasOwnProperty;
+
+ function classNames () {
+ var classes = [];
+
+ for (var i = 0; i < arguments.length; i++) {
+ var arg = arguments[i];
+ if (!arg) continue;
+
+ var argType = typeof arg;
+
+ if (argType === 'string' || argType === 'number') {
+ classes.push(arg);
+ } else if (Array.isArray(arg) && arg.length) {
+ var inner = classNames.apply(null, arg);
+ if (inner) {
+ classes.push(inner);
+ }
+ } else if (argType === 'object') {
+ for (var key in arg) {
+ if (hasOwn.call(arg, key) && arg[key]) {
+ classes.push(key);
+ }
+ }
+ }
+ }
+
+ return classes.join(' ');
+ }
+
+ if ( true && module.exports) {
+ classNames.default = classNames;
+ module.exports = classNames;
+ } else if (true) {
+ // register as 'classnames', consistent with npm package name
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
+ return classNames;
+ }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ } else {}
+}());
+
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;
+
+var _constants = __webpack_require__(1);
+
+var addChoice = function addChoice(_ref) {
+ var value = _ref.value,
+ label = _ref.label,
+ id = _ref.id,
+ groupId = _ref.groupId,
+ disabled = _ref.disabled,
+ elementId = _ref.elementId,
+ customProperties = _ref.customProperties,
+ placeholder = _ref.placeholder,
+ keyCode = _ref.keyCode;
+ return {
+ type: _constants.ACTION_TYPES.ADD_CHOICE,
+ value: value,
+ label: label,
+ id: id,
+ groupId: groupId,
+ disabled: disabled,
+ elementId: elementId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ };
+};
+
+exports.addChoice = addChoice;
+
+var filterChoices = function filterChoices(results) {
+ return {
+ type: _constants.ACTION_TYPES.FILTER_CHOICES,
+ results: results
+ };
+};
+
+exports.filterChoices = filterChoices;
+
+var activateChoices = function activateChoices() {
+ var active = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+ return {
+ type: _constants.ACTION_TYPES.ACTIVATE_CHOICES,
+ active: active
+ };
+};
+
+exports.activateChoices = activateChoices;
+
+var clearChoices = function clearChoices() {
+ return {
+ type: _constants.ACTION_TYPES.CLEAR_CHOICES
+ };
+};
+
+exports.clearChoices = clearChoices;
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.highlightItem = exports.removeItem = exports.addItem = void 0;
+
+var _constants = __webpack_require__(1);
+
+var addItem = function addItem(_ref) {
+ var value = _ref.value,
+ label = _ref.label,
+ id = _ref.id,
+ choiceId = _ref.choiceId,
+ groupId = _ref.groupId,
+ customProperties = _ref.customProperties,
+ placeholder = _ref.placeholder,
+ keyCode = _ref.keyCode;
+ return {
+ type: _constants.ACTION_TYPES.ADD_ITEM,
+ value: value,
+ label: label,
+ id: id,
+ choiceId: choiceId,
+ groupId: groupId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ };
+};
+
+exports.addItem = addItem;
+
+var removeItem = function removeItem(id, choiceId) {
+ return {
+ type: _constants.ACTION_TYPES.REMOVE_ITEM,
+ id: id,
+ choiceId: choiceId
+ };
+};
+
+exports.removeItem = removeItem;
+
+var highlightItem = function highlightItem(id, highlighted) {
+ return {
+ type: _constants.ACTION_TYPES.HIGHLIGHT_ITEM,
+ id: id,
+ highlighted: highlighted
+ };
+};
+
+exports.highlightItem = highlightItem;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.addGroup = void 0;
+
+var _constants = __webpack_require__(1);
+
+/* eslint-disable import/prefer-default-export */
+var addGroup = function addGroup(value, id, active, disabled) {
+ return {
+ type: _constants.ACTION_TYPES.ADD_GROUP,
+ value: value,
+ id: id,
+ active: active,
+ disabled: disabled
+ };
+};
+
+exports.addGroup = addGroup;
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resetTo = exports.clearAll = void 0;
+
+var clearAll = function clearAll() {
+ return {
+ type: 'CLEAR_ALL'
+ };
+};
+
+exports.clearAll = clearAll;
+
+var resetTo = function resetTo(state) {
+ return {
+ type: 'RESET_TO',
+ state: state
+ };
+};
+
+exports.resetTo = resetTo;
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.setIsLoading = void 0;
+
+/* eslint-disable import/prefer-default-export */
+var setIsLoading = function setIsLoading(isLoading) {
+ return {
+ type: 'SET_IS_LOADING',
+ isLoading: isLoading
+ };
+};
+
+exports.setIsLoading = setIsLoading;
+
+/***/ })
+/******/ ]);
+});
\ No newline at end of file
--- /dev/null
+.choices{position:relative;margin-bottom:24px;font-size:16px}.choices:focus{outline:none}.choices:last-child{margin-bottom:0}.choices.is-disabled .choices__inner,.choices.is-disabled .choices__input{background-color:#eaeaea;cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.choices.is-disabled .choices__item{cursor:not-allowed}.choices[data-type*=select-one]{cursor:pointer}.choices[data-type*=select-one] .choices__inner{padding-bottom:7.5px}.choices[data-type*=select-one] .choices__input{display:block;width:100%;padding:10px;border-bottom:1px solid #ddd;background-color:#fff;margin:0}.choices[data-type*=select-one] .choices__button{background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjMDAwIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);padding:0;background-size:8px;position:absolute;top:50%;right:0;margin-top:-10px;margin-right:25px;height:20px;width:20px;border-radius:10em;opacity:.5}.choices[data-type*=select-one] .choices__button:focus,.choices[data-type*=select-one] .choices__button:hover{opacity:1}.choices[data-type*=select-one] .choices__button:focus{box-shadow:0 0 0 2px #00bcd4}.choices[data-type*=select-one]:after{content:"";height:0;width:0;border-style:solid;border-color:#333 transparent transparent transparent;border-width:5px;position:absolute;right:11.5px;top:50%;margin-top:-2.5px;pointer-events:none}.choices[data-type*=select-one].is-open:after{border-color:transparent transparent #333 transparent;margin-top:-7.5px}.choices[data-type*=select-one][dir=rtl]:after{left:11.5px;right:auto}.choices[data-type*=select-one][dir=rtl] .choices__button{right:auto;left:0;margin-left:25px;margin-right:0}.choices[data-type*=select-multiple] .choices__inner,.choices[data-type*=text] .choices__inner{cursor:text}.choices[data-type*=select-multiple] .choices__button,.choices[data-type*=text] .choices__button{position:relative;display:inline-block;margin:0 -4px 0 8px;padding-left:16px;border-left:1px solid #008fa1;background-image:url(data:image/svg+xml;base64,PHN2ZyB3aWR0aD0iMjEiIGhlaWdodD0iMjEiIHZpZXdCb3g9IjAgMCAyMSAyMSIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj48ZyBmaWxsPSIjRkZGIiBmaWxsLXJ1bGU9ImV2ZW5vZGQiPjxwYXRoIGQ9Ik0yLjU5Mi4wNDRsMTguMzY0IDE4LjM2NC0yLjU0OCAyLjU0OEwuMDQ0IDIuNTkyeiIvPjxwYXRoIGQ9Ik0wIDE4LjM2NEwxOC4zNjQgMGwyLjU0OCAyLjU0OEwyLjU0OCAyMC45MTJ6Ii8+PC9nPjwvc3ZnPg==);background-size:8px;width:8px;line-height:1;opacity:.75;border-radius:0}.choices[data-type*=select-multiple] .choices__button:focus,.choices[data-type*=select-multiple] .choices__button:hover,.choices[data-type*=text] .choices__button:focus,.choices[data-type*=text] .choices__button:hover{opacity:1}.choices__inner{display:inline-block;vertical-align:top;width:100%;background-color:#f9f9f9;padding:7.5px 7.5px 3.75px;border:1px solid #ddd;border-radius:2.5px;font-size:14px;min-height:44px;overflow:hidden}.is-focused .choices__inner,.is-open .choices__inner{border-color:#b7b7b7}.is-open .choices__inner{border-radius:2.5px 2.5px 0 0}.is-flipped.is-open .choices__inner{border-radius:0 0 2.5px 2.5px}.choices__list{margin:0;padding-left:0;list-style:none}.choices__list--single{display:inline-block;padding:4px 16px 4px 4px;width:100%}[dir=rtl] .choices__list--single{padding-right:4px;padding-left:16px}.choices__list--single .choices__item{width:100%}.choices__list--multiple{display:inline}.choices__list--multiple .choices__item{display:inline-block;vertical-align:middle;border-radius:20px;padding:4px 10px;font-size:12px;font-weight:500;margin-right:3.75px;margin-bottom:3.75px;background-color:#00bcd4;border:1px solid #00a5bb;color:#fff;word-break:break-all}.choices__list--multiple .choices__item[data-deletable]{padding-right:5px}[dir=rtl] .choices__list--multiple .choices__item{margin-right:0;margin-left:3.75px}.choices__list--multiple .choices__item.is-highlighted{background-color:#00a5bb;border:1px solid #008fa1}.is-disabled .choices__list--multiple .choices__item{background-color:#aaa;border:1px solid #919191}.choices__list--dropdown{display:none;z-index:1;position:absolute;width:100%;background-color:#fff;border:1px solid #ddd;top:100%;margin-top:-1px;border-bottom-left-radius:2.5px;border-bottom-right-radius:2.5px;overflow:hidden;word-break:break-all}.choices__list--dropdown.is-active{display:block}.is-open .choices__list--dropdown{border-color:#b7b7b7}.is-flipped .choices__list--dropdown{top:auto;bottom:100%;margin-top:0;margin-bottom:-1px;border-radius:.25rem .25rem 0 0}.choices__list--dropdown .choices__list{position:relative;max-height:300px;overflow:auto;-webkit-overflow-scrolling:touch;will-change:scroll-position}.choices__list--dropdown .choices__item{position:relative;padding:10px;font-size:14px}[dir=rtl] .choices__list--dropdown .choices__item{text-align:right}@media (min-width:640px){.choices__list--dropdown .choices__item--selectable{padding-right:100px}.choices__list--dropdown .choices__item--selectable:after{content:attr(data-select-text);font-size:12px;opacity:0;position:absolute;right:10px;top:50%;transform:translateY(-50%)}[dir=rtl] .choices__list--dropdown .choices__item--selectable{text-align:right;padding-left:100px;padding-right:10px}[dir=rtl] .choices__list--dropdown .choices__item--selectable:after{right:auto;left:10px}}.choices__list--dropdown .choices__item--selectable.is-highlighted{background-color:#f2f2f2}.choices__list--dropdown .choices__item--selectable.is-highlighted:after{opacity:.5}.choices__item{cursor:default}.choices__item--selectable{cursor:pointer}.choices__item--disabled{cursor:not-allowed;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;opacity:.5}.choices__heading{font-weight:600;font-size:12px;padding:10px;border-bottom:1px solid #f7f7f7;color:gray}.choices__button{text-indent:-9999px;-webkit-appearance:none;-moz-appearance:none;appearance:none;border:0;background-color:transparent;background-repeat:no-repeat;background-position:center;cursor:pointer}.choices__button:focus{outline:none}.choices__input{display:inline-block;vertical-align:baseline;background-color:#f9f9f9;font-size:14px;margin-bottom:5px;border:0;border-radius:0;max-width:100%;padding:4px 0 4px 2px}.choices__input:focus{outline:0}[dir=rtl] .choices__input{padding-right:2px;padding-left:0}.choices__placeholder{opacity:.5}.choices[data-type*=select-multiple] .choices__input.is-hidden,.choices[data-type*=select-one] .choices__input.is-hidden,.choices__input.is-hidden{display:none}
\ No newline at end of file
--- /dev/null
+/*! choices.js v7.0.0 | (c) 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Choices=t():e.Choices=t()}(window,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/public/assets/scripts/",i(i.s=9)}([function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diff=t.cloneObject=t.existsInArray=t.isIE11=t.fetchFromObject=t.getWindowHeight=t.dispatchEvent=t.sortByScore=t.sortByAlpha=t.calcWidthOfInput=t.strToEl=t.sanitise=t.isScrolledIntoView=t.getAdjacentEl=t.findAncestorByAttrName=t.wrap=t.isElement=t.isType=t.getType=t.generateId=t.generateChars=t.getRandomNumber=void 0;var n=function(e,t){return Math.floor(Math.random()*(t-e)+e)};t.getRandomNumber=n;var o=function(e){for(var t="",i=0;i<e;i++){t+=n(0,36).toString(36)}return t};t.generateChars=o;t.generateId=function(e,t){var i=e.id||e.name&&"".concat(e.name,"-").concat(o(2))||o(4);return i=i.replace(/(:|\.|\[|\]|,)/g,""),i="".concat(t,"-").concat(i)};var r=function(e){return Object.prototype.toString.call(e).slice(8,-1)};t.getType=r;var s=function(e,t){return null!=t&&r(t)===e};t.isType=s;t.isElement=function(e){return e instanceof Element};t.wrap=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.createElement("div");return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)};t.findAncestorByAttrName=function(e,t){for(var i=e;i;){if(i.hasAttribute(t))return i;i=i.parentElement}return null};t.getAdjacentEl=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e&&t){var n=e.parentNode.parentNode,o=Array.from(n.querySelectorAll(t)),r=o.indexOf(e);return o[r+(i>0?1:-1)]}};t.isScrolledIntoView=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e)return i>0?t.scrollTop+t.offsetHeight>=e.offsetTop+e.offsetHeight:e.offsetTop>=t.scrollTop};var a=function(e){return s("String",e)?e.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/</g,"<").replace(/"/g,"""):e};t.sanitise=a;var c,l=(c=document.createElement("div"),function(e){var t=e.trim();c.innerHTML=t;for(var i=c.children[0];c.firstChild;)c.removeChild(c.firstChild);return i});t.strToEl=l;t.calcWidthOfInput=function(e,t){var i=e.value||e.placeholder,n=e.offsetWidth;if(i){var o=l("<span>".concat(a(i),"</span>"));if(o.style.position="absolute",o.style.padding="0",o.style.top="-9999px",o.style.left="-9999px",o.style.width="auto",o.style.whiteSpace="pre",document.body.contains(e)&&window.getComputedStyle){var r=window.getComputedStyle(e);r&&(o.style.fontSize=r.fontSize,o.style.fontFamily=r.fontFamily,o.style.fontWeight=r.fontWeight,o.style.fontStyle=r.fontStyle,o.style.letterSpacing=r.letterSpacing,o.style.textTransform=r.textTransform,o.style.padding=r.padding)}document.body.appendChild(o),requestAnimationFrame(function(){i&&o.offsetWidth!==e.offsetWidth&&(n=o.offsetWidth+4),document.body.removeChild(o),t.call(void 0,"".concat(n,"px"))})}else t.call(void 0,"".concat(n,"px"))};t.sortByAlpha=function(e,t){var i="".concat(e.label||e.value).toLowerCase(),n="".concat(t.label||t.value).toLowerCase();return i<n?-1:i>n?1:0};t.sortByScore=function(e,t){return e.score-t.score};t.dispatchEvent=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=new CustomEvent(t,{detail:i,bubbles:!0,cancelable:!0});return e.dispatchEvent(n)};t.getWindowHeight=function(){var e=document.body,t=document.documentElement;return Math.max(e.scrollHeight,e.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight)};t.fetchFromObject=function e(t,i){var n=i.indexOf(".");return n>-1?e(t[i.substring(0,n)],i.substr(n+1)):t[i]};t.isIE11=function(){return!(!navigator.userAgent.match(/Trident/)||!navigator.userAgent.match(/rv[ :]11/))};t.existsInArray=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"value";return e.some(function(e){return s("String",t)?e[i]===t.trim():e[i]===t})};t.cloneObject=function(e){return JSON.parse(JSON.stringify(e))};t.diff=function(e,t){var i=Object.keys(e).sort(),n=Object.keys(t).sort();return i.filter(function(e){return n.indexOf(e)<0})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SCROLLING_SPEED=t.KEY_CODES=t.ACTION_TYPES=t.EVENTS=t.DEFAULT_CONFIG=t.DEFAULT_CLASSNAMES=void 0;var n=i(0),o={containerOuter:"choices",containerInner:"choices__inner",input:"choices__input",inputCloned:"choices__input--cloned",list:"choices__list",listItems:"choices__list--multiple",listSingle:"choices__list--single",listDropdown:"choices__list--dropdown",item:"choices__item",itemSelectable:"choices__item--selectable",itemDisabled:"choices__item--disabled",itemChoice:"choices__item--choice",placeholder:"choices__placeholder",group:"choices__group",groupHeading:"choices__heading",button:"choices__button",activeState:"is-active",focusState:"is-focused",openState:"is-open",disabledState:"is-disabled",highlightedState:"is-highlighted",hiddenState:"is-hidden",flippedState:"is-flipped",loadingState:"is-loading",noResults:"has-no-results",noChoices:"has-no-choices"};t.DEFAULT_CLASSNAMES=o;var r={items:[],choices:[],silent:!1,renderChoiceLimit:-1,maxItemCount:-1,addItems:!0,addItemFilterFn:null,removeItems:!0,removeItemButton:!1,editItems:!1,duplicateItemsAllowed:!0,delimiter:",",paste:!0,searchEnabled:!0,searchChoices:!0,searchFloor:1,searchResultLimit:4,searchFields:["label","value"],position:"auto",resetScrollPosition:!0,shouldSort:!0,shouldSortItems:!1,sortFn:n.sortByAlpha,placeholder:!0,placeholderValue:null,searchPlaceholderValue:null,prependValue:null,appendValue:null,renderSelectedChoices:"auto",loadingText:"Loading...",noResultsText:"No results found",noChoicesText:"No choices to choose from",itemSelectText:"Press to select",uniqueItemText:"Only unique values can be added",customAddItemText:"Only values matching specific conditions can be added",addItemText:function(e){return'Press Enter to add <b>"'.concat((0,n.sanitise)(e),'"</b>')},maxItemText:function(e){return"Only ".concat(e," values can be added")},itemComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:o};t.DEFAULT_CONFIG=r;t.EVENTS={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"};t.ACTION_TYPES={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"};t.KEY_CODES={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34};t.SCROLLING_SPEED=4},function(e,t,i){"use strict";(function(e,n){var o,r=i(7);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:n;var s=Object(r.a)(o);t.a=s}).call(this,i(3),i(14)(e))},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,o=t.classNames;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,classNames:o}),!(0,n.isElement)(i))throw new TypeError("Invalid element passed");this.isDisabled=!1}var t,i,r;return t=e,(i=[{key:"conceal",value:function(){this.element.classList.add(this.classNames.input),this.element.classList.add(this.classNames.hiddenState),this.element.tabIndex="-1";var e=this.element.getAttribute("style");e&&this.element.setAttribute("data-choice-orig-style",e),this.element.setAttribute("aria-hidden","true"),this.element.setAttribute("data-choice","active")}},{key:"reveal",value:function(){this.element.classList.remove(this.classNames.input),this.element.classList.remove(this.classNames.hiddenState),this.element.removeAttribute("tabindex");var e=this.element.getAttribute("data-choice-orig-style");e?(this.element.removeAttribute("data-choice-orig-style"),this.element.setAttribute("style",e)):this.element.removeAttribute("style"),this.element.removeAttribute("aria-hidden"),this.element.removeAttribute("data-choice"),this.element.value=this.element.value}},{key:"enable",value:function(){this.element.removeAttribute("disabled"),this.element.disabled=!1,this.isDisabled=!1}},{key:"disable",value:function(){this.element.setAttribute("disabled",""),this.element.disabled=!0,this.isDisabled=!0}},{key:"triggerEvent",value:function(e,t){(0,n.dispatchEvent)(this.element,e,t)}},{key:"value",get:function(){return this.element.value}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.TEMPLATES=void 0;var n,o=(n=i(27))&&n.__esModule?n:{default:n},r=i(0);function s(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var a={containerOuter:function(e,t,i,n,o,s){var a=n?'tabindex="0"':"",c=i?'role="listbox"':"",l="";return i&&o&&(c='role="combobox"',l='aria-autocomplete="list"'),(0,r.strToEl)('\n <div\n class="'.concat(e.containerOuter,'"\n data-type="').concat(s,'"\n ').concat(c,"\n ").concat(a,"\n ").concat(l,'\n aria-haspopup="true"\n aria-expanded="false"\n dir="').concat(t,'"\n >\n </div>\n '))},containerInner:function(e){return(0,r.strToEl)('\n <div class="'.concat(e.containerInner,'"></div>\n '))},itemList:function(e,t){var i,n=(0,o.default)(e.list,(s(i={},e.listSingle,t),s(i,e.listItems,!t),i));return(0,r.strToEl)('\n <div class="'.concat(n,'"></div>\n '))},placeholder:function(e,t){return(0,r.strToEl)('\n <div class="'.concat(e.placeholder,'">\n ').concat(t,"\n </div>\n "))},item:function(e,t,i){var n,a,c=t.active?'aria-selected="true"':"",l=t.disabled?'aria-disabled="true"':"",u=(0,o.default)(e.item,(s(n={},e.highlightedState,t.highlighted),s(n,e.itemSelectable,!t.highlighted),s(n,e.placeholder,t.placeholder),n));return i?(u=(0,o.default)(e.item,(s(a={},e.highlightedState,t.highlighted),s(a,e.itemSelectable,!t.disabled),s(a,e.placeholder,t.placeholder),a)),(0,r.strToEl)('\n <div\n class="'.concat(u,'"\n data-item\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,"\"\n data-custom-properties='").concat(t.customProperties,"'\n data-deletable\n ").concat(c,"\n ").concat(l,"\n >\n ").concat(t.label,'\x3c!--\n --\x3e<button\n type="button"\n class="').concat(e.button,'"\n data-button\n aria-label="Remove item: \'').concat(t.value,"'\"\n >\n Remove item\n </button>\n </div>\n "))):(0,r.strToEl)('\n <div\n class="'.concat(u,'"\n data-item\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n ').concat(c,"\n ").concat(l,"\n >\n ").concat(t.label,"\n </div>\n "))},choiceList:function(e,t){var i=t?"":'aria-multiselectable="true"';return(0,r.strToEl)('\n <div\n class="'.concat(e.list,'"\n dir="ltr"\n role="listbox"\n ').concat(i,"\n >\n </div>\n "))},choiceGroup:function(e,t){var i=t.disabled?'aria-disabled="true"':"",n=(0,o.default)(e.group,s({},e.itemDisabled,t.disabled));return(0,r.strToEl)('\n <div\n class="'.concat(n,'"\n data-group\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n role="group"\n ').concat(i,'\n >\n <div class="').concat(e.groupHeading,'">').concat(t.value,"</div>\n </div>\n "))},choice:function(e,t,i){var n,a=t.groupId>0?'role="treeitem"':'role="option"',c=(0,o.default)(e.item,e.itemChoice,(s(n={},e.itemDisabled,t.disabled),s(n,e.itemSelectable,!t.disabled),s(n,e.placeholder,t.placeholder),n));return(0,r.strToEl)('\n <div\n class="'.concat(c,'"\n data-select-text="').concat(i,'"\n data-choice\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n ').concat(t.disabled?'data-choice-disabled aria-disabled="true"':"data-choice-selectable",'\n id="').concat(t.elementId,'"\n ').concat(a,"\n >\n ").concat(t.label,"\n </div>\n "))},input:function(e){var t=(0,o.default)(e.input,e.inputCloned);return(0,r.strToEl)('\n <input\n type="text"\n class="'.concat(t,'"\n autocomplete="off"\n autocapitalize="off"\n spellcheck="false"\n role="textbox"\n aria-autocomplete="list"\n >\n '))},dropdown:function(e){var t=(0,o.default)(e.list,e.listDropdown);return(0,r.strToEl)('\n <div\n class="'.concat(t,'"\n aria-expanded="false"\n >\n </div>\n '))},notice:function(e,t){var i,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=(0,o.default)(e.item,e.itemChoice,(s(i={},e.noResults,"no-results"===n),s(i,e.noChoices,"no-choices"===n),i));return(0,r.strToEl)('\n <div class="'.concat(a,'">\n ').concat(t,"\n </div>\n "))},option:function(e){return(0,r.strToEl)('\n <option value="'.concat(e.value,'" ').concat(e.active?"selected":""," ").concat(e.disabled?"disabled":""," ").concat(e.customProperties?"data-custom-properties=".concat(e.customProperties):"",">").concat(e.label,"</option>\n "))}};t.TEMPLATES=a;var c=a;t.default=c},function(e,t,i){"use strict";i.r(t);var n=i(8),o="object"==typeof self&&self&&self.Object===Object&&self,r=(n.a||o||Function("return this")()).Symbol,s=Object.prototype,a=s.hasOwnProperty,c=s.toString,l=r?r.toStringTag:void 0;var u=function(e){var t=a.call(e,l),i=e[l];try{e[l]=void 0;var n=!0}catch(e){}var o=c.call(e);return n&&(t?e[l]=i:delete e[l]),o},h=Object.prototype.toString;var d=function(e){return h.call(e)},f="[object Null]",p="[object Undefined]",v=r?r.toStringTag:void 0;var m=function(e){return null==e?void 0===e?p:f:v&&v in Object(e)?u(e):d(e)};var g=function(e,t){return function(i){return e(t(i))}}(Object.getPrototypeOf,Object);var _=function(e){return null!=e&&"object"==typeof e},y="[object Object]",b=Function.prototype,E=Object.prototype,S=b.toString,I=E.hasOwnProperty,O=S.call(Object);var C=function(e){if(!_(e)||m(e)!=y)return!1;var t=g(e);if(null===t)return!0;var i=I.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&S.call(i)==O},T=i(2),w={INIT:"@@redux/INIT"};function k(e,t,i){var n;if("function"==typeof t&&void 0===i&&(i=t,t=void 0),void 0!==i){if("function"!=typeof i)throw new Error("Expected the enhancer to be a function.");return i(k)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var o=e,r=t,s=[],a=s,c=!1;function l(){a===s&&(a=s.slice())}function u(){return r}function h(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return l(),a.push(e),function(){if(t){t=!1,l();var i=a.indexOf(e);a.splice(i,1)}}}function d(e){if(!C(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,r=o(r,e)}finally{c=!1}for(var t=s=a,i=0;i<t.length;i++){(0,t[i])()}return e}return d({type:w.INIT}),(n={dispatch:d,subscribe:h,getState:u,replaceReducer:function(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");o=e,d({type:w.INIT})}})[T.a]=function(){var e,t=h;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Expected the observer to be an object.");function i(){e.next&&e.next(u())}return i(),{unsubscribe:t(i)}}})[T.a]=function(){return this},e},n}function A(e,t){var i=t&&t.type;return"Given action "+(i&&'"'+i.toString()+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function L(e){for(var t=Object.keys(e),i={},n=0;n<t.length;n++){var o=t[n];0,"function"==typeof e[o]&&(i[o]=e[o])}var r=Object.keys(i);var s=void 0;try{!function(e){Object.keys(e).forEach(function(t){var i=e[t];if(void 0===i(void 0,{type:w.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===i(void 0,{type:"@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".")}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+w.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(i)}catch(e){s=e}return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(s)throw s;for(var n=!1,o={},a=0;a<r.length;a++){var c=r[a],l=i[c],u=e[c],h=l(u,t);if(void 0===h){var d=A(c,t);throw new Error(d)}o[c]=h,n=n||h!==u}return n?o:e}}function x(e,t){return function(){return t(e.apply(void 0,arguments))}}function P(e,t){if("function"==typeof e)return x(e,t);if("object"!=typeof e||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":typeof e)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var i=Object.keys(e),n={},o=0;o<i.length;o++){var r=i[o],s=e[r];"function"==typeof s&&(n[r]=x(s,t))}return n}function D(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}var j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};function M(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(e){return function(i,n,o){var r,s=e(i,n,o),a=s.dispatch,c={getState:s.getState,dispatch:function(e){return a(e)}};return r=t.map(function(e){return e(c)}),a=D.apply(void 0,r)(s.dispatch),j({},s,{dispatch:a})}}}i.d(t,"createStore",function(){return k}),i.d(t,"combineReducers",function(){return L}),i.d(t,"bindActionCreators",function(){return P}),i.d(t,"applyMiddleware",function(){return M}),i.d(t,"compose",function(){return D})},function(e,t,i){"use strict";function n(e){var t,i=e.Symbol;return"function"==typeof i?i.observable?t=i.observable:(t=i("observable"),i.observable=t):t="@@observable",t}i.d(t,"a",function(){return n})},function(e,t,i){"use strict";(function(e){var i="object"==typeof e&&e&&e.Object===Object&&e;t.a=i}).call(this,i(3))},function(e,t,i){e.exports=i(10)},function(e,t,i){"use strict";var n=v(i(11)),o=v(i(12)),r=v(i(13)),s=i(20),a=i(1),c=i(5),l=i(28),u=i(29),h=i(30),d=i(31),f=i(32),p=i(0);function v(e){return e&&e.__esModule?e:{default:e}}function m(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function g(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var _=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"[data-choice]",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),(0,p.isType)("String",t)){var n=Array.from(document.querySelectorAll(t));if(n.length>1)return this._generateInstances(n,i)}this.config=o.default.all([a.DEFAULT_CONFIG,e.userDefaults,i],{arrayMerge:function(e,t){return[].concat(t)}});var c=(0,p.diff)(this.config,a.DEFAULT_CONFIG);c.length&&console.warn("Unknown config option(s) passed",c.join(", ")),["auto","always"].includes(this.config.renderSelectedChoices)||(this.config.renderSelectedChoices="auto");var l=(0,p.isType)("String",t)?document.querySelector(t):t;return l?(this._isTextElement="text"===l.type,this._isSelectOneElement="select-one"===l.type,this._isSelectMultipleElement="select-multiple"===l.type,this._isSelectElement=this._isSelectOneElement||this._isSelectMultipleElement,this._isTextElement?this.passedElement=new s.WrappedInput({element:l,classNames:this.config.classNames,delimiter:this.config.delimiter}):this._isSelectElement&&(this.passedElement=new s.WrappedSelect({element:l,classNames:this.config.classNames})),this.passedElement?(!0===this.config.shouldSortItems&&this._isSelectOneElement&&!this.config.silent&&console.warn("shouldSortElements: Type of passed element is 'select-one', falling back to false."),this.initialised=!1,this._store=new r.default(this.render),this._initialState={},this._currentState={},this._prevState={},this._currentValue="",this._canSearch=this.config.searchEnabled,this._isScrollingOnIe=!1,this._highlightPosition=0,this._wasTap=!0,this._placeholderValue=this._generatePlaceholderValue(),this._baseId=(0,p.generateId)(this.passedElement.element,"choices-"),this._direction=this.passedElement.element.getAttribute("dir")||"ltr",this._idNames={itemChoice:"item-choice"},this._presetChoices=this.config.choices,this._presetItems=this.config.items,this.passedElement.value&&(this._presetItems=this._presetItems.concat(this.passedElement.value.split(this.config.delimiter))),this._render=this._render.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onClick=this._onClick.bind(this),this._onTouchMove=this._onTouchMove.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseOver=this._onMouseOver.bind(this),this._onFormReset=this._onFormReset.bind(this),this._onAKey=this._onAKey.bind(this),this._onEnterKey=this._onEnterKey.bind(this),this._onEscapeKey=this._onEscapeKey.bind(this),this._onDirectionKey=this._onDirectionKey.bind(this),this._onDeleteKey=this._onDeleteKey.bind(this),"active"===this.passedElement.element.getAttribute("data-choice")&&console.warn("Trying to initialise Choices on element already initialised"),void this.init()):console.error("Passed element was of an invalid type")):console.error("Could not find passed element or passed element was of an invalid type")}var t,i,v;return t=e,(i=[{key:"init",value:function(){if(!this.initialised){this._createTemplates(),this._createElements(),this._createStructure(),this._initialState=(0,p.cloneObject)(this._store.state),this._store.subscribe(this._render),this._render(),this._addEventListeners(),(!this.config.addItems||this.passedElement.element.hasAttribute("disabled"))&&this.disable(),this.initialised=!0;var e=this.config.callbackOnInit;e&&(0,p.isType)("Function",e)&&e.call(this)}}},{key:"destroy",value:function(){this.initialised&&(this._removeEventListeners(),this.passedElement.reveal(),this.containerOuter.unwrap(this.passedElement.element),this._isSelectElement&&(this.passedElement.options=this._presetChoices),this.clearStore(),this.config.templates=null,this.initialised=!1)}},{key:"enable",value:function(){return this.passedElement.isDisabled&&this.passedElement.enable(),this.containerOuter.isDisabled&&(this._addEventListeners(),this.input.enable(),this.containerOuter.enable()),this}},{key:"disable",value:function(){return this.passedElement.isDisabled||this.passedElement.disable(),this.containerOuter.isDisabled||(this._removeEventListeners(),this.input.disable(),this.containerOuter.disable()),this}},{key:"highlightItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)return this;var i=e.id,n=e.groupId,o=void 0===n?-1:n,r=e.value,s=void 0===r?"":r,c=e.label,l=void 0===c?"":c,h=o>=0?this._store.getGroupById(o):null;return this._store.dispatch((0,u.highlightItem)(i,!0)),t&&this.passedElement.triggerEvent(a.EVENTS.highlightItem,{id:i,value:s,label:l,groupValue:h&&h.value?h.value:null}),this}},{key:"unhighlightItem",value:function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,o=e.value,r=void 0===o?"":o,s=e.label,c=void 0===s?"":s,l=n>=0?this._store.getGroupById(n):null;return this._store.dispatch((0,u.highlightItem)(t,!1)),this.passedElement.triggerEvent(a.EVENTS.highlightItem,{id:t,value:r,label:c,groupValue:l&&l.value?l.value:null}),this}},{key:"highlightAll",value:function(){var e=this;return this._store.items.forEach(function(t){return e.highlightItem(t)}),this}},{key:"unhighlightAll",value:function(){var e=this;return this._store.items.forEach(function(t){return e.unhighlightItem(t)}),this}},{key:"removeActiveItemsByValue",value:function(e){var t=this;return this._store.activeItems.filter(function(t){return t.value===e}).forEach(function(e){return t._removeItem(e)}),this}},{key:"removeActiveItems",value:function(e){var t=this;return this._store.activeItems.filter(function(t){return t.id!==e}).forEach(function(e){return t._removeItem(e)}),this}},{key:"removeHighlightedItems",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._store.highlightedActiveItems.forEach(function(i){e._removeItem(i),t&&e._triggerChange(i.value)}),this}},{key:"showDropdown",value:function(e){var t=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow()),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(a.EVENTS.showDropdown,{})}),this)}},{key:"hideDropdown",value:function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame(function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(a.EVENTS.hideDropdown,{})}),this):this}},{key:"getValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this._store.activeItems.reduce(function(t,i){var n=e?i.value:i;return t.push(n),t},[]);return this._isSelectOneElement?t[0]:t}},{key:"setValue",value:function(e){var t=this;return this.initialised?([].concat(e).forEach(function(e){return t._setChoiceOrItem(e)}),this):this}},{key:"setChoiceByValue",value:function(e){var t=this;return!this.initialised||this._isTextElement?this:(((0,p.isType)("Array",e)?e:[e]).forEach(function(e){return t._findAndSelectChoiceByValue(e)}),this)}},{key:"setChoices",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this._isSelectElement||!i)return this;o&&this.clearChoices(),this.containerOuter.removeLoadingState();return this._setLoading(!0),t.forEach(function(t){t.choices?e._addGroup({group:t,id:t.id||null,valueKey:i,labelKey:n}):e._addChoice({value:t[i],label:t[n],isSelected:t.selected,isDisabled:t.disabled,customProperties:t.customProperties,placeholder:t.placeholder})}),this._setLoading(!1),this}},{key:"clearChoices",value:function(){this._store.dispatch((0,l.clearChoices)())}},{key:"clearStore",value:function(){return this._store.dispatch((0,d.clearAll)()),this}},{key:"clearInput",value:function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0))),this}},{key:"ajax",value:function(e){var t=this;return this.initialised&&this._isSelectElement&&e?(requestAnimationFrame(function(){return t._handleLoadingState(!0)}),e(this._ajaxCallback()),this):this}},{key:"_render",value:function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}}},{key:"_renderChoices",value:function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,o=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return e.choiceList.scrollToTop()}),i.length>=1&&!this._isSearching){var r=n.filter(function(e){return!0===e.placeholder&&-1===e.groupId});r.length>=1&&(o=this._createChoicesFragment(r,o)),o=this._createGroupsFragment(i,n,o)}else n.length>=1&&(o=this._createChoicesFragment(n,o));if(o.childNodes&&o.childNodes.length>0){var s=this._store.activeItems,a=this._canAddItem(s,this.input.value);a.response?(this.choiceList.append(o),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",a.notice))}else{var c,l;this._isSearching?(l=(0,p.isType)("Function",this.config.noResultsText)?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate("notice",l,"no-results")):(l=(0,p.isType)("Function",this.config.noChoicesText)?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate("notice",l,"no-choices")),this.choiceList.append(c)}}},{key:"_renderItems",value:function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)}},{key:"_createGroupsFragment",value:function(e,t,i){var n=this,o=i||document.createDocumentFragment();return this.config.shouldSort&&e.sort(this.config.sortFn),e.forEach(function(e){var i=function(e){return t.filter(function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&("always"===n.config.renderSelectedChoices||!t.selected)})}(e);if(i.length>=1){var r=n._getTemplate("choiceGroup",e);o.appendChild(r),n._createChoicesFragment(i,o,!0)}}),o}},{key:"_createChoicesFragment",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=t||document.createDocumentFragment(),r=this.config,s=r.renderSelectedChoices,a=r.searchResultLimit,c=r.renderChoiceLimit,l=this._isSearching?p.sortByScore:this.config.sortFn,u=function(e){if("auto"!==s||(i._isSelectOneElement||!e.selected)){var t=i._getTemplate("choice",e,i.config.itemSelectText);o.appendChild(t)}},h=e;"auto"!==s||this._isSelectOneElement||(h=e.filter(function(e){return!e.selected}));var d=h.reduce(function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e},{placeholderChoices:[],normalChoices:[]}),f=d.placeholderChoices,v=d.normalChoices;(this.config.shouldSort||this._isSearching)&&v.sort(l);var m=h.length,g=[].concat(f,v);this._isSearching?m=a:c>0&&!n&&(m=c);for(var _=0;_<m;_+=1)g[_]&&u(g[_]);return o}},{key:"_createItemsFragment",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.config,o=n.shouldSortItems,r=n.sortFn,s=n.removeItemButton,a=i||document.createDocumentFragment();o&&!this._isSelectOneElement&&e.sort(r),this._isTextElement?this.passedElement.value=e:this.passedElement.options=e;return e.forEach(function(e){return function(e){var i=t._getTemplate("item",e,s);a.appendChild(i)}(e)}),a}},{key:"_triggerChange",value:function(e){null!=e&&this.passedElement.triggerEvent(a.EVENTS.change,{value:e})}},{key:"_selectPlaceholderChoice",value:function(){var e=this._store.placeholderChoice;e&&(this._addItem({value:e.value,label:e.label,choiceId:e.id,groupId:e.groupId,placeholder:e.placeholder}),this._triggerChange(e.value))}},{key:"_handleButtonAction",value:function(e,t){if(e&&t&&this.config.removeItems&&this.config.removeItemButton){var i=t.parentNode.getAttribute("data-id"),n=e.find(function(e){return e.id===parseInt(i,10)});this._removeItem(n),this._triggerChange(n.value),this._isSelectOneElement&&this._selectPlaceholderChoice()}}},{key:"_handleItemAction",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e&&t&&this.config.removeItems&&!this._isSelectOneElement){var o=t.getAttribute("data-id");e.forEach(function(e){e.id!==parseInt(o,10)||e.highlighted?!n&&e.highlighted&&i.unhighlightItem(e):i.highlightItem(e)}),this.input.focus()}}},{key:"_handleChoiceAction",value:function(e,t){if(e&&t){var i=t.getAttribute("data-id"),n=this._store.getChoiceById(i),o=e[0]&&e[0].keyCode?e[0].keyCode:null,r=this.dropdown.isActive;if(n.keyCode=o,this.passedElement.triggerEvent(a.EVENTS.choice,{choice:n}),n&&!n.selected&&!n.disabled)this._canAddItem(e,n.value).response&&(this._addItem({value:n.value,label:n.label,choiceId:n.id,groupId:n.groupId,customProperties:n.customProperties,placeholder:n.placeholder,keyCode:n.keyCode}),this._triggerChange(n.value));this.clearInput(),r&&this._isSelectOneElement&&(this.hideDropdown(!0),this.containerOuter.focus())}}},{key:"_handleBackspace",value:function(e){if(this.config.removeItems&&e){var t=e[e.length-1],i=e.some(function(e){return e.highlighted});this.config.editItems&&!i&&t?(this.input.value=t.value,this.input.setWidth(),this._removeItem(t),this._triggerChange(t.value)):(i||this.highlightItem(t,!1),this.removeHighlightedItems(!0))}}},{key:"_setLoading",value:function(e){this._store.dispatch((0,f.setIsLoading)(e))}},{key:"_handleLoadingState",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.itemList.getChild(".".concat(this.config.classNames.placeholder));e?(this.disable(),this.containerOuter.addLoadingState(),this._isSelectOneElement?t?t.innerHTML=this.config.loadingText:(t=this._getTemplate("placeholder",this.config.loadingText),this.itemList.append(t)):this.input.placeholder=this.config.loadingText):(this.enable(),this.containerOuter.removeLoadingState(),this._isSelectOneElement?t.innerHTML=this._placeholderValue||"":this.input.placeholder=this._placeholderValue||"")}},{key:"_handleSearch",value:function(e){if(e&&this.input.isFocussed){var t=this._store.choices,i=this.config,n=i.searchFloor,o=i.searchChoices,r=t.some(function(e){return!e.active});if(e&&e.length>=n){var s=o?this._searchChoices(e):0;this.passedElement.triggerEvent(a.EVENTS.search,{value:e,resultCount:s})}else r&&(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0)))}}},{key:"_canAddItem",value:function(e,t){var i=!0,n=(0,p.isType)("Function",this.config.addItemText)?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var o=(0,p.existsInArray)(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=(0,p.isType)("Function",this.config.maxItemText)?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&o&&i&&(i=!1,n=(0,p.isType)("Function",this.config.uniqueItemText)?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&(0,p.isType)("Function",this.config.addItemFilterFn)&&!this.config.addItemFilterFn(t)&&(i=!1,n=(0,p.isType)("Function",this.config.customAddItemText)?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}}},{key:"_ajaxCallback",value:function(){var e=this;return function(t,i,n){if(t&&i){var o=(0,p.isType)("Object",t)?[t]:t;o&&(0,p.isType)("Array",o)&&o.length?(e._handleLoadingState(!1),e._setLoading(!0),o.forEach(function(t){t.choices?e._addGroup({group:t,id:t.id||null,valueKey:i,labelKey:n}):e._addChoice({value:(0,p.fetchFromObject)(t,i),label:(0,p.fetchFromObject)(t,n),isSelected:t.selected,isDisabled:t.disabled,customProperties:t.customProperties,placeholder:t.placeholder})}),e._setLoading(!1),e._isSelectOneElement&&e._selectPlaceholderChoice()):e._handleLoadingState(!1)}}}},{key:"_searchChoices",value:function(e){var t=(0,p.isType)("String",e)?e.trim():e,i=(0,p.isType)("String",this._currentValue)?this._currentValue.trim():this._currentValue;if(t.length<1&&t==="".concat(i," "))return 0;var o=this._store.searchableChoices,r=t,s=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:s}),c=new n.default(o,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch((0,l.filterChoices)(c)),c.length}},{key:"_addEventListeners",value:function(){document.addEventListener("keyup",this._onKeyUp),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("click",this._onClick),document.addEventListener("touchmove",this._onTouchMove),document.addEventListener("touchend",this._onTouchEnd),document.addEventListener("mousedown",this._onMouseDown),document.addEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus),this.containerOuter.element.addEventListener("blur",this._onBlur)),this.input.element.addEventListener("focus",this._onFocus),this.input.element.addEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset),this.input.addEventListeners()}},{key:"_removeEventListeners",value:function(){document.removeEventListener("keyup",this._onKeyUp),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("click",this._onClick),document.removeEventListener("touchmove",this._onTouchMove),document.removeEventListener("touchend",this._onTouchEnd),document.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()}},{key:"_onKeyDown",value:function(e){var t,i=e.target,n=e.keyCode,o=e.ctrlKey,r=e.metaKey;if(i===this.input.element||this.containerOuter.element.contains(i)){var s=this._store.activeItems,c=this.input.isFocussed,l=this.dropdown.isActive,u=this.itemList.hasChildren,h=String.fromCharCode(n),d=a.KEY_CODES.BACK_KEY,f=a.KEY_CODES.DELETE_KEY,p=a.KEY_CODES.ENTER_KEY,v=a.KEY_CODES.A_KEY,g=a.KEY_CODES.ESC_KEY,_=a.KEY_CODES.UP_KEY,y=a.KEY_CODES.DOWN_KEY,b=a.KEY_CODES.PAGE_UP_KEY,E=a.KEY_CODES.PAGE_DOWN_KEY,S=o||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var I=(m(t={},v,this._onAKey),m(t,p,this._onEnterKey),m(t,g,this._onEscapeKey),m(t,_,this._onDirectionKey),m(t,b,this._onDirectionKey),m(t,y,this._onDirectionKey),m(t,E,this._onDirectionKey),m(t,f,this._onDeleteKey),m(t,d,this._onDeleteKey),t);I[n]&&I[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:s,hasFocusedInput:c,hasActiveDropdown:l,hasItems:u,hasCtrlDownKeyPressed:S})}}},{key:"_onKeyUp",value:function(e){var t=e.target,i=e.keyCode;if(t===this.input.element){var n=this.input.value,o=this._store.activeItems,r=this._canAddItem(o,n),s=a.KEY_CODES.BACK_KEY,c=a.KEY_CODES.DELETE_KEY;if(this._isTextElement){if(r.notice&&n){var u=this._getTemplate("notice",r.notice);this.dropdown.element.innerHTML=u.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var h=(i===s||i===c)&&!t.value,d=!this._isTextElement&&this._isSearching,f=this._canSearch&&r.response;h&&d?(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0))):f&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled}}},{key:"_onAKey",value:function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())}},{key:"_onEnterKey",value:function(e){var t=e.event,i=e.target,n=e.activeItems,o=e.hasActiveDropdown,r=a.KEY_CODES.ENTER_KEY,s=i.hasAttribute("data-button");if(this._isTextElement&&i.value){var c=this.input.value;this._canAddItem(n,c).response&&(this.hideDropdown(!0),this._addItem({value:c}),this._triggerChange(c),this.clearInput())}if(s&&(this._handleButtonAction(n,i),t.preventDefault()),o){var l=this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));l&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,l)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())}},{key:"_onEscapeKey",value:function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())}},{key:"_onDirectionKey",value:function(e){var t=e.event,i=e.hasActiveDropdown,n=e.keyCode,o=e.metaKey,r=a.KEY_CODES.DOWN_KEY,s=a.KEY_CODES.PAGE_UP_KEY,c=a.KEY_CODES.PAGE_DOWN_KEY;if(i||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var l,u=n===r||n===c?1:-1;if(o||n===c||n===s)l=u>0?Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]")).pop():this.dropdown.element.querySelector("[data-choice-selectable]");else{var h=this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));l=h?(0,p.getAdjacentEl)(h,"[data-choice-selectable]",u):this.dropdown.element.querySelector("[data-choice-selectable]")}l&&((0,p.isScrolledIntoView)(l,this.choiceList.element,u)||this.choiceList.scrollToChoice(l,u),this._highlightChoice(l)),t.preventDefault()}}},{key:"_onDeleteKey",value:function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,o=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(o),t.preventDefault())}},{key:"_onTouchMove",value:function(){this._wasTap&&(this._wasTap=!1)}},{key:"_onTouchEnd",value:function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation());this._wasTap=!0}},{key:"_onMouseDown",value:function(e){var t=e.target,i=e.shiftKey;if(this.choiceList.element.contains(t)&&(0,p.isIE11)()&&(this._isScrollingOnIe=!0),this.containerOuter.element.contains(t)&&t!==this.input.element){var n=this._store.activeItems,o=i,r=(0,p.findAncestorByAttrName)(t,"data-button"),s=(0,p.findAncestorByAttrName)(t,"data-item"),a=(0,p.findAncestorByAttrName)(t,"data-choice");r?this._handleButtonAction(n,r):s?this._handleItemAction(n,s,o):a&&this._handleChoiceAction(n,a),e.preventDefault()}}},{key:"_onMouseOver",value:function(e){var t=e.target;(t===this.dropdown||this.dropdown.element.contains(t))&&t.hasAttribute("data-choice")&&this._highlightChoice(t)}},{key:"_onClick",value:function(e){var t=e.target;this.containerOuter.element.contains(t)?this.dropdown.isActive||this.containerOuter.isDisabled?this._isSelectOneElement&&t!==this.input.element&&!this.dropdown.element.contains(t)&&this.hideDropdown():this._isTextElement?document.activeElement!==this.input.element&&this.input.focus():(this.showDropdown(),this.containerOuter.focus()):(this._store.highlightedActiveItems&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))}},{key:"_onFocus",value:function(e){var t=this,i=e.target;this.containerOuter.element.contains(i)&&{text:function(){i===t.input.element&&t.containerOuter.addFocusState()},"select-one":function(){t.containerOuter.addFocusState(),i===t.input.element&&t.showDropdown(!0)},"select-multiple":function(){i===t.input.element&&(t.showDropdown(!0),t.containerOuter.addFocusState())}}[this.passedElement.element.type]()}},{key:"_onBlur",value:function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n=this._store.activeItems.some(function(e){return e.highlighted});({text:function(){i===t.input.element&&(t.containerOuter.removeFocusState(),n&&t.unhighlightAll(),t.hideDropdown(!0))},"select-one":function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},"select-multiple":function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),n&&t.unhighlightAll())}})[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()}},{key:"_onFormReset",value:function(){this._store.dispatch((0,d.resetTo)(this._initialState))}},{key:"_highlightChoice",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(i.length){var n=t;Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState))).forEach(function(t){t.classList.remove(e.config.classNames.highlightedState),t.setAttribute("aria-selected","false")}),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(a.EVENTS.highlightChoice,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}}},{key:"_addItem",value:function(e){var t=e.value,i=e.label,n=void 0===i?null:i,o=e.choiceId,r=void 0===o?-1:o,s=e.groupId,c=void 0===s?-1:s,l=e.customProperties,h=void 0===l?null:l,d=e.placeholder,f=void 0!==d&&d,v=e.keyCode,m=void 0===v?null:v,g=(0,p.isType)("String",t)?t.trim():t,_=m,y=h,b=this._store.items,E=n||g,S=parseInt(r,10)||-1,I=c>=0?this._store.getGroupById(c):null,O=b?b.length+1:1;return this.config.prependValue&&(g=this.config.prependValue+g.toString()),this.config.appendValue&&(g+=this.config.appendValue.toString()),this._store.dispatch((0,u.addItem)({value:g,label:E,id:O,choiceId:S,groupId:c,customProperties:h,placeholder:f,keyCode:_})),this._isSelectOneElement&&this.removeActiveItems(O),this.passedElement.triggerEvent(a.EVENTS.addItem,{id:O,value:g,label:E,customProperties:y,groupValue:I&&I.value?I.value:void 0,keyCode:_}),this}},{key:"_removeItem",value:function(e){if(!e||!(0,p.isType)("Object",e))return this;var t=e.id,i=e.value,n=e.label,o=e.choiceId,r=e.groupId,s=r>=0?this._store.getGroupById(r):null;return this._store.dispatch((0,u.removeItem)(t,o)),s&&s.value?this.passedElement.triggerEvent(a.EVENTS.removeItem,{id:t,value:i,label:n,groupValue:s.value}):this.passedElement.triggerEvent(a.EVENTS.removeItem,{id:t,value:i,label:n}),this}},{key:"_addChoice",value:function(e){var t=e.value,i=e.label,n=void 0===i?null:i,o=e.isSelected,r=void 0!==o&&o,s=e.isDisabled,a=void 0!==s&&s,c=e.groupId,u=void 0===c?-1:c,h=e.customProperties,d=void 0===h?null:h,f=e.placeholder,p=void 0!==f&&f,v=e.keyCode,m=void 0===v?null:v;if(null!=t){var g=this._store.choices,_=n||t,y=g?g.length+1:1,b="".concat(this._baseId,"-").concat(this._idNames.itemChoice,"-").concat(y);this._store.dispatch((0,l.addChoice)({value:t,label:_,id:y,groupId:u,disabled:a,elementId:b,customProperties:d,placeholder:p,keyCode:m})),r&&this._addItem({value:t,label:_,choiceId:y,customProperties:d,placeholder:p,keyCode:m})}}},{key:"_addGroup",value:function(e){var t=this,i=e.group,n=e.id,o=e.valueKey,r=void 0===o?"value":o,s=e.labelKey,a=void 0===s?"label":s,c=(0,p.isType)("Object",i)?i.choices:Array.from(i.getElementsByTagName("OPTION")),l=n||Math.floor((new Date).valueOf()*Math.random()),u=!!i.disabled&&i.disabled;if(c){this._store.dispatch((0,h.addGroup)(i.label,l,!0,u));c.forEach(function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:(0,p.isType)("Object",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})})}else this._store.dispatch((0,h.addGroup)(i.label,i.id,!1,i.disabled))}},{key:"_getTemplate",value:function(e){var t;if(!e)return null;for(var i=this.config,n=i.templates,o=i.classNames,r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];return(t=n[e]).call.apply(t,[this,o].concat(s))}},{key:"_createTemplates",value:function(){var e=this.config.callbackOnCreateTemplates,t={};e&&(0,p.isType)("Function",e)&&(t=e.call(this,p.strToEl)),this.config.templates=(0,o.default)(c.TEMPLATES,t)}},{key:"_createElements",value:function(){this.containerOuter=new s.Container({element:this._getTemplate("containerOuter",this._direction,this._isSelectElement,this._isSelectOneElement,this.config.searchEnabled,this.passedElement.element.type),classNames:this.config.classNames,type:this.passedElement.element.type,position:this.config.position}),this.containerInner=new s.Container({element:this._getTemplate("containerInner"),classNames:this.config.classNames,type:this.passedElement.element.type,position:this.config.position}),this.input=new s.Input({element:this._getTemplate("input"),classNames:this.config.classNames,type:this.passedElement.element.type}),this.choiceList=new s.List({element:this._getTemplate("choiceList",this._isSelectOneElement)}),this.itemList=new s.List({element:this._getTemplate("itemList",this._isSelectOneElement)}),this.dropdown=new s.Dropdown({element:this._getTemplate("dropdown"),classNames:this.config.classNames,type:this.passedElement.element.type})}},{key:"_createStructure",value:function(){this.passedElement.conceal(),this.containerInner.wrap(this.passedElement.element),this.containerOuter.wrap(this.containerInner.element),this._isSelectOneElement?this.input.placeholder=this.config.searchPlaceholderValue||"":this._placeholderValue&&(this.input.placeholder=this._placeholderValue,this.input.setWidth(!0)),this.containerOuter.element.appendChild(this.containerInner.element),this.containerOuter.element.appendChild(this.dropdown.element),this.containerInner.element.appendChild(this.itemList.element),this._isTextElement||this.dropdown.element.appendChild(this.choiceList.element),this._isSelectOneElement?this.config.searchEnabled&&this.dropdown.element.insertBefore(this.input.element,this.dropdown.element.firstChild):this.containerInner.element.appendChild(this.input.element),this._isSelectElement?this._addPredefinedChoices():this._isTextElement&&this._addPredefinedItems()}},{key:"_addPredefinedChoices",value:function(){var e=this,t=this.passedElement.optionGroups;if(this._highlightPosition=0,this._isSearching=!1,this._setLoading(!0),t&&t.length){var i=this.passedElement.placeholderOption;i&&"SELECT"===i.parentNode.tagName&&this._addChoice({value:i.value,label:i.innerHTML,isSelected:i.selected,isDisabled:i.disabled,placeholder:!0}),t.forEach(function(t){return e._addGroup({group:t,id:t.id||null})})}else{var n=this.passedElement.options,o=this.config.sortFn,r=this._presetChoices;n.forEach(function(e){r.push({value:e.value,label:e.innerHTML,selected:e.selected,disabled:e.disabled||e.parentNode.disabled,placeholder:e.hasAttribute("placeholder"),customProperties:e.getAttribute("data-custom-properties")})}),this.config.shouldSort&&r.sort(o);var s=r.some(function(e){return e.selected});r.forEach(function(t,i){return function(t,i){var n=t.value,o=t.label,r=t.customProperties,a=t.placeholder;if(e._isSelectElement)if(t.choices)e._addGroup({group:t,id:t.id||null});else{var c=e._isSelectOneElement&&!s&&0===i,l=!!c||t.selected,u=!c&&t.disabled;e._addChoice({value:n,label:o,isSelected:l,isDisabled:u,customProperties:r,placeholder:a})}else e._addChoice({value:n,label:o,isSelected:t.selected,isDisabled:t.disabled,customProperties:r,placeholder:a})}(t,i)})}this._setLoading(!1)}},{key:"_addPredefinedItems",value:function(){var e=this;this._presetItems.forEach(function(t){return function(t){var i=(0,p.getType)(t);"Object"===i&&t.value?e._addItem({value:t.value,label:t.label,choiceId:t.id,customProperties:t.customProperties,placeholder:t.placeholder}):"String"===i&&e._addItem({value:t})}(t)})}},{key:"_setChoiceOrItem",value:function(e){var t=this;({object:function(){e.value&&(t._isTextElement?t._addItem({value:e.value,label:e.label,choiceId:e.id,customProperties:e.customProperties,placeholder:e.placeholder}):t._addChoice({value:e.value,label:e.label,isSelected:!0,isDisabled:!1,customProperties:e.customProperties,placeholder:e.placeholder}))},string:function(){t._isTextElement?t._addItem({value:e}):t._addChoice({value:e,label:e,isSelected:!0,isDisabled:!1})}})[(0,p.getType)(e).toLowerCase()]()}},{key:"_findAndSelectChoiceByValue",value:function(e){var t=this,i=this._store.choices.find(function(i){return t.config.itemComparer(i.value,e)});i&&!i.selected&&this._addItem({value:i.value,label:i.label,choiceId:i.id,groupId:i.groupId,customProperties:i.customProperties,placeholder:i.placeholder,keyCode:i.keyCode})}},{key:"_generateInstances",value:function(t,i){return t.reduce(function(t,n){return t.push(new e(n,i)),t},[this])}},{key:"_generatePlaceholderValue",value:function(){return!this._isSelectOneElement&&(!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.element.getAttribute("placeholder")))}}])&&g(t.prototype,i),v&&g(t,v),e}();_.userDefaults={},e.exports=_},function(e,t,i){
+/*!
+ * Fuse.js v3.4.2 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+var n;n=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s="./src/index.js")}({"./src/bitap/bitap_matched_indices.js":
+/*!********************************************!*\
+ !*** ./src/bitap/bitap_matched_indices.js ***!
+ \********************************************/
+/*! no static exports found */function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,o=-1,r=0,s=e.length;r<s;r+=1){var a=e[r];a&&-1===n?n=r:a||-1===n||((o=r-1)-n+1>=t&&i.push([n,o]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},"./src/bitap/bitap_pattern_alphabet.js":
+/*!*********************************************!*\
+ !*** ./src/bitap/bitap_pattern_alphabet.js ***!
+ \*********************************************/
+/*! no static exports found */function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n<i;n+=1)t[e.charAt(n)]=0;for(var o=0;o<i;o+=1)t[e.charAt(o)]|=1<<i-o-1;return t}},"./src/bitap/bitap_regex_search.js":
+/*!*****************************************!*\
+ !*** ./src/bitap/bitap_regex_search.js ***!
+ \*****************************************/
+/*! no static exports found */function(e,t){var i=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(i,"\\$&").replace(n,"|")),r=e.match(o),s=!!r,a=[];if(s)for(var c=0,l=r.length;c<l;c+=1){var u=r[c];a.push([e.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},"./src/bitap/bitap_score.js":
+/*!**********************************!*\
+ !*** ./src/bitap/bitap_score.js ***!
+ \**********************************/
+/*! no static exports found */function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,o=t.currentLocation,r=void 0===o?0:o,s=t.expectedLocation,a=void 0===s?0:s,c=t.distance,l=void 0===c?100:c,u=n/e.length,h=Math.abs(a-r);return l?u+h/l:h?1:u}},"./src/bitap/bitap_search.js":
+/*!***********************************!*\
+ !*** ./src/bitap/bitap_search.js ***!
+ \***********************************/
+/*! no static exports found */function(e,t,i){var n=i(/*! ./bitap_score */"./src/bitap/bitap_score.js"),o=i(/*! ./bitap_matched_indices */"./src/bitap/bitap_matched_indices.js");e.exports=function(e,t,i,r){for(var s=r.location,a=void 0===s?0:s,c=r.distance,l=void 0===c?100:c,u=r.threshold,h=void 0===u?.6:u,d=r.findAllMatches,f=void 0!==d&&d,p=r.minMatchCharLength,v=void 0===p?1:p,m=a,g=e.length,_=h,y=e.indexOf(t,m),b=t.length,E=[],S=0;S<g;S+=1)E[S]=0;if(-1!==y){var I=n(t,{errors:0,currentLocation:y,expectedLocation:m,distance:l});if(_=Math.min(I,_),-1!==(y=e.lastIndexOf(t,m+b))){var O=n(t,{errors:0,currentLocation:y,expectedLocation:m,distance:l});_=Math.min(O,_)}}y=-1;for(var C=[],T=1,w=b+g,k=1<<b-1,A=0;A<b;A+=1){for(var L=0,x=w;L<x;){n(t,{errors:A,currentLocation:m+x,expectedLocation:m,distance:l})<=_?L=x:w=x,x=Math.floor((w-L)/2+L)}w=x;var P=Math.max(1,m-x+1),D=f?g:Math.min(m+x,g)+b,j=Array(D+2);j[D+1]=(1<<A)-1;for(var M=D;M>=P;M-=1){var N=M-1,F=i[e.charAt(N)];if(F&&(E[N]=1),j[M]=(j[M+1]<<1|1)&F,0!==A&&(j[M]|=(C[M+1]|C[M])<<1|1|C[M+1]),j[M]&k&&(T=n(t,{errors:A,currentLocation:N,expectedLocation:m,distance:l}))<=_){if(_=T,(y=N)<=m)break;P=Math.max(1,2*m-y)}}if(n(t,{errors:A+1,currentLocation:m,expectedLocation:m,distance:l})>_)break;C=j}return{isMatch:y>=0,score:0===T?.001:T,matchedIndices:o(E,v)}}},"./src/bitap/index.js":
+/*!****************************!*\
+ !*** ./src/bitap/index.js ***!
+ \****************************/
+/*! no static exports found */function(e,t,i){function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=i(/*! ./bitap_regex_search */"./src/bitap/bitap_regex_search.js"),r=i(/*! ./bitap_search */"./src/bitap/bitap_search.js"),s=i(/*! ./bitap_pattern_alphabet */"./src/bitap/bitap_pattern_alphabet.js"),a=function(){function e(t,i){var n=i.location,o=void 0===n?0:n,r=i.distance,a=void 0===r?100:r,c=i.threshold,l=void 0===c?.6:c,u=i.maxPatternLength,h=void 0===u?32:u,d=i.isCaseSensitive,f=void 0!==d&&d,p=i.tokenSeparator,v=void 0===p?/ +/g:p,m=i.findAllMatches,g=void 0!==m&&m,_=i.minMatchCharLength,y=void 0===_?1:_;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:a,threshold:l,maxPatternLength:h,isCaseSensitive:f,tokenSeparator:v,findAllMatches:g,minMatchCharLength:y},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=h&&(this.patternAlphabet=s(this.pattern))}var t,i,a;return t=e,(i=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,i=t.maxPatternLength,n=t.tokenSeparator;if(this.pattern.length>i)return o(e,this.pattern,n);var s=this.options,a=s.location,c=s.distance,l=s.threshold,u=s.findAllMatches,h=s.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:u,minMatchCharLength:h})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},"./src/helpers/deep_value.js":
+/*!***********************************!*\
+ !*** ./src/helpers/deep_value.js ***!
+ \***********************************/
+/*! no static exports found */function(e,t,i){var n=i(/*! ./is_array */"./src/helpers/is_array.js");e.exports=function(e,t){return function e(t,i,o){if(i){var r=i.indexOf("."),s=i,a=null;-1!==r&&(s=i.slice(0,r),a=i.slice(r+1));var c=t[s];if(null!=c)if(a||"string"!=typeof c&&"number"!=typeof c)if(n(c))for(var l=0,u=c.length;l<u;l+=1)e(c[l],a,o);else a&&e(c,a,o);else o.push(c.toString())}else o.push(t);return o}(e,t,[])}},"./src/helpers/is_array.js":
+/*!*********************************!*\
+ !*** ./src/helpers/is_array.js ***!
+ \*********************************/
+/*! no static exports found */function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},"./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */function(e,t,i){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=i(/*! ./bitap */"./src/bitap/index.js"),s=i(/*! ./helpers/deep_value */"./src/helpers/deep_value.js"),a=i(/*! ./helpers/is_array */"./src/helpers/is_array.js"),c=function(){function e(t,i){var n=i.location,o=void 0===n?0:n,r=i.distance,a=void 0===r?100:r,c=i.threshold,l=void 0===c?.6:c,u=i.maxPatternLength,h=void 0===u?32:u,d=i.caseSensitive,f=void 0!==d&&d,p=i.tokenSeparator,v=void 0===p?/ +/g:p,m=i.findAllMatches,g=void 0!==m&&m,_=i.minMatchCharLength,y=void 0===_?1:_,b=i.id,E=void 0===b?null:b,S=i.keys,I=void 0===S?[]:S,O=i.shouldSort,C=void 0===O||O,T=i.getFn,w=void 0===T?s:T,k=i.sortFn,A=void 0===k?function(e,t){return e.score-t.score}:k,L=i.tokenize,x=void 0!==L&&L,P=i.matchAllTokens,D=void 0!==P&&P,j=i.includeMatches,M=void 0!==j&&j,N=i.includeScore,F=void 0!==N&&N,K=i.verbose,R=void 0!==K&&K;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:a,threshold:l,maxPatternLength:h,isCaseSensitive:f,tokenSeparator:v,findAllMatches:g,minMatchCharLength:y,id:E,keys:I,includeMatches:M,includeScore:F,shouldSort:C,getFn:w,sortFn:A,verbose:R,tokenize:x,matchAllTokens:D},this.setCollection(t)}var t,i,c;return t=e,(i=[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\nSearch pattern: "'.concat(e,'"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,o=i.fullSearcher,r=this._search(n,o),s=r.weights,a=r.results;return this._computeScore(s,a),this.options.shouldSort&&this._sort(a),t.limit&&"number"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,o=i.length;n<o;n+=1)t.push(new r(i[n],this.options));return{tokenSearchers:t,fullSearcher:new r(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},o=[];if("string"==typeof i[0]){for(var r=0,s=i.length;r<s;r+=1)this._analyze({key:"",value:i[r],record:r,index:r},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t});return{weights:null,results:o}}for(var a={},c=0,l=i.length;c<l;c+=1)for(var u=i[c],h=0,d=this.options.keys.length;h<d;h+=1){var f=this.options.keys[h];if("string"!=typeof f){if(a[f.name]={weight:1-f.weight||1},f.weight<=0||f.weight>1)throw new Error("Key weight has to be > 0 and <= 1");f=f.name}else a[f]={weight:1};this._analyze({key:f,value:this.options.getFn(u,f),record:u,index:c},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:o}}},{key:"_analyze",value:function(e,t){var i=e.key,n=e.arrayIndex,o=void 0===n?-1:n,r=e.value,s=e.record,c=e.index,l=t.tokenSearchers,u=void 0===l?[]:l,h=t.fullSearcher,d=void 0===h?[]:h,f=t.resultMap,p=void 0===f?{}:f,v=t.results,m=void 0===v?[]:v;if(null!=r){var g=!1,_=-1,y=0;if("string"==typeof r){this._log("\nKey: ".concat(""===i?"-":i));var b=d.search(r);if(this._log('Full text: "'.concat(r,'", score: ').concat(b.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),S=[],I=0;I<u.length;I+=1){var O=u[I];this._log('\nPattern: "'.concat(O.pattern,'"'));for(var C=!1,T=0;T<E.length;T+=1){var w=E[T],k=O.search(w),A={};k.isMatch?(A[w]=k.score,g=!0,C=!0,S.push(k.score)):(A[w]=1,this.options.matchAllTokens||S.push(1)),this._log('Token: "'.concat(w,'", score: ').concat(A[w]))}C&&(y+=1)}_=S[0];for(var L=S.length,x=1;x<L;x+=1)_+=S[x];_/=L,this._log("Token score average:",_)}var P=b.score;_>-1&&(P=(P+_)/2),this._log("Score average:",P);var D=!this.options.tokenize||!this.options.matchAllTokens||y>=u.length;if(this._log("\nCheck Matches: ".concat(D)),(g||b.isMatch)&&D){var j=p[c];j?j.output.push({key:i,arrayIndex:o,value:r,score:P,matchedIndices:b.matchedIndices}):(p[c]={item:s,output:[{key:i,arrayIndex:o,value:r,score:P,matchedIndices:b.matchedIndices}]},m.push(p[c]))}}else if(a(r))for(var M=0,N=r.length;M<N;M+=1)this._analyze({key:i,arrayIndex:M,value:r[M],record:s,index:c},{resultMap:p,results:m,tokenSearchers:u,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var i=0,n=t.length;i<n;i+=1){for(var o=t[i].output,r=o.length,s=1,a=1,c=0;c<r;c+=1){var l=e?e[o[c].key].weight:1,u=(1===l?o[c].score:o[c].score||.001)*l;1!==l?a=Math.min(a,u):(o[c].nScore=u,s*=u)}t[i].score=1===a?s:a,this._log(t[i])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];if(this.options.verbose){var i=[];this._log("\n\nOutput:\n\n",JSON.stringify(e,function(e,t){if("object"===n(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null}var o=[];this.options.includeMatches&&o.push(function(e,t){var i=e.output;t.matches=[];for(var n=0,o=i.length;n<o;n+=1){var r=i[n];if(0!==r.matchedIndices.length){var s={indices:r.matchedIndices,value:r.value};r.key&&(s.key=r.key),r.hasOwnProperty("arrayIndex")&&r.arrayIndex>-1&&(s.arrayIndex=r.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&o.push(function(e,t){t.score=e.score});for(var r=0,s=e.length;r<s;r+=1){var a=e[r];if(this.options.id&&(a.item=this.options.getFn(a.item,this.options.id)[0]),o.length){for(var c={item:a.item},l=0,u=o.length;l<u;l+=1)o[l](a,c);t.push(c)}else t.push(a.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,i),c&&o(t,c),e}();e.exports=c}})},e.exports=n()},function(e,t,i){"use strict";i.r(t);var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===o}(e)}(e)};var o="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function s(e,t,i){return e.concat(t).map(function(e){return r(e,i)})}function a(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||s,i.isMergeableObject=i.isMergeableObject||n;var o=Array.isArray(t);return o===Array.isArray(e)?o?i.arrayMerge(e,t,i):function(e,t,i){var n={};return i.isMergeableObject(e)&&Object.keys(e).forEach(function(t){n[t]=r(e[t],i)}),Object.keys(t).forEach(function(o){i.isMergeableObject(t[o])&&e[o]?n[o]=a(e[o],t[o],i):n[o]=r(t[o],i)}),n}(e,t,i):r(t,i)}a.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,i){return a(e,i,t)},{})};var c=a;t.default=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,o=i(6),r=(n=i(15))&&n.__esModule?n:{default:n};function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._store=(0,o.createStore)(r.default,window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__())}var t,i,n;return t=e,(i=[{key:"subscribe",value:function(e){this._store.subscribe(e)}},{key:"dispatch",value:function(e){this._store.dispatch(e)}},{key:"isLoading",value:function(){return this.state.general.loading}},{key:"getChoiceById",value:function(e){return!!e&&this.activeChoices.find(function(t){return t.id===parseInt(e,10)})}},{key:"getGroupById",value:function(e){return this.groups.find(function(t){return t.id===parseInt(e,10)})}},{key:"state",get:function(){return this._store.getState()}},{key:"items",get:function(){return this.state.items}},{key:"activeItems",get:function(){return this.items.filter(function(e){return!0===e.active})}},{key:"highlightedActiveItems",get:function(){return this.items.filter(function(e){return e.active&&e.highlighted})}},{key:"choices",get:function(){return this.state.choices}},{key:"activeChoices",get:function(){return this.choices.filter(function(e){return!0===e.active})}},{key:"selectableChoices",get:function(){return this.choices.filter(function(e){return!0!==e.disabled})}},{key:"searchableChoices",get:function(){return this.selectableChoices.filter(function(e){return!0!==e.placeholder})}},{key:"placeholderChoice",get:function(){return[].concat(this.choices).reverse().find(function(e){return!0===e.placeholder})}},{key:"groups",get:function(){return this.state.groups}},{key:"activeGroups",get:function(){var e=this.groups,t=this.choices;return e.filter(function(e){var i=!0===e.active&&!1===e.disabled,n=t.some(function(e){return!0===e.active&&!1===e.disabled});return i&&n},[])}}])&&s(t.prototype,i),n&&s(t,n),e}();t.default=a},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(6),o=l(i(16)),r=l(i(17)),s=l(i(18)),a=l(i(19)),c=i(0);function l(e){return e&&e.__esModule?e:{default:e}}var u=(0,n.combineReducers)({items:o.default,groups:r.default,choices:s.default,general:a.default}),h=function(e,t){var i=e;if("CLEAR_ALL"===t.type)i=void 0;else if("RESET_TO"===t.type)return(0,c.cloneObject)(t.state);return u(i,t)};t.default=h},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_ITEM":var i=[].concat(e,[{id:t.id,choiceId:t.choiceId,groupId:t.groupId,value:t.value,label:t.label,active:!0,highlighted:!1,customProperties:t.customProperties,placeholder:t.placeholder||!1,keyCode:null}]);return i.map(function(e){var t=e;return t.highlighted=!1,t});case"REMOVE_ITEM":return e.map(function(e){var i=e;return i.id===t.id&&(i.active=!1),i});case"HIGHLIGHT_ITEM":return e.map(function(e){var i=e;return i.id===t.id&&(i.highlighted=t.highlighted),i});default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_GROUP":return[].concat(e,[{id:t.id,value:t.value,active:t.active,disabled:t.disabled}]);case"CLEAR_CHOICES":return[];default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_CHOICE":return[].concat(e,[{id:t.id,elementId:t.elementId,groupId:t.groupId,value:t.value,label:t.label||t.value,disabled:t.disabled||!1,selected:!1,active:!0,score:9999,customProperties:t.customProperties,placeholder:t.placeholder||!1,keyCode:null}]);case"ADD_ITEM":return t.activateOptions?e.map(function(e){var i=e;return i.active=t.active,i}):t.choiceId>-1?e.map(function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i}):e;case"REMOVE_ITEM":return t.choiceId>-1?e.map(function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i}):e;case"FILTER_CHOICES":return e.map(function(e){var i=e;return i.active=t.results.some(function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)}),i});case"ACTIVATE_CHOICES":return e.map(function(e){var i=e;return i.active=t.active,i});case"CLEAR_CHOICES":return n;default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.defaultState=void 0;var n={loading:!1};t.defaultState=n;var o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_IS_LOADING":return{loading:t.isLoading};default:return e}};t.default=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Dropdown",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"Container",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"Input",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"List",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"WrappedInput",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"WrappedSelect",{enumerable:!0,get:function(){return c.default}});var n=l(i(21)),o=l(i(22)),r=l(i(23)),s=l(i(24)),a=l(i(25)),c=l(i(26));function l(e){return e&&e.__esModule?e:{default:e}}},function(e,t,i){"use strict";function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(){function e(t){var i=t.element,n=t.type,o=t.classNames;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,type:n,classNames:o}),this.isActive=!1}var t,i,o;return t=e,(i=[{key:"distanceFromTopWindow",value:function(){return this.dimensions=this.element.getBoundingClientRect(),this.position=Math.ceil(this.dimensions.top+window.pageYOffset+this.element.offsetHeight),this.position}},{key:"getChild",value:function(e){return this.element.querySelector(e)}},{key:"show",value:function(){return this.element.classList.add(this.classNames.activeState),this.element.setAttribute("aria-expanded","true"),this.isActive=!0,this}},{key:"hide",value:function(){return this.element.classList.remove(this.classNames.activeState),this.element.setAttribute("aria-expanded","false"),this.isActive=!1,this}}])&&n(t.prototype,i),o&&n(t,o),e}();t.default=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,n=t.type,o=t.classNames,r=t.position;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,classNames:o,type:n,position:r}),this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t,i,r;return t=e,(i=[{key:"addEventListeners",value:function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)}},{key:"removeEventListeners",value:function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)}},{key:"shouldFlip",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,n.getWindowHeight)();if(void 0===e)return!1;var i=!1;return"auto"===this.position?i=e>=t:"top"===this.position&&(i=!0),i}},{key:"setActiveDescendant",value:function(e){this.element.setAttribute("aria-activedescendant",e)}},{key:"removeActiveDescendant",value:function(){this.element.removeAttribute("aria-activedescendant")}},{key:"open",value:function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)}},{key:"close",value:function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)}},{key:"focus",value:function(){this.isFocussed||this.element.focus()}},{key:"addFocusState",value:function(){this.element.classList.add(this.classNames.focusState)}},{key:"removeFocusState",value:function(){this.element.classList.remove(this.classNames.focusState)}},{key:"enable",value:function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),"select-one"===this.type&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1}},{key:"disable",value:function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),"select-one"===this.type&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0}},{key:"wrap",value:function(e){(0,n.wrap)(e,this.element)}},{key:"unwrap",value:function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)}},{key:"addLoadingState",value:function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0}},{key:"removeLoadingState",value:function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1}},{key:"_onFocus",value:function(){this.isFocussed=!0}},{key:"_onBlur",value:function(){this.isFocussed=!1}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,n=t.type,o=t.classNames,r=t.placeholderValue;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,type:n,classNames:o,placeholderValue:r}),this.element=i,this.classNames=o,this.isFocussed=this.element===document.activeElement,this.isDisabled=!1,this._onPaste=this._onPaste.bind(this),this._onInput=this._onInput.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t,i,r;return t=e,(i=[{key:"addEventListeners",value:function(){this.element.addEventListener("input",this._onInput),this.element.addEventListener("paste",this._onPaste),this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur),this.element.form&&this.element.form.addEventListener("reset",this._onFormReset)}},{key:"removeEventListeners",value:function(){this.element.removeEventListener("input",this._onInput),this.element.removeEventListener("paste",this._onPaste),this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur),this.element.form&&this.element.form.removeEventListener("reset",this._onFormReset)}},{key:"enable",value:function(){this.element.removeAttribute("disabled"),this.isDisabled=!1}},{key:"disable",value:function(){this.element.setAttribute("disabled",""),this.isDisabled=!0}},{key:"focus",value:function(){this.isFocussed||this.element.focus()}},{key:"blur",value:function(){this.isFocussed&&this.element.blur()}},{key:"clear",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.element.value&&(this.element.value=""),e&&this.setWidth(),this}},{key:"setWidth",value:function(e){var t=this,i=function(e){t.element.style.width=e};if(this._placeholderValue){var n=this.element.value.length>=this._placeholderValue.length/1.25;(this.element.value&&n||e)&&this.calcWidth(i)}else this.calcWidth(i)}},{key:"calcWidth",value:function(e){return(0,n.calcWidthOfInput)(this.element,e)}},{key:"setActiveDescendant",value:function(e){this.element.setAttribute("aria-activedescendant",e)}},{key:"removeActiveDescendant",value:function(){this.element.removeAttribute("aria-activedescendant")}},{key:"_onInput",value:function(){"select-one"!==this.type&&this.setWidth()}},{key:"_onPaste",value:function(e){e.target===this.element&&this.preventPaste&&e.preventDefault()}},{key:"_onFocus",value:function(){this.isFocussed=!0}},{key:"_onBlur",value:function(){this.isFocussed=!1}},{key:"placeholder",set:function(e){this.element.placeholder=e}},{key:"value",set:function(e){this.element.value=e},get:function(){return(0,n.sanitise)(this.element.value)}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(1);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i}),this.scrollPos=this.element.scrollTop,this.height=this.element.offsetHeight,this.hasChildren=!!this.element.children}var t,i,r;return t=e,(i=[{key:"clear",value:function(){this.element.innerHTML=""}},{key:"append",value:function(e){this.element.appendChild(e)}},{key:"getChild",value:function(e){return this.element.querySelector(e)}},{key:"scrollToTop",value:function(){this.element.scrollTop=0}},{key:"scrollToChoice",value:function(e,t){var i=this;if(e){var n=this.element.offsetHeight,o=e.offsetHeight,r=e.offsetTop+o,s=this.element.scrollTop+n,a=t>0?this.element.scrollTop+r-s:e.offsetTop;requestAnimationFrame(function(e){i._animateScroll(e,a,t)})}}},{key:"_scrollDown",value:function(e,t,i){var n=(i-e)/t,o=n>1?n:1;this.element.scrollTop=e+o}},{key:"_scrollUp",value:function(e,t,i){var n=(e-i)/t,o=n>1?n:1;this.element.scrollTop=e-o}},{key:"_animateScroll",value:function(e,t,i){var o=this,r=n.SCROLLING_SPEED,s=this.element.scrollTop,a=!1;i>0?(this._scrollDown(s,r,t),s<t&&(a=!0)):(this._scrollUp(s,r,t),s>t&&(a=!0)),a&&requestAnimationFrame(function(){o._animateScroll(e,t,i)})}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,o=(n=i(4))&&n.__esModule?n:{default:n};function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function a(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function c(e,t,i){return(c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=l(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function t(e){var i,n=e.element,o=e.classNames,r=e.delimiter;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(i=a(this,l(t).call(this,{element:n,classNames:o}))).delimiter=r,i}var i,n,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(t,o.default),i=t,(n=[{key:"value",set:function(e){var t=e.map(function(e){return e.value}).join(this.delimiter);this.element.setAttribute("value",t),this.element.value=t},get:function(){return c(l(t.prototype),"value",this)}}])&&s(i.prototype,n),r&&s(i,r),t}();t.default=h},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(i(4)),o=r(i(5));function r(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function c(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function t(e){var i=e.element,n=e.classNames;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,l(t).call(this,{element:i,classNames:n}))}var i,r,s;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(t,n.default),i=t,(r=[{key:"appendDocFragment",value:function(e){this.element.innerHTML="",this.element.appendChild(e)}},{key:"placeholderOption",get:function(){return this.element.querySelector("option[placeholder]")}},{key:"optionGroups",get:function(){return Array.from(this.element.getElementsByTagName("OPTGROUP"))}},{key:"options",get:function(){return Array.from(this.element.options)},set:function(e){var t=document.createDocumentFragment();e.forEach(function(e){return i=e,n=o.default.option(i),void t.appendChild(n);var i,n}),this.appendDocFragment(t)}}])&&a(i.prototype,r),s&&a(i,s),t}();t.default=h},function(e,t,i){var n;
+/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";var i={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var r=typeof n;if("string"===r||"number"===r)e.push(n);else if(Array.isArray(n)&&n.length){var s=o.apply(null,n);s&&e.push(s)}else if("object"===r)for(var a in n)i.call(n,a)&&n[a]&&e.push(a)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(n=function(){return o}.apply(t,[]))||(e.exports=n)}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearChoices=t.activateChoices=t.filterChoices=t.addChoice=void 0;var n=i(1);t.addChoice=function(e){var t=e.value,i=e.label,o=e.id,r=e.groupId,s=e.disabled,a=e.elementId,c=e.customProperties,l=e.placeholder,u=e.keyCode;return{type:n.ACTION_TYPES.ADD_CHOICE,value:t,label:i,id:o,groupId:r,disabled:s,elementId:a,customProperties:c,placeholder:l,keyCode:u}};t.filterChoices=function(e){return{type:n.ACTION_TYPES.FILTER_CHOICES,results:e}};t.activateChoices=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return{type:n.ACTION_TYPES.ACTIVATE_CHOICES,active:e}};t.clearChoices=function(){return{type:n.ACTION_TYPES.CLEAR_CHOICES}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.highlightItem=t.removeItem=t.addItem=void 0;var n=i(1);t.addItem=function(e){var t=e.value,i=e.label,o=e.id,r=e.choiceId,s=e.groupId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:n.ACTION_TYPES.ADD_ITEM,value:t,label:i,id:o,choiceId:r,groupId:s,customProperties:a,placeholder:c,keyCode:l}};t.removeItem=function(e,t){return{type:n.ACTION_TYPES.REMOVE_ITEM,id:e,choiceId:t}};t.highlightItem=function(e,t){return{type:n.ACTION_TYPES.HIGHLIGHT_ITEM,id:e,highlighted:t}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addGroup=void 0;var n=i(1);t.addGroup=function(e,t,i,o){return{type:n.ACTION_TYPES.ADD_GROUP,value:e,id:t,active:i,disabled:o}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resetTo=t.clearAll=void 0;t.clearAll=function(){return{type:"CLEAR_ALL"}};t.resetTo=function(e){return{type:"RESET_TO",state:e}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setIsLoading=void 0;t.setIsLoading=function(e){return{type:"SET_IS_LOADING",isLoading:e}}}])});
\ No newline at end of file
--- /dev/null
+(function webpackUniversalModuleDefinition(root, factory) {
+ //CommonJS2
+ if(typeof exports === 'object' && typeof module === 'object')
+ module.exports = factory();
+ //AMD
+ else if(typeof define === 'function' && define.amd)
+ define([], factory);
+ //CommonJS
+ else if(typeof exports === 'object')
+ exports["Choices"] = factory();
+ //Window
+ else
+ root["Choices"] = factory();
+})(window, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "/public/assets/scripts/";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = 9);
+/******/ })
+/************************************************************************/
+/******/ ([
+/* 0 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.diff = exports.cloneObject = exports.existsInArray = exports.isIE11 = exports.fetchFromObject = exports.getWindowHeight = exports.dispatchEvent = exports.sortByScore = exports.sortByAlpha = exports.calcWidthOfInput = exports.strToEl = exports.sanitise = exports.isScrolledIntoView = exports.getAdjacentEl = exports.findAncestorByAttrName = exports.wrap = exports.isElement = exports.isType = exports.getType = exports.generateId = exports.generateChars = exports.getRandomNumber = void 0;
+
+var _this = void 0;
+
+var getRandomNumber = function getRandomNumber(min, max) {
+ return Math.floor(Math.random() * (max - min) + min);
+};
+
+exports.getRandomNumber = getRandomNumber;
+
+var generateChars = function generateChars(length) {
+ var chars = '';
+
+ for (var i = 0; i < length; i++) {
+ var randomChar = getRandomNumber(0, 36);
+ chars += randomChar.toString(36);
+ }
+
+ return chars;
+};
+
+exports.generateChars = generateChars;
+
+var generateId = function generateId(element, prefix) {
+ var id = element.id || element.name && "".concat(element.name, "-").concat(generateChars(2)) || generateChars(4);
+ id = id.replace(/(:|\.|\[|\]|,)/g, '');
+ id = "".concat(prefix, "-").concat(id);
+ return id;
+};
+
+exports.generateId = generateId;
+
+var getType = function getType(obj) {
+ return Object.prototype.toString.call(obj).slice(8, -1);
+};
+
+exports.getType = getType;
+
+var isType = function isType(type, obj) {
+ return obj !== undefined && obj !== null && getType(obj) === type;
+};
+
+exports.isType = isType;
+
+var isElement = function isElement(element) {
+ return element instanceof Element;
+};
+
+exports.isElement = isElement;
+
+var wrap = function wrap(element) {
+ var wrapper = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : document.createElement('div');
+
+ if (element.nextSibling) {
+ element.parentNode.insertBefore(wrapper, element.nextSibling);
+ } else {
+ element.parentNode.appendChild(wrapper);
+ }
+
+ return wrapper.appendChild(element);
+};
+
+exports.wrap = wrap;
+
+var findAncestorByAttrName = function findAncestorByAttrName(el, attr) {
+ var target = el;
+
+ while (target) {
+ if (target.hasAttribute(attr)) {
+ return target;
+ }
+
+ target = target.parentElement;
+ }
+
+ return null;
+};
+
+exports.findAncestorByAttrName = findAncestorByAttrName;
+
+var getAdjacentEl = function getAdjacentEl(startEl, className) {
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+ if (!startEl || !className) {
+ return;
+ }
+
+ var parent = startEl.parentNode.parentNode;
+ var children = Array.from(parent.querySelectorAll(className));
+ var startPos = children.indexOf(startEl);
+ var operatorDirection = direction > 0 ? 1 : -1;
+ return children[startPos + operatorDirection];
+};
+
+exports.getAdjacentEl = getAdjacentEl;
+
+var isScrolledIntoView = function isScrolledIntoView(el, parent) {
+ var direction = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 1;
+
+ if (!el) {
+ return;
+ }
+
+ var isVisible;
+
+ if (direction > 0) {
+ // In view from bottom
+ isVisible = parent.scrollTop + parent.offsetHeight >= el.offsetTop + el.offsetHeight;
+ } else {
+ // In view from top
+ isVisible = el.offsetTop >= parent.scrollTop;
+ }
+
+ return isVisible;
+};
+
+exports.isScrolledIntoView = isScrolledIntoView;
+
+var sanitise = function sanitise(value) {
+ if (!isType('String', value)) {
+ return value;
+ }
+
+ return value.replace(/&/g, '&').replace(/>/g, '&rt;').replace(/</g, '<').replace(/"/g, '"');
+};
+
+exports.sanitise = sanitise;
+
+var strToEl = function () {
+ var tmpEl = document.createElement('div');
+ return function (str) {
+ var cleanedInput = str.trim();
+ tmpEl.innerHTML = cleanedInput;
+ var firldChild = tmpEl.children[0];
+
+ while (tmpEl.firstChild) {
+ tmpEl.removeChild(tmpEl.firstChild);
+ }
+
+ return firldChild;
+ };
+}();
+/**
+ * Determines the width of a passed input based on its value and passes
+ * it to the supplied callback function.
+ */
+
+
+exports.strToEl = strToEl;
+
+var calcWidthOfInput = function calcWidthOfInput(input, callback) {
+ var value = input.value || input.placeholder;
+ var width = input.offsetWidth;
+
+ if (value) {
+ var testEl = strToEl("<span>".concat(sanitise(value), "</span>"));
+ testEl.style.position = 'absolute';
+ testEl.style.padding = '0';
+ testEl.style.top = '-9999px';
+ testEl.style.left = '-9999px';
+ testEl.style.width = 'auto';
+ testEl.style.whiteSpace = 'pre';
+
+ if (document.body.contains(input) && window.getComputedStyle) {
+ var inputStyle = window.getComputedStyle(input);
+
+ if (inputStyle) {
+ testEl.style.fontSize = inputStyle.fontSize;
+ testEl.style.fontFamily = inputStyle.fontFamily;
+ testEl.style.fontWeight = inputStyle.fontWeight;
+ testEl.style.fontStyle = inputStyle.fontStyle;
+ testEl.style.letterSpacing = inputStyle.letterSpacing;
+ testEl.style.textTransform = inputStyle.textTransform;
+ testEl.style.padding = inputStyle.padding;
+ }
+ }
+
+ document.body.appendChild(testEl);
+ requestAnimationFrame(function () {
+ if (value && testEl.offsetWidth !== input.offsetWidth) {
+ width = testEl.offsetWidth + 4;
+ }
+
+ document.body.removeChild(testEl);
+ callback.call(_this, "".concat(width, "px"));
+ });
+ } else {
+ callback.call(_this, "".concat(width, "px"));
+ }
+};
+
+exports.calcWidthOfInput = calcWidthOfInput;
+
+var sortByAlpha = function sortByAlpha(a, b) {
+ var labelA = "".concat(a.label || a.value).toLowerCase();
+ var labelB = "".concat(b.label || b.value).toLowerCase();
+
+ if (labelA < labelB) {
+ return -1;
+ }
+
+ if (labelA > labelB) {
+ return 1;
+ }
+
+ return 0;
+};
+
+exports.sortByAlpha = sortByAlpha;
+
+var sortByScore = function sortByScore(a, b) {
+ return a.score - b.score;
+};
+
+exports.sortByScore = sortByScore;
+
+var dispatchEvent = function dispatchEvent(element, type) {
+ var customArgs = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : null;
+ var event = new CustomEvent(type, {
+ detail: customArgs,
+ bubbles: true,
+ cancelable: true
+ });
+ return element.dispatchEvent(event);
+};
+
+exports.dispatchEvent = dispatchEvent;
+
+var getWindowHeight = function getWindowHeight() {
+ var body = document.body;
+ var html = document.documentElement;
+ return Math.max(body.scrollHeight, body.offsetHeight, html.clientHeight, html.scrollHeight, html.offsetHeight);
+};
+
+exports.getWindowHeight = getWindowHeight;
+
+var fetchFromObject = function fetchFromObject(object, path) {
+ var index = path.indexOf('.');
+
+ if (index > -1) {
+ return fetchFromObject(object[path.substring(0, index)], path.substr(index + 1));
+ }
+
+ return object[path];
+};
+
+exports.fetchFromObject = fetchFromObject;
+
+var isIE11 = function isIE11() {
+ return !!(navigator.userAgent.match(/Trident/) && navigator.userAgent.match(/rv[ :]11/));
+};
+
+exports.isIE11 = isIE11;
+
+var existsInArray = function existsInArray(array, value) {
+ var key = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : 'value';
+ return array.some(function (item) {
+ if (isType('String', value)) {
+ return item[key] === value.trim();
+ }
+
+ return item[key] === value;
+ });
+};
+
+exports.existsInArray = existsInArray;
+
+var cloneObject = function cloneObject(obj) {
+ return JSON.parse(JSON.stringify(obj));
+};
+
+exports.cloneObject = cloneObject;
+
+var diff = function diff(a, b) {
+ var aKeys = Object.keys(a).sort();
+ var bKeys = Object.keys(b).sort();
+ return aKeys.filter(function (i) {
+ return bKeys.indexOf(i) < 0;
+ });
+};
+
+exports.diff = diff;
+
+/***/ }),
+/* 1 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.SCROLLING_SPEED = exports.KEY_CODES = exports.ACTION_TYPES = exports.EVENTS = exports.DEFAULT_CONFIG = exports.DEFAULT_CLASSNAMES = void 0;
+
+var _utils = __webpack_require__(0);
+
+var DEFAULT_CLASSNAMES = {
+ containerOuter: 'choices',
+ containerInner: 'choices__inner',
+ input: 'choices__input',
+ inputCloned: 'choices__input--cloned',
+ list: 'choices__list',
+ listItems: 'choices__list--multiple',
+ listSingle: 'choices__list--single',
+ listDropdown: 'choices__list--dropdown',
+ item: 'choices__item',
+ itemSelectable: 'choices__item--selectable',
+ itemDisabled: 'choices__item--disabled',
+ itemChoice: 'choices__item--choice',
+ placeholder: 'choices__placeholder',
+ group: 'choices__group',
+ groupHeading: 'choices__heading',
+ button: 'choices__button',
+ activeState: 'is-active',
+ focusState: 'is-focused',
+ openState: 'is-open',
+ disabledState: 'is-disabled',
+ highlightedState: 'is-highlighted',
+ hiddenState: 'is-hidden',
+ flippedState: 'is-flipped',
+ loadingState: 'is-loading',
+ noResults: 'has-no-results',
+ noChoices: 'has-no-choices'
+};
+exports.DEFAULT_CLASSNAMES = DEFAULT_CLASSNAMES;
+var DEFAULT_CONFIG = {
+ items: [],
+ choices: [],
+ silent: false,
+ renderChoiceLimit: -1,
+ maxItemCount: -1,
+ addItems: true,
+ addItemFilterFn: null,
+ removeItems: true,
+ removeItemButton: false,
+ editItems: false,
+ duplicateItemsAllowed: true,
+ delimiter: ',',
+ paste: true,
+ searchEnabled: true,
+ searchChoices: true,
+ searchFloor: 1,
+ searchResultLimit: 4,
+ searchFields: ['label', 'value'],
+ position: 'auto',
+ resetScrollPosition: true,
+ shouldSort: true,
+ shouldSortItems: false,
+ sortFn: _utils.sortByAlpha,
+ placeholder: true,
+ placeholderValue: null,
+ searchPlaceholderValue: null,
+ prependValue: null,
+ appendValue: null,
+ renderSelectedChoices: 'auto',
+ loadingText: 'Loading...',
+ noResultsText: 'No results found',
+ noChoicesText: 'No choices to choose from',
+ itemSelectText: 'Press to select',
+ uniqueItemText: 'Only unique values can be added',
+ customAddItemText: 'Only values matching specific conditions can be added',
+ addItemText: function addItemText(value) {
+ return "Press Enter to add <b>\"".concat((0, _utils.sanitise)(value), "\"</b>");
+ },
+ maxItemText: function maxItemText(maxItemCount) {
+ return "Only ".concat(maxItemCount, " values can be added");
+ },
+ itemComparer: function itemComparer(choice, item) {
+ return choice === item;
+ },
+ fuseOptions: {
+ includeScore: true
+ },
+ callbackOnInit: null,
+ callbackOnCreateTemplates: null,
+ classNames: DEFAULT_CLASSNAMES
+};
+exports.DEFAULT_CONFIG = DEFAULT_CONFIG;
+var EVENTS = {
+ showDropdown: 'showDropdown',
+ hideDropdown: 'hideDropdown',
+ change: 'change',
+ choice: 'choice',
+ search: 'search',
+ addItem: 'addItem',
+ removeItem: 'removeItem',
+ highlightItem: 'highlightItem',
+ highlightChoice: 'highlightChoice'
+};
+exports.EVENTS = EVENTS;
+var ACTION_TYPES = {
+ ADD_CHOICE: 'ADD_CHOICE',
+ FILTER_CHOICES: 'FILTER_CHOICES',
+ ACTIVATE_CHOICES: 'ACTIVATE_CHOICES',
+ CLEAR_CHOICES: 'CLEAR_CHOICES',
+ ADD_GROUP: 'ADD_GROUP',
+ ADD_ITEM: 'ADD_ITEM',
+ REMOVE_ITEM: 'REMOVE_ITEM',
+ HIGHLIGHT_ITEM: 'HIGHLIGHT_ITEM',
+ CLEAR_ALL: 'CLEAR_ALL'
+};
+exports.ACTION_TYPES = ACTION_TYPES;
+var KEY_CODES = {
+ BACK_KEY: 46,
+ DELETE_KEY: 8,
+ ENTER_KEY: 13,
+ A_KEY: 65,
+ ESC_KEY: 27,
+ UP_KEY: 38,
+ DOWN_KEY: 40,
+ PAGE_UP_KEY: 33,
+ PAGE_DOWN_KEY: 34
+};
+exports.KEY_CODES = KEY_CODES;
+var SCROLLING_SPEED = 4;
+exports.SCROLLING_SPEED = SCROLLING_SPEED;
+
+/***/ }),
+/* 2 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global, module) {/* harmony import */ var _ponyfill_js__WEBPACK_IMPORTED_MODULE_0__ = __webpack_require__(7);
+/* global window */
+
+
+var root;
+
+if (typeof self !== 'undefined') {
+ root = self;
+} else if (typeof window !== 'undefined') {
+ root = window;
+} else if (typeof global !== 'undefined') {
+ root = global;
+} else if (true) {
+ root = module;
+} else {}
+
+var result = Object(_ponyfill_js__WEBPACK_IMPORTED_MODULE_0__[/* default */ "a"])(root);
+/* harmony default export */ __webpack_exports__["a"] = (result);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(3), __webpack_require__(14)(module)))
+
+/***/ }),
+/* 3 */
+/***/ (function(module, exports) {
+
+var g;
+
+// This works in non-strict mode
+g = (function() {
+ return this;
+})();
+
+try {
+ // This works if eval is allowed (see CSP)
+ g = g || new Function("return this")();
+} catch (e) {
+ // This works if the window reference is available
+ if (typeof window === "object") g = window;
+}
+
+// g can still be undefined, but nothing to do about it...
+// We return undefined, instead of nothing here, so it's
+// easier to handle this case. if(!global) { ...}
+
+module.exports = g;
+
+
+/***/ }),
+/* 4 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var WrappedElement =
+/*#__PURE__*/
+function () {
+ function WrappedElement(_ref) {
+ var element = _ref.element,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, WrappedElement);
+
+ Object.assign(this, {
+ element: element,
+ classNames: classNames
+ });
+
+ if (!(0, _utils.isElement)(element)) {
+ throw new TypeError('Invalid element passed');
+ }
+
+ this.isDisabled = false;
+ }
+
+ _createClass(WrappedElement, [{
+ key: "conceal",
+ value: function conceal() {
+ // Hide passed input
+ this.element.classList.add(this.classNames.input);
+ this.element.classList.add(this.classNames.hiddenState); // Remove element from tab index
+
+ this.element.tabIndex = '-1'; // Backup original styles if any
+
+ var origStyle = this.element.getAttribute('style');
+
+ if (origStyle) {
+ this.element.setAttribute('data-choice-orig-style', origStyle);
+ }
+
+ this.element.setAttribute('aria-hidden', 'true');
+ this.element.setAttribute('data-choice', 'active');
+ }
+ }, {
+ key: "reveal",
+ value: function reveal() {
+ // Reinstate passed element
+ this.element.classList.remove(this.classNames.input);
+ this.element.classList.remove(this.classNames.hiddenState);
+ this.element.removeAttribute('tabindex'); // Recover original styles if any
+
+ var origStyle = this.element.getAttribute('data-choice-orig-style');
+
+ if (origStyle) {
+ this.element.removeAttribute('data-choice-orig-style');
+ this.element.setAttribute('style', origStyle);
+ } else {
+ this.element.removeAttribute('style');
+ }
+
+ this.element.removeAttribute('aria-hidden');
+ this.element.removeAttribute('data-choice'); // Re-assign values - this is weird, I know
+
+ this.element.value = this.element.value;
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.removeAttribute('disabled');
+ this.element.disabled = false;
+ this.isDisabled = false;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.setAttribute('disabled', '');
+ this.element.disabled = true;
+ this.isDisabled = true;
+ }
+ }, {
+ key: "triggerEvent",
+ value: function triggerEvent(eventType, data) {
+ (0, _utils.dispatchEvent)(this.element, eventType, data);
+ }
+ }, {
+ key: "value",
+ get: function get() {
+ return this.element.value;
+ }
+ }]);
+
+ return WrappedElement;
+}();
+
+exports.default = WrappedElement;
+
+/***/ }),
+/* 5 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.TEMPLATES = void 0;
+
+var _classnames = _interopRequireDefault(__webpack_require__(27));
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+var TEMPLATES = {
+ containerOuter: function containerOuter(globalClasses, direction, isSelectElement, isSelectOneElement, searchEnabled, passedElementType) {
+ var tabIndex = isSelectOneElement ? 'tabindex="0"' : '';
+ var role = isSelectElement ? 'role="listbox"' : '';
+ var ariaAutoComplete = '';
+
+ if (isSelectElement && searchEnabled) {
+ role = 'role="combobox"';
+ ariaAutoComplete = 'aria-autocomplete="list"';
+ }
+
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(globalClasses.containerOuter, "\"\n data-type=\"").concat(passedElementType, "\"\n ").concat(role, "\n ").concat(tabIndex, "\n ").concat(ariaAutoComplete, "\n aria-haspopup=\"true\"\n aria-expanded=\"false\"\n dir=\"").concat(direction, "\"\n >\n </div>\n "));
+ },
+ containerInner: function containerInner(globalClasses) {
+ return (0, _utils.strToEl)("\n <div class=\"".concat(globalClasses.containerInner, "\"></div>\n "));
+ },
+ itemList: function itemList(globalClasses, isSelectOneElement) {
+ var _classNames;
+
+ var localClasses = (0, _classnames.default)(globalClasses.list, (_classNames = {}, _defineProperty(_classNames, globalClasses.listSingle, isSelectOneElement), _defineProperty(_classNames, globalClasses.listItems, !isSelectOneElement), _classNames));
+ return (0, _utils.strToEl)("\n <div class=\"".concat(localClasses, "\"></div>\n "));
+ },
+ placeholder: function placeholder(globalClasses, value) {
+ return (0, _utils.strToEl)("\n <div class=\"".concat(globalClasses.placeholder, "\">\n ").concat(value, "\n </div>\n "));
+ },
+ item: function item(globalClasses, data, removeItemButton) {
+ var _classNames2;
+
+ var ariaSelected = data.active ? 'aria-selected="true"' : '';
+ var ariaDisabled = data.disabled ? 'aria-disabled="true"' : '';
+ var localClasses = (0, _classnames.default)(globalClasses.item, (_classNames2 = {}, _defineProperty(_classNames2, globalClasses.highlightedState, data.highlighted), _defineProperty(_classNames2, globalClasses.itemSelectable, !data.highlighted), _defineProperty(_classNames2, globalClasses.placeholder, data.placeholder), _classNames2));
+
+ if (removeItemButton) {
+ var _classNames3;
+
+ localClasses = (0, _classnames.default)(globalClasses.item, (_classNames3 = {}, _defineProperty(_classNames3, globalClasses.highlightedState, data.highlighted), _defineProperty(_classNames3, globalClasses.itemSelectable, !data.disabled), _defineProperty(_classNames3, globalClasses.placeholder, data.placeholder), _classNames3));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-item\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n data-custom-properties='").concat(data.customProperties, "'\n data-deletable\n ").concat(ariaSelected, "\n ").concat(ariaDisabled, "\n >\n ").concat(data.label, "<!--\n --><button\n type=\"button\"\n class=\"").concat(globalClasses.button, "\"\n data-button\n aria-label=\"Remove item: '").concat(data.value, "'\"\n >\n Remove item\n </button>\n </div>\n "));
+ }
+
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-item\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n ").concat(ariaSelected, "\n ").concat(ariaDisabled, "\n >\n ").concat(data.label, "\n </div>\n "));
+ },
+ choiceList: function choiceList(globalClasses, isSelectOneElement) {
+ var ariaMultiSelectable = !isSelectOneElement ? 'aria-multiselectable="true"' : '';
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(globalClasses.list, "\"\n dir=\"ltr\"\n role=\"listbox\"\n ").concat(ariaMultiSelectable, "\n >\n </div>\n "));
+ },
+ choiceGroup: function choiceGroup(globalClasses, data) {
+ var ariaDisabled = data.disabled ? 'aria-disabled="true"' : '';
+ var localClasses = (0, _classnames.default)(globalClasses.group, _defineProperty({}, globalClasses.itemDisabled, data.disabled));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-group\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n role=\"group\"\n ").concat(ariaDisabled, "\n >\n <div class=\"").concat(globalClasses.groupHeading, "\">").concat(data.value, "</div>\n </div>\n "));
+ },
+ choice: function choice(globalClasses, data, itemSelectText) {
+ var _classNames5;
+
+ var role = data.groupId > 0 ? 'role="treeitem"' : 'role="option"';
+ var localClasses = (0, _classnames.default)(globalClasses.item, globalClasses.itemChoice, (_classNames5 = {}, _defineProperty(_classNames5, globalClasses.itemDisabled, data.disabled), _defineProperty(_classNames5, globalClasses.itemSelectable, !data.disabled), _defineProperty(_classNames5, globalClasses.placeholder, data.placeholder), _classNames5));
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n data-select-text=\"").concat(itemSelectText, "\"\n data-choice\n data-id=\"").concat(data.id, "\"\n data-value=\"").concat(data.value, "\"\n ").concat(data.disabled ? 'data-choice-disabled aria-disabled="true"' : 'data-choice-selectable', "\n id=\"").concat(data.elementId, "\"\n ").concat(role, "\n >\n ").concat(data.label, "\n </div>\n "));
+ },
+ input: function input(globalClasses) {
+ var localClasses = (0, _classnames.default)(globalClasses.input, globalClasses.inputCloned);
+ return (0, _utils.strToEl)("\n <input\n type=\"text\"\n class=\"".concat(localClasses, "\"\n autocomplete=\"off\"\n autocapitalize=\"off\"\n spellcheck=\"false\"\n role=\"textbox\"\n aria-autocomplete=\"list\"\n >\n "));
+ },
+ dropdown: function dropdown(globalClasses) {
+ var localClasses = (0, _classnames.default)(globalClasses.list, globalClasses.listDropdown);
+ return (0, _utils.strToEl)("\n <div\n class=\"".concat(localClasses, "\"\n aria-expanded=\"false\"\n >\n </div>\n "));
+ },
+ notice: function notice(globalClasses, label) {
+ var _classNames6;
+
+ var type = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var localClasses = (0, _classnames.default)(globalClasses.item, globalClasses.itemChoice, (_classNames6 = {}, _defineProperty(_classNames6, globalClasses.noResults, type === 'no-results'), _defineProperty(_classNames6, globalClasses.noChoices, type === 'no-choices'), _classNames6));
+ return (0, _utils.strToEl)("\n <div class=\"".concat(localClasses, "\">\n ").concat(label, "\n </div>\n "));
+ },
+ option: function option(data) {
+ return (0, _utils.strToEl)("\n <option value=\"".concat(data.value, "\" ").concat(data.active ? 'selected' : '', " ").concat(data.disabled ? 'disabled' : '', " ").concat(data.customProperties ? "data-custom-properties=".concat(data.customProperties) : '', ">").concat(data.label, "</option>\n "));
+ }
+};
+exports.TEMPLATES = TEMPLATES;
+var _default = TEMPLATES;
+exports.default = _default;
+
+/***/ }),
+/* 6 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+
+// EXTERNAL MODULE: ./node_modules/lodash-es/_freeGlobal.js
+var _freeGlobal = __webpack_require__(8);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_root.js
+
+
+/** Detect free variable `self`. */
+var freeSelf = typeof self == 'object' && self && self.Object === Object && self;
+
+/** Used as a reference to the global object. */
+var root = _freeGlobal["a" /* default */] || freeSelf || Function('return this')();
+
+/* harmony default export */ var _root = (root);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_Symbol.js
+
+
+/** Built-in value references. */
+var Symbol = _root.Symbol;
+
+/* harmony default export */ var _Symbol = (Symbol);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_getRawTag.js
+
+
+/** Used for built-in method references. */
+var objectProto = Object.prototype;
+
+/** Used to check objects for own properties. */
+var _getRawTag_hasOwnProperty = objectProto.hasOwnProperty;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var nativeObjectToString = objectProto.toString;
+
+/** Built-in value references. */
+var symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
+
+/**
+ * A specialized version of `baseGetTag` which ignores `Symbol.toStringTag` values.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the raw `toStringTag`.
+ */
+function getRawTag(value) {
+ var isOwn = _getRawTag_hasOwnProperty.call(value, symToStringTag),
+ tag = value[symToStringTag];
+
+ try {
+ value[symToStringTag] = undefined;
+ var unmasked = true;
+ } catch (e) {}
+
+ var result = nativeObjectToString.call(value);
+ if (unmasked) {
+ if (isOwn) {
+ value[symToStringTag] = tag;
+ } else {
+ delete value[symToStringTag];
+ }
+ }
+ return result;
+}
+
+/* harmony default export */ var _getRawTag = (getRawTag);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_objectToString.js
+/** Used for built-in method references. */
+var _objectToString_objectProto = Object.prototype;
+
+/**
+ * Used to resolve the
+ * [`toStringTag`](http://ecma-international.org/ecma-262/7.0/#sec-object.prototype.tostring)
+ * of values.
+ */
+var _objectToString_nativeObjectToString = _objectToString_objectProto.toString;
+
+/**
+ * Converts `value` to a string using `Object.prototype.toString`.
+ *
+ * @private
+ * @param {*} value The value to convert.
+ * @returns {string} Returns the converted string.
+ */
+function objectToString(value) {
+ return _objectToString_nativeObjectToString.call(value);
+}
+
+/* harmony default export */ var _objectToString = (objectToString);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_baseGetTag.js
+
+
+
+
+/** `Object#toString` result references. */
+var nullTag = '[object Null]',
+ undefinedTag = '[object Undefined]';
+
+/** Built-in value references. */
+var _baseGetTag_symToStringTag = _Symbol ? _Symbol.toStringTag : undefined;
+
+/**
+ * The base implementation of `getTag` without fallbacks for buggy environments.
+ *
+ * @private
+ * @param {*} value The value to query.
+ * @returns {string} Returns the `toStringTag`.
+ */
+function baseGetTag(value) {
+ if (value == null) {
+ return value === undefined ? undefinedTag : nullTag;
+ }
+ return (_baseGetTag_symToStringTag && _baseGetTag_symToStringTag in Object(value))
+ ? _getRawTag(value)
+ : _objectToString(value);
+}
+
+/* harmony default export */ var _baseGetTag = (baseGetTag);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_overArg.js
+/**
+ * Creates a unary function that invokes `func` with its argument transformed.
+ *
+ * @private
+ * @param {Function} func The function to wrap.
+ * @param {Function} transform The argument transform.
+ * @returns {Function} Returns the new function.
+ */
+function overArg(func, transform) {
+ return function(arg) {
+ return func(transform(arg));
+ };
+}
+
+/* harmony default export */ var _overArg = (overArg);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/_getPrototype.js
+
+
+/** Built-in value references. */
+var getPrototype = _overArg(Object.getPrototypeOf, Object);
+
+/* harmony default export */ var _getPrototype = (getPrototype);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/isObjectLike.js
+/**
+ * Checks if `value` is object-like. A value is object-like if it's not `null`
+ * and has a `typeof` result of "object".
+ *
+ * @static
+ * @memberOf _
+ * @since 4.0.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is object-like, else `false`.
+ * @example
+ *
+ * _.isObjectLike({});
+ * // => true
+ *
+ * _.isObjectLike([1, 2, 3]);
+ * // => true
+ *
+ * _.isObjectLike(_.noop);
+ * // => false
+ *
+ * _.isObjectLike(null);
+ * // => false
+ */
+function isObjectLike(value) {
+ return value != null && typeof value == 'object';
+}
+
+/* harmony default export */ var lodash_es_isObjectLike = (isObjectLike);
+
+// CONCATENATED MODULE: ./node_modules/lodash-es/isPlainObject.js
+
+
+
+
+/** `Object#toString` result references. */
+var objectTag = '[object Object]';
+
+/** Used for built-in method references. */
+var funcProto = Function.prototype,
+ isPlainObject_objectProto = Object.prototype;
+
+/** Used to resolve the decompiled source of functions. */
+var funcToString = funcProto.toString;
+
+/** Used to check objects for own properties. */
+var isPlainObject_hasOwnProperty = isPlainObject_objectProto.hasOwnProperty;
+
+/** Used to infer the `Object` constructor. */
+var objectCtorString = funcToString.call(Object);
+
+/**
+ * Checks if `value` is a plain object, that is, an object created by the
+ * `Object` constructor or one with a `[[Prototype]]` of `null`.
+ *
+ * @static
+ * @memberOf _
+ * @since 0.8.0
+ * @category Lang
+ * @param {*} value The value to check.
+ * @returns {boolean} Returns `true` if `value` is a plain object, else `false`.
+ * @example
+ *
+ * function Foo() {
+ * this.a = 1;
+ * }
+ *
+ * _.isPlainObject(new Foo);
+ * // => false
+ *
+ * _.isPlainObject([1, 2, 3]);
+ * // => false
+ *
+ * _.isPlainObject({ 'x': 0, 'y': 0 });
+ * // => true
+ *
+ * _.isPlainObject(Object.create(null));
+ * // => true
+ */
+function isPlainObject(value) {
+ if (!lodash_es_isObjectLike(value) || _baseGetTag(value) != objectTag) {
+ return false;
+ }
+ var proto = _getPrototype(value);
+ if (proto === null) {
+ return true;
+ }
+ var Ctor = isPlainObject_hasOwnProperty.call(proto, 'constructor') && proto.constructor;
+ return typeof Ctor == 'function' && Ctor instanceof Ctor &&
+ funcToString.call(Ctor) == objectCtorString;
+}
+
+/* harmony default export */ var lodash_es_isPlainObject = (isPlainObject);
+
+// EXTERNAL MODULE: ./node_modules/symbol-observable/es/index.js
+var es = __webpack_require__(2);
+
+// CONCATENATED MODULE: ./node_modules/redux/es/createStore.js
+
+
+
+/**
+ * These are private action types reserved by Redux.
+ * For any unknown actions, you must return the current state.
+ * If the current state is undefined, you must return the initial state.
+ * Do not reference these action types directly in your code.
+ */
+var ActionTypes = {
+ INIT: '@@redux/INIT'
+
+ /**
+ * Creates a Redux store that holds the state tree.
+ * The only way to change the data in the store is to call `dispatch()` on it.
+ *
+ * There should only be a single store in your app. To specify how different
+ * parts of the state tree respond to actions, you may combine several reducers
+ * into a single reducer function by using `combineReducers`.
+ *
+ * @param {Function} reducer A function that returns the next state tree, given
+ * the current state tree and the action to handle.
+ *
+ * @param {any} [preloadedState] The initial state. You may optionally specify it
+ * to hydrate the state from the server in universal apps, or to restore a
+ * previously serialized user session.
+ * If you use `combineReducers` to produce the root reducer function, this must be
+ * an object with the same shape as `combineReducers` keys.
+ *
+ * @param {Function} [enhancer] The store enhancer. You may optionally specify it
+ * to enhance the store with third-party capabilities such as middleware,
+ * time travel, persistence, etc. The only store enhancer that ships with Redux
+ * is `applyMiddleware()`.
+ *
+ * @returns {Store} A Redux store that lets you read the state, dispatch actions
+ * and subscribe to changes.
+ */
+};function createStore_createStore(reducer, preloadedState, enhancer) {
+ var _ref2;
+
+ if (typeof preloadedState === 'function' && typeof enhancer === 'undefined') {
+ enhancer = preloadedState;
+ preloadedState = undefined;
+ }
+
+ if (typeof enhancer !== 'undefined') {
+ if (typeof enhancer !== 'function') {
+ throw new Error('Expected the enhancer to be a function.');
+ }
+
+ return enhancer(createStore_createStore)(reducer, preloadedState);
+ }
+
+ if (typeof reducer !== 'function') {
+ throw new Error('Expected the reducer to be a function.');
+ }
+
+ var currentReducer = reducer;
+ var currentState = preloadedState;
+ var currentListeners = [];
+ var nextListeners = currentListeners;
+ var isDispatching = false;
+
+ function ensureCanMutateNextListeners() {
+ if (nextListeners === currentListeners) {
+ nextListeners = currentListeners.slice();
+ }
+ }
+
+ /**
+ * Reads the state tree managed by the store.
+ *
+ * @returns {any} The current state tree of your application.
+ */
+ function getState() {
+ return currentState;
+ }
+
+ /**
+ * Adds a change listener. It will be called any time an action is dispatched,
+ * and some part of the state tree may potentially have changed. You may then
+ * call `getState()` to read the current state tree inside the callback.
+ *
+ * You may call `dispatch()` from a change listener, with the following
+ * caveats:
+ *
+ * 1. The subscriptions are snapshotted just before every `dispatch()` call.
+ * If you subscribe or unsubscribe while the listeners are being invoked, this
+ * will not have any effect on the `dispatch()` that is currently in progress.
+ * However, the next `dispatch()` call, whether nested or not, will use a more
+ * recent snapshot of the subscription list.
+ *
+ * 2. The listener should not expect to see all state changes, as the state
+ * might have been updated multiple times during a nested `dispatch()` before
+ * the listener is called. It is, however, guaranteed that all subscribers
+ * registered before the `dispatch()` started will be called with the latest
+ * state by the time it exits.
+ *
+ * @param {Function} listener A callback to be invoked on every dispatch.
+ * @returns {Function} A function to remove this change listener.
+ */
+ function subscribe(listener) {
+ if (typeof listener !== 'function') {
+ throw new Error('Expected listener to be a function.');
+ }
+
+ var isSubscribed = true;
+
+ ensureCanMutateNextListeners();
+ nextListeners.push(listener);
+
+ return function unsubscribe() {
+ if (!isSubscribed) {
+ return;
+ }
+
+ isSubscribed = false;
+
+ ensureCanMutateNextListeners();
+ var index = nextListeners.indexOf(listener);
+ nextListeners.splice(index, 1);
+ };
+ }
+
+ /**
+ * Dispatches an action. It is the only way to trigger a state change.
+ *
+ * The `reducer` function, used to create the store, will be called with the
+ * current state tree and the given `action`. Its return value will
+ * be considered the **next** state of the tree, and the change listeners
+ * will be notified.
+ *
+ * The base implementation only supports plain object actions. If you want to
+ * dispatch a Promise, an Observable, a thunk, or something else, you need to
+ * wrap your store creating function into the corresponding middleware. For
+ * example, see the documentation for the `redux-thunk` package. Even the
+ * middleware will eventually dispatch plain object actions using this method.
+ *
+ * @param {Object} action A plain object representing “what changed”. It is
+ * a good idea to keep actions serializable so you can record and replay user
+ * sessions, or use the time travelling `redux-devtools`. An action must have
+ * a `type` property which may not be `undefined`. It is a good idea to use
+ * string constants for action types.
+ *
+ * @returns {Object} For convenience, the same action object you dispatched.
+ *
+ * Note that, if you use a custom middleware, it may wrap `dispatch()` to
+ * return something else (for example, a Promise you can await).
+ */
+ function dispatch(action) {
+ if (!lodash_es_isPlainObject(action)) {
+ throw new Error('Actions must be plain objects. ' + 'Use custom middleware for async actions.');
+ }
+
+ if (typeof action.type === 'undefined') {
+ throw new Error('Actions may not have an undefined "type" property. ' + 'Have you misspelled a constant?');
+ }
+
+ if (isDispatching) {
+ throw new Error('Reducers may not dispatch actions.');
+ }
+
+ try {
+ isDispatching = true;
+ currentState = currentReducer(currentState, action);
+ } finally {
+ isDispatching = false;
+ }
+
+ var listeners = currentListeners = nextListeners;
+ for (var i = 0; i < listeners.length; i++) {
+ var listener = listeners[i];
+ listener();
+ }
+
+ return action;
+ }
+
+ /**
+ * Replaces the reducer currently used by the store to calculate the state.
+ *
+ * You might need this if your app implements code splitting and you want to
+ * load some of the reducers dynamically. You might also need this if you
+ * implement a hot reloading mechanism for Redux.
+ *
+ * @param {Function} nextReducer The reducer for the store to use instead.
+ * @returns {void}
+ */
+ function replaceReducer(nextReducer) {
+ if (typeof nextReducer !== 'function') {
+ throw new Error('Expected the nextReducer to be a function.');
+ }
+
+ currentReducer = nextReducer;
+ dispatch({ type: ActionTypes.INIT });
+ }
+
+ /**
+ * Interoperability point for observable/reactive libraries.
+ * @returns {observable} A minimal observable of state changes.
+ * For more information, see the observable proposal:
+ * https://github.com/tc39/proposal-observable
+ */
+ function observable() {
+ var _ref;
+
+ var outerSubscribe = subscribe;
+ return _ref = {
+ /**
+ * The minimal observable subscription method.
+ * @param {Object} observer Any object that can be used as an observer.
+ * The observer object should have a `next` method.
+ * @returns {subscription} An object with an `unsubscribe` method that can
+ * be used to unsubscribe the observable from the store, and prevent further
+ * emission of values from the observable.
+ */
+ subscribe: function subscribe(observer) {
+ if (typeof observer !== 'object') {
+ throw new TypeError('Expected the observer to be an object.');
+ }
+
+ function observeState() {
+ if (observer.next) {
+ observer.next(getState());
+ }
+ }
+
+ observeState();
+ var unsubscribe = outerSubscribe(observeState);
+ return { unsubscribe: unsubscribe };
+ }
+ }, _ref[es["a" /* default */]] = function () {
+ return this;
+ }, _ref;
+ }
+
+ // When a store is created, an "INIT" action is dispatched so that every
+ // reducer returns their initial state. This effectively populates
+ // the initial state tree.
+ dispatch({ type: ActionTypes.INIT });
+
+ return _ref2 = {
+ dispatch: dispatch,
+ subscribe: subscribe,
+ getState: getState,
+ replaceReducer: replaceReducer
+ }, _ref2[es["a" /* default */]] = observable, _ref2;
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/utils/warning.js
+/**
+ * Prints a warning in the console if it exists.
+ *
+ * @param {String} message The warning message.
+ * @returns {void}
+ */
+function warning(message) {
+ /* eslint-disable no-console */
+ if (typeof console !== 'undefined' && typeof console.error === 'function') {
+ console.error(message);
+ }
+ /* eslint-enable no-console */
+ try {
+ // This error was thrown as a convenience so that if you enable
+ // "break on all exceptions" in your console,
+ // it would pause the execution at this line.
+ throw new Error(message);
+ /* eslint-disable no-empty */
+ } catch (e) {}
+ /* eslint-enable no-empty */
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/combineReducers.js
+
+
+
+
+function getUndefinedStateErrorMessage(key, action) {
+ var actionType = action && action.type;
+ var actionName = actionType && '"' + actionType.toString() + '"' || 'an action';
+
+ return 'Given action ' + actionName + ', reducer "' + key + '" returned undefined. ' + 'To ignore an action, you must explicitly return the previous state. ' + 'If you want this reducer to hold no value, you can return null instead of undefined.';
+}
+
+function getUnexpectedStateShapeWarningMessage(inputState, reducers, action, unexpectedKeyCache) {
+ var reducerKeys = Object.keys(reducers);
+ var argumentName = action && action.type === ActionTypes.INIT ? 'preloadedState argument passed to createStore' : 'previous state received by the reducer';
+
+ if (reducerKeys.length === 0) {
+ return 'Store does not have a valid reducer. Make sure the argument passed ' + 'to combineReducers is an object whose values are reducers.';
+ }
+
+ if (!lodash_es_isPlainObject(inputState)) {
+ return 'The ' + argumentName + ' has unexpected type of "' + {}.toString.call(inputState).match(/\s([a-z|A-Z]+)/)[1] + '". Expected argument to be an object with the following ' + ('keys: "' + reducerKeys.join('", "') + '"');
+ }
+
+ var unexpectedKeys = Object.keys(inputState).filter(function (key) {
+ return !reducers.hasOwnProperty(key) && !unexpectedKeyCache[key];
+ });
+
+ unexpectedKeys.forEach(function (key) {
+ unexpectedKeyCache[key] = true;
+ });
+
+ if (unexpectedKeys.length > 0) {
+ return 'Unexpected ' + (unexpectedKeys.length > 1 ? 'keys' : 'key') + ' ' + ('"' + unexpectedKeys.join('", "') + '" found in ' + argumentName + '. ') + 'Expected to find one of the known reducer keys instead: ' + ('"' + reducerKeys.join('", "') + '". Unexpected keys will be ignored.');
+ }
+}
+
+function assertReducerShape(reducers) {
+ Object.keys(reducers).forEach(function (key) {
+ var reducer = reducers[key];
+ var initialState = reducer(undefined, { type: ActionTypes.INIT });
+
+ if (typeof initialState === 'undefined') {
+ throw new Error('Reducer "' + key + '" returned undefined during initialization. ' + 'If the state passed to the reducer is undefined, you must ' + 'explicitly return the initial state. The initial state may ' + 'not be undefined. If you don\'t want to set a value for this reducer, ' + 'you can use null instead of undefined.');
+ }
+
+ var type = '@@redux/PROBE_UNKNOWN_ACTION_' + Math.random().toString(36).substring(7).split('').join('.');
+ if (typeof reducer(undefined, { type: type }) === 'undefined') {
+ throw new Error('Reducer "' + key + '" returned undefined when probed with a random type. ' + ('Don\'t try to handle ' + ActionTypes.INIT + ' or other actions in "redux/*" ') + 'namespace. They are considered private. Instead, you must return the ' + 'current state for any unknown actions, unless it is undefined, ' + 'in which case you must return the initial state, regardless of the ' + 'action type. The initial state may not be undefined, but can be null.');
+ }
+ });
+}
+
+/**
+ * Turns an object whose values are different reducer functions, into a single
+ * reducer function. It will call every child reducer, and gather their results
+ * into a single state object, whose keys correspond to the keys of the passed
+ * reducer functions.
+ *
+ * @param {Object} reducers An object whose values correspond to different
+ * reducer functions that need to be combined into one. One handy way to obtain
+ * it is to use ES6 `import * as reducers` syntax. The reducers may never return
+ * undefined for any action. Instead, they should return their initial state
+ * if the state passed to them was undefined, and the current state for any
+ * unrecognized action.
+ *
+ * @returns {Function} A reducer function that invokes every reducer inside the
+ * passed object, and builds a state object with the same shape.
+ */
+function combineReducers(reducers) {
+ var reducerKeys = Object.keys(reducers);
+ var finalReducers = {};
+ for (var i = 0; i < reducerKeys.length; i++) {
+ var key = reducerKeys[i];
+
+ if (false) {}
+
+ if (typeof reducers[key] === 'function') {
+ finalReducers[key] = reducers[key];
+ }
+ }
+ var finalReducerKeys = Object.keys(finalReducers);
+
+ var unexpectedKeyCache = void 0;
+ if (false) {}
+
+ var shapeAssertionError = void 0;
+ try {
+ assertReducerShape(finalReducers);
+ } catch (e) {
+ shapeAssertionError = e;
+ }
+
+ return function combination() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : {};
+ var action = arguments[1];
+
+ if (shapeAssertionError) {
+ throw shapeAssertionError;
+ }
+
+ if (false) { var warningMessage; }
+
+ var hasChanged = false;
+ var nextState = {};
+ for (var _i = 0; _i < finalReducerKeys.length; _i++) {
+ var _key = finalReducerKeys[_i];
+ var reducer = finalReducers[_key];
+ var previousStateForKey = state[_key];
+ var nextStateForKey = reducer(previousStateForKey, action);
+ if (typeof nextStateForKey === 'undefined') {
+ var errorMessage = getUndefinedStateErrorMessage(_key, action);
+ throw new Error(errorMessage);
+ }
+ nextState[_key] = nextStateForKey;
+ hasChanged = hasChanged || nextStateForKey !== previousStateForKey;
+ }
+ return hasChanged ? nextState : state;
+ };
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/bindActionCreators.js
+function bindActionCreator(actionCreator, dispatch) {
+ return function () {
+ return dispatch(actionCreator.apply(undefined, arguments));
+ };
+}
+
+/**
+ * Turns an object whose values are action creators, into an object with the
+ * same keys, but with every function wrapped into a `dispatch` call so they
+ * may be invoked directly. This is just a convenience method, as you can call
+ * `store.dispatch(MyActionCreators.doSomething())` yourself just fine.
+ *
+ * For convenience, you can also pass a single function as the first argument,
+ * and get a function in return.
+ *
+ * @param {Function|Object} actionCreators An object whose values are action
+ * creator functions. One handy way to obtain it is to use ES6 `import * as`
+ * syntax. You may also pass a single function.
+ *
+ * @param {Function} dispatch The `dispatch` function available on your Redux
+ * store.
+ *
+ * @returns {Function|Object} The object mimicking the original object, but with
+ * every action creator wrapped into the `dispatch` call. If you passed a
+ * function as `actionCreators`, the return value will also be a single
+ * function.
+ */
+function bindActionCreators(actionCreators, dispatch) {
+ if (typeof actionCreators === 'function') {
+ return bindActionCreator(actionCreators, dispatch);
+ }
+
+ if (typeof actionCreators !== 'object' || actionCreators === null) {
+ throw new Error('bindActionCreators expected an object or a function, instead received ' + (actionCreators === null ? 'null' : typeof actionCreators) + '. ' + 'Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');
+ }
+
+ var keys = Object.keys(actionCreators);
+ var boundActionCreators = {};
+ for (var i = 0; i < keys.length; i++) {
+ var key = keys[i];
+ var actionCreator = actionCreators[key];
+ if (typeof actionCreator === 'function') {
+ boundActionCreators[key] = bindActionCreator(actionCreator, dispatch);
+ }
+ }
+ return boundActionCreators;
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/compose.js
+/**
+ * Composes single-argument functions from right to left. The rightmost
+ * function can take multiple arguments as it provides the signature for
+ * the resulting composite function.
+ *
+ * @param {...Function} funcs The functions to compose.
+ * @returns {Function} A function obtained by composing the argument functions
+ * from right to left. For example, compose(f, g, h) is identical to doing
+ * (...args) => f(g(h(...args))).
+ */
+
+function compose() {
+ for (var _len = arguments.length, funcs = Array(_len), _key = 0; _key < _len; _key++) {
+ funcs[_key] = arguments[_key];
+ }
+
+ if (funcs.length === 0) {
+ return function (arg) {
+ return arg;
+ };
+ }
+
+ if (funcs.length === 1) {
+ return funcs[0];
+ }
+
+ return funcs.reduce(function (a, b) {
+ return function () {
+ return a(b.apply(undefined, arguments));
+ };
+ });
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/applyMiddleware.js
+var _extends = Object.assign || function (target) { for (var i = 1; i < arguments.length; i++) { var source = arguments[i]; for (var key in source) { if (Object.prototype.hasOwnProperty.call(source, key)) { target[key] = source[key]; } } } return target; };
+
+
+
+/**
+ * Creates a store enhancer that applies middleware to the dispatch method
+ * of the Redux store. This is handy for a variety of tasks, such as expressing
+ * asynchronous actions in a concise manner, or logging every action payload.
+ *
+ * See `redux-thunk` package as an example of the Redux middleware.
+ *
+ * Because middleware is potentially asynchronous, this should be the first
+ * store enhancer in the composition chain.
+ *
+ * Note that each middleware will be given the `dispatch` and `getState` functions
+ * as named arguments.
+ *
+ * @param {...Function} middlewares The middleware chain to be applied.
+ * @returns {Function} A store enhancer applying the middleware.
+ */
+function applyMiddleware() {
+ for (var _len = arguments.length, middlewares = Array(_len), _key = 0; _key < _len; _key++) {
+ middlewares[_key] = arguments[_key];
+ }
+
+ return function (createStore) {
+ return function (reducer, preloadedState, enhancer) {
+ var store = createStore(reducer, preloadedState, enhancer);
+ var _dispatch = store.dispatch;
+ var chain = [];
+
+ var middlewareAPI = {
+ getState: store.getState,
+ dispatch: function dispatch(action) {
+ return _dispatch(action);
+ }
+ };
+ chain = middlewares.map(function (middleware) {
+ return middleware(middlewareAPI);
+ });
+ _dispatch = compose.apply(undefined, chain)(store.dispatch);
+
+ return _extends({}, store, {
+ dispatch: _dispatch
+ });
+ };
+ };
+}
+// CONCATENATED MODULE: ./node_modules/redux/es/index.js
+/* concated harmony reexport createStore */__webpack_require__.d(__webpack_exports__, "createStore", function() { return createStore_createStore; });
+/* concated harmony reexport combineReducers */__webpack_require__.d(__webpack_exports__, "combineReducers", function() { return combineReducers; });
+/* concated harmony reexport bindActionCreators */__webpack_require__.d(__webpack_exports__, "bindActionCreators", function() { return bindActionCreators; });
+/* concated harmony reexport applyMiddleware */__webpack_require__.d(__webpack_exports__, "applyMiddleware", function() { return applyMiddleware; });
+/* concated harmony reexport compose */__webpack_require__.d(__webpack_exports__, "compose", function() { return compose; });
+
+
+
+
+
+
+
+/*
+* This is a dummy function to check if the function name has been altered by minification.
+* If the function has been minified and NODE_ENV !== 'production', warn the user.
+*/
+function isCrushed() {}
+
+if (false) {}
+
+
+
+/***/ }),
+/* 7 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* harmony export (binding) */ __webpack_require__.d(__webpack_exports__, "a", function() { return symbolObservablePonyfill; });
+function symbolObservablePonyfill(root) {
+ var result;
+ var Symbol = root.Symbol;
+
+ if (typeof Symbol === 'function') {
+ if (Symbol.observable) {
+ result = Symbol.observable;
+ } else {
+ result = Symbol('observable');
+ Symbol.observable = result;
+ }
+ } else {
+ result = '@@observable';
+ }
+
+ return result;
+};
+
+
+/***/ }),
+/* 8 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+/* WEBPACK VAR INJECTION */(function(global) {/** Detect free variable `global` from Node.js. */
+var freeGlobal = typeof global == 'object' && global && global.Object === Object && global;
+
+/* harmony default export */ __webpack_exports__["a"] = (freeGlobal);
+
+/* WEBPACK VAR INJECTION */}.call(this, __webpack_require__(3)))
+
+/***/ }),
+/* 9 */
+/***/ (function(module, exports, __webpack_require__) {
+
+module.exports = __webpack_require__(10);
+
+
+/***/ }),
+/* 10 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+var _fuse = _interopRequireDefault(__webpack_require__(11));
+
+var _deepmerge = _interopRequireDefault(__webpack_require__(12));
+
+var _store = _interopRequireDefault(__webpack_require__(13));
+
+var _components = __webpack_require__(20);
+
+var _constants = __webpack_require__(1);
+
+var _templates = __webpack_require__(5);
+
+var _choices = __webpack_require__(28);
+
+var _items = __webpack_require__(29);
+
+var _groups = __webpack_require__(30);
+
+var _misc = __webpack_require__(31);
+
+var _general = __webpack_require__(32);
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _defineProperty(obj, key, value) { if (key in obj) { Object.defineProperty(obj, key, { value: value, enumerable: true, configurable: true, writable: true }); } else { obj[key] = value; } return obj; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+/**
+ * Choices
+ * @author Josh Johnson<josh@joshuajohnson.co.uk>
+ */
+var Choices =
+/*#__PURE__*/
+function () {
+ function Choices() {
+ var element = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '[data-choice]';
+ var userConfig = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {};
+
+ _classCallCheck(this, Choices);
+
+ if ((0, _utils.isType)('String', element)) {
+ var elements = Array.from(document.querySelectorAll(element)); // If there are multiple elements, create a new instance
+ // for each element besides the first one (as that already has an instance)
+
+ if (elements.length > 1) {
+ return this._generateInstances(elements, userConfig);
+ }
+ }
+
+ this.config = _deepmerge.default.all([_constants.DEFAULT_CONFIG, Choices.userDefaults, userConfig], // When merging array configs, replace with a copy of the userConfig array,
+ // instead of concatenating with the default array
+ {
+ arrayMerge: function arrayMerge(destinationArray, sourceArray) {
+ return [].concat(sourceArray);
+ }
+ });
+ var invalidConfigOptions = (0, _utils.diff)(this.config, _constants.DEFAULT_CONFIG);
+
+ if (invalidConfigOptions.length) {
+ console.warn('Unknown config option(s) passed', invalidConfigOptions.join(', '));
+ }
+
+ if (!['auto', 'always'].includes(this.config.renderSelectedChoices)) {
+ this.config.renderSelectedChoices = 'auto';
+ } // Retrieve triggering element (i.e. element with 'data-choice' trigger)
+
+
+ var passedElement = (0, _utils.isType)('String', element) ? document.querySelector(element) : element;
+
+ if (!passedElement) {
+ return console.error('Could not find passed element or passed element was of an invalid type');
+ }
+
+ this._isTextElement = passedElement.type === 'text';
+ this._isSelectOneElement = passedElement.type === 'select-one';
+ this._isSelectMultipleElement = passedElement.type === 'select-multiple';
+ this._isSelectElement = this._isSelectOneElement || this._isSelectMultipleElement;
+
+ if (this._isTextElement) {
+ this.passedElement = new _components.WrappedInput({
+ element: passedElement,
+ classNames: this.config.classNames,
+ delimiter: this.config.delimiter
+ });
+ } else if (this._isSelectElement) {
+ this.passedElement = new _components.WrappedSelect({
+ element: passedElement,
+ classNames: this.config.classNames
+ });
+ }
+
+ if (!this.passedElement) {
+ return console.error('Passed element was of an invalid type');
+ }
+
+ if (this.config.shouldSortItems === true && this._isSelectOneElement && !this.config.silent) {
+ console.warn("shouldSortElements: Type of passed element is 'select-one', falling back to false.");
+ }
+
+ this.initialised = false;
+ this._store = new _store.default(this.render);
+ this._initialState = {};
+ this._currentState = {};
+ this._prevState = {};
+ this._currentValue = '';
+ this._canSearch = this.config.searchEnabled;
+ this._isScrollingOnIe = false;
+ this._highlightPosition = 0;
+ this._wasTap = true;
+ this._placeholderValue = this._generatePlaceholderValue();
+ this._baseId = (0, _utils.generateId)(this.passedElement.element, 'choices-');
+ this._direction = this.passedElement.element.getAttribute('dir') || 'ltr';
+ this._idNames = {
+ itemChoice: 'item-choice'
+ }; // Assign preset choices from passed object
+
+ this._presetChoices = this.config.choices; // Assign preset items from passed object first
+
+ this._presetItems = this.config.items; // Then add any values passed from attribute
+
+ if (this.passedElement.value) {
+ this._presetItems = this._presetItems.concat(this.passedElement.value.split(this.config.delimiter));
+ }
+
+ this._render = this._render.bind(this);
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ this._onKeyUp = this._onKeyUp.bind(this);
+ this._onKeyDown = this._onKeyDown.bind(this);
+ this._onClick = this._onClick.bind(this);
+ this._onTouchMove = this._onTouchMove.bind(this);
+ this._onTouchEnd = this._onTouchEnd.bind(this);
+ this._onMouseDown = this._onMouseDown.bind(this);
+ this._onMouseOver = this._onMouseOver.bind(this);
+ this._onFormReset = this._onFormReset.bind(this);
+ this._onAKey = this._onAKey.bind(this);
+ this._onEnterKey = this._onEnterKey.bind(this);
+ this._onEscapeKey = this._onEscapeKey.bind(this);
+ this._onDirectionKey = this._onDirectionKey.bind(this);
+ this._onDeleteKey = this._onDeleteKey.bind(this); // If element has already been initialised with Choices, fail silently
+
+ if (this.passedElement.element.getAttribute('data-choice') === 'active') {
+ console.warn('Trying to initialise Choices on element already initialised');
+ } // Let's go
+
+
+ this.init();
+ }
+ /* ========================================
+ = Public functions =
+ ======================================== */
+
+
+ _createClass(Choices, [{
+ key: "init",
+ value: function init() {
+ if (this.initialised) {
+ return;
+ }
+
+ this._createTemplates();
+
+ this._createElements();
+
+ this._createStructure(); // Set initial state (We need to clone the state because some reducers
+ // modify the inner objects properties in the state) 🤢
+
+
+ this._initialState = (0, _utils.cloneObject)(this._store.state);
+
+ this._store.subscribe(this._render);
+
+ this._render();
+
+ this._addEventListeners();
+
+ var shouldDisable = !this.config.addItems || this.passedElement.element.hasAttribute('disabled');
+
+ if (shouldDisable) {
+ this.disable();
+ }
+
+ this.initialised = true;
+ var callbackOnInit = this.config.callbackOnInit; // Run callback if it is a function
+
+ if (callbackOnInit && (0, _utils.isType)('Function', callbackOnInit)) {
+ callbackOnInit.call(this);
+ }
+ }
+ }, {
+ key: "destroy",
+ value: function destroy() {
+ if (!this.initialised) {
+ return;
+ }
+
+ this._removeEventListeners();
+
+ this.passedElement.reveal();
+ this.containerOuter.unwrap(this.passedElement.element);
+
+ if (this._isSelectElement) {
+ this.passedElement.options = this._presetChoices;
+ }
+
+ this.clearStore();
+ this.config.templates = null;
+ this.initialised = false;
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ if (this.passedElement.isDisabled) {
+ this.passedElement.enable();
+ }
+
+ if (this.containerOuter.isDisabled) {
+ this._addEventListeners();
+
+ this.input.enable();
+ this.containerOuter.enable();
+ }
+
+ return this;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ if (!this.passedElement.isDisabled) {
+ this.passedElement.disable();
+ }
+
+ if (!this.containerOuter.isDisabled) {
+ this._removeEventListeners();
+
+ this.input.disable();
+ this.containerOuter.disable();
+ }
+
+ return this;
+ }
+ }, {
+ key: "highlightItem",
+ value: function highlightItem(item) {
+ var runEvent = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : true;
+
+ if (!item) {
+ return this;
+ }
+
+ var id = item.id,
+ _item$groupId = item.groupId,
+ groupId = _item$groupId === void 0 ? -1 : _item$groupId,
+ _item$value = item.value,
+ value = _item$value === void 0 ? '' : _item$value,
+ _item$label = item.label,
+ label = _item$label === void 0 ? '' : _item$label;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.highlightItem)(id, true));
+
+ if (runEvent) {
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group && group.value ? group.value : null
+ });
+ }
+
+ return this;
+ }
+ }, {
+ key: "unhighlightItem",
+ value: function unhighlightItem(item) {
+ if (!item) {
+ return this;
+ }
+
+ var id = item.id,
+ _item$groupId2 = item.groupId,
+ groupId = _item$groupId2 === void 0 ? -1 : _item$groupId2,
+ _item$value2 = item.value,
+ value = _item$value2 === void 0 ? '' : _item$value2,
+ _item$label2 = item.label,
+ label = _item$label2 === void 0 ? '' : _item$label2;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.highlightItem)(id, false));
+
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group && group.value ? group.value : null
+ });
+ return this;
+ }
+ }, {
+ key: "highlightAll",
+ value: function highlightAll() {
+ var _this = this;
+
+ this._store.items.forEach(function (item) {
+ return _this.highlightItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "unhighlightAll",
+ value: function unhighlightAll() {
+ var _this2 = this;
+
+ this._store.items.forEach(function (item) {
+ return _this2.unhighlightItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeActiveItemsByValue",
+ value: function removeActiveItemsByValue(value) {
+ var _this3 = this;
+
+ this._store.activeItems.filter(function (item) {
+ return item.value === value;
+ }).forEach(function (item) {
+ return _this3._removeItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeActiveItems",
+ value: function removeActiveItems(excludedId) {
+ var _this4 = this;
+
+ this._store.activeItems.filter(function (_ref) {
+ var id = _ref.id;
+ return id !== excludedId;
+ }).forEach(function (item) {
+ return _this4._removeItem(item);
+ });
+
+ return this;
+ }
+ }, {
+ key: "removeHighlightedItems",
+ value: function removeHighlightedItems() {
+ var _this5 = this;
+
+ var runEvent = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+ this._store.highlightedActiveItems.forEach(function (item) {
+ _this5._removeItem(item); // If this action was performed by the user
+ // trigger the event
+
+
+ if (runEvent) {
+ _this5._triggerChange(item.value);
+ }
+ });
+
+ return this;
+ }
+ }, {
+ key: "showDropdown",
+ value: function showDropdown(preventInputFocus) {
+ var _this6 = this;
+
+ if (this.dropdown.isActive) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ _this6.dropdown.show();
+
+ _this6.containerOuter.open(_this6.dropdown.distanceFromTopWindow());
+
+ if (!preventInputFocus && _this6._canSearch) {
+ _this6.input.focus();
+ }
+
+ _this6.passedElement.triggerEvent(_constants.EVENTS.showDropdown, {});
+ });
+ return this;
+ }
+ }, {
+ key: "hideDropdown",
+ value: function hideDropdown(preventInputBlur) {
+ var _this7 = this;
+
+ if (!this.dropdown.isActive) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ _this7.dropdown.hide();
+
+ _this7.containerOuter.close();
+
+ if (!preventInputBlur && _this7._canSearch) {
+ _this7.input.removeActiveDescendant();
+
+ _this7.input.blur();
+ }
+
+ _this7.passedElement.triggerEvent(_constants.EVENTS.hideDropdown, {});
+ });
+ return this;
+ }
+ }, {
+ key: "getValue",
+ value: function getValue() {
+ var valueOnly = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : false;
+
+ var values = this._store.activeItems.reduce(function (selectedItems, item) {
+ var itemValue = valueOnly ? item.value : item;
+ selectedItems.push(itemValue);
+ return selectedItems;
+ }, []);
+
+ return this._isSelectOneElement ? values[0] : values;
+ }
+ }, {
+ key: "setValue",
+ value: function setValue(args) {
+ var _this8 = this;
+
+ if (!this.initialised) {
+ return this;
+ }
+
+ [].concat(args).forEach(function (value) {
+ return _this8._setChoiceOrItem(value);
+ });
+ return this;
+ }
+ }, {
+ key: "setChoiceByValue",
+ value: function setChoiceByValue(value) {
+ var _this9 = this;
+
+ if (!this.initialised || this._isTextElement) {
+ return this;
+ } // If only one value has been passed, convert to array
+
+
+ var choiceValue = (0, _utils.isType)('Array', value) ? value : [value]; // Loop through each value and
+
+ choiceValue.forEach(function (val) {
+ return _this9._findAndSelectChoiceByValue(val);
+ });
+ return this;
+ }
+ }, {
+ key: "setChoices",
+ value: function setChoices() {
+ var _this10 = this;
+
+ var choices = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var value = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : '';
+ var label = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : '';
+ var replaceChoices = arguments.length > 3 && arguments[3] !== undefined ? arguments[3] : false;
+
+ if (!this._isSelectElement || !value) {
+ return this;
+ } // Clear choices if needed
+
+
+ if (replaceChoices) {
+ this.clearChoices();
+ }
+
+ this.containerOuter.removeLoadingState();
+
+ var addGroupsAndChoices = function addGroupsAndChoices(groupOrChoice) {
+ if (groupOrChoice.choices) {
+ _this10._addGroup({
+ group: groupOrChoice,
+ id: groupOrChoice.id || null,
+ valueKey: value,
+ labelKey: label
+ });
+ } else {
+ _this10._addChoice({
+ value: groupOrChoice[value],
+ label: groupOrChoice[label],
+ isSelected: groupOrChoice.selected,
+ isDisabled: groupOrChoice.disabled,
+ customProperties: groupOrChoice.customProperties,
+ placeholder: groupOrChoice.placeholder
+ });
+ }
+ };
+
+ this._setLoading(true);
+
+ choices.forEach(addGroupsAndChoices);
+
+ this._setLoading(false);
+
+ return this;
+ }
+ }, {
+ key: "clearChoices",
+ value: function clearChoices() {
+ this._store.dispatch((0, _choices.clearChoices)());
+ }
+ }, {
+ key: "clearStore",
+ value: function clearStore() {
+ this._store.dispatch((0, _misc.clearAll)());
+
+ return this;
+ }
+ }, {
+ key: "clearInput",
+ value: function clearInput() {
+ var shouldSetInputWidth = !this._isSelectOneElement;
+ this.input.clear(shouldSetInputWidth);
+
+ if (!this._isTextElement && this._canSearch) {
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ }
+
+ return this;
+ }
+ }, {
+ key: "ajax",
+ value: function ajax(fn) {
+ var _this11 = this;
+
+ if (!this.initialised || !this._isSelectElement || !fn) {
+ return this;
+ }
+
+ requestAnimationFrame(function () {
+ return _this11._handleLoadingState(true);
+ });
+ fn(this._ajaxCallback());
+ return this;
+ }
+ /* ===== End of Public functions ====== */
+
+ /* =============================================
+ = Private functions =
+ ============================================= */
+
+ }, {
+ key: "_render",
+ value: function _render() {
+ if (this._store.isLoading()) {
+ return;
+ }
+
+ this._currentState = this._store.state;
+ var stateChanged = this._currentState.choices !== this._prevState.choices || this._currentState.groups !== this._prevState.groups || this._currentState.items !== this._prevState.items;
+ var shouldRenderChoices = this._isSelectElement;
+ var shouldRenderItems = this._currentState.items !== this._prevState.items;
+
+ if (!stateChanged) {
+ return;
+ }
+
+ if (shouldRenderChoices) {
+ this._renderChoices();
+ }
+
+ if (shouldRenderItems) {
+ this._renderItems();
+ }
+
+ this._prevState = this._currentState;
+ }
+ }, {
+ key: "_renderChoices",
+ value: function _renderChoices() {
+ var _this12 = this;
+
+ var _this$_store = this._store,
+ activeGroups = _this$_store.activeGroups,
+ activeChoices = _this$_store.activeChoices;
+ var choiceListFragment = document.createDocumentFragment();
+ this.choiceList.clear();
+
+ if (this.config.resetScrollPosition) {
+ requestAnimationFrame(function () {
+ return _this12.choiceList.scrollToTop();
+ });
+ } // If we have grouped options
+
+
+ if (activeGroups.length >= 1 && !this._isSearching) {
+ // If we have a placeholder choice along with groups
+ var activePlaceholders = activeChoices.filter(function (activeChoice) {
+ return activeChoice.placeholder === true && activeChoice.groupId === -1;
+ });
+
+ if (activePlaceholders.length >= 1) {
+ choiceListFragment = this._createChoicesFragment(activePlaceholders, choiceListFragment);
+ }
+
+ choiceListFragment = this._createGroupsFragment(activeGroups, activeChoices, choiceListFragment);
+ } else if (activeChoices.length >= 1) {
+ choiceListFragment = this._createChoicesFragment(activeChoices, choiceListFragment);
+ } // If we have choices to show
+
+
+ if (choiceListFragment.childNodes && choiceListFragment.childNodes.length > 0) {
+ var activeItems = this._store.activeItems;
+
+ var canAddItem = this._canAddItem(activeItems, this.input.value); // ...and we can select them
+
+
+ if (canAddItem.response) {
+ // ...append them and highlight the first choice
+ this.choiceList.append(choiceListFragment);
+
+ this._highlightChoice();
+ } else {
+ // ...otherwise show a notice
+ this.choiceList.append(this._getTemplate('notice', canAddItem.notice));
+ }
+ } else {
+ // Otherwise show a notice
+ var dropdownItem;
+ var notice;
+
+ if (this._isSearching) {
+ notice = (0, _utils.isType)('Function', this.config.noResultsText) ? this.config.noResultsText() : this.config.noResultsText;
+ dropdownItem = this._getTemplate('notice', notice, 'no-results');
+ } else {
+ notice = (0, _utils.isType)('Function', this.config.noChoicesText) ? this.config.noChoicesText() : this.config.noChoicesText;
+ dropdownItem = this._getTemplate('notice', notice, 'no-choices');
+ }
+
+ this.choiceList.append(dropdownItem);
+ }
+ }
+ }, {
+ key: "_renderItems",
+ value: function _renderItems() {
+ var activeItems = this._store.activeItems || [];
+ this.itemList.clear(); // Create a fragment to store our list items
+ // (so we don't have to update the DOM for each item)
+
+ var itemListFragment = this._createItemsFragment(activeItems); // If we have items to add, append them
+
+
+ if (itemListFragment.childNodes) {
+ this.itemList.append(itemListFragment);
+ }
+ }
+ }, {
+ key: "_createGroupsFragment",
+ value: function _createGroupsFragment(groups, choices, fragment) {
+ var _this13 = this;
+
+ var groupFragment = fragment || document.createDocumentFragment();
+
+ var getGroupChoices = function getGroupChoices(group) {
+ return choices.filter(function (choice) {
+ if (_this13._isSelectOneElement) {
+ return choice.groupId === group.id;
+ }
+
+ return choice.groupId === group.id && (_this13.config.renderSelectedChoices === 'always' || !choice.selected);
+ });
+ }; // If sorting is enabled, filter groups
+
+
+ if (this.config.shouldSort) {
+ groups.sort(this.config.sortFn);
+ }
+
+ groups.forEach(function (group) {
+ var groupChoices = getGroupChoices(group);
+
+ if (groupChoices.length >= 1) {
+ var dropdownGroup = _this13._getTemplate('choiceGroup', group);
+
+ groupFragment.appendChild(dropdownGroup);
+
+ _this13._createChoicesFragment(groupChoices, groupFragment, true);
+ }
+ });
+ return groupFragment;
+ }
+ }, {
+ key: "_createChoicesFragment",
+ value: function _createChoicesFragment(choices, fragment) {
+ var _this14 = this;
+
+ var withinGroup = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+ // Create a fragment to store our list items (so we don't have to update the DOM for each item)
+ var choicesFragment = fragment || document.createDocumentFragment();
+ var _this$config = this.config,
+ renderSelectedChoices = _this$config.renderSelectedChoices,
+ searchResultLimit = _this$config.searchResultLimit,
+ renderChoiceLimit = _this$config.renderChoiceLimit;
+ var filter = this._isSearching ? _utils.sortByScore : this.config.sortFn;
+
+ var appendChoice = function appendChoice(choice) {
+ var shouldRender = renderSelectedChoices === 'auto' ? _this14._isSelectOneElement || !choice.selected : true;
+
+ if (shouldRender) {
+ var dropdownItem = _this14._getTemplate('choice', choice, _this14.config.itemSelectText);
+
+ choicesFragment.appendChild(dropdownItem);
+ }
+ };
+
+ var rendererableChoices = choices;
+
+ if (renderSelectedChoices === 'auto' && !this._isSelectOneElement) {
+ rendererableChoices = choices.filter(function (choice) {
+ return !choice.selected;
+ });
+ } // Split array into placeholders and "normal" choices
+
+
+ var _rendererableChoices$ = rendererableChoices.reduce(function (acc, choice) {
+ if (choice.placeholder) {
+ acc.placeholderChoices.push(choice);
+ } else {
+ acc.normalChoices.push(choice);
+ }
+
+ return acc;
+ }, {
+ placeholderChoices: [],
+ normalChoices: []
+ }),
+ placeholderChoices = _rendererableChoices$.placeholderChoices,
+ normalChoices = _rendererableChoices$.normalChoices; // If sorting is enabled or the user is searching, filter choices
+
+
+ if (this.config.shouldSort || this._isSearching) {
+ normalChoices.sort(filter);
+ }
+
+ var choiceLimit = rendererableChoices.length; // Prepend placeholeder
+
+ var sortedChoices = [].concat(placeholderChoices, normalChoices);
+
+ if (this._isSearching) {
+ choiceLimit = searchResultLimit;
+ } else if (renderChoiceLimit > 0 && !withinGroup) {
+ choiceLimit = renderChoiceLimit;
+ } // Add each choice to dropdown within range
+
+
+ for (var i = 0; i < choiceLimit; i += 1) {
+ if (sortedChoices[i]) {
+ appendChoice(sortedChoices[i]);
+ }
+ }
+
+ return choicesFragment;
+ }
+ }, {
+ key: "_createItemsFragment",
+ value: function _createItemsFragment(items) {
+ var _this15 = this;
+
+ var fragment = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : null;
+ // Create fragment to add elements to
+ var _this$config2 = this.config,
+ shouldSortItems = _this$config2.shouldSortItems,
+ sortFn = _this$config2.sortFn,
+ removeItemButton = _this$config2.removeItemButton;
+ var itemListFragment = fragment || document.createDocumentFragment(); // If sorting is enabled, filter items
+
+ if (shouldSortItems && !this._isSelectOneElement) {
+ items.sort(sortFn);
+ }
+
+ if (this._isTextElement) {
+ // Update the value of the hidden input
+ this.passedElement.value = items;
+ } else {
+ // Update the options of the hidden input
+ this.passedElement.options = items;
+ }
+
+ var addItemToFragment = function addItemToFragment(item) {
+ // Create new list element
+ var listItem = _this15._getTemplate('item', item, removeItemButton); // Append it to list
+
+
+ itemListFragment.appendChild(listItem);
+ }; // Add each list item to list
+
+
+ items.forEach(function (item) {
+ return addItemToFragment(item);
+ });
+ return itemListFragment;
+ }
+ }, {
+ key: "_triggerChange",
+ value: function _triggerChange(value) {
+ if (value === undefined || value === null) {
+ return;
+ }
+
+ this.passedElement.triggerEvent(_constants.EVENTS.change, {
+ value: value
+ });
+ }
+ }, {
+ key: "_selectPlaceholderChoice",
+ value: function _selectPlaceholderChoice() {
+ var placeholderChoice = this._store.placeholderChoice;
+
+ if (placeholderChoice) {
+ this._addItem({
+ value: placeholderChoice.value,
+ label: placeholderChoice.label,
+ choiceId: placeholderChoice.id,
+ groupId: placeholderChoice.groupId,
+ placeholder: placeholderChoice.placeholder
+ });
+
+ this._triggerChange(placeholderChoice.value);
+ }
+ }
+ }, {
+ key: "_handleButtonAction",
+ value: function _handleButtonAction(activeItems, element) {
+ if (!activeItems || !element || !this.config.removeItems || !this.config.removeItemButton) {
+ return;
+ }
+
+ var itemId = element.parentNode.getAttribute('data-id');
+ var itemToRemove = activeItems.find(function (item) {
+ return item.id === parseInt(itemId, 10);
+ }); // Remove item associated with button
+
+ this._removeItem(itemToRemove);
+
+ this._triggerChange(itemToRemove.value);
+
+ if (this._isSelectOneElement) {
+ this._selectPlaceholderChoice();
+ }
+ }
+ }, {
+ key: "_handleItemAction",
+ value: function _handleItemAction(activeItems, element) {
+ var _this16 = this;
+
+ var hasShiftKey = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : false;
+
+ if (!activeItems || !element || !this.config.removeItems || this._isSelectOneElement) {
+ return;
+ }
+
+ var passedId = element.getAttribute('data-id'); // We only want to select one item with a click
+ // so we deselect any items that aren't the target
+ // unless shift is being pressed
+
+ activeItems.forEach(function (item) {
+ if (item.id === parseInt(passedId, 10) && !item.highlighted) {
+ _this16.highlightItem(item);
+ } else if (!hasShiftKey && item.highlighted) {
+ _this16.unhighlightItem(item);
+ }
+ }); // Focus input as without focus, a user cannot do anything with a
+ // highlighted item
+
+ this.input.focus();
+ }
+ }, {
+ key: "_handleChoiceAction",
+ value: function _handleChoiceAction(activeItems, element) {
+ if (!activeItems || !element) {
+ return;
+ } // If we are clicking on an option
+
+
+ var id = element.getAttribute('data-id');
+
+ var choice = this._store.getChoiceById(id);
+
+ var passedKeyCode = activeItems[0] && activeItems[0].keyCode ? activeItems[0].keyCode : null;
+ var hasActiveDropdown = this.dropdown.isActive; // Update choice keyCode
+
+ choice.keyCode = passedKeyCode;
+ this.passedElement.triggerEvent(_constants.EVENTS.choice, {
+ choice: choice
+ });
+
+ if (choice && !choice.selected && !choice.disabled) {
+ var canAddItem = this._canAddItem(activeItems, choice.value);
+
+ if (canAddItem.response) {
+ this._addItem({
+ value: choice.value,
+ label: choice.label,
+ choiceId: choice.id,
+ groupId: choice.groupId,
+ customProperties: choice.customProperties,
+ placeholder: choice.placeholder,
+ keyCode: choice.keyCode
+ });
+
+ this._triggerChange(choice.value);
+ }
+ }
+
+ this.clearInput(); // We wont to close the dropdown if we are dealing with a single select box
+
+ if (hasActiveDropdown && this._isSelectOneElement) {
+ this.hideDropdown(true);
+ this.containerOuter.focus();
+ }
+ }
+ }, {
+ key: "_handleBackspace",
+ value: function _handleBackspace(activeItems) {
+ if (!this.config.removeItems || !activeItems) {
+ return;
+ }
+
+ var lastItem = activeItems[activeItems.length - 1];
+ var hasHighlightedItems = activeItems.some(function (item) {
+ return item.highlighted;
+ }); // If editing the last item is allowed and there are not other selected items,
+ // we can edit the item value. Otherwise if we can remove items, remove all selected items
+
+ if (this.config.editItems && !hasHighlightedItems && lastItem) {
+ this.input.value = lastItem.value;
+ this.input.setWidth();
+
+ this._removeItem(lastItem);
+
+ this._triggerChange(lastItem.value);
+ } else {
+ if (!hasHighlightedItems) {
+ // Highlight last item if none already highlighted
+ this.highlightItem(lastItem, false);
+ }
+
+ this.removeHighlightedItems(true);
+ }
+ }
+ }, {
+ key: "_setLoading",
+ value: function _setLoading(isLoading) {
+ this._store.dispatch((0, _general.setIsLoading)(isLoading));
+ }
+ }, {
+ key: "_handleLoadingState",
+ value: function _handleLoadingState() {
+ var setLoading = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+ var placeholderItem = this.itemList.getChild(".".concat(this.config.classNames.placeholder));
+
+ if (setLoading) {
+ this.disable();
+ this.containerOuter.addLoadingState();
+
+ if (this._isSelectOneElement) {
+ if (!placeholderItem) {
+ placeholderItem = this._getTemplate('placeholder', this.config.loadingText);
+ this.itemList.append(placeholderItem);
+ } else {
+ placeholderItem.innerHTML = this.config.loadingText;
+ }
+ } else {
+ this.input.placeholder = this.config.loadingText;
+ }
+ } else {
+ this.enable();
+ this.containerOuter.removeLoadingState();
+
+ if (this._isSelectOneElement) {
+ placeholderItem.innerHTML = this._placeholderValue || '';
+ } else {
+ this.input.placeholder = this._placeholderValue || '';
+ }
+ }
+ }
+ }, {
+ key: "_handleSearch",
+ value: function _handleSearch(value) {
+ if (!value || !this.input.isFocussed) {
+ return;
+ }
+
+ var choices = this._store.choices;
+ var _this$config3 = this.config,
+ searchFloor = _this$config3.searchFloor,
+ searchChoices = _this$config3.searchChoices;
+ var hasUnactiveChoices = choices.some(function (option) {
+ return !option.active;
+ }); // Check that we have a value to search and the input was an alphanumeric character
+
+ if (value && value.length >= searchFloor) {
+ var resultCount = searchChoices ? this._searchChoices(value) : 0; // Trigger search event
+
+ this.passedElement.triggerEvent(_constants.EVENTS.search, {
+ value: value,
+ resultCount: resultCount
+ });
+ } else if (hasUnactiveChoices) {
+ // Otherwise reset choices to active
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ }
+ }
+ }, {
+ key: "_canAddItem",
+ value: function _canAddItem(activeItems, value) {
+ var canAddItem = true;
+ var notice = (0, _utils.isType)('Function', this.config.addItemText) ? this.config.addItemText(value) : this.config.addItemText;
+
+ if (!this._isSelectOneElement) {
+ var isDuplicateValue = (0, _utils.existsInArray)(activeItems, value);
+
+ if (this.config.maxItemCount > 0 && this.config.maxItemCount <= activeItems.length) {
+ // If there is a max entry limit and we have reached that limit
+ // don't update
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.maxItemText) ? this.config.maxItemText(this.config.maxItemCount) : this.config.maxItemText;
+ }
+
+ if (!this.config.duplicateItemsAllowed && isDuplicateValue && canAddItem) {
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.uniqueItemText) ? this.config.uniqueItemText(value) : this.config.uniqueItemText;
+ }
+
+ if (this._isTextElement && this.config.addItems && canAddItem && (0, _utils.isType)('Function', this.config.addItemFilterFn) && !this.config.addItemFilterFn(value)) {
+ canAddItem = false;
+ notice = (0, _utils.isType)('Function', this.config.customAddItemText) ? this.config.customAddItemText(value) : this.config.customAddItemText;
+ }
+ }
+
+ return {
+ response: canAddItem,
+ notice: notice
+ };
+ }
+ }, {
+ key: "_ajaxCallback",
+ value: function _ajaxCallback() {
+ var _this17 = this;
+
+ return function (results, value, label) {
+ if (!results || !value) {
+ return;
+ }
+
+ var parsedResults = (0, _utils.isType)('Object', results) ? [results] : results;
+
+ if (parsedResults && (0, _utils.isType)('Array', parsedResults) && parsedResults.length) {
+ // Remove loading states/text
+ _this17._handleLoadingState(false);
+
+ _this17._setLoading(true); // Add each result as a choice
+
+
+ parsedResults.forEach(function (result) {
+ if (result.choices) {
+ _this17._addGroup({
+ group: result,
+ id: result.id || null,
+ valueKey: value,
+ labelKey: label
+ });
+ } else {
+ _this17._addChoice({
+ value: (0, _utils.fetchFromObject)(result, value),
+ label: (0, _utils.fetchFromObject)(result, label),
+ isSelected: result.selected,
+ isDisabled: result.disabled,
+ customProperties: result.customProperties,
+ placeholder: result.placeholder
+ });
+ }
+ });
+
+ _this17._setLoading(false);
+
+ if (_this17._isSelectOneElement) {
+ _this17._selectPlaceholderChoice();
+ }
+ } else {
+ // No results, remove loading state
+ _this17._handleLoadingState(false);
+ }
+ };
+ }
+ }, {
+ key: "_searchChoices",
+ value: function _searchChoices(value) {
+ var newValue = (0, _utils.isType)('String', value) ? value.trim() : value;
+ var currentValue = (0, _utils.isType)('String', this._currentValue) ? this._currentValue.trim() : this._currentValue;
+
+ if (newValue.length < 1 && newValue === "".concat(currentValue, " ")) {
+ return 0;
+ } // If new value matches the desired length and is not the same as the current value with a space
+
+
+ var haystack = this._store.searchableChoices;
+ var needle = newValue;
+ var keys = [].concat(this.config.searchFields);
+ var options = Object.assign(this.config.fuseOptions, {
+ keys: keys
+ });
+ var fuse = new _fuse.default(haystack, options);
+ var results = fuse.search(needle);
+ this._currentValue = newValue;
+ this._highlightPosition = 0;
+ this._isSearching = true;
+
+ this._store.dispatch((0, _choices.filterChoices)(results));
+
+ return results.length;
+ }
+ }, {
+ key: "_addEventListeners",
+ value: function _addEventListeners() {
+ document.addEventListener('keyup', this._onKeyUp);
+ document.addEventListener('keydown', this._onKeyDown);
+ document.addEventListener('click', this._onClick);
+ document.addEventListener('touchmove', this._onTouchMove);
+ document.addEventListener('touchend', this._onTouchEnd);
+ document.addEventListener('mousedown', this._onMouseDown);
+ document.addEventListener('mouseover', this._onMouseOver);
+
+ if (this._isSelectOneElement) {
+ this.containerOuter.element.addEventListener('focus', this._onFocus);
+ this.containerOuter.element.addEventListener('blur', this._onBlur);
+ }
+
+ this.input.element.addEventListener('focus', this._onFocus);
+ this.input.element.addEventListener('blur', this._onBlur);
+
+ if (this.input.element.form) {
+ this.input.element.form.addEventListener('reset', this._onFormReset);
+ }
+
+ this.input.addEventListeners();
+ }
+ }, {
+ key: "_removeEventListeners",
+ value: function _removeEventListeners() {
+ document.removeEventListener('keyup', this._onKeyUp);
+ document.removeEventListener('keydown', this._onKeyDown);
+ document.removeEventListener('click', this._onClick);
+ document.removeEventListener('touchmove', this._onTouchMove);
+ document.removeEventListener('touchend', this._onTouchEnd);
+ document.removeEventListener('mousedown', this._onMouseDown);
+ document.removeEventListener('mouseover', this._onMouseOver);
+
+ if (this._isSelectOneElement) {
+ this.containerOuter.element.removeEventListener('focus', this._onFocus);
+ this.containerOuter.element.removeEventListener('blur', this._onBlur);
+ }
+
+ this.input.element.removeEventListener('focus', this._onFocus);
+ this.input.element.removeEventListener('blur', this._onBlur);
+
+ if (this.input.element.form) {
+ this.input.element.form.removeEventListener('reset', this._onFormReset);
+ }
+
+ this.input.removeEventListeners();
+ }
+ }, {
+ key: "_onKeyDown",
+ value: function _onKeyDown(event) {
+ var _keyDownActions;
+
+ var target = event.target,
+ keyCode = event.keyCode,
+ ctrlKey = event.ctrlKey,
+ metaKey = event.metaKey;
+
+ if (target !== this.input.element && !this.containerOuter.element.contains(target)) {
+ return;
+ }
+
+ var activeItems = this._store.activeItems;
+ var hasFocusedInput = this.input.isFocussed;
+ var hasActiveDropdown = this.dropdown.isActive;
+ var hasItems = this.itemList.hasChildren;
+ var keyString = String.fromCharCode(keyCode);
+ var BACK_KEY = _constants.KEY_CODES.BACK_KEY,
+ DELETE_KEY = _constants.KEY_CODES.DELETE_KEY,
+ ENTER_KEY = _constants.KEY_CODES.ENTER_KEY,
+ A_KEY = _constants.KEY_CODES.A_KEY,
+ ESC_KEY = _constants.KEY_CODES.ESC_KEY,
+ UP_KEY = _constants.KEY_CODES.UP_KEY,
+ DOWN_KEY = _constants.KEY_CODES.DOWN_KEY,
+ PAGE_UP_KEY = _constants.KEY_CODES.PAGE_UP_KEY,
+ PAGE_DOWN_KEY = _constants.KEY_CODES.PAGE_DOWN_KEY;
+ var hasCtrlDownKeyPressed = ctrlKey || metaKey; // If a user is typing and the dropdown is not active
+
+ if (!this._isTextElement && /[a-zA-Z0-9-_ ]/.test(keyString)) {
+ this.showDropdown();
+ } // Map keys to key actions
+
+
+ var keyDownActions = (_keyDownActions = {}, _defineProperty(_keyDownActions, A_KEY, this._onAKey), _defineProperty(_keyDownActions, ENTER_KEY, this._onEnterKey), _defineProperty(_keyDownActions, ESC_KEY, this._onEscapeKey), _defineProperty(_keyDownActions, UP_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, PAGE_UP_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, DOWN_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, PAGE_DOWN_KEY, this._onDirectionKey), _defineProperty(_keyDownActions, DELETE_KEY, this._onDeleteKey), _defineProperty(_keyDownActions, BACK_KEY, this._onDeleteKey), _keyDownActions); // If keycode has a function, run it
+
+ if (keyDownActions[keyCode]) {
+ keyDownActions[keyCode]({
+ event: event,
+ target: target,
+ keyCode: keyCode,
+ metaKey: metaKey,
+ activeItems: activeItems,
+ hasFocusedInput: hasFocusedInput,
+ hasActiveDropdown: hasActiveDropdown,
+ hasItems: hasItems,
+ hasCtrlDownKeyPressed: hasCtrlDownKeyPressed
+ });
+ }
+ }
+ }, {
+ key: "_onKeyUp",
+ value: function _onKeyUp(_ref2) {
+ var target = _ref2.target,
+ keyCode = _ref2.keyCode;
+
+ if (target !== this.input.element) {
+ return;
+ }
+
+ var value = this.input.value;
+ var activeItems = this._store.activeItems;
+
+ var canAddItem = this._canAddItem(activeItems, value);
+
+ var backKey = _constants.KEY_CODES.BACK_KEY,
+ deleteKey = _constants.KEY_CODES.DELETE_KEY; // We are typing into a text input and have a value, we want to show a dropdown
+ // notice. Otherwise hide the dropdown
+
+ if (this._isTextElement) {
+ var canShowDropdownNotice = canAddItem.notice && value;
+
+ if (canShowDropdownNotice) {
+ var dropdownItem = this._getTemplate('notice', canAddItem.notice);
+
+ this.dropdown.element.innerHTML = dropdownItem.outerHTML;
+ this.showDropdown(true);
+ } else {
+ this.hideDropdown(true);
+ }
+ } else {
+ var userHasRemovedValue = (keyCode === backKey || keyCode === deleteKey) && !target.value;
+ var canReactivateChoices = !this._isTextElement && this._isSearching;
+ var canSearch = this._canSearch && canAddItem.response;
+
+ if (userHasRemovedValue && canReactivateChoices) {
+ this._isSearching = false;
+
+ this._store.dispatch((0, _choices.activateChoices)(true));
+ } else if (canSearch) {
+ this._handleSearch(this.input.value);
+ }
+ }
+
+ this._canSearch = this.config.searchEnabled;
+ }
+ }, {
+ key: "_onAKey",
+ value: function _onAKey(_ref3) {
+ var hasItems = _ref3.hasItems,
+ hasCtrlDownKeyPressed = _ref3.hasCtrlDownKeyPressed;
+
+ // If CTRL + A or CMD + A have been pressed and there are items to select
+ if (hasCtrlDownKeyPressed && hasItems) {
+ this._canSearch = false;
+ var shouldHightlightAll = this.config.removeItems && !this.input.value && this.input.element === document.activeElement;
+
+ if (shouldHightlightAll) {
+ this.highlightAll();
+ }
+ }
+ }
+ }, {
+ key: "_onEnterKey",
+ value: function _onEnterKey(_ref4) {
+ var event = _ref4.event,
+ target = _ref4.target,
+ activeItems = _ref4.activeItems,
+ hasActiveDropdown = _ref4.hasActiveDropdown;
+ var enterKey = _constants.KEY_CODES.ENTER_KEY;
+ var targetWasButton = target.hasAttribute('data-button');
+
+ if (this._isTextElement && target.value) {
+ var value = this.input.value;
+
+ var canAddItem = this._canAddItem(activeItems, value);
+
+ if (canAddItem.response) {
+ this.hideDropdown(true);
+
+ this._addItem({
+ value: value
+ });
+
+ this._triggerChange(value);
+
+ this.clearInput();
+ }
+ }
+
+ if (targetWasButton) {
+ this._handleButtonAction(activeItems, target);
+
+ event.preventDefault();
+ }
+
+ if (hasActiveDropdown) {
+ var highlightedChoice = this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));
+
+ if (highlightedChoice) {
+ // add enter keyCode value
+ if (activeItems[0]) {
+ activeItems[0].keyCode = enterKey; // eslint-disable-line no-param-reassign
+ }
+
+ this._handleChoiceAction(activeItems, highlightedChoice);
+ }
+
+ event.preventDefault();
+ } else if (this._isSelectOneElement) {
+ this.showDropdown();
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onEscapeKey",
+ value: function _onEscapeKey(_ref5) {
+ var hasActiveDropdown = _ref5.hasActiveDropdown;
+
+ if (hasActiveDropdown) {
+ this.hideDropdown(true);
+ this.containerOuter.focus();
+ }
+ }
+ }, {
+ key: "_onDirectionKey",
+ value: function _onDirectionKey(_ref6) {
+ var event = _ref6.event,
+ hasActiveDropdown = _ref6.hasActiveDropdown,
+ keyCode = _ref6.keyCode,
+ metaKey = _ref6.metaKey;
+ var downKey = _constants.KEY_CODES.DOWN_KEY,
+ pageUpKey = _constants.KEY_CODES.PAGE_UP_KEY,
+ pageDownKey = _constants.KEY_CODES.PAGE_DOWN_KEY; // If up or down key is pressed, traverse through options
+
+ if (hasActiveDropdown || this._isSelectOneElement) {
+ this.showDropdown();
+ this._canSearch = false;
+ var directionInt = keyCode === downKey || keyCode === pageDownKey ? 1 : -1;
+ var skipKey = metaKey || keyCode === pageDownKey || keyCode === pageUpKey;
+ var selectableChoiceIdentifier = '[data-choice-selectable]';
+ var nextEl;
+
+ if (skipKey) {
+ if (directionInt > 0) {
+ nextEl = Array.from(this.dropdown.element.querySelectorAll(selectableChoiceIdentifier)).pop();
+ } else {
+ nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);
+ }
+ } else {
+ var currentEl = this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));
+
+ if (currentEl) {
+ nextEl = (0, _utils.getAdjacentEl)(currentEl, selectableChoiceIdentifier, directionInt);
+ } else {
+ nextEl = this.dropdown.element.querySelector(selectableChoiceIdentifier);
+ }
+ }
+
+ if (nextEl) {
+ // We prevent default to stop the cursor moving
+ // when pressing the arrow
+ if (!(0, _utils.isScrolledIntoView)(nextEl, this.choiceList.element, directionInt)) {
+ this.choiceList.scrollToChoice(nextEl, directionInt);
+ }
+
+ this._highlightChoice(nextEl);
+ } // Prevent default to maintain cursor position whilst
+ // traversing dropdown options
+
+
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onDeleteKey",
+ value: function _onDeleteKey(_ref7) {
+ var event = _ref7.event,
+ target = _ref7.target,
+ hasFocusedInput = _ref7.hasFocusedInput,
+ activeItems = _ref7.activeItems;
+
+ // If backspace or delete key is pressed and the input has no value
+ if (hasFocusedInput && !target.value && !this._isSelectOneElement) {
+ this._handleBackspace(activeItems);
+
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onTouchMove",
+ value: function _onTouchMove() {
+ if (this._wasTap) {
+ this._wasTap = false;
+ }
+ }
+ }, {
+ key: "_onTouchEnd",
+ value: function _onTouchEnd(event) {
+ var _ref8 = event || event.touches[0],
+ target = _ref8.target;
+
+ var touchWasWithinContainer = this._wasTap && this.containerOuter.element.contains(target);
+
+ if (touchWasWithinContainer) {
+ var containerWasExactTarget = target === this.containerOuter.element || target === this.containerInner.element;
+
+ if (containerWasExactTarget) {
+ if (this._isTextElement) {
+ this.input.focus();
+ } else if (this._isSelectMultipleElement) {
+ this.showDropdown();
+ }
+ } // Prevents focus event firing
+
+
+ event.stopPropagation();
+ }
+
+ this._wasTap = true;
+ }
+ }, {
+ key: "_onMouseDown",
+ value: function _onMouseDown(event) {
+ var target = event.target,
+ shiftKey = event.shiftKey; // If we have our mouse down on the scrollbar and are on IE11...
+
+ if (this.choiceList.element.contains(target) && (0, _utils.isIE11)()) {
+ this._isScrollingOnIe = true;
+ }
+
+ if (!this.containerOuter.element.contains(target) || target === this.input.element) {
+ return;
+ }
+
+ var activeItems = this._store.activeItems;
+ var hasShiftKey = shiftKey;
+ var buttonTarget = (0, _utils.findAncestorByAttrName)(target, 'data-button');
+ var itemTarget = (0, _utils.findAncestorByAttrName)(target, 'data-item');
+ var choiceTarget = (0, _utils.findAncestorByAttrName)(target, 'data-choice');
+
+ if (buttonTarget) {
+ this._handleButtonAction(activeItems, buttonTarget);
+ } else if (itemTarget) {
+ this._handleItemAction(activeItems, itemTarget, hasShiftKey);
+ } else if (choiceTarget) {
+ this._handleChoiceAction(activeItems, choiceTarget);
+ }
+
+ event.preventDefault();
+ }
+ }, {
+ key: "_onMouseOver",
+ value: function _onMouseOver(_ref9) {
+ var target = _ref9.target;
+ var targetWithinDropdown = target === this.dropdown || this.dropdown.element.contains(target);
+ var shouldHighlightChoice = targetWithinDropdown && target.hasAttribute('data-choice');
+
+ if (shouldHighlightChoice) {
+ this._highlightChoice(target);
+ }
+ }
+ }, {
+ key: "_onClick",
+ value: function _onClick(_ref10) {
+ var target = _ref10.target;
+ var clickWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (clickWasWithinContainer) {
+ if (!this.dropdown.isActive && !this.containerOuter.isDisabled) {
+ if (this._isTextElement) {
+ if (document.activeElement !== this.input.element) {
+ this.input.focus();
+ }
+ } else {
+ this.showDropdown();
+ this.containerOuter.focus();
+ }
+ } else if (this._isSelectOneElement && target !== this.input.element && !this.dropdown.element.contains(target)) {
+ this.hideDropdown();
+ }
+ } else {
+ var hasHighlightedItems = this._store.highlightedActiveItems;
+
+ if (hasHighlightedItems) {
+ this.unhighlightAll();
+ }
+
+ this.containerOuter.removeFocusState();
+ this.hideDropdown(true);
+ }
+ }
+ }, {
+ key: "_onFocus",
+ value: function _onFocus(_ref11) {
+ var _this18 = this;
+
+ var target = _ref11.target;
+ var focusWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (!focusWasWithinContainer) {
+ return;
+ }
+
+ var focusActions = {
+ text: function text() {
+ if (target === _this18.input.element) {
+ _this18.containerOuter.addFocusState();
+ }
+ },
+ 'select-one': function selectOne() {
+ _this18.containerOuter.addFocusState();
+
+ if (target === _this18.input.element) {
+ _this18.showDropdown(true);
+ }
+ },
+ 'select-multiple': function selectMultiple() {
+ if (target === _this18.input.element) {
+ _this18.showDropdown(true); // If element is a select box, the focused element is the container and the dropdown
+ // isn't already open, focus and show dropdown
+
+
+ _this18.containerOuter.addFocusState();
+ }
+ }
+ };
+ focusActions[this.passedElement.element.type]();
+ }
+ }, {
+ key: "_onBlur",
+ value: function _onBlur(_ref12) {
+ var _this19 = this;
+
+ var target = _ref12.target;
+ var blurWasWithinContainer = this.containerOuter.element.contains(target);
+
+ if (blurWasWithinContainer && !this._isScrollingOnIe) {
+ var activeItems = this._store.activeItems;
+ var hasHighlightedItems = activeItems.some(function (item) {
+ return item.highlighted;
+ });
+ var blurActions = {
+ text: function text() {
+ if (target === _this19.input.element) {
+ _this19.containerOuter.removeFocusState();
+
+ if (hasHighlightedItems) {
+ _this19.unhighlightAll();
+ }
+
+ _this19.hideDropdown(true);
+ }
+ },
+ 'select-one': function selectOne() {
+ _this19.containerOuter.removeFocusState();
+
+ if (target === _this19.input.element || target === _this19.containerOuter.element && !_this19._canSearch) {
+ _this19.hideDropdown(true);
+ }
+ },
+ 'select-multiple': function selectMultiple() {
+ if (target === _this19.input.element) {
+ _this19.containerOuter.removeFocusState();
+
+ _this19.hideDropdown(true);
+
+ if (hasHighlightedItems) {
+ _this19.unhighlightAll();
+ }
+ }
+ }
+ };
+ blurActions[this.passedElement.element.type]();
+ } else {
+ // On IE11, clicking the scollbar blurs our input and thus
+ // closes the dropdown. To stop this, we refocus our input
+ // if we know we are on IE *and* are scrolling.
+ this._isScrollingOnIe = false;
+ this.input.element.focus();
+ }
+ }
+ }, {
+ key: "_onFormReset",
+ value: function _onFormReset() {
+ this._store.dispatch((0, _misc.resetTo)(this._initialState));
+ }
+ }, {
+ key: "_highlightChoice",
+ value: function _highlightChoice() {
+ var _this20 = this;
+
+ var el = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : null;
+ var choices = Array.from(this.dropdown.element.querySelectorAll('[data-choice-selectable]'));
+
+ if (!choices.length) {
+ return;
+ }
+
+ var passedEl = el;
+ var highlightedChoices = Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState))); // Remove any highlighted choices
+
+ highlightedChoices.forEach(function (choice) {
+ choice.classList.remove(_this20.config.classNames.highlightedState);
+ choice.setAttribute('aria-selected', 'false');
+ });
+
+ if (passedEl) {
+ this._highlightPosition = choices.indexOf(passedEl);
+ } else {
+ // Highlight choice based on last known highlight location
+ if (choices.length > this._highlightPosition) {
+ // If we have an option to highlight
+ passedEl = choices[this._highlightPosition];
+ } else {
+ // Otherwise highlight the option before
+ passedEl = choices[choices.length - 1];
+ }
+
+ if (!passedEl) {
+ passedEl = choices[0];
+ }
+ }
+
+ passedEl.classList.add(this.config.classNames.highlightedState);
+ passedEl.setAttribute('aria-selected', 'true');
+ this.passedElement.triggerEvent(_constants.EVENTS.highlightChoice, {
+ el: passedEl
+ });
+
+ if (this.dropdown.isActive) {
+ // IE11 ignores aria-label and blocks virtual keyboard
+ // if aria-activedescendant is set without a dropdown
+ this.input.setActiveDescendant(passedEl.id);
+ this.containerOuter.setActiveDescendant(passedEl.id);
+ }
+ }
+ }, {
+ key: "_addItem",
+ value: function _addItem(_ref13) {
+ var value = _ref13.value,
+ _ref13$label = _ref13.label,
+ label = _ref13$label === void 0 ? null : _ref13$label,
+ _ref13$choiceId = _ref13.choiceId,
+ choiceId = _ref13$choiceId === void 0 ? -1 : _ref13$choiceId,
+ _ref13$groupId = _ref13.groupId,
+ groupId = _ref13$groupId === void 0 ? -1 : _ref13$groupId,
+ _ref13$customProperti = _ref13.customProperties,
+ customProperties = _ref13$customProperti === void 0 ? null : _ref13$customProperti,
+ _ref13$placeholder = _ref13.placeholder,
+ placeholder = _ref13$placeholder === void 0 ? false : _ref13$placeholder,
+ _ref13$keyCode = _ref13.keyCode,
+ keyCode = _ref13$keyCode === void 0 ? null : _ref13$keyCode;
+ var passedValue = (0, _utils.isType)('String', value) ? value.trim() : value;
+ var passedKeyCode = keyCode;
+ var passedCustomProperties = customProperties;
+ var items = this._store.items;
+ var passedLabel = label || passedValue;
+ var passedOptionId = parseInt(choiceId, 10) || -1;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+ var id = items ? items.length + 1 : 1; // If a prepended value has been passed, prepend it
+
+ if (this.config.prependValue) {
+ passedValue = this.config.prependValue + passedValue.toString();
+ } // If an appended value has been passed, append it
+
+
+ if (this.config.appendValue) {
+ passedValue += this.config.appendValue.toString();
+ }
+
+ this._store.dispatch((0, _items.addItem)({
+ value: passedValue,
+ label: passedLabel,
+ id: id,
+ choiceId: passedOptionId,
+ groupId: groupId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: passedKeyCode
+ }));
+
+ if (this._isSelectOneElement) {
+ this.removeActiveItems(id);
+ } // Trigger change event
+
+
+ this.passedElement.triggerEvent(_constants.EVENTS.addItem, {
+ id: id,
+ value: passedValue,
+ label: passedLabel,
+ customProperties: passedCustomProperties,
+ groupValue: group && group.value ? group.value : undefined,
+ keyCode: passedKeyCode
+ });
+ return this;
+ }
+ }, {
+ key: "_removeItem",
+ value: function _removeItem(item) {
+ if (!item || !(0, _utils.isType)('Object', item)) {
+ return this;
+ }
+
+ var id = item.id,
+ value = item.value,
+ label = item.label,
+ choiceId = item.choiceId,
+ groupId = item.groupId;
+ var group = groupId >= 0 ? this._store.getGroupById(groupId) : null;
+
+ this._store.dispatch((0, _items.removeItem)(id, choiceId));
+
+ if (group && group.value) {
+ this.passedElement.triggerEvent(_constants.EVENTS.removeItem, {
+ id: id,
+ value: value,
+ label: label,
+ groupValue: group.value
+ });
+ } else {
+ this.passedElement.triggerEvent(_constants.EVENTS.removeItem, {
+ id: id,
+ value: value,
+ label: label
+ });
+ }
+
+ return this;
+ }
+ }, {
+ key: "_addChoice",
+ value: function _addChoice(_ref14) {
+ var value = _ref14.value,
+ _ref14$label = _ref14.label,
+ label = _ref14$label === void 0 ? null : _ref14$label,
+ _ref14$isSelected = _ref14.isSelected,
+ isSelected = _ref14$isSelected === void 0 ? false : _ref14$isSelected,
+ _ref14$isDisabled = _ref14.isDisabled,
+ isDisabled = _ref14$isDisabled === void 0 ? false : _ref14$isDisabled,
+ _ref14$groupId = _ref14.groupId,
+ groupId = _ref14$groupId === void 0 ? -1 : _ref14$groupId,
+ _ref14$customProperti = _ref14.customProperties,
+ customProperties = _ref14$customProperti === void 0 ? null : _ref14$customProperti,
+ _ref14$placeholder = _ref14.placeholder,
+ placeholder = _ref14$placeholder === void 0 ? false : _ref14$placeholder,
+ _ref14$keyCode = _ref14.keyCode,
+ keyCode = _ref14$keyCode === void 0 ? null : _ref14$keyCode;
+
+ if (typeof value === 'undefined' || value === null) {
+ return;
+ } // Generate unique id
+
+
+ var choices = this._store.choices;
+ var choiceLabel = label || value;
+ var choiceId = choices ? choices.length + 1 : 1;
+ var choiceElementId = "".concat(this._baseId, "-").concat(this._idNames.itemChoice, "-").concat(choiceId);
+
+ this._store.dispatch((0, _choices.addChoice)({
+ value: value,
+ label: choiceLabel,
+ id: choiceId,
+ groupId: groupId,
+ disabled: isDisabled,
+ elementId: choiceElementId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ }));
+
+ if (isSelected) {
+ this._addItem({
+ value: value,
+ label: choiceLabel,
+ choiceId: choiceId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ });
+ }
+ }
+ }, {
+ key: "_addGroup",
+ value: function _addGroup(_ref15) {
+ var _this21 = this;
+
+ var group = _ref15.group,
+ id = _ref15.id,
+ _ref15$valueKey = _ref15.valueKey,
+ valueKey = _ref15$valueKey === void 0 ? 'value' : _ref15$valueKey,
+ _ref15$labelKey = _ref15.labelKey,
+ labelKey = _ref15$labelKey === void 0 ? 'label' : _ref15$labelKey;
+ var groupChoices = (0, _utils.isType)('Object', group) ? group.choices : Array.from(group.getElementsByTagName('OPTION'));
+ var groupId = id || Math.floor(new Date().valueOf() * Math.random());
+ var isDisabled = group.disabled ? group.disabled : false;
+
+ if (groupChoices) {
+ this._store.dispatch((0, _groups.addGroup)(group.label, groupId, true, isDisabled));
+
+ var addGroupChoices = function addGroupChoices(choice) {
+ var isOptDisabled = choice.disabled || choice.parentNode && choice.parentNode.disabled;
+
+ _this21._addChoice({
+ value: choice[valueKey],
+ label: (0, _utils.isType)('Object', choice) ? choice[labelKey] : choice.innerHTML,
+ isSelected: choice.selected,
+ isDisabled: isOptDisabled,
+ groupId: groupId,
+ customProperties: choice.customProperties,
+ placeholder: choice.placeholder
+ });
+ };
+
+ groupChoices.forEach(addGroupChoices);
+ } else {
+ this._store.dispatch((0, _groups.addGroup)(group.label, group.id, false, group.disabled));
+ }
+ }
+ }, {
+ key: "_getTemplate",
+ value: function _getTemplate(template) {
+ var _templates$template;
+
+ if (!template) {
+ return null;
+ }
+
+ var _this$config4 = this.config,
+ templates = _this$config4.templates,
+ classNames = _this$config4.classNames;
+
+ for (var _len = arguments.length, args = new Array(_len > 1 ? _len - 1 : 0), _key = 1; _key < _len; _key++) {
+ args[_key - 1] = arguments[_key];
+ }
+
+ return (_templates$template = templates[template]).call.apply(_templates$template, [this, classNames].concat(args));
+ }
+ }, {
+ key: "_createTemplates",
+ value: function _createTemplates() {
+ var callbackOnCreateTemplates = this.config.callbackOnCreateTemplates;
+ var userTemplates = {};
+
+ if (callbackOnCreateTemplates && (0, _utils.isType)('Function', callbackOnCreateTemplates)) {
+ userTemplates = callbackOnCreateTemplates.call(this, _utils.strToEl);
+ }
+
+ this.config.templates = (0, _deepmerge.default)(_templates.TEMPLATES, userTemplates);
+ }
+ }, {
+ key: "_createElements",
+ value: function _createElements() {
+ this.containerOuter = new _components.Container({
+ element: this._getTemplate('containerOuter', this._direction, this._isSelectElement, this._isSelectOneElement, this.config.searchEnabled, this.passedElement.element.type),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type,
+ position: this.config.position
+ });
+ this.containerInner = new _components.Container({
+ element: this._getTemplate('containerInner'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type,
+ position: this.config.position
+ });
+ this.input = new _components.Input({
+ element: this._getTemplate('input'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type
+ });
+ this.choiceList = new _components.List({
+ element: this._getTemplate('choiceList', this._isSelectOneElement)
+ });
+ this.itemList = new _components.List({
+ element: this._getTemplate('itemList', this._isSelectOneElement)
+ });
+ this.dropdown = new _components.Dropdown({
+ element: this._getTemplate('dropdown'),
+ classNames: this.config.classNames,
+ type: this.passedElement.element.type
+ });
+ }
+ }, {
+ key: "_createStructure",
+ value: function _createStructure() {
+ // Hide original element
+ this.passedElement.conceal(); // Wrap input in container preserving DOM ordering
+
+ this.containerInner.wrap(this.passedElement.element); // Wrapper inner container with outer container
+
+ this.containerOuter.wrap(this.containerInner.element);
+
+ if (this._isSelectOneElement) {
+ this.input.placeholder = this.config.searchPlaceholderValue || '';
+ } else if (this._placeholderValue) {
+ this.input.placeholder = this._placeholderValue;
+ this.input.setWidth(true);
+ }
+
+ this.containerOuter.element.appendChild(this.containerInner.element);
+ this.containerOuter.element.appendChild(this.dropdown.element);
+ this.containerInner.element.appendChild(this.itemList.element);
+
+ if (!this._isTextElement) {
+ this.dropdown.element.appendChild(this.choiceList.element);
+ }
+
+ if (!this._isSelectOneElement) {
+ this.containerInner.element.appendChild(this.input.element);
+ } else if (this.config.searchEnabled) {
+ this.dropdown.element.insertBefore(this.input.element, this.dropdown.element.firstChild);
+ }
+
+ if (this._isSelectElement) {
+ this._addPredefinedChoices();
+ } else if (this._isTextElement) {
+ this._addPredefinedItems();
+ }
+ }
+ }, {
+ key: "_addPredefinedChoices",
+ value: function _addPredefinedChoices() {
+ var _this22 = this;
+
+ var passedGroups = this.passedElement.optionGroups;
+ this._highlightPosition = 0;
+ this._isSearching = false;
+
+ this._setLoading(true);
+
+ if (passedGroups && passedGroups.length) {
+ // If we have a placeholder option
+ var placeholderChoice = this.passedElement.placeholderOption;
+
+ if (placeholderChoice && placeholderChoice.parentNode.tagName === 'SELECT') {
+ this._addChoice({
+ value: placeholderChoice.value,
+ label: placeholderChoice.innerHTML,
+ isSelected: placeholderChoice.selected,
+ isDisabled: placeholderChoice.disabled,
+ placeholder: true
+ });
+ }
+
+ passedGroups.forEach(function (group) {
+ return _this22._addGroup({
+ group: group,
+ id: group.id || null
+ });
+ });
+ } else {
+ var passedOptions = this.passedElement.options;
+ var filter = this.config.sortFn;
+ var allChoices = this._presetChoices; // Create array of options from option elements
+
+ passedOptions.forEach(function (o) {
+ allChoices.push({
+ value: o.value,
+ label: o.innerHTML,
+ selected: o.selected,
+ disabled: o.disabled || o.parentNode.disabled,
+ placeholder: o.hasAttribute('placeholder'),
+ customProperties: o.getAttribute('data-custom-properties')
+ });
+ }); // If sorting is enabled or the user is searching, filter choices
+
+ if (this.config.shouldSort) allChoices.sort(filter); // Determine whether there is a selected choice
+
+ var hasSelectedChoice = allChoices.some(function (choice) {
+ return choice.selected;
+ });
+
+ var handleChoice = function handleChoice(choice, index) {
+ var value = choice.value,
+ label = choice.label,
+ customProperties = choice.customProperties,
+ placeholder = choice.placeholder;
+
+ if (_this22._isSelectElement) {
+ // If the choice is actually a group
+ if (choice.choices) {
+ _this22._addGroup({
+ group: choice,
+ id: choice.id || null
+ });
+ } else {
+ // If there is a selected choice already or the choice is not
+ // the first in the array, add each choice normally
+ // Otherwise pre-select the first choice in the array if it's a single select
+ var shouldPreselect = _this22._isSelectOneElement && !hasSelectedChoice && index === 0;
+ var isSelected = shouldPreselect ? true : choice.selected;
+ var isDisabled = shouldPreselect ? false : choice.disabled;
+
+ _this22._addChoice({
+ value: value,
+ label: label,
+ isSelected: isSelected,
+ isDisabled: isDisabled,
+ customProperties: customProperties,
+ placeholder: placeholder
+ });
+ }
+ } else {
+ _this22._addChoice({
+ value: value,
+ label: label,
+ isSelected: choice.selected,
+ isDisabled: choice.disabled,
+ customProperties: customProperties,
+ placeholder: placeholder
+ });
+ }
+ }; // Add each choice
+
+
+ allChoices.forEach(function (choice, index) {
+ return handleChoice(choice, index);
+ });
+ }
+
+ this._setLoading(false);
+ }
+ }, {
+ key: "_addPredefinedItems",
+ value: function _addPredefinedItems() {
+ var _this23 = this;
+
+ var handlePresetItem = function handlePresetItem(item) {
+ var itemType = (0, _utils.getType)(item);
+
+ if (itemType === 'Object' && item.value) {
+ _this23._addItem({
+ value: item.value,
+ label: item.label,
+ choiceId: item.id,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ } else if (itemType === 'String') {
+ _this23._addItem({
+ value: item
+ });
+ }
+ };
+
+ this._presetItems.forEach(function (item) {
+ return handlePresetItem(item);
+ });
+ }
+ }, {
+ key: "_setChoiceOrItem",
+ value: function _setChoiceOrItem(item) {
+ var _this24 = this;
+
+ var itemType = (0, _utils.getType)(item).toLowerCase();
+ var handleType = {
+ object: function object() {
+ if (!item.value) {
+ return;
+ } // If we are dealing with a select input, we need to create an option first
+ // that is then selected. For text inputs we can just add items normally.
+
+
+ if (!_this24._isTextElement) {
+ _this24._addChoice({
+ value: item.value,
+ label: item.label,
+ isSelected: true,
+ isDisabled: false,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ } else {
+ _this24._addItem({
+ value: item.value,
+ label: item.label,
+ choiceId: item.id,
+ customProperties: item.customProperties,
+ placeholder: item.placeholder
+ });
+ }
+ },
+ string: function string() {
+ if (!_this24._isTextElement) {
+ _this24._addChoice({
+ value: item,
+ label: item,
+ isSelected: true,
+ isDisabled: false
+ });
+ } else {
+ _this24._addItem({
+ value: item
+ });
+ }
+ }
+ };
+ handleType[itemType]();
+ }
+ }, {
+ key: "_findAndSelectChoiceByValue",
+ value: function _findAndSelectChoiceByValue(val) {
+ var _this25 = this;
+
+ var choices = this._store.choices; // Check 'value' property exists and the choice isn't already selected
+
+ var foundChoice = choices.find(function (choice) {
+ return _this25.config.itemComparer(choice.value, val);
+ });
+
+ if (foundChoice && !foundChoice.selected) {
+ this._addItem({
+ value: foundChoice.value,
+ label: foundChoice.label,
+ choiceId: foundChoice.id,
+ groupId: foundChoice.groupId,
+ customProperties: foundChoice.customProperties,
+ placeholder: foundChoice.placeholder,
+ keyCode: foundChoice.keyCode
+ });
+ }
+ }
+ }, {
+ key: "_generateInstances",
+ value: function _generateInstances(elements, config) {
+ return elements.reduce(function (instances, element) {
+ instances.push(new Choices(element, config));
+ return instances;
+ }, [this]);
+ }
+ }, {
+ key: "_generatePlaceholderValue",
+ value: function _generatePlaceholderValue() {
+ if (this._isSelectOneElement) {
+ return false;
+ }
+
+ return this.config.placeholder ? this.config.placeholderValue || this.passedElement.element.getAttribute('placeholder') : false;
+ }
+ /* ===== End of Private functions ====== */
+
+ }]);
+
+ return Choices;
+}();
+
+Choices.userDefaults = {}; // We cannot export default here due to Webpack: https://github.com/webpack/webpack/issues/3929
+
+module.exports = Choices;
+
+/***/ }),
+/* 11 */
+/***/ (function(module, exports, __webpack_require__) {
+
+/*!
+ * Fuse.js v3.4.2 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+(function webpackUniversalModuleDefinition(root, factory) {
+ if(true)
+ module.exports = factory();
+ else {}
+})(this, function() {
+return /******/ (function(modules) { // webpackBootstrap
+/******/ // The module cache
+/******/ var installedModules = {};
+/******/
+/******/ // The require function
+/******/ function __webpack_require__(moduleId) {
+/******/
+/******/ // Check if module is in cache
+/******/ if(installedModules[moduleId]) {
+/******/ return installedModules[moduleId].exports;
+/******/ }
+/******/ // Create a new module (and put it into the cache)
+/******/ var module = installedModules[moduleId] = {
+/******/ i: moduleId,
+/******/ l: false,
+/******/ exports: {}
+/******/ };
+/******/
+/******/ // Execute the module function
+/******/ modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);
+/******/
+/******/ // Flag the module as loaded
+/******/ module.l = true;
+/******/
+/******/ // Return the exports of the module
+/******/ return module.exports;
+/******/ }
+/******/
+/******/
+/******/ // expose the modules object (__webpack_modules__)
+/******/ __webpack_require__.m = modules;
+/******/
+/******/ // expose the module cache
+/******/ __webpack_require__.c = installedModules;
+/******/
+/******/ // define getter function for harmony exports
+/******/ __webpack_require__.d = function(exports, name, getter) {
+/******/ if(!__webpack_require__.o(exports, name)) {
+/******/ Object.defineProperty(exports, name, { enumerable: true, get: getter });
+/******/ }
+/******/ };
+/******/
+/******/ // define __esModule on exports
+/******/ __webpack_require__.r = function(exports) {
+/******/ if(typeof Symbol !== 'undefined' && Symbol.toStringTag) {
+/******/ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
+/******/ }
+/******/ Object.defineProperty(exports, '__esModule', { value: true });
+/******/ };
+/******/
+/******/ // create a fake namespace object
+/******/ // mode & 1: value is a module id, require it
+/******/ // mode & 2: merge all properties of value into the ns
+/******/ // mode & 4: return value when already ns object
+/******/ // mode & 8|1: behave like require
+/******/ __webpack_require__.t = function(value, mode) {
+/******/ if(mode & 1) value = __webpack_require__(value);
+/******/ if(mode & 8) return value;
+/******/ if((mode & 4) && typeof value === 'object' && value && value.__esModule) return value;
+/******/ var ns = Object.create(null);
+/******/ __webpack_require__.r(ns);
+/******/ Object.defineProperty(ns, 'default', { enumerable: true, value: value });
+/******/ if(mode & 2 && typeof value != 'string') for(var key in value) __webpack_require__.d(ns, key, function(key) { return value[key]; }.bind(null, key));
+/******/ return ns;
+/******/ };
+/******/
+/******/ // getDefaultExport function for compatibility with non-harmony modules
+/******/ __webpack_require__.n = function(module) {
+/******/ var getter = module && module.__esModule ?
+/******/ function getDefault() { return module['default']; } :
+/******/ function getModuleExports() { return module; };
+/******/ __webpack_require__.d(getter, 'a', getter);
+/******/ return getter;
+/******/ };
+/******/
+/******/ // Object.prototype.hasOwnProperty.call
+/******/ __webpack_require__.o = function(object, property) { return Object.prototype.hasOwnProperty.call(object, property); };
+/******/
+/******/ // __webpack_public_path__
+/******/ __webpack_require__.p = "";
+/******/
+/******/
+/******/ // Load entry module and return exports
+/******/ return __webpack_require__(__webpack_require__.s = "./src/index.js");
+/******/ })
+/************************************************************************/
+/******/ ({
+
+/***/ "./src/bitap/bitap_matched_indices.js":
+/*!********************************************!*\
+ !*** ./src/bitap/bitap_matched_indices.js ***!
+ \********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function () {
+ var matchmask = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var minMatchCharLength = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 1;
+ var matchedIndices = [];
+ var start = -1;
+ var end = -1;
+ var i = 0;
+
+ for (var len = matchmask.length; i < len; i += 1) {
+ var match = matchmask[i];
+
+ if (match && start === -1) {
+ start = i;
+ } else if (!match && start !== -1) {
+ end = i - 1;
+
+ if (end - start + 1 >= minMatchCharLength) {
+ matchedIndices.push([start, end]);
+ }
+
+ start = -1;
+ }
+ } // (i-1 - start) + 1 => i - start
+
+
+ if (matchmask[i - 1] && i - start >= minMatchCharLength) {
+ matchedIndices.push([start, i - 1]);
+ }
+
+ return matchedIndices;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_pattern_alphabet.js":
+/*!*********************************************!*\
+ !*** ./src/bitap/bitap_pattern_alphabet.js ***!
+ \*********************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (pattern) {
+ var mask = {};
+ var len = pattern.length;
+
+ for (var i = 0; i < len; i += 1) {
+ mask[pattern.charAt(i)] = 0;
+ }
+
+ for (var _i = 0; _i < len; _i += 1) {
+ mask[pattern.charAt(_i)] |= 1 << len - _i - 1;
+ }
+
+ return mask;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_regex_search.js":
+/*!*****************************************!*\
+ !*** ./src/bitap/bitap_regex_search.js ***!
+ \*****************************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+var SPECIAL_CHARS_REGEX = /[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;
+
+module.exports = function (text, pattern) {
+ var tokenSeparator = arguments.length > 2 && arguments[2] !== undefined ? arguments[2] : / +/g;
+ var regex = new RegExp(pattern.replace(SPECIAL_CHARS_REGEX, '\\$&').replace(tokenSeparator, '|'));
+ var matches = text.match(regex);
+ var isMatch = !!matches;
+ var matchedIndices = [];
+
+ if (isMatch) {
+ for (var i = 0, matchesLen = matches.length; i < matchesLen; i += 1) {
+ var match = matches[i];
+ matchedIndices.push([text.indexOf(match), match.length - 1]);
+ }
+ }
+
+ return {
+ // TODO: revisit this score
+ score: isMatch ? 0.5 : 1,
+ isMatch: isMatch,
+ matchedIndices: matchedIndices
+ };
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_score.js":
+/*!**********************************!*\
+ !*** ./src/bitap/bitap_score.js ***!
+ \**********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (pattern, _ref) {
+ var _ref$errors = _ref.errors,
+ errors = _ref$errors === void 0 ? 0 : _ref$errors,
+ _ref$currentLocation = _ref.currentLocation,
+ currentLocation = _ref$currentLocation === void 0 ? 0 : _ref$currentLocation,
+ _ref$expectedLocation = _ref.expectedLocation,
+ expectedLocation = _ref$expectedLocation === void 0 ? 0 : _ref$expectedLocation,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance;
+ var accuracy = errors / pattern.length;
+ var proximity = Math.abs(expectedLocation - currentLocation);
+
+ if (!distance) {
+ // Dodge divide by zero error.
+ return proximity ? 1.0 : accuracy;
+ }
+
+ return accuracy + proximity / distance;
+};
+
+/***/ }),
+
+/***/ "./src/bitap/bitap_search.js":
+/*!***********************************!*\
+ !*** ./src/bitap/bitap_search.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var bitapScore = __webpack_require__(/*! ./bitap_score */ "./src/bitap/bitap_score.js");
+
+var matchedIndices = __webpack_require__(/*! ./bitap_matched_indices */ "./src/bitap/bitap_matched_indices.js");
+
+module.exports = function (text, pattern, patternAlphabet, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng;
+ var expectedLocation = location; // Set starting location at beginning text and initialize the alphabet.
+
+ var textLen = text.length; // Highest score beyond which we give up.
+
+ var currentThreshold = threshold; // Is there a nearby exact match? (speedup)
+
+ var bestLocation = text.indexOf(pattern, expectedLocation);
+ var patternLen = pattern.length; // a mask of the matches
+
+ var matchMask = [];
+
+ for (var i = 0; i < textLen; i += 1) {
+ matchMask[i] = 0;
+ }
+
+ if (bestLocation !== -1) {
+ var score = bitapScore(pattern, {
+ errors: 0,
+ currentLocation: bestLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+ currentThreshold = Math.min(score, currentThreshold); // What about in the other direction? (speed up)
+
+ bestLocation = text.lastIndexOf(pattern, expectedLocation + patternLen);
+
+ if (bestLocation !== -1) {
+ var _score = bitapScore(pattern, {
+ errors: 0,
+ currentLocation: bestLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+
+ currentThreshold = Math.min(_score, currentThreshold);
+ }
+ } // Reset the best location
+
+
+ bestLocation = -1;
+ var lastBitArr = [];
+ var finalScore = 1;
+ var binMax = patternLen + textLen;
+ var mask = 1 << patternLen - 1;
+
+ for (var _i = 0; _i < patternLen; _i += 1) {
+ // Scan for the best match; each iteration allows for one more error.
+ // Run a binary search to determine how far from the match location we can stray
+ // at this error level.
+ var binMin = 0;
+ var binMid = binMax;
+
+ while (binMin < binMid) {
+ var _score3 = bitapScore(pattern, {
+ errors: _i,
+ currentLocation: expectedLocation + binMid,
+ expectedLocation: expectedLocation,
+ distance: distance
+ });
+
+ if (_score3 <= currentThreshold) {
+ binMin = binMid;
+ } else {
+ binMax = binMid;
+ }
+
+ binMid = Math.floor((binMax - binMin) / 2 + binMin);
+ } // Use the result from this iteration as the maximum for the next.
+
+
+ binMax = binMid;
+ var start = Math.max(1, expectedLocation - binMid + 1);
+ var finish = findAllMatches ? textLen : Math.min(expectedLocation + binMid, textLen) + patternLen; // Initialize the bit array
+
+ var bitArr = Array(finish + 2);
+ bitArr[finish + 1] = (1 << _i) - 1;
+
+ for (var j = finish; j >= start; j -= 1) {
+ var currentLocation = j - 1;
+ var charMatch = patternAlphabet[text.charAt(currentLocation)];
+
+ if (charMatch) {
+ matchMask[currentLocation] = 1;
+ } // First pass: exact match
+
+
+ bitArr[j] = (bitArr[j + 1] << 1 | 1) & charMatch; // Subsequent passes: fuzzy match
+
+ if (_i !== 0) {
+ bitArr[j] |= (lastBitArr[j + 1] | lastBitArr[j]) << 1 | 1 | lastBitArr[j + 1];
+ }
+
+ if (bitArr[j] & mask) {
+ finalScore = bitapScore(pattern, {
+ errors: _i,
+ currentLocation: currentLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ }); // This match will almost certainly be better than any existing match.
+ // But check anyway.
+
+ if (finalScore <= currentThreshold) {
+ // Indeed it is
+ currentThreshold = finalScore;
+ bestLocation = currentLocation; // Already passed `loc`, downhill from here on in.
+
+ if (bestLocation <= expectedLocation) {
+ break;
+ } // When passing `bestLocation`, don't exceed our current distance from `expectedLocation`.
+
+
+ start = Math.max(1, 2 * expectedLocation - bestLocation);
+ }
+ }
+ } // No hope for a (better) match at greater error levels.
+
+
+ var _score2 = bitapScore(pattern, {
+ errors: _i + 1,
+ currentLocation: expectedLocation,
+ expectedLocation: expectedLocation,
+ distance: distance
+ }); // console.log('score', score, finalScore)
+
+
+ if (_score2 > currentThreshold) {
+ break;
+ }
+
+ lastBitArr = bitArr;
+ } // console.log('FINAL SCORE', finalScore)
+ // Count exact matches (those with a score of 0) to be "almost" exact
+
+
+ return {
+ isMatch: bestLocation >= 0,
+ score: finalScore === 0 ? 0.001 : finalScore,
+ matchedIndices: matchedIndices(matchMask, minMatchCharLength)
+ };
+};
+
+/***/ }),
+
+/***/ "./src/bitap/index.js":
+/*!****************************!*\
+ !*** ./src/bitap/index.js ***!
+ \****************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var bitapRegexSearch = __webpack_require__(/*! ./bitap_regex_search */ "./src/bitap/bitap_regex_search.js");
+
+var bitapSearch = __webpack_require__(/*! ./bitap_search */ "./src/bitap/bitap_search.js");
+
+var patternAlphabet = __webpack_require__(/*! ./bitap_pattern_alphabet */ "./src/bitap/bitap_pattern_alphabet.js");
+
+var Bitap =
+/*#__PURE__*/
+function () {
+ function Bitap(pattern, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$maxPatternLength = _ref.maxPatternLength,
+ maxPatternLength = _ref$maxPatternLength === void 0 ? 32 : _ref$maxPatternLength,
+ _ref$isCaseSensitive = _ref.isCaseSensitive,
+ isCaseSensitive = _ref$isCaseSensitive === void 0 ? false : _ref$isCaseSensitive,
+ _ref$tokenSeparator = _ref.tokenSeparator,
+ tokenSeparator = _ref$tokenSeparator === void 0 ? / +/g : _ref$tokenSeparator,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng;
+
+ _classCallCheck(this, Bitap);
+
+ this.options = {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ maxPatternLength: maxPatternLength,
+ isCaseSensitive: isCaseSensitive,
+ tokenSeparator: tokenSeparator,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength
+ };
+ this.pattern = this.options.isCaseSensitive ? pattern : pattern.toLowerCase();
+
+ if (this.pattern.length <= maxPatternLength) {
+ this.patternAlphabet = patternAlphabet(this.pattern);
+ }
+ }
+
+ _createClass(Bitap, [{
+ key: "search",
+ value: function search(text) {
+ if (!this.options.isCaseSensitive) {
+ text = text.toLowerCase();
+ } // Exact match
+
+
+ if (this.pattern === text) {
+ return {
+ isMatch: true,
+ score: 0,
+ matchedIndices: [[0, text.length - 1]]
+ };
+ } // When pattern length is greater than the machine word length, just do a a regex comparison
+
+
+ var _this$options = this.options,
+ maxPatternLength = _this$options.maxPatternLength,
+ tokenSeparator = _this$options.tokenSeparator;
+
+ if (this.pattern.length > maxPatternLength) {
+ return bitapRegexSearch(text, this.pattern, tokenSeparator);
+ } // Otherwise, use Bitap algorithm
+
+
+ var _this$options2 = this.options,
+ location = _this$options2.location,
+ distance = _this$options2.distance,
+ threshold = _this$options2.threshold,
+ findAllMatches = _this$options2.findAllMatches,
+ minMatchCharLength = _this$options2.minMatchCharLength;
+ return bitapSearch(text, this.pattern, this.patternAlphabet, {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength
+ });
+ }
+ }]);
+
+ return Bitap;
+}(); // let x = new Bitap("od mn war", {})
+// let result = x.search("Old Man's War")
+// console.log(result)
+
+
+module.exports = Bitap;
+
+/***/ }),
+
+/***/ "./src/helpers/deep_value.js":
+/*!***********************************!*\
+ !*** ./src/helpers/deep_value.js ***!
+ \***********************************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+var isArray = __webpack_require__(/*! ./is_array */ "./src/helpers/is_array.js");
+
+var deepValue = function deepValue(obj, path, list) {
+ if (!path) {
+ // If there's no path left, we've gotten to the object we care about.
+ list.push(obj);
+ } else {
+ var dotIndex = path.indexOf('.');
+ var firstSegment = path;
+ var remaining = null;
+
+ if (dotIndex !== -1) {
+ firstSegment = path.slice(0, dotIndex);
+ remaining = path.slice(dotIndex + 1);
+ }
+
+ var value = obj[firstSegment];
+
+ if (value !== null && value !== undefined) {
+ if (!remaining && (typeof value === 'string' || typeof value === 'number')) {
+ list.push(value.toString());
+ } else if (isArray(value)) {
+ // Search each item in the array.
+ for (var i = 0, len = value.length; i < len; i += 1) {
+ deepValue(value[i], remaining, list);
+ }
+ } else if (remaining) {
+ // An object. Recurse further.
+ deepValue(value, remaining, list);
+ }
+ }
+ }
+
+ return list;
+};
+
+module.exports = function (obj, path) {
+ return deepValue(obj, path, []);
+};
+
+/***/ }),
+
+/***/ "./src/helpers/is_array.js":
+/*!*********************************!*\
+ !*** ./src/helpers/is_array.js ***!
+ \*********************************/
+/*! no static exports found */
+/***/ (function(module, exports) {
+
+module.exports = function (obj) {
+ return !Array.isArray ? Object.prototype.toString.call(obj) === '[object Array]' : Array.isArray(obj);
+};
+
+/***/ }),
+
+/***/ "./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */
+/***/ (function(module, exports, __webpack_require__) {
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Bitap = __webpack_require__(/*! ./bitap */ "./src/bitap/index.js");
+
+var deepValue = __webpack_require__(/*! ./helpers/deep_value */ "./src/helpers/deep_value.js");
+
+var isArray = __webpack_require__(/*! ./helpers/is_array */ "./src/helpers/is_array.js");
+
+var Fuse =
+/*#__PURE__*/
+function () {
+ function Fuse(list, _ref) {
+ var _ref$location = _ref.location,
+ location = _ref$location === void 0 ? 0 : _ref$location,
+ _ref$distance = _ref.distance,
+ distance = _ref$distance === void 0 ? 100 : _ref$distance,
+ _ref$threshold = _ref.threshold,
+ threshold = _ref$threshold === void 0 ? 0.6 : _ref$threshold,
+ _ref$maxPatternLength = _ref.maxPatternLength,
+ maxPatternLength = _ref$maxPatternLength === void 0 ? 32 : _ref$maxPatternLength,
+ _ref$caseSensitive = _ref.caseSensitive,
+ caseSensitive = _ref$caseSensitive === void 0 ? false : _ref$caseSensitive,
+ _ref$tokenSeparator = _ref.tokenSeparator,
+ tokenSeparator = _ref$tokenSeparator === void 0 ? / +/g : _ref$tokenSeparator,
+ _ref$findAllMatches = _ref.findAllMatches,
+ findAllMatches = _ref$findAllMatches === void 0 ? false : _ref$findAllMatches,
+ _ref$minMatchCharLeng = _ref.minMatchCharLength,
+ minMatchCharLength = _ref$minMatchCharLeng === void 0 ? 1 : _ref$minMatchCharLeng,
+ _ref$id = _ref.id,
+ id = _ref$id === void 0 ? null : _ref$id,
+ _ref$keys = _ref.keys,
+ keys = _ref$keys === void 0 ? [] : _ref$keys,
+ _ref$shouldSort = _ref.shouldSort,
+ shouldSort = _ref$shouldSort === void 0 ? true : _ref$shouldSort,
+ _ref$getFn = _ref.getFn,
+ getFn = _ref$getFn === void 0 ? deepValue : _ref$getFn,
+ _ref$sortFn = _ref.sortFn,
+ sortFn = _ref$sortFn === void 0 ? function (a, b) {
+ return a.score - b.score;
+ } : _ref$sortFn,
+ _ref$tokenize = _ref.tokenize,
+ tokenize = _ref$tokenize === void 0 ? false : _ref$tokenize,
+ _ref$matchAllTokens = _ref.matchAllTokens,
+ matchAllTokens = _ref$matchAllTokens === void 0 ? false : _ref$matchAllTokens,
+ _ref$includeMatches = _ref.includeMatches,
+ includeMatches = _ref$includeMatches === void 0 ? false : _ref$includeMatches,
+ _ref$includeScore = _ref.includeScore,
+ includeScore = _ref$includeScore === void 0 ? false : _ref$includeScore,
+ _ref$verbose = _ref.verbose,
+ verbose = _ref$verbose === void 0 ? false : _ref$verbose;
+
+ _classCallCheck(this, Fuse);
+
+ this.options = {
+ location: location,
+ distance: distance,
+ threshold: threshold,
+ maxPatternLength: maxPatternLength,
+ isCaseSensitive: caseSensitive,
+ tokenSeparator: tokenSeparator,
+ findAllMatches: findAllMatches,
+ minMatchCharLength: minMatchCharLength,
+ id: id,
+ keys: keys,
+ includeMatches: includeMatches,
+ includeScore: includeScore,
+ shouldSort: shouldSort,
+ getFn: getFn,
+ sortFn: sortFn,
+ verbose: verbose,
+ tokenize: tokenize,
+ matchAllTokens: matchAllTokens
+ };
+ this.setCollection(list);
+ }
+
+ _createClass(Fuse, [{
+ key: "setCollection",
+ value: function setCollection(list) {
+ this.list = list;
+ return list;
+ }
+ }, {
+ key: "search",
+ value: function search(pattern) {
+ var opts = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : {
+ limit: false
+ };
+
+ this._log("---------\nSearch pattern: \"".concat(pattern, "\""));
+
+ var _this$_prepareSearche = this._prepareSearchers(pattern),
+ tokenSearchers = _this$_prepareSearche.tokenSearchers,
+ fullSearcher = _this$_prepareSearche.fullSearcher;
+
+ var _this$_search = this._search(tokenSearchers, fullSearcher),
+ weights = _this$_search.weights,
+ results = _this$_search.results;
+
+ this._computeScore(weights, results);
+
+ if (this.options.shouldSort) {
+ this._sort(results);
+ }
+
+ if (opts.limit && typeof opts.limit === 'number') {
+ results = results.slice(0, opts.limit);
+ }
+
+ return this._format(results);
+ }
+ }, {
+ key: "_prepareSearchers",
+ value: function _prepareSearchers() {
+ var pattern = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : '';
+ var tokenSearchers = [];
+
+ if (this.options.tokenize) {
+ // Tokenize on the separator
+ var tokens = pattern.split(this.options.tokenSeparator);
+
+ for (var i = 0, len = tokens.length; i < len; i += 1) {
+ tokenSearchers.push(new Bitap(tokens[i], this.options));
+ }
+ }
+
+ var fullSearcher = new Bitap(pattern, this.options);
+ return {
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ };
+ }
+ }, {
+ key: "_search",
+ value: function _search() {
+ var tokenSearchers = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : [];
+ var fullSearcher = arguments.length > 1 ? arguments[1] : undefined;
+ var list = this.list;
+ var resultMap = {};
+ var results = []; // Check the first item in the list, if it's a string, then we assume
+ // that every item in the list is also a string, and thus it's a flattened array.
+
+ if (typeof list[0] === 'string') {
+ // Iterate over every item
+ for (var i = 0, len = list.length; i < len; i += 1) {
+ this._analyze({
+ key: '',
+ value: list[i],
+ record: i,
+ index: i
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+
+ return {
+ weights: null,
+ results: results
+ };
+ } // Otherwise, the first item is an Object (hopefully), and thus the searching
+ // is done on the values of the keys of each item.
+
+
+ var weights = {};
+
+ for (var _i = 0, _len = list.length; _i < _len; _i += 1) {
+ var item = list[_i]; // Iterate over every key
+
+ for (var j = 0, keysLen = this.options.keys.length; j < keysLen; j += 1) {
+ var key = this.options.keys[j];
+
+ if (typeof key !== 'string') {
+ weights[key.name] = {
+ weight: 1 - key.weight || 1
+ };
+
+ if (key.weight <= 0 || key.weight > 1) {
+ throw new Error('Key weight has to be > 0 and <= 1');
+ }
+
+ key = key.name;
+ } else {
+ weights[key] = {
+ weight: 1
+ };
+ }
+
+ this._analyze({
+ key: key,
+ value: this.options.getFn(item, key),
+ record: item,
+ index: _i
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+ }
+
+ return {
+ weights: weights,
+ results: results
+ };
+ }
+ }, {
+ key: "_analyze",
+ value: function _analyze(_ref2, _ref3) {
+ var key = _ref2.key,
+ _ref2$arrayIndex = _ref2.arrayIndex,
+ arrayIndex = _ref2$arrayIndex === void 0 ? -1 : _ref2$arrayIndex,
+ value = _ref2.value,
+ record = _ref2.record,
+ index = _ref2.index;
+ var _ref3$tokenSearchers = _ref3.tokenSearchers,
+ tokenSearchers = _ref3$tokenSearchers === void 0 ? [] : _ref3$tokenSearchers,
+ _ref3$fullSearcher = _ref3.fullSearcher,
+ fullSearcher = _ref3$fullSearcher === void 0 ? [] : _ref3$fullSearcher,
+ _ref3$resultMap = _ref3.resultMap,
+ resultMap = _ref3$resultMap === void 0 ? {} : _ref3$resultMap,
+ _ref3$results = _ref3.results,
+ results = _ref3$results === void 0 ? [] : _ref3$results;
+
+ // Check if the texvaluet can be searched
+ if (value === undefined || value === null) {
+ return;
+ }
+
+ var exists = false;
+ var averageScore = -1;
+ var numTextMatches = 0;
+
+ if (typeof value === 'string') {
+ this._log("\nKey: ".concat(key === '' ? '-' : key));
+
+ var mainSearchResult = fullSearcher.search(value);
+
+ this._log("Full text: \"".concat(value, "\", score: ").concat(mainSearchResult.score));
+
+ if (this.options.tokenize) {
+ var words = value.split(this.options.tokenSeparator);
+ var scores = [];
+
+ for (var i = 0; i < tokenSearchers.length; i += 1) {
+ var tokenSearcher = tokenSearchers[i];
+
+ this._log("\nPattern: \"".concat(tokenSearcher.pattern, "\"")); // let tokenScores = []
+
+
+ var hasMatchInText = false;
+
+ for (var j = 0; j < words.length; j += 1) {
+ var word = words[j];
+ var tokenSearchResult = tokenSearcher.search(word);
+ var obj = {};
+
+ if (tokenSearchResult.isMatch) {
+ obj[word] = tokenSearchResult.score;
+ exists = true;
+ hasMatchInText = true;
+ scores.push(tokenSearchResult.score);
+ } else {
+ obj[word] = 1;
+
+ if (!this.options.matchAllTokens) {
+ scores.push(1);
+ }
+ }
+
+ this._log("Token: \"".concat(word, "\", score: ").concat(obj[word])); // tokenScores.push(obj)
+
+ }
+
+ if (hasMatchInText) {
+ numTextMatches += 1;
+ }
+ }
+
+ averageScore = scores[0];
+ var scoresLen = scores.length;
+
+ for (var _i2 = 1; _i2 < scoresLen; _i2 += 1) {
+ averageScore += scores[_i2];
+ }
+
+ averageScore = averageScore / scoresLen;
+
+ this._log('Token score average:', averageScore);
+ }
+
+ var finalScore = mainSearchResult.score;
+
+ if (averageScore > -1) {
+ finalScore = (finalScore + averageScore) / 2;
+ }
+
+ this._log('Score average:', finalScore);
+
+ var checkTextMatches = this.options.tokenize && this.options.matchAllTokens ? numTextMatches >= tokenSearchers.length : true;
+
+ this._log("\nCheck Matches: ".concat(checkTextMatches)); // If a match is found, add the item to <rawResults>, including its score
+
+
+ if ((exists || mainSearchResult.isMatch) && checkTextMatches) {
+ // Check if the item already exists in our results
+ var existingResult = resultMap[index];
+
+ if (existingResult) {
+ // Use the lowest score
+ // existingResult.score, bitapResult.score
+ existingResult.output.push({
+ key: key,
+ arrayIndex: arrayIndex,
+ value: value,
+ score: finalScore,
+ matchedIndices: mainSearchResult.matchedIndices
+ });
+ } else {
+ // Add it to the raw result list
+ resultMap[index] = {
+ item: record,
+ output: [{
+ key: key,
+ arrayIndex: arrayIndex,
+ value: value,
+ score: finalScore,
+ matchedIndices: mainSearchResult.matchedIndices
+ }]
+ };
+ results.push(resultMap[index]);
+ }
+ }
+ } else if (isArray(value)) {
+ for (var _i3 = 0, len = value.length; _i3 < len; _i3 += 1) {
+ this._analyze({
+ key: key,
+ arrayIndex: _i3,
+ value: value[_i3],
+ record: record,
+ index: index
+ }, {
+ resultMap: resultMap,
+ results: results,
+ tokenSearchers: tokenSearchers,
+ fullSearcher: fullSearcher
+ });
+ }
+ }
+ }
+ }, {
+ key: "_computeScore",
+ value: function _computeScore(weights, results) {
+ this._log('\n\nComputing score:\n');
+
+ for (var i = 0, len = results.length; i < len; i += 1) {
+ var output = results[i].output;
+ var scoreLen = output.length;
+ var currScore = 1;
+ var bestScore = 1;
+
+ for (var j = 0; j < scoreLen; j += 1) {
+ var weight = weights ? weights[output[j].key].weight : 1;
+ var score = weight === 1 ? output[j].score : output[j].score || 0.001;
+ var nScore = score * weight;
+
+ if (weight !== 1) {
+ bestScore = Math.min(bestScore, nScore);
+ } else {
+ output[j].nScore = nScore;
+ currScore *= nScore;
+ }
+ }
+
+ results[i].score = bestScore === 1 ? currScore : bestScore;
+
+ this._log(results[i]);
+ }
+ }
+ }, {
+ key: "_sort",
+ value: function _sort(results) {
+ this._log('\n\nSorting....');
+
+ results.sort(this.options.sortFn);
+ }
+ }, {
+ key: "_format",
+ value: function _format(results) {
+ var finalOutput = [];
+
+ if (this.options.verbose) {
+ var cache = [];
+
+ this._log('\n\nOutput:\n\n', JSON.stringify(results, function (key, value) {
+ if (_typeof(value) === 'object' && value !== null) {
+ if (cache.indexOf(value) !== -1) {
+ // Circular reference found, discard key
+ return;
+ } // Store value in our collection
+
+
+ cache.push(value);
+ }
+
+ return value;
+ }));
+
+ cache = null;
+ }
+
+ var transformers = [];
+
+ if (this.options.includeMatches) {
+ transformers.push(function (result, data) {
+ var output = result.output;
+ data.matches = [];
+
+ for (var i = 0, len = output.length; i < len; i += 1) {
+ var item = output[i];
+
+ if (item.matchedIndices.length === 0) {
+ continue;
+ }
+
+ var obj = {
+ indices: item.matchedIndices,
+ value: item.value
+ };
+
+ if (item.key) {
+ obj.key = item.key;
+ }
+
+ if (item.hasOwnProperty('arrayIndex') && item.arrayIndex > -1) {
+ obj.arrayIndex = item.arrayIndex;
+ }
+
+ data.matches.push(obj);
+ }
+ });
+ }
+
+ if (this.options.includeScore) {
+ transformers.push(function (result, data) {
+ data.score = result.score;
+ });
+ }
+
+ for (var i = 0, len = results.length; i < len; i += 1) {
+ var result = results[i];
+
+ if (this.options.id) {
+ result.item = this.options.getFn(result.item, this.options.id)[0];
+ }
+
+ if (!transformers.length) {
+ finalOutput.push(result.item);
+ continue;
+ }
+
+ var data = {
+ item: result.item
+ };
+
+ for (var j = 0, _len2 = transformers.length; j < _len2; j += 1) {
+ transformers[j](result, data);
+ }
+
+ finalOutput.push(data);
+ }
+
+ return finalOutput;
+ }
+ }, {
+ key: "_log",
+ value: function _log() {
+ if (this.options.verbose) {
+ var _console;
+
+ (_console = console).log.apply(_console, arguments);
+ }
+ }
+ }]);
+
+ return Fuse;
+}();
+
+module.exports = Fuse;
+
+/***/ })
+
+/******/ });
+});
+
+/***/ }),
+/* 12 */
+/***/ (function(module, __webpack_exports__, __webpack_require__) {
+
+"use strict";
+__webpack_require__.r(__webpack_exports__);
+var isMergeableObject = function isMergeableObject(value) {
+ return isNonNullObject(value)
+ && !isSpecial(value)
+};
+
+function isNonNullObject(value) {
+ return !!value && typeof value === 'object'
+}
+
+function isSpecial(value) {
+ var stringValue = Object.prototype.toString.call(value);
+
+ return stringValue === '[object RegExp]'
+ || stringValue === '[object Date]'
+ || isReactElement(value)
+}
+
+// see https://github.com/facebook/react/blob/b5ac963fb791d1298e7f396236383bc955f916c1/src/isomorphic/classic/element/ReactElement.js#L21-L25
+var canUseSymbol = typeof Symbol === 'function' && Symbol.for;
+var REACT_ELEMENT_TYPE = canUseSymbol ? Symbol.for('react.element') : 0xeac7;
+
+function isReactElement(value) {
+ return value.$$typeof === REACT_ELEMENT_TYPE
+}
+
+function emptyTarget(val) {
+ return Array.isArray(val) ? [] : {}
+}
+
+function cloneUnlessOtherwiseSpecified(value, options) {
+ return (options.clone !== false && options.isMergeableObject(value))
+ ? deepmerge(emptyTarget(value), value, options)
+ : value
+}
+
+function defaultArrayMerge(target, source, options) {
+ return target.concat(source).map(function(element) {
+ return cloneUnlessOtherwiseSpecified(element, options)
+ })
+}
+
+function mergeObject(target, source, options) {
+ var destination = {};
+ if (options.isMergeableObject(target)) {
+ Object.keys(target).forEach(function(key) {
+ destination[key] = cloneUnlessOtherwiseSpecified(target[key], options);
+ });
+ }
+ Object.keys(source).forEach(function(key) {
+ if (!options.isMergeableObject(source[key]) || !target[key]) {
+ destination[key] = cloneUnlessOtherwiseSpecified(source[key], options);
+ } else {
+ destination[key] = deepmerge(target[key], source[key], options);
+ }
+ });
+ return destination
+}
+
+function deepmerge(target, source, options) {
+ options = options || {};
+ options.arrayMerge = options.arrayMerge || defaultArrayMerge;
+ options.isMergeableObject = options.isMergeableObject || isMergeableObject;
+
+ var sourceIsArray = Array.isArray(source);
+ var targetIsArray = Array.isArray(target);
+ var sourceAndTargetTypesMatch = sourceIsArray === targetIsArray;
+
+ if (!sourceAndTargetTypesMatch) {
+ return cloneUnlessOtherwiseSpecified(source, options)
+ } else if (sourceIsArray) {
+ return options.arrayMerge(target, source, options)
+ } else {
+ return mergeObject(target, source, options)
+ }
+}
+
+deepmerge.all = function deepmergeAll(array, options) {
+ if (!Array.isArray(array)) {
+ throw new Error('first argument should be an array')
+ }
+
+ return array.reduce(function(prev, next) {
+ return deepmerge(prev, next, options)
+ }, {})
+};
+
+var deepmerge_1 = deepmerge;
+
+/* harmony default export */ __webpack_exports__["default"] = (deepmerge_1);
+
+
+/***/ }),
+/* 13 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _redux = __webpack_require__(6);
+
+var _index = _interopRequireDefault(__webpack_require__(15));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Store =
+/*#__PURE__*/
+function () {
+ function Store() {
+ _classCallCheck(this, Store);
+
+ this._store = (0, _redux.createStore)(_index.default, window.__REDUX_DEVTOOLS_EXTENSION__ && window.__REDUX_DEVTOOLS_EXTENSION__());
+ }
+ /**
+ * Subscribe store to function call (wrapped Redux method)
+ * @param {Function} onChange Function to trigger when state changes
+ * @return
+ */
+
+
+ _createClass(Store, [{
+ key: "subscribe",
+ value: function subscribe(onChange) {
+ this._store.subscribe(onChange);
+ }
+ /**
+ * Dispatch event to store (wrapped Redux method)
+ * @param {Function} action Action function to trigger
+ * @return
+ */
+
+ }, {
+ key: "dispatch",
+ value: function dispatch(action) {
+ this._store.dispatch(action);
+ }
+ /**
+ * Get store object (wrapping Redux method)
+ * @return {Object} State
+ */
+
+ }, {
+ key: "isLoading",
+
+ /**
+ * Get loading state from store
+ * @return {Boolean} Loading State
+ */
+ value: function isLoading() {
+ return this.state.general.loading;
+ }
+ /**
+ * Get single choice by it's ID
+ * @return {Object} Found choice
+ */
+
+ }, {
+ key: "getChoiceById",
+ value: function getChoiceById(id) {
+ if (id) {
+ var choices = this.activeChoices;
+ var foundChoice = choices.find(function (choice) {
+ return choice.id === parseInt(id, 10);
+ });
+ return foundChoice;
+ }
+
+ return false;
+ }
+ /**
+ * Get group by group id
+ * @param {Number} id Group ID
+ * @return {Object} Group data
+ */
+
+ }, {
+ key: "getGroupById",
+ value: function getGroupById(id) {
+ return this.groups.find(function (group) {
+ return group.id === parseInt(id, 10);
+ });
+ }
+ }, {
+ key: "state",
+ get: function get() {
+ return this._store.getState();
+ }
+ /**
+ * Get items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "items",
+ get: function get() {
+ return this.state.items;
+ }
+ /**
+ * Get active items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "activeItems",
+ get: function get() {
+ return this.items.filter(function (item) {
+ return item.active === true;
+ });
+ }
+ /**
+ * Get highlighted items from store
+ * @return {Array} Item objects
+ */
+
+ }, {
+ key: "highlightedActiveItems",
+ get: function get() {
+ return this.items.filter(function (item) {
+ return item.active && item.highlighted;
+ });
+ }
+ /**
+ * Get choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "choices",
+ get: function get() {
+ return this.state.choices;
+ }
+ /**
+ * Get active choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "activeChoices",
+ get: function get() {
+ var choices = this.choices;
+ var values = choices.filter(function (choice) {
+ return choice.active === true;
+ });
+ return values;
+ }
+ /**
+ * Get selectable choices from store
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "selectableChoices",
+ get: function get() {
+ return this.choices.filter(function (choice) {
+ return choice.disabled !== true;
+ });
+ }
+ /**
+ * Get choices that can be searched (excluding placeholders)
+ * @return {Array} Option objects
+ */
+
+ }, {
+ key: "searchableChoices",
+ get: function get() {
+ return this.selectableChoices.filter(function (choice) {
+ return choice.placeholder !== true;
+ });
+ }
+ /**
+ * Get placeholder choice from store
+ * @return {Object} Found placeholder
+ */
+
+ }, {
+ key: "placeholderChoice",
+ get: function get() {
+ return [].concat(this.choices).reverse().find(function (choice) {
+ return choice.placeholder === true;
+ });
+ }
+ /**
+ * Get groups from store
+ * @return {Array} Group objects
+ */
+
+ }, {
+ key: "groups",
+ get: function get() {
+ return this.state.groups;
+ }
+ /**
+ * Get active groups from store
+ * @return {Array} Group objects
+ */
+
+ }, {
+ key: "activeGroups",
+ get: function get() {
+ var groups = this.groups;
+ var choices = this.choices;
+ return groups.filter(function (group) {
+ var isActive = group.active === true && group.disabled === false;
+ var hasActiveOptions = choices.some(function (choice) {
+ return choice.active === true && choice.disabled === false;
+ });
+ return isActive && hasActiveOptions;
+ }, []);
+ }
+ }]);
+
+ return Store;
+}();
+
+exports.default = Store;
+
+/***/ }),
+/* 14 */
+/***/ (function(module, exports) {
+
+module.exports = function(originalModule) {
+ if (!originalModule.webpackPolyfill) {
+ var module = Object.create(originalModule);
+ // module.parent = undefined by default
+ if (!module.children) module.children = [];
+ Object.defineProperty(module, "loaded", {
+ enumerable: true,
+ get: function() {
+ return module.l;
+ }
+ });
+ Object.defineProperty(module, "id", {
+ enumerable: true,
+ get: function() {
+ return module.i;
+ }
+ });
+ Object.defineProperty(module, "exports", {
+ enumerable: true
+ });
+ module.webpackPolyfill = 1;
+ }
+ return module;
+};
+
+
+/***/ }),
+/* 15 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _redux = __webpack_require__(6);
+
+var _items = _interopRequireDefault(__webpack_require__(16));
+
+var _groups = _interopRequireDefault(__webpack_require__(17));
+
+var _choices = _interopRequireDefault(__webpack_require__(18));
+
+var _general = _interopRequireDefault(__webpack_require__(19));
+
+var _utils = __webpack_require__(0);
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+var appReducer = (0, _redux.combineReducers)({
+ items: _items.default,
+ groups: _groups.default,
+ choices: _choices.default,
+ general: _general.default
+});
+
+var rootReducer = function rootReducer(passedState, action) {
+ var state = passedState; // If we are clearing all items, groups and options we reassign
+ // state and then pass that state to our proper reducer. This isn't
+ // mutating our actual state
+ // See: http://stackoverflow.com/a/35641992
+
+ if (action.type === 'CLEAR_ALL') {
+ state = undefined;
+ } else if (action.type === 'RESET_TO') {
+ return (0, _utils.cloneObject)(action.state);
+ }
+
+ return appReducer(state, action);
+};
+
+var _default = rootReducer;
+exports.default = _default;
+
+/***/ }),
+/* 16 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = items;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function items() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_ITEM':
+ {
+ // Add object to items array
+ var newState = [].concat(state, [{
+ id: action.id,
+ choiceId: action.choiceId,
+ groupId: action.groupId,
+ value: action.value,
+ label: action.label,
+ active: true,
+ highlighted: false,
+ customProperties: action.customProperties,
+ placeholder: action.placeholder || false,
+ keyCode: null
+ }]);
+ return newState.map(function (obj) {
+ var item = obj;
+ item.highlighted = false;
+ return item;
+ });
+ }
+
+ case 'REMOVE_ITEM':
+ {
+ // Set item to inactive
+ return state.map(function (obj) {
+ var item = obj;
+
+ if (item.id === action.id) {
+ item.active = false;
+ }
+
+ return item;
+ });
+ }
+
+ case 'HIGHLIGHT_ITEM':
+ {
+ return state.map(function (obj) {
+ var item = obj;
+
+ if (item.id === action.id) {
+ item.highlighted = action.highlighted;
+ }
+
+ return item;
+ });
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 17 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = groups;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function groups() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_GROUP':
+ {
+ return [].concat(state, [{
+ id: action.id,
+ value: action.value,
+ active: action.active,
+ disabled: action.disabled
+ }]);
+ }
+
+ case 'CLEAR_CHOICES':
+ {
+ return [];
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 18 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = choices;
+exports.defaultState = void 0;
+var defaultState = [];
+exports.defaultState = defaultState;
+
+function choices() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'ADD_CHOICE':
+ {
+ /*
+ A disabled choice appears in the choice dropdown but cannot be selected
+ A selected choice has been added to the passed input's value (added as an item)
+ An active choice appears within the choice dropdown
+ */
+ return [].concat(state, [{
+ id: action.id,
+ elementId: action.elementId,
+ groupId: action.groupId,
+ value: action.value,
+ label: action.label || action.value,
+ disabled: action.disabled || false,
+ selected: false,
+ active: true,
+ score: 9999,
+ customProperties: action.customProperties,
+ placeholder: action.placeholder || false,
+ keyCode: null
+ }]);
+ }
+
+ case 'ADD_ITEM':
+ {
+ // If all choices need to be activated
+ if (action.activateOptions) {
+ return state.map(function (obj) {
+ var choice = obj;
+ choice.active = action.active;
+ return choice;
+ });
+ } // When an item is added and it has an associated choice,
+ // we want to disable it so it can't be chosen again
+
+
+ if (action.choiceId > -1) {
+ return state.map(function (obj) {
+ var choice = obj;
+
+ if (choice.id === parseInt(action.choiceId, 10)) {
+ choice.selected = true;
+ }
+
+ return choice;
+ });
+ }
+
+ return state;
+ }
+
+ case 'REMOVE_ITEM':
+ {
+ // When an item is removed and it has an associated choice,
+ // we want to re-enable it so it can be chosen again
+ if (action.choiceId > -1) {
+ return state.map(function (obj) {
+ var choice = obj;
+
+ if (choice.id === parseInt(action.choiceId, 10)) {
+ choice.selected = false;
+ }
+
+ return choice;
+ });
+ }
+
+ return state;
+ }
+
+ case 'FILTER_CHOICES':
+ {
+ return state.map(function (obj) {
+ var choice = obj; // Set active state based on whether choice is
+ // within filtered results
+
+ choice.active = action.results.some(function (_ref) {
+ var item = _ref.item,
+ score = _ref.score;
+
+ if (item.id === choice.id) {
+ choice.score = score;
+ return true;
+ }
+
+ return false;
+ });
+ return choice;
+ });
+ }
+
+ case 'ACTIVATE_CHOICES':
+ {
+ return state.map(function (obj) {
+ var choice = obj;
+ choice.active = action.active;
+ return choice;
+ });
+ }
+
+ case 'CLEAR_CHOICES':
+ {
+ return defaultState;
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+}
+
+/***/ }),
+/* 19 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = exports.defaultState = void 0;
+var defaultState = {
+ loading: false
+};
+exports.defaultState = defaultState;
+
+var general = function general() {
+ var state = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : defaultState;
+ var action = arguments.length > 1 ? arguments[1] : undefined;
+
+ switch (action.type) {
+ case 'SET_IS_LOADING':
+ {
+ return {
+ loading: action.isLoading
+ };
+ }
+
+ default:
+ {
+ return state;
+ }
+ }
+};
+
+var _default = general;
+exports.default = _default;
+
+/***/ }),
+/* 20 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+Object.defineProperty(exports, "Dropdown", {
+ enumerable: true,
+ get: function get() {
+ return _dropdown.default;
+ }
+});
+Object.defineProperty(exports, "Container", {
+ enumerable: true,
+ get: function get() {
+ return _container.default;
+ }
+});
+Object.defineProperty(exports, "Input", {
+ enumerable: true,
+ get: function get() {
+ return _input.default;
+ }
+});
+Object.defineProperty(exports, "List", {
+ enumerable: true,
+ get: function get() {
+ return _list.default;
+ }
+});
+Object.defineProperty(exports, "WrappedInput", {
+ enumerable: true,
+ get: function get() {
+ return _wrappedInput.default;
+ }
+});
+Object.defineProperty(exports, "WrappedSelect", {
+ enumerable: true,
+ get: function get() {
+ return _wrappedSelect.default;
+ }
+});
+
+var _dropdown = _interopRequireDefault(__webpack_require__(21));
+
+var _container = _interopRequireDefault(__webpack_require__(22));
+
+var _input = _interopRequireDefault(__webpack_require__(23));
+
+var _list = _interopRequireDefault(__webpack_require__(24));
+
+var _wrappedInput = _interopRequireDefault(__webpack_require__(25));
+
+var _wrappedSelect = _interopRequireDefault(__webpack_require__(26));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+/***/ }),
+/* 21 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Dropdown =
+/*#__PURE__*/
+function () {
+ function Dropdown(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, Dropdown);
+
+ Object.assign(this, {
+ element: element,
+ type: type,
+ classNames: classNames
+ });
+ this.isActive = false;
+ }
+ /**
+ * Determine how far the top of our element is from
+ * the top of the window
+ * @return {Number} Vertical position
+ */
+
+
+ _createClass(Dropdown, [{
+ key: "distanceFromTopWindow",
+ value: function distanceFromTopWindow() {
+ this.dimensions = this.element.getBoundingClientRect();
+ this.position = Math.ceil(this.dimensions.top + window.pageYOffset + this.element.offsetHeight);
+ return this.position;
+ }
+ /**
+ * Find element that matches passed selector
+ * @return {HTMLElement}
+ */
+
+ }, {
+ key: "getChild",
+ value: function getChild(selector) {
+ return this.element.querySelector(selector);
+ }
+ /**
+ * Show dropdown to user by adding active state class
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "show",
+ value: function show() {
+ this.element.classList.add(this.classNames.activeState);
+ this.element.setAttribute('aria-expanded', 'true');
+ this.isActive = true;
+ return this;
+ }
+ /**
+ * Hide dropdown from user
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "hide",
+ value: function hide() {
+ this.element.classList.remove(this.classNames.activeState);
+ this.element.setAttribute('aria-expanded', 'false');
+ this.isActive = false;
+ return this;
+ }
+ }]);
+
+ return Dropdown;
+}();
+
+exports.default = Dropdown;
+
+/***/ }),
+/* 22 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Container =
+/*#__PURE__*/
+function () {
+ function Container(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames,
+ position = _ref.position;
+
+ _classCallCheck(this, Container);
+
+ Object.assign(this, {
+ element: element,
+ classNames: classNames,
+ type: type,
+ position: position
+ });
+ this.isOpen = false;
+ this.isFlipped = false;
+ this.isFocussed = false;
+ this.isDisabled = false;
+ this.isLoading = false;
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ }
+ /**
+ * Add event listeners
+ */
+
+
+ _createClass(Container, [{
+ key: "addEventListeners",
+ value: function addEventListeners() {
+ this.element.addEventListener('focus', this._onFocus);
+ this.element.addEventListener('blur', this._onBlur);
+ }
+ /**
+ * Remove event listeners
+ */
+
+ /** */
+
+ }, {
+ key: "removeEventListeners",
+ value: function removeEventListeners() {
+ this.element.removeEventListener('focus', this._onFocus);
+ this.element.removeEventListener('blur', this._onBlur);
+ }
+ /**
+ * Determine whether container should be flipped
+ * based on passed dropdown position
+ * @param {Number} dropdownPos
+ * @returns
+ */
+
+ }, {
+ key: "shouldFlip",
+ value: function shouldFlip(dropdownPos) {
+ var windowHeight = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : (0, _utils.getWindowHeight)();
+
+ if (dropdownPos === undefined) {
+ return false;
+ } // If flip is enabled and the dropdown bottom position is
+ // greater than the window height flip the dropdown.
+
+
+ var shouldFlip = false;
+
+ if (this.position === 'auto') {
+ shouldFlip = dropdownPos >= windowHeight;
+ } else if (this.position === 'top') {
+ shouldFlip = true;
+ }
+
+ return shouldFlip;
+ }
+ /**
+ * Set active descendant attribute
+ * @param {Number} activeDescendant ID of active descendant
+ */
+
+ }, {
+ key: "setActiveDescendant",
+ value: function setActiveDescendant(activeDescendantID) {
+ this.element.setAttribute('aria-activedescendant', activeDescendantID);
+ }
+ /**
+ * Remove active descendant attribute
+ */
+
+ }, {
+ key: "removeActiveDescendant",
+ value: function removeActiveDescendant() {
+ this.element.removeAttribute('aria-activedescendant');
+ }
+ }, {
+ key: "open",
+ value: function open(dropdownPos) {
+ this.element.classList.add(this.classNames.openState);
+ this.element.setAttribute('aria-expanded', 'true');
+ this.isOpen = true;
+
+ if (this.shouldFlip(dropdownPos)) {
+ this.element.classList.add(this.classNames.flippedState);
+ this.isFlipped = true;
+ }
+ }
+ }, {
+ key: "close",
+ value: function close() {
+ this.element.classList.remove(this.classNames.openState);
+ this.element.setAttribute('aria-expanded', 'false');
+ this.removeActiveDescendant();
+ this.isOpen = false; // A dropdown flips if it does not have space within the page
+
+ if (this.isFlipped) {
+ this.element.classList.remove(this.classNames.flippedState);
+ this.isFlipped = false;
+ }
+ }
+ }, {
+ key: "focus",
+ value: function focus() {
+ if (!this.isFocussed) {
+ this.element.focus();
+ }
+ }
+ }, {
+ key: "addFocusState",
+ value: function addFocusState() {
+ this.element.classList.add(this.classNames.focusState);
+ }
+ }, {
+ key: "removeFocusState",
+ value: function removeFocusState() {
+ this.element.classList.remove(this.classNames.focusState);
+ }
+ /**
+ * Remove disabled state
+ */
+
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.classList.remove(this.classNames.disabledState);
+ this.element.removeAttribute('aria-disabled');
+
+ if (this.type === 'select-one') {
+ this.element.setAttribute('tabindex', '0');
+ }
+
+ this.isDisabled = false;
+ }
+ /**
+ * Set disabled state
+ */
+
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.classList.add(this.classNames.disabledState);
+ this.element.setAttribute('aria-disabled', 'true');
+
+ if (this.type === 'select-one') {
+ this.element.setAttribute('tabindex', '-1');
+ }
+
+ this.isDisabled = true;
+ }
+ }, {
+ key: "wrap",
+ value: function wrap(element) {
+ (0, _utils.wrap)(element, this.element);
+ }
+ }, {
+ key: "unwrap",
+ value: function unwrap(element) {
+ // Move passed element outside this element
+ this.element.parentNode.insertBefore(element, this.element); // Remove this element
+
+ this.element.parentNode.removeChild(this.element);
+ }
+ /**
+ * Add loading state to element
+ */
+
+ }, {
+ key: "addLoadingState",
+ value: function addLoadingState() {
+ this.element.classList.add(this.classNames.loadingState);
+ this.element.setAttribute('aria-busy', 'true');
+ this.isLoading = true;
+ }
+ /**
+ * Remove loading state from element
+ */
+
+ }, {
+ key: "removeLoadingState",
+ value: function removeLoadingState() {
+ this.element.classList.remove(this.classNames.loadingState);
+ this.element.removeAttribute('aria-busy');
+ this.isLoading = false;
+ }
+ /**
+ * Set focussed state
+ */
+
+ }, {
+ key: "_onFocus",
+ value: function _onFocus() {
+ this.isFocussed = true;
+ }
+ /**
+ * Remove blurred state
+ */
+
+ }, {
+ key: "_onBlur",
+ value: function _onBlur() {
+ this.isFocussed = false;
+ }
+ }]);
+
+ return Container;
+}();
+
+exports.default = Container;
+
+/***/ }),
+/* 23 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _utils = __webpack_require__(0);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var Input =
+/*#__PURE__*/
+function () {
+ function Input(_ref) {
+ var element = _ref.element,
+ type = _ref.type,
+ classNames = _ref.classNames,
+ placeholderValue = _ref.placeholderValue;
+
+ _classCallCheck(this, Input);
+
+ Object.assign(this, {
+ element: element,
+ type: type,
+ classNames: classNames,
+ placeholderValue: placeholderValue
+ });
+ this.element = element;
+ this.classNames = classNames;
+ this.isFocussed = this.element === document.activeElement;
+ this.isDisabled = false;
+ this._onPaste = this._onPaste.bind(this);
+ this._onInput = this._onInput.bind(this);
+ this._onFocus = this._onFocus.bind(this);
+ this._onBlur = this._onBlur.bind(this);
+ }
+
+ _createClass(Input, [{
+ key: "addEventListeners",
+ value: function addEventListeners() {
+ this.element.addEventListener('input', this._onInput);
+ this.element.addEventListener('paste', this._onPaste);
+ this.element.addEventListener('focus', this._onFocus);
+ this.element.addEventListener('blur', this._onBlur);
+
+ if (this.element.form) {
+ this.element.form.addEventListener('reset', this._onFormReset);
+ }
+ }
+ }, {
+ key: "removeEventListeners",
+ value: function removeEventListeners() {
+ this.element.removeEventListener('input', this._onInput);
+ this.element.removeEventListener('paste', this._onPaste);
+ this.element.removeEventListener('focus', this._onFocus);
+ this.element.removeEventListener('blur', this._onBlur);
+
+ if (this.element.form) {
+ this.element.form.removeEventListener('reset', this._onFormReset);
+ }
+ }
+ }, {
+ key: "enable",
+ value: function enable() {
+ this.element.removeAttribute('disabled');
+ this.isDisabled = false;
+ }
+ }, {
+ key: "disable",
+ value: function disable() {
+ this.element.setAttribute('disabled', '');
+ this.isDisabled = true;
+ }
+ }, {
+ key: "focus",
+ value: function focus() {
+ if (!this.isFocussed) {
+ this.element.focus();
+ }
+ }
+ }, {
+ key: "blur",
+ value: function blur() {
+ if (this.isFocussed) {
+ this.element.blur();
+ }
+ }
+ /**
+ * Set value of input to blank
+ * @return {Object} Class instance
+ * @public
+ */
+
+ }, {
+ key: "clear",
+ value: function clear() {
+ var setWidth = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+
+ if (this.element.value) {
+ this.element.value = '';
+ }
+
+ if (setWidth) {
+ this.setWidth();
+ }
+
+ return this;
+ }
+ /**
+ * Set the correct input width based on placeholder
+ * value or input value
+ * @return
+ */
+
+ }, {
+ key: "setWidth",
+ value: function setWidth(enforceWidth) {
+ var _this = this;
+
+ var callback = function callback(width) {
+ _this.element.style.width = width;
+ };
+
+ if (this._placeholderValue) {
+ // If there is a placeholder, we only want to set the width of the input when it is a greater
+ // length than 75% of the placeholder. This stops the input jumping around.
+ var valueHasDesiredLength = this.element.value.length >= this._placeholderValue.length / 1.25;
+
+ if (this.element.value && valueHasDesiredLength || enforceWidth) {
+ this.calcWidth(callback);
+ }
+ } else {
+ // If there is no placeholder, resize input to contents
+ this.calcWidth(callback);
+ }
+ }
+ }, {
+ key: "calcWidth",
+ value: function calcWidth(callback) {
+ return (0, _utils.calcWidthOfInput)(this.element, callback);
+ }
+ }, {
+ key: "setActiveDescendant",
+ value: function setActiveDescendant(activeDescendantID) {
+ this.element.setAttribute('aria-activedescendant', activeDescendantID);
+ }
+ }, {
+ key: "removeActiveDescendant",
+ value: function removeActiveDescendant() {
+ this.element.removeAttribute('aria-activedescendant');
+ }
+ }, {
+ key: "_onInput",
+ value: function _onInput() {
+ if (this.type !== 'select-one') {
+ this.setWidth();
+ }
+ }
+ }, {
+ key: "_onPaste",
+ value: function _onPaste(event) {
+ var target = event.target;
+
+ if (target === this.element && this.preventPaste) {
+ event.preventDefault();
+ }
+ }
+ }, {
+ key: "_onFocus",
+ value: function _onFocus() {
+ this.isFocussed = true;
+ }
+ }, {
+ key: "_onBlur",
+ value: function _onBlur() {
+ this.isFocussed = false;
+ }
+ }, {
+ key: "placeholder",
+ set: function set(placeholder) {
+ this.element.placeholder = placeholder;
+ }
+ }, {
+ key: "value",
+ set: function set(value) {
+ this.element.value = value;
+ },
+ get: function get() {
+ return (0, _utils.sanitise)(this.element.value);
+ }
+ }]);
+
+ return Input;
+}();
+
+exports.default = Input;
+
+/***/ }),
+/* 24 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _constants = __webpack_require__(1);
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+var List =
+/*#__PURE__*/
+function () {
+ function List(_ref) {
+ var element = _ref.element;
+
+ _classCallCheck(this, List);
+
+ Object.assign(this, {
+ element: element
+ });
+ this.scrollPos = this.element.scrollTop;
+ this.height = this.element.offsetHeight;
+ this.hasChildren = !!this.element.children;
+ }
+
+ _createClass(List, [{
+ key: "clear",
+ value: function clear() {
+ this.element.innerHTML = '';
+ }
+ }, {
+ key: "append",
+ value: function append(node) {
+ this.element.appendChild(node);
+ }
+ }, {
+ key: "getChild",
+ value: function getChild(selector) {
+ return this.element.querySelector(selector);
+ }
+ }, {
+ key: "scrollToTop",
+ value: function scrollToTop() {
+ this.element.scrollTop = 0;
+ }
+ }, {
+ key: "scrollToChoice",
+ value: function scrollToChoice(choice, direction) {
+ var _this = this;
+
+ if (!choice) {
+ return;
+ }
+
+ var dropdownHeight = this.element.offsetHeight;
+ var choiceHeight = choice.offsetHeight; // Distance from bottom of element to top of parent
+
+ var choicePos = choice.offsetTop + choiceHeight; // Scroll position of dropdown
+
+ var containerScrollPos = this.element.scrollTop + dropdownHeight; // Difference between the choice and scroll position
+
+ var endpoint = direction > 0 ? this.element.scrollTop + choicePos - containerScrollPos : choice.offsetTop;
+ requestAnimationFrame(function (time) {
+ _this._animateScroll(time, endpoint, direction);
+ });
+ }
+ }, {
+ key: "_scrollDown",
+ value: function _scrollDown(scrollPos, strength, endpoint) {
+ var easing = (endpoint - scrollPos) / strength;
+ var distance = easing > 1 ? easing : 1;
+ this.element.scrollTop = scrollPos + distance;
+ }
+ }, {
+ key: "_scrollUp",
+ value: function _scrollUp(scrollPos, strength, endpoint) {
+ var easing = (scrollPos - endpoint) / strength;
+ var distance = easing > 1 ? easing : 1;
+ this.element.scrollTop = scrollPos - distance;
+ }
+ }, {
+ key: "_animateScroll",
+ value: function _animateScroll(time, endpoint, direction) {
+ var _this2 = this;
+
+ var strength = _constants.SCROLLING_SPEED;
+ var choiceListScrollTop = this.element.scrollTop;
+ var continueAnimation = false;
+
+ if (direction > 0) {
+ this._scrollDown(choiceListScrollTop, strength, endpoint);
+
+ if (choiceListScrollTop < endpoint) {
+ continueAnimation = true;
+ }
+ } else {
+ this._scrollUp(choiceListScrollTop, strength, endpoint);
+
+ if (choiceListScrollTop > endpoint) {
+ continueAnimation = true;
+ }
+ }
+
+ if (continueAnimation) {
+ requestAnimationFrame(function () {
+ _this2._animateScroll(time, endpoint, direction);
+ });
+ }
+ }
+ }]);
+
+ return List;
+}();
+
+exports.default = List;
+
+/***/ }),
+/* 25 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _wrappedElement = _interopRequireDefault(__webpack_require__(4));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _get(target, property, receiver) { if (typeof Reflect !== "undefined" && Reflect.get) { _get = Reflect.get; } else { _get = function _get(target, property, receiver) { var base = _superPropBase(target, property); if (!base) return; var desc = Object.getOwnPropertyDescriptor(base, property); if (desc.get) { return desc.get.call(receiver); } return desc.value; }; } return _get(target, property, receiver || target); }
+
+function _superPropBase(object, property) { while (!Object.prototype.hasOwnProperty.call(object, property)) { object = _getPrototypeOf(object); if (object === null) break; } return object; }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var WrappedInput =
+/*#__PURE__*/
+function (_WrappedElement) {
+ _inherits(WrappedInput, _WrappedElement);
+
+ function WrappedInput(_ref) {
+ var _this;
+
+ var element = _ref.element,
+ classNames = _ref.classNames,
+ delimiter = _ref.delimiter;
+
+ _classCallCheck(this, WrappedInput);
+
+ _this = _possibleConstructorReturn(this, _getPrototypeOf(WrappedInput).call(this, {
+ element: element,
+ classNames: classNames
+ }));
+ _this.delimiter = delimiter;
+ return _this;
+ }
+
+ _createClass(WrappedInput, [{
+ key: "value",
+ set: function set(items) {
+ var itemValues = items.map(function (_ref2) {
+ var value = _ref2.value;
+ return value;
+ });
+ var joinedValues = itemValues.join(this.delimiter);
+ this.element.setAttribute('value', joinedValues);
+ this.element.value = joinedValues;
+ } // @todo figure out why we need this? Perhaps a babel issue
+ ,
+ get: function get() {
+ return _get(_getPrototypeOf(WrappedInput.prototype), "value", this);
+ }
+ }]);
+
+ return WrappedInput;
+}(_wrappedElement.default);
+
+exports.default = WrappedInput;
+
+/***/ }),
+/* 26 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.default = void 0;
+
+var _wrappedElement = _interopRequireDefault(__webpack_require__(4));
+
+var _templates = _interopRequireDefault(__webpack_require__(5));
+
+function _interopRequireDefault(obj) { return obj && obj.__esModule ? obj : { default: obj }; }
+
+function _typeof(obj) { if (typeof Symbol === "function" && typeof Symbol.iterator === "symbol") { _typeof = function _typeof(obj) { return typeof obj; }; } else { _typeof = function _typeof(obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; }; } return _typeof(obj); }
+
+function _classCallCheck(instance, Constructor) { if (!(instance instanceof Constructor)) { throw new TypeError("Cannot call a class as a function"); } }
+
+function _defineProperties(target, props) { for (var i = 0; i < props.length; i++) { var descriptor = props[i]; descriptor.enumerable = descriptor.enumerable || false; descriptor.configurable = true; if ("value" in descriptor) descriptor.writable = true; Object.defineProperty(target, descriptor.key, descriptor); } }
+
+function _createClass(Constructor, protoProps, staticProps) { if (protoProps) _defineProperties(Constructor.prototype, protoProps); if (staticProps) _defineProperties(Constructor, staticProps); return Constructor; }
+
+function _possibleConstructorReturn(self, call) { if (call && (_typeof(call) === "object" || typeof call === "function")) { return call; } return _assertThisInitialized(self); }
+
+function _assertThisInitialized(self) { if (self === void 0) { throw new ReferenceError("this hasn't been initialised - super() hasn't been called"); } return self; }
+
+function _getPrototypeOf(o) { _getPrototypeOf = Object.setPrototypeOf ? Object.getPrototypeOf : function _getPrototypeOf(o) { return o.__proto__ || Object.getPrototypeOf(o); }; return _getPrototypeOf(o); }
+
+function _inherits(subClass, superClass) { if (typeof superClass !== "function" && superClass !== null) { throw new TypeError("Super expression must either be null or a function"); } subClass.prototype = Object.create(superClass && superClass.prototype, { constructor: { value: subClass, writable: true, configurable: true } }); if (superClass) _setPrototypeOf(subClass, superClass); }
+
+function _setPrototypeOf(o, p) { _setPrototypeOf = Object.setPrototypeOf || function _setPrototypeOf(o, p) { o.__proto__ = p; return o; }; return _setPrototypeOf(o, p); }
+
+var WrappedSelect =
+/*#__PURE__*/
+function (_WrappedElement) {
+ _inherits(WrappedSelect, _WrappedElement);
+
+ function WrappedSelect(_ref) {
+ var element = _ref.element,
+ classNames = _ref.classNames;
+
+ _classCallCheck(this, WrappedSelect);
+
+ return _possibleConstructorReturn(this, _getPrototypeOf(WrappedSelect).call(this, {
+ element: element,
+ classNames: classNames
+ }));
+ }
+
+ _createClass(WrappedSelect, [{
+ key: "appendDocFragment",
+ value: function appendDocFragment(fragment) {
+ this.element.innerHTML = '';
+ this.element.appendChild(fragment);
+ }
+ }, {
+ key: "placeholderOption",
+ get: function get() {
+ return this.element.querySelector('option[placeholder]');
+ }
+ }, {
+ key: "optionGroups",
+ get: function get() {
+ return Array.from(this.element.getElementsByTagName('OPTGROUP'));
+ }
+ }, {
+ key: "options",
+ get: function get() {
+ return Array.from(this.element.options);
+ },
+ set: function set(options) {
+ var fragment = document.createDocumentFragment();
+
+ var addOptionToFragment = function addOptionToFragment(data) {
+ // Create a standard select option
+ var template = _templates.default.option(data); // Append it to fragment
+
+
+ fragment.appendChild(template);
+ }; // Add each list item to list
+
+
+ options.forEach(function (optionData) {
+ return addOptionToFragment(optionData);
+ });
+ this.appendDocFragment(fragment);
+ }
+ }]);
+
+ return WrappedSelect;
+}(_wrappedElement.default);
+
+exports.default = WrappedSelect;
+
+/***/ }),
+/* 27 */
+/***/ (function(module, exports, __webpack_require__) {
+
+var __WEBPACK_AMD_DEFINE_ARRAY__, __WEBPACK_AMD_DEFINE_RESULT__;/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+/* global define */
+
+(function () {
+ 'use strict';
+
+ var hasOwn = {}.hasOwnProperty;
+
+ function classNames () {
+ var classes = [];
+
+ for (var i = 0; i < arguments.length; i++) {
+ var arg = arguments[i];
+ if (!arg) continue;
+
+ var argType = typeof arg;
+
+ if (argType === 'string' || argType === 'number') {
+ classes.push(arg);
+ } else if (Array.isArray(arg) && arg.length) {
+ var inner = classNames.apply(null, arg);
+ if (inner) {
+ classes.push(inner);
+ }
+ } else if (argType === 'object') {
+ for (var key in arg) {
+ if (hasOwn.call(arg, key) && arg[key]) {
+ classes.push(key);
+ }
+ }
+ }
+ }
+
+ return classes.join(' ');
+ }
+
+ if ( true && module.exports) {
+ classNames.default = classNames;
+ module.exports = classNames;
+ } else if (true) {
+ // register as 'classnames', consistent with npm package name
+ !(__WEBPACK_AMD_DEFINE_ARRAY__ = [], __WEBPACK_AMD_DEFINE_RESULT__ = (function () {
+ return classNames;
+ }).apply(exports, __WEBPACK_AMD_DEFINE_ARRAY__),
+ __WEBPACK_AMD_DEFINE_RESULT__ !== undefined && (module.exports = __WEBPACK_AMD_DEFINE_RESULT__));
+ } else {}
+}());
+
+
+/***/ }),
+/* 28 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.clearChoices = exports.activateChoices = exports.filterChoices = exports.addChoice = void 0;
+
+var _constants = __webpack_require__(1);
+
+var addChoice = function addChoice(_ref) {
+ var value = _ref.value,
+ label = _ref.label,
+ id = _ref.id,
+ groupId = _ref.groupId,
+ disabled = _ref.disabled,
+ elementId = _ref.elementId,
+ customProperties = _ref.customProperties,
+ placeholder = _ref.placeholder,
+ keyCode = _ref.keyCode;
+ return {
+ type: _constants.ACTION_TYPES.ADD_CHOICE,
+ value: value,
+ label: label,
+ id: id,
+ groupId: groupId,
+ disabled: disabled,
+ elementId: elementId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ };
+};
+
+exports.addChoice = addChoice;
+
+var filterChoices = function filterChoices(results) {
+ return {
+ type: _constants.ACTION_TYPES.FILTER_CHOICES,
+ results: results
+ };
+};
+
+exports.filterChoices = filterChoices;
+
+var activateChoices = function activateChoices() {
+ var active = arguments.length > 0 && arguments[0] !== undefined ? arguments[0] : true;
+ return {
+ type: _constants.ACTION_TYPES.ACTIVATE_CHOICES,
+ active: active
+ };
+};
+
+exports.activateChoices = activateChoices;
+
+var clearChoices = function clearChoices() {
+ return {
+ type: _constants.ACTION_TYPES.CLEAR_CHOICES
+ };
+};
+
+exports.clearChoices = clearChoices;
+
+/***/ }),
+/* 29 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.highlightItem = exports.removeItem = exports.addItem = void 0;
+
+var _constants = __webpack_require__(1);
+
+var addItem = function addItem(_ref) {
+ var value = _ref.value,
+ label = _ref.label,
+ id = _ref.id,
+ choiceId = _ref.choiceId,
+ groupId = _ref.groupId,
+ customProperties = _ref.customProperties,
+ placeholder = _ref.placeholder,
+ keyCode = _ref.keyCode;
+ return {
+ type: _constants.ACTION_TYPES.ADD_ITEM,
+ value: value,
+ label: label,
+ id: id,
+ choiceId: choiceId,
+ groupId: groupId,
+ customProperties: customProperties,
+ placeholder: placeholder,
+ keyCode: keyCode
+ };
+};
+
+exports.addItem = addItem;
+
+var removeItem = function removeItem(id, choiceId) {
+ return {
+ type: _constants.ACTION_TYPES.REMOVE_ITEM,
+ id: id,
+ choiceId: choiceId
+ };
+};
+
+exports.removeItem = removeItem;
+
+var highlightItem = function highlightItem(id, highlighted) {
+ return {
+ type: _constants.ACTION_TYPES.HIGHLIGHT_ITEM,
+ id: id,
+ highlighted: highlighted
+ };
+};
+
+exports.highlightItem = highlightItem;
+
+/***/ }),
+/* 30 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.addGroup = void 0;
+
+var _constants = __webpack_require__(1);
+
+/* eslint-disable import/prefer-default-export */
+var addGroup = function addGroup(value, id, active, disabled) {
+ return {
+ type: _constants.ACTION_TYPES.ADD_GROUP,
+ value: value,
+ id: id,
+ active: active,
+ disabled: disabled
+ };
+};
+
+exports.addGroup = addGroup;
+
+/***/ }),
+/* 31 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.resetTo = exports.clearAll = void 0;
+
+var clearAll = function clearAll() {
+ return {
+ type: 'CLEAR_ALL'
+ };
+};
+
+exports.clearAll = clearAll;
+
+var resetTo = function resetTo(state) {
+ return {
+ type: 'RESET_TO',
+ state: state
+ };
+};
+
+exports.resetTo = resetTo;
+
+/***/ }),
+/* 32 */
+/***/ (function(module, exports, __webpack_require__) {
+
+"use strict";
+
+
+Object.defineProperty(exports, "__esModule", {
+ value: true
+});
+exports.setIsLoading = void 0;
+
+/* eslint-disable import/prefer-default-export */
+var setIsLoading = function setIsLoading(isLoading) {
+ return {
+ type: 'SET_IS_LOADING',
+ isLoading: isLoading
+ };
+};
+
+exports.setIsLoading = setIsLoading;
+
+/***/ })
+/******/ ]);
+});
\ No newline at end of file
--- /dev/null
+/*! choices.js v7.0.0 | (c) 2019 Josh Johnson | https://github.com/jshjohnson/Choices#readme */
+!function(e,t){"object"==typeof exports&&"object"==typeof module?module.exports=t():"function"==typeof define&&define.amd?define([],t):"object"==typeof exports?exports.Choices=t():e.Choices=t()}(window,function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="/public/assets/scripts/",i(i.s=9)}([function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.diff=t.cloneObject=t.existsInArray=t.isIE11=t.fetchFromObject=t.getWindowHeight=t.dispatchEvent=t.sortByScore=t.sortByAlpha=t.calcWidthOfInput=t.strToEl=t.sanitise=t.isScrolledIntoView=t.getAdjacentEl=t.findAncestorByAttrName=t.wrap=t.isElement=t.isType=t.getType=t.generateId=t.generateChars=t.getRandomNumber=void 0;var n=function(e,t){return Math.floor(Math.random()*(t-e)+e)};t.getRandomNumber=n;var o=function(e){for(var t="",i=0;i<e;i++){t+=n(0,36).toString(36)}return t};t.generateChars=o;t.generateId=function(e,t){var i=e.id||e.name&&"".concat(e.name,"-").concat(o(2))||o(4);return i=i.replace(/(:|\.|\[|\]|,)/g,""),i="".concat(t,"-").concat(i)};var r=function(e){return Object.prototype.toString.call(e).slice(8,-1)};t.getType=r;var s=function(e,t){return null!=t&&r(t)===e};t.isType=s;t.isElement=function(e){return e instanceof Element};t.wrap=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:document.createElement("div");return e.nextSibling?e.parentNode.insertBefore(t,e.nextSibling):e.parentNode.appendChild(t),t.appendChild(e)};t.findAncestorByAttrName=function(e,t){for(var i=e;i;){if(i.hasAttribute(t))return i;i=i.parentElement}return null};t.getAdjacentEl=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e&&t){var n=e.parentNode.parentNode,o=Array.from(n.querySelectorAll(t)),r=o.indexOf(e);return o[r+(i>0?1:-1)]}};t.isScrolledIntoView=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:1;if(e)return i>0?t.scrollTop+t.offsetHeight>=e.offsetTop+e.offsetHeight:e.offsetTop>=t.scrollTop};var a=function(e){return s("String",e)?e.replace(/&/g,"&").replace(/>/g,"&rt;").replace(/</g,"<").replace(/"/g,"""):e};t.sanitise=a;var c,l=(c=document.createElement("div"),function(e){var t=e.trim();c.innerHTML=t;for(var i=c.children[0];c.firstChild;)c.removeChild(c.firstChild);return i});t.strToEl=l;t.calcWidthOfInput=function(e,t){var i=e.value||e.placeholder,n=e.offsetWidth;if(i){var o=l("<span>".concat(a(i),"</span>"));if(o.style.position="absolute",o.style.padding="0",o.style.top="-9999px",o.style.left="-9999px",o.style.width="auto",o.style.whiteSpace="pre",document.body.contains(e)&&window.getComputedStyle){var r=window.getComputedStyle(e);r&&(o.style.fontSize=r.fontSize,o.style.fontFamily=r.fontFamily,o.style.fontWeight=r.fontWeight,o.style.fontStyle=r.fontStyle,o.style.letterSpacing=r.letterSpacing,o.style.textTransform=r.textTransform,o.style.padding=r.padding)}document.body.appendChild(o),requestAnimationFrame(function(){i&&o.offsetWidth!==e.offsetWidth&&(n=o.offsetWidth+4),document.body.removeChild(o),t.call(void 0,"".concat(n,"px"))})}else t.call(void 0,"".concat(n,"px"))};t.sortByAlpha=function(e,t){var i="".concat(e.label||e.value).toLowerCase(),n="".concat(t.label||t.value).toLowerCase();return i<n?-1:i>n?1:0};t.sortByScore=function(e,t){return e.score-t.score};t.dispatchEvent=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null,n=new CustomEvent(t,{detail:i,bubbles:!0,cancelable:!0});return e.dispatchEvent(n)};t.getWindowHeight=function(){var e=document.body,t=document.documentElement;return Math.max(e.scrollHeight,e.offsetHeight,t.clientHeight,t.scrollHeight,t.offsetHeight)};t.fetchFromObject=function e(t,i){var n=i.indexOf(".");return n>-1?e(t[i.substring(0,n)],i.substr(n+1)):t[i]};t.isIE11=function(){return!(!navigator.userAgent.match(/Trident/)||!navigator.userAgent.match(/rv[ :]11/))};t.existsInArray=function(e,t){var i=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"value";return e.some(function(e){return s("String",t)?e[i]===t.trim():e[i]===t})};t.cloneObject=function(e){return JSON.parse(JSON.stringify(e))};t.diff=function(e,t){var i=Object.keys(e).sort(),n=Object.keys(t).sort();return i.filter(function(e){return n.indexOf(e)<0})}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.SCROLLING_SPEED=t.KEY_CODES=t.ACTION_TYPES=t.EVENTS=t.DEFAULT_CONFIG=t.DEFAULT_CLASSNAMES=void 0;var n=i(0),o={containerOuter:"choices",containerInner:"choices__inner",input:"choices__input",inputCloned:"choices__input--cloned",list:"choices__list",listItems:"choices__list--multiple",listSingle:"choices__list--single",listDropdown:"choices__list--dropdown",item:"choices__item",itemSelectable:"choices__item--selectable",itemDisabled:"choices__item--disabled",itemChoice:"choices__item--choice",placeholder:"choices__placeholder",group:"choices__group",groupHeading:"choices__heading",button:"choices__button",activeState:"is-active",focusState:"is-focused",openState:"is-open",disabledState:"is-disabled",highlightedState:"is-highlighted",hiddenState:"is-hidden",flippedState:"is-flipped",loadingState:"is-loading",noResults:"has-no-results",noChoices:"has-no-choices"};t.DEFAULT_CLASSNAMES=o;var r={items:[],choices:[],silent:!1,renderChoiceLimit:-1,maxItemCount:-1,addItems:!0,addItemFilterFn:null,removeItems:!0,removeItemButton:!1,editItems:!1,duplicateItemsAllowed:!0,delimiter:",",paste:!0,searchEnabled:!0,searchChoices:!0,searchFloor:1,searchResultLimit:4,searchFields:["label","value"],position:"auto",resetScrollPosition:!0,shouldSort:!0,shouldSortItems:!1,sortFn:n.sortByAlpha,placeholder:!0,placeholderValue:null,searchPlaceholderValue:null,prependValue:null,appendValue:null,renderSelectedChoices:"auto",loadingText:"Loading...",noResultsText:"No results found",noChoicesText:"No choices to choose from",itemSelectText:"Press to select",uniqueItemText:"Only unique values can be added",customAddItemText:"Only values matching specific conditions can be added",addItemText:function(e){return'Press Enter to add <b>"'.concat((0,n.sanitise)(e),'"</b>')},maxItemText:function(e){return"Only ".concat(e," values can be added")},itemComparer:function(e,t){return e===t},fuseOptions:{includeScore:!0},callbackOnInit:null,callbackOnCreateTemplates:null,classNames:o};t.DEFAULT_CONFIG=r;t.EVENTS={showDropdown:"showDropdown",hideDropdown:"hideDropdown",change:"change",choice:"choice",search:"search",addItem:"addItem",removeItem:"removeItem",highlightItem:"highlightItem",highlightChoice:"highlightChoice"};t.ACTION_TYPES={ADD_CHOICE:"ADD_CHOICE",FILTER_CHOICES:"FILTER_CHOICES",ACTIVATE_CHOICES:"ACTIVATE_CHOICES",CLEAR_CHOICES:"CLEAR_CHOICES",ADD_GROUP:"ADD_GROUP",ADD_ITEM:"ADD_ITEM",REMOVE_ITEM:"REMOVE_ITEM",HIGHLIGHT_ITEM:"HIGHLIGHT_ITEM",CLEAR_ALL:"CLEAR_ALL"};t.KEY_CODES={BACK_KEY:46,DELETE_KEY:8,ENTER_KEY:13,A_KEY:65,ESC_KEY:27,UP_KEY:38,DOWN_KEY:40,PAGE_UP_KEY:33,PAGE_DOWN_KEY:34};t.SCROLLING_SPEED=4},function(e,t,i){"use strict";(function(e,n){var o,r=i(7);o="undefined"!=typeof self?self:"undefined"!=typeof window?window:void 0!==e?e:n;var s=Object(r.a)(o);t.a=s}).call(this,i(3),i(14)(e))},function(e,t){var i;i=function(){return this}();try{i=i||new Function("return this")()}catch(e){"object"==typeof window&&(i=window)}e.exports=i},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,o=t.classNames;if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,classNames:o}),!(0,n.isElement)(i))throw new TypeError("Invalid element passed");this.isDisabled=!1}var t,i,r;return t=e,(i=[{key:"conceal",value:function(){this.element.classList.add(this.classNames.input),this.element.classList.add(this.classNames.hiddenState),this.element.tabIndex="-1";var e=this.element.getAttribute("style");e&&this.element.setAttribute("data-choice-orig-style",e),this.element.setAttribute("aria-hidden","true"),this.element.setAttribute("data-choice","active")}},{key:"reveal",value:function(){this.element.classList.remove(this.classNames.input),this.element.classList.remove(this.classNames.hiddenState),this.element.removeAttribute("tabindex");var e=this.element.getAttribute("data-choice-orig-style");e?(this.element.removeAttribute("data-choice-orig-style"),this.element.setAttribute("style",e)):this.element.removeAttribute("style"),this.element.removeAttribute("aria-hidden"),this.element.removeAttribute("data-choice"),this.element.value=this.element.value}},{key:"enable",value:function(){this.element.removeAttribute("disabled"),this.element.disabled=!1,this.isDisabled=!1}},{key:"disable",value:function(){this.element.setAttribute("disabled",""),this.element.disabled=!0,this.isDisabled=!0}},{key:"triggerEvent",value:function(e,t){(0,n.dispatchEvent)(this.element,e,t)}},{key:"value",get:function(){return this.element.value}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.TEMPLATES=void 0;var n,o=(n=i(27))&&n.__esModule?n:{default:n},r=i(0);function s(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}var a={containerOuter:function(e,t,i,n,o,s){var a=n?'tabindex="0"':"",c=i?'role="listbox"':"",l="";return i&&o&&(c='role="combobox"',l='aria-autocomplete="list"'),(0,r.strToEl)('\n <div\n class="'.concat(e.containerOuter,'"\n data-type="').concat(s,'"\n ').concat(c,"\n ").concat(a,"\n ").concat(l,'\n aria-haspopup="true"\n aria-expanded="false"\n dir="').concat(t,'"\n >\n </div>\n '))},containerInner:function(e){return(0,r.strToEl)('\n <div class="'.concat(e.containerInner,'"></div>\n '))},itemList:function(e,t){var i,n=(0,o.default)(e.list,(s(i={},e.listSingle,t),s(i,e.listItems,!t),i));return(0,r.strToEl)('\n <div class="'.concat(n,'"></div>\n '))},placeholder:function(e,t){return(0,r.strToEl)('\n <div class="'.concat(e.placeholder,'">\n ').concat(t,"\n </div>\n "))},item:function(e,t,i){var n,a,c=t.active?'aria-selected="true"':"",l=t.disabled?'aria-disabled="true"':"",u=(0,o.default)(e.item,(s(n={},e.highlightedState,t.highlighted),s(n,e.itemSelectable,!t.highlighted),s(n,e.placeholder,t.placeholder),n));return i?(u=(0,o.default)(e.item,(s(a={},e.highlightedState,t.highlighted),s(a,e.itemSelectable,!t.disabled),s(a,e.placeholder,t.placeholder),a)),(0,r.strToEl)('\n <div\n class="'.concat(u,'"\n data-item\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,"\"\n data-custom-properties='").concat(t.customProperties,"'\n data-deletable\n ").concat(c,"\n ").concat(l,"\n >\n ").concat(t.label,'\x3c!--\n --\x3e<button\n type="button"\n class="').concat(e.button,'"\n data-button\n aria-label="Remove item: \'').concat(t.value,"'\"\n >\n Remove item\n </button>\n </div>\n "))):(0,r.strToEl)('\n <div\n class="'.concat(u,'"\n data-item\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n ').concat(c,"\n ").concat(l,"\n >\n ").concat(t.label,"\n </div>\n "))},choiceList:function(e,t){var i=t?"":'aria-multiselectable="true"';return(0,r.strToEl)('\n <div\n class="'.concat(e.list,'"\n dir="ltr"\n role="listbox"\n ').concat(i,"\n >\n </div>\n "))},choiceGroup:function(e,t){var i=t.disabled?'aria-disabled="true"':"",n=(0,o.default)(e.group,s({},e.itemDisabled,t.disabled));return(0,r.strToEl)('\n <div\n class="'.concat(n,'"\n data-group\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n role="group"\n ').concat(i,'\n >\n <div class="').concat(e.groupHeading,'">').concat(t.value,"</div>\n </div>\n "))},choice:function(e,t,i){var n,a=t.groupId>0?'role="treeitem"':'role="option"',c=(0,o.default)(e.item,e.itemChoice,(s(n={},e.itemDisabled,t.disabled),s(n,e.itemSelectable,!t.disabled),s(n,e.placeholder,t.placeholder),n));return(0,r.strToEl)('\n <div\n class="'.concat(c,'"\n data-select-text="').concat(i,'"\n data-choice\n data-id="').concat(t.id,'"\n data-value="').concat(t.value,'"\n ').concat(t.disabled?'data-choice-disabled aria-disabled="true"':"data-choice-selectable",'\n id="').concat(t.elementId,'"\n ').concat(a,"\n >\n ").concat(t.label,"\n </div>\n "))},input:function(e){var t=(0,o.default)(e.input,e.inputCloned);return(0,r.strToEl)('\n <input\n type="text"\n class="'.concat(t,'"\n autocomplete="off"\n autocapitalize="off"\n spellcheck="false"\n role="textbox"\n aria-autocomplete="list"\n >\n '))},dropdown:function(e){var t=(0,o.default)(e.list,e.listDropdown);return(0,r.strToEl)('\n <div\n class="'.concat(t,'"\n aria-expanded="false"\n >\n </div>\n '))},notice:function(e,t){var i,n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",a=(0,o.default)(e.item,e.itemChoice,(s(i={},e.noResults,"no-results"===n),s(i,e.noChoices,"no-choices"===n),i));return(0,r.strToEl)('\n <div class="'.concat(a,'">\n ').concat(t,"\n </div>\n "))},option:function(e){return(0,r.strToEl)('\n <option value="'.concat(e.value,'" ').concat(e.active?"selected":""," ").concat(e.disabled?"disabled":""," ").concat(e.customProperties?"data-custom-properties=".concat(e.customProperties):"",">").concat(e.label,"</option>\n "))}};t.TEMPLATES=a;var c=a;t.default=c},function(e,t,i){"use strict";i.r(t);var n=i(8),o="object"==typeof self&&self&&self.Object===Object&&self,r=(n.a||o||Function("return this")()).Symbol,s=Object.prototype,a=s.hasOwnProperty,c=s.toString,l=r?r.toStringTag:void 0;var u=function(e){var t=a.call(e,l),i=e[l];try{e[l]=void 0;var n=!0}catch(e){}var o=c.call(e);return n&&(t?e[l]=i:delete e[l]),o},h=Object.prototype.toString;var d=function(e){return h.call(e)},f="[object Null]",p="[object Undefined]",v=r?r.toStringTag:void 0;var m=function(e){return null==e?void 0===e?p:f:v&&v in Object(e)?u(e):d(e)};var g=function(e,t){return function(i){return e(t(i))}}(Object.getPrototypeOf,Object);var _=function(e){return null!=e&&"object"==typeof e},y="[object Object]",b=Function.prototype,E=Object.prototype,S=b.toString,I=E.hasOwnProperty,O=S.call(Object);var C=function(e){if(!_(e)||m(e)!=y)return!1;var t=g(e);if(null===t)return!0;var i=I.call(t,"constructor")&&t.constructor;return"function"==typeof i&&i instanceof i&&S.call(i)==O},T=i(2),w={INIT:"@@redux/INIT"};function k(e,t,i){var n;if("function"==typeof t&&void 0===i&&(i=t,t=void 0),void 0!==i){if("function"!=typeof i)throw new Error("Expected the enhancer to be a function.");return i(k)(e,t)}if("function"!=typeof e)throw new Error("Expected the reducer to be a function.");var o=e,r=t,s=[],a=s,c=!1;function l(){a===s&&(a=s.slice())}function u(){return r}function h(e){if("function"!=typeof e)throw new Error("Expected listener to be a function.");var t=!0;return l(),a.push(e),function(){if(t){t=!1,l();var i=a.indexOf(e);a.splice(i,1)}}}function d(e){if(!C(e))throw new Error("Actions must be plain objects. Use custom middleware for async actions.");if(void 0===e.type)throw new Error('Actions may not have an undefined "type" property. Have you misspelled a constant?');if(c)throw new Error("Reducers may not dispatch actions.");try{c=!0,r=o(r,e)}finally{c=!1}for(var t=s=a,i=0;i<t.length;i++){(0,t[i])()}return e}return d({type:w.INIT}),(n={dispatch:d,subscribe:h,getState:u,replaceReducer:function(e){if("function"!=typeof e)throw new Error("Expected the nextReducer to be a function.");o=e,d({type:w.INIT})}})[T.a]=function(){var e,t=h;return(e={subscribe:function(e){if("object"!=typeof e)throw new TypeError("Expected the observer to be an object.");function i(){e.next&&e.next(u())}return i(),{unsubscribe:t(i)}}})[T.a]=function(){return this},e},n}function A(e,t){var i=t&&t.type;return"Given action "+(i&&'"'+i.toString()+'"'||"an action")+', reducer "'+e+'" returned undefined. To ignore an action, you must explicitly return the previous state. If you want this reducer to hold no value, you can return null instead of undefined.'}function L(e){for(var t=Object.keys(e),i={},n=0;n<t.length;n++){var o=t[n];0,"function"==typeof e[o]&&(i[o]=e[o])}var r=Object.keys(i);var s=void 0;try{!function(e){Object.keys(e).forEach(function(t){var i=e[t];if(void 0===i(void 0,{type:w.INIT}))throw new Error('Reducer "'+t+"\" returned undefined during initialization. If the state passed to the reducer is undefined, you must explicitly return the initial state. The initial state may not be undefined. If you don't want to set a value for this reducer, you can use null instead of undefined.");if(void 0===i(void 0,{type:"@@redux/PROBE_UNKNOWN_ACTION_"+Math.random().toString(36).substring(7).split("").join(".")}))throw new Error('Reducer "'+t+"\" returned undefined when probed with a random type. Don't try to handle "+w.INIT+' or other actions in "redux/*" namespace. They are considered private. Instead, you must return the current state for any unknown actions, unless it is undefined, in which case you must return the initial state, regardless of the action type. The initial state may not be undefined, but can be null.')})}(i)}catch(e){s=e}return function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=arguments[1];if(s)throw s;for(var n=!1,o={},a=0;a<r.length;a++){var c=r[a],l=i[c],u=e[c],h=l(u,t);if(void 0===h){var d=A(c,t);throw new Error(d)}o[c]=h,n=n||h!==u}return n?o:e}}function x(e,t){return function(){return t(e.apply(void 0,arguments))}}function P(e,t){if("function"==typeof e)return x(e,t);if("object"!=typeof e||null===e)throw new Error("bindActionCreators expected an object or a function, instead received "+(null===e?"null":typeof e)+'. Did you write "import ActionCreators from" instead of "import * as ActionCreators from"?');for(var i=Object.keys(e),n={},o=0;o<i.length;o++){var r=i[o],s=e[r];"function"==typeof s&&(n[r]=x(s,t))}return n}function D(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return 0===t.length?function(e){return e}:1===t.length?t[0]:t.reduce(function(e,t){return function(){return e(t.apply(void 0,arguments))}})}var j=Object.assign||function(e){for(var t=1;t<arguments.length;t++){var i=arguments[t];for(var n in i)Object.prototype.hasOwnProperty.call(i,n)&&(e[n]=i[n])}return e};function M(){for(var e=arguments.length,t=Array(e),i=0;i<e;i++)t[i]=arguments[i];return function(e){return function(i,n,o){var r,s=e(i,n,o),a=s.dispatch,c={getState:s.getState,dispatch:function(e){return a(e)}};return r=t.map(function(e){return e(c)}),a=D.apply(void 0,r)(s.dispatch),j({},s,{dispatch:a})}}}i.d(t,"createStore",function(){return k}),i.d(t,"combineReducers",function(){return L}),i.d(t,"bindActionCreators",function(){return P}),i.d(t,"applyMiddleware",function(){return M}),i.d(t,"compose",function(){return D})},function(e,t,i){"use strict";function n(e){var t,i=e.Symbol;return"function"==typeof i?i.observable?t=i.observable:(t=i("observable"),i.observable=t):t="@@observable",t}i.d(t,"a",function(){return n})},function(e,t,i){"use strict";(function(e){var i="object"==typeof e&&e&&e.Object===Object&&e;t.a=i}).call(this,i(3))},function(e,t,i){e.exports=i(10)},function(e,t,i){"use strict";var n=v(i(11)),o=v(i(12)),r=v(i(13)),s=i(20),a=i(1),c=i(5),l=i(28),u=i(29),h=i(30),d=i(31),f=i(32),p=i(0);function v(e){return e&&e.__esModule?e:{default:e}}function m(e,t,i){return t in e?Object.defineProperty(e,t,{value:i,enumerable:!0,configurable:!0,writable:!0}):e[t]=i,e}function g(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var _=function(){function e(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"[data-choice]",i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),(0,p.isType)("String",t)){var n=Array.from(document.querySelectorAll(t));if(n.length>1)return this._generateInstances(n,i)}this.config=o.default.all([a.DEFAULT_CONFIG,e.userDefaults,i],{arrayMerge:function(e,t){return[].concat(t)}});var c=(0,p.diff)(this.config,a.DEFAULT_CONFIG);c.length&&console.warn("Unknown config option(s) passed",c.join(", ")),["auto","always"].includes(this.config.renderSelectedChoices)||(this.config.renderSelectedChoices="auto");var l=(0,p.isType)("String",t)?document.querySelector(t):t;return l?(this._isTextElement="text"===l.type,this._isSelectOneElement="select-one"===l.type,this._isSelectMultipleElement="select-multiple"===l.type,this._isSelectElement=this._isSelectOneElement||this._isSelectMultipleElement,this._isTextElement?this.passedElement=new s.WrappedInput({element:l,classNames:this.config.classNames,delimiter:this.config.delimiter}):this._isSelectElement&&(this.passedElement=new s.WrappedSelect({element:l,classNames:this.config.classNames})),this.passedElement?(!0===this.config.shouldSortItems&&this._isSelectOneElement&&!this.config.silent&&console.warn("shouldSortElements: Type of passed element is 'select-one', falling back to false."),this.initialised=!1,this._store=new r.default(this.render),this._initialState={},this._currentState={},this._prevState={},this._currentValue="",this._canSearch=this.config.searchEnabled,this._isScrollingOnIe=!1,this._highlightPosition=0,this._wasTap=!0,this._placeholderValue=this._generatePlaceholderValue(),this._baseId=(0,p.generateId)(this.passedElement.element,"choices-"),this._direction=this.passedElement.element.getAttribute("dir")||"ltr",this._idNames={itemChoice:"item-choice"},this._presetChoices=this.config.choices,this._presetItems=this.config.items,this.passedElement.value&&(this._presetItems=this._presetItems.concat(this.passedElement.value.split(this.config.delimiter))),this._render=this._render.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this),this._onKeyUp=this._onKeyUp.bind(this),this._onKeyDown=this._onKeyDown.bind(this),this._onClick=this._onClick.bind(this),this._onTouchMove=this._onTouchMove.bind(this),this._onTouchEnd=this._onTouchEnd.bind(this),this._onMouseDown=this._onMouseDown.bind(this),this._onMouseOver=this._onMouseOver.bind(this),this._onFormReset=this._onFormReset.bind(this),this._onAKey=this._onAKey.bind(this),this._onEnterKey=this._onEnterKey.bind(this),this._onEscapeKey=this._onEscapeKey.bind(this),this._onDirectionKey=this._onDirectionKey.bind(this),this._onDeleteKey=this._onDeleteKey.bind(this),"active"===this.passedElement.element.getAttribute("data-choice")&&console.warn("Trying to initialise Choices on element already initialised"),void this.init()):console.error("Passed element was of an invalid type")):console.error("Could not find passed element or passed element was of an invalid type")}var t,i,v;return t=e,(i=[{key:"init",value:function(){if(!this.initialised){this._createTemplates(),this._createElements(),this._createStructure(),this._initialState=(0,p.cloneObject)(this._store.state),this._store.subscribe(this._render),this._render(),this._addEventListeners(),(!this.config.addItems||this.passedElement.element.hasAttribute("disabled"))&&this.disable(),this.initialised=!0;var e=this.config.callbackOnInit;e&&(0,p.isType)("Function",e)&&e.call(this)}}},{key:"destroy",value:function(){this.initialised&&(this._removeEventListeners(),this.passedElement.reveal(),this.containerOuter.unwrap(this.passedElement.element),this._isSelectElement&&(this.passedElement.options=this._presetChoices),this.clearStore(),this.config.templates=null,this.initialised=!1)}},{key:"enable",value:function(){return this.passedElement.isDisabled&&this.passedElement.enable(),this.containerOuter.isDisabled&&(this._addEventListeners(),this.input.enable(),this.containerOuter.enable()),this}},{key:"disable",value:function(){return this.passedElement.isDisabled||this.passedElement.disable(),this.containerOuter.isDisabled||(this._removeEventListeners(),this.input.disable(),this.containerOuter.disable()),this}},{key:"highlightItem",value:function(e){var t=!(arguments.length>1&&void 0!==arguments[1])||arguments[1];if(!e)return this;var i=e.id,n=e.groupId,o=void 0===n?-1:n,r=e.value,s=void 0===r?"":r,c=e.label,l=void 0===c?"":c,h=o>=0?this._store.getGroupById(o):null;return this._store.dispatch((0,u.highlightItem)(i,!0)),t&&this.passedElement.triggerEvent(a.EVENTS.highlightItem,{id:i,value:s,label:l,groupValue:h&&h.value?h.value:null}),this}},{key:"unhighlightItem",value:function(e){if(!e)return this;var t=e.id,i=e.groupId,n=void 0===i?-1:i,o=e.value,r=void 0===o?"":o,s=e.label,c=void 0===s?"":s,l=n>=0?this._store.getGroupById(n):null;return this._store.dispatch((0,u.highlightItem)(t,!1)),this.passedElement.triggerEvent(a.EVENTS.highlightItem,{id:t,value:r,label:c,groupValue:l&&l.value?l.value:null}),this}},{key:"highlightAll",value:function(){var e=this;return this._store.items.forEach(function(t){return e.highlightItem(t)}),this}},{key:"unhighlightAll",value:function(){var e=this;return this._store.items.forEach(function(t){return e.unhighlightItem(t)}),this}},{key:"removeActiveItemsByValue",value:function(e){var t=this;return this._store.activeItems.filter(function(t){return t.value===e}).forEach(function(e){return t._removeItem(e)}),this}},{key:"removeActiveItems",value:function(e){var t=this;return this._store.activeItems.filter(function(t){return t.id!==e}).forEach(function(e){return t._removeItem(e)}),this}},{key:"removeHighlightedItems",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]&&arguments[0];return this._store.highlightedActiveItems.forEach(function(i){e._removeItem(i),t&&e._triggerChange(i.value)}),this}},{key:"showDropdown",value:function(e){var t=this;return this.dropdown.isActive?this:(requestAnimationFrame(function(){t.dropdown.show(),t.containerOuter.open(t.dropdown.distanceFromTopWindow()),!e&&t._canSearch&&t.input.focus(),t.passedElement.triggerEvent(a.EVENTS.showDropdown,{})}),this)}},{key:"hideDropdown",value:function(e){var t=this;return this.dropdown.isActive?(requestAnimationFrame(function(){t.dropdown.hide(),t.containerOuter.close(),!e&&t._canSearch&&(t.input.removeActiveDescendant(),t.input.blur()),t.passedElement.triggerEvent(a.EVENTS.hideDropdown,{})}),this):this}},{key:"getValue",value:function(){var e=arguments.length>0&&void 0!==arguments[0]&&arguments[0],t=this._store.activeItems.reduce(function(t,i){var n=e?i.value:i;return t.push(n),t},[]);return this._isSelectOneElement?t[0]:t}},{key:"setValue",value:function(e){var t=this;return this.initialised?([].concat(e).forEach(function(e){return t._setChoiceOrItem(e)}),this):this}},{key:"setChoiceByValue",value:function(e){var t=this;return!this.initialised||this._isTextElement?this:(((0,p.isType)("Array",e)?e:[e]).forEach(function(e){return t._findAndSelectChoiceByValue(e)}),this)}},{key:"setChoices",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:"",n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:"",o=arguments.length>3&&void 0!==arguments[3]&&arguments[3];if(!this._isSelectElement||!i)return this;o&&this.clearChoices(),this.containerOuter.removeLoadingState();return this._setLoading(!0),t.forEach(function(t){t.choices?e._addGroup({group:t,id:t.id||null,valueKey:i,labelKey:n}):e._addChoice({value:t[i],label:t[n],isSelected:t.selected,isDisabled:t.disabled,customProperties:t.customProperties,placeholder:t.placeholder})}),this._setLoading(!1),this}},{key:"clearChoices",value:function(){this._store.dispatch((0,l.clearChoices)())}},{key:"clearStore",value:function(){return this._store.dispatch((0,d.clearAll)()),this}},{key:"clearInput",value:function(){var e=!this._isSelectOneElement;return this.input.clear(e),!this._isTextElement&&this._canSearch&&(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0))),this}},{key:"ajax",value:function(e){var t=this;return this.initialised&&this._isSelectElement&&e?(requestAnimationFrame(function(){return t._handleLoadingState(!0)}),e(this._ajaxCallback()),this):this}},{key:"_render",value:function(){if(!this._store.isLoading()){this._currentState=this._store.state;var e=this._currentState.choices!==this._prevState.choices||this._currentState.groups!==this._prevState.groups||this._currentState.items!==this._prevState.items,t=this._isSelectElement,i=this._currentState.items!==this._prevState.items;e&&(t&&this._renderChoices(),i&&this._renderItems(),this._prevState=this._currentState)}}},{key:"_renderChoices",value:function(){var e=this,t=this._store,i=t.activeGroups,n=t.activeChoices,o=document.createDocumentFragment();if(this.choiceList.clear(),this.config.resetScrollPosition&&requestAnimationFrame(function(){return e.choiceList.scrollToTop()}),i.length>=1&&!this._isSearching){var r=n.filter(function(e){return!0===e.placeholder&&-1===e.groupId});r.length>=1&&(o=this._createChoicesFragment(r,o)),o=this._createGroupsFragment(i,n,o)}else n.length>=1&&(o=this._createChoicesFragment(n,o));if(o.childNodes&&o.childNodes.length>0){var s=this._store.activeItems,a=this._canAddItem(s,this.input.value);a.response?(this.choiceList.append(o),this._highlightChoice()):this.choiceList.append(this._getTemplate("notice",a.notice))}else{var c,l;this._isSearching?(l=(0,p.isType)("Function",this.config.noResultsText)?this.config.noResultsText():this.config.noResultsText,c=this._getTemplate("notice",l,"no-results")):(l=(0,p.isType)("Function",this.config.noChoicesText)?this.config.noChoicesText():this.config.noChoicesText,c=this._getTemplate("notice",l,"no-choices")),this.choiceList.append(c)}}},{key:"_renderItems",value:function(){var e=this._store.activeItems||[];this.itemList.clear();var t=this._createItemsFragment(e);t.childNodes&&this.itemList.append(t)}},{key:"_createGroupsFragment",value:function(e,t,i){var n=this,o=i||document.createDocumentFragment();return this.config.shouldSort&&e.sort(this.config.sortFn),e.forEach(function(e){var i=function(e){return t.filter(function(t){return n._isSelectOneElement?t.groupId===e.id:t.groupId===e.id&&("always"===n.config.renderSelectedChoices||!t.selected)})}(e);if(i.length>=1){var r=n._getTemplate("choiceGroup",e);o.appendChild(r),n._createChoicesFragment(i,o,!0)}}),o}},{key:"_createChoicesFragment",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2],o=t||document.createDocumentFragment(),r=this.config,s=r.renderSelectedChoices,a=r.searchResultLimit,c=r.renderChoiceLimit,l=this._isSearching?p.sortByScore:this.config.sortFn,u=function(e){if("auto"!==s||(i._isSelectOneElement||!e.selected)){var t=i._getTemplate("choice",e,i.config.itemSelectText);o.appendChild(t)}},h=e;"auto"!==s||this._isSelectOneElement||(h=e.filter(function(e){return!e.selected}));var d=h.reduce(function(e,t){return t.placeholder?e.placeholderChoices.push(t):e.normalChoices.push(t),e},{placeholderChoices:[],normalChoices:[]}),f=d.placeholderChoices,v=d.normalChoices;(this.config.shouldSort||this._isSearching)&&v.sort(l);var m=h.length,g=[].concat(f,v);this._isSearching?m=a:c>0&&!n&&(m=c);for(var _=0;_<m;_+=1)g[_]&&u(g[_]);return o}},{key:"_createItemsFragment",value:function(e){var t=this,i=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.config,o=n.shouldSortItems,r=n.sortFn,s=n.removeItemButton,a=i||document.createDocumentFragment();o&&!this._isSelectOneElement&&e.sort(r),this._isTextElement?this.passedElement.value=e:this.passedElement.options=e;return e.forEach(function(e){return function(e){var i=t._getTemplate("item",e,s);a.appendChild(i)}(e)}),a}},{key:"_triggerChange",value:function(e){null!=e&&this.passedElement.triggerEvent(a.EVENTS.change,{value:e})}},{key:"_selectPlaceholderChoice",value:function(){var e=this._store.placeholderChoice;e&&(this._addItem({value:e.value,label:e.label,choiceId:e.id,groupId:e.groupId,placeholder:e.placeholder}),this._triggerChange(e.value))}},{key:"_handleButtonAction",value:function(e,t){if(e&&t&&this.config.removeItems&&this.config.removeItemButton){var i=t.parentNode.getAttribute("data-id"),n=e.find(function(e){return e.id===parseInt(i,10)});this._removeItem(n),this._triggerChange(n.value),this._isSelectOneElement&&this._selectPlaceholderChoice()}}},{key:"_handleItemAction",value:function(e,t){var i=this,n=arguments.length>2&&void 0!==arguments[2]&&arguments[2];if(e&&t&&this.config.removeItems&&!this._isSelectOneElement){var o=t.getAttribute("data-id");e.forEach(function(e){e.id!==parseInt(o,10)||e.highlighted?!n&&e.highlighted&&i.unhighlightItem(e):i.highlightItem(e)}),this.input.focus()}}},{key:"_handleChoiceAction",value:function(e,t){if(e&&t){var i=t.getAttribute("data-id"),n=this._store.getChoiceById(i),o=e[0]&&e[0].keyCode?e[0].keyCode:null,r=this.dropdown.isActive;if(n.keyCode=o,this.passedElement.triggerEvent(a.EVENTS.choice,{choice:n}),n&&!n.selected&&!n.disabled)this._canAddItem(e,n.value).response&&(this._addItem({value:n.value,label:n.label,choiceId:n.id,groupId:n.groupId,customProperties:n.customProperties,placeholder:n.placeholder,keyCode:n.keyCode}),this._triggerChange(n.value));this.clearInput(),r&&this._isSelectOneElement&&(this.hideDropdown(!0),this.containerOuter.focus())}}},{key:"_handleBackspace",value:function(e){if(this.config.removeItems&&e){var t=e[e.length-1],i=e.some(function(e){return e.highlighted});this.config.editItems&&!i&&t?(this.input.value=t.value,this.input.setWidth(),this._removeItem(t),this._triggerChange(t.value)):(i||this.highlightItem(t,!1),this.removeHighlightedItems(!0))}}},{key:"_setLoading",value:function(e){this._store.dispatch((0,f.setIsLoading)(e))}},{key:"_handleLoadingState",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0],t=this.itemList.getChild(".".concat(this.config.classNames.placeholder));e?(this.disable(),this.containerOuter.addLoadingState(),this._isSelectOneElement?t?t.innerHTML=this.config.loadingText:(t=this._getTemplate("placeholder",this.config.loadingText),this.itemList.append(t)):this.input.placeholder=this.config.loadingText):(this.enable(),this.containerOuter.removeLoadingState(),this._isSelectOneElement?t.innerHTML=this._placeholderValue||"":this.input.placeholder=this._placeholderValue||"")}},{key:"_handleSearch",value:function(e){if(e&&this.input.isFocussed){var t=this._store.choices,i=this.config,n=i.searchFloor,o=i.searchChoices,r=t.some(function(e){return!e.active});if(e&&e.length>=n){var s=o?this._searchChoices(e):0;this.passedElement.triggerEvent(a.EVENTS.search,{value:e,resultCount:s})}else r&&(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0)))}}},{key:"_canAddItem",value:function(e,t){var i=!0,n=(0,p.isType)("Function",this.config.addItemText)?this.config.addItemText(t):this.config.addItemText;if(!this._isSelectOneElement){var o=(0,p.existsInArray)(e,t);this.config.maxItemCount>0&&this.config.maxItemCount<=e.length&&(i=!1,n=(0,p.isType)("Function",this.config.maxItemText)?this.config.maxItemText(this.config.maxItemCount):this.config.maxItemText),!this.config.duplicateItemsAllowed&&o&&i&&(i=!1,n=(0,p.isType)("Function",this.config.uniqueItemText)?this.config.uniqueItemText(t):this.config.uniqueItemText),this._isTextElement&&this.config.addItems&&i&&(0,p.isType)("Function",this.config.addItemFilterFn)&&!this.config.addItemFilterFn(t)&&(i=!1,n=(0,p.isType)("Function",this.config.customAddItemText)?this.config.customAddItemText(t):this.config.customAddItemText)}return{response:i,notice:n}}},{key:"_ajaxCallback",value:function(){var e=this;return function(t,i,n){if(t&&i){var o=(0,p.isType)("Object",t)?[t]:t;o&&(0,p.isType)("Array",o)&&o.length?(e._handleLoadingState(!1),e._setLoading(!0),o.forEach(function(t){t.choices?e._addGroup({group:t,id:t.id||null,valueKey:i,labelKey:n}):e._addChoice({value:(0,p.fetchFromObject)(t,i),label:(0,p.fetchFromObject)(t,n),isSelected:t.selected,isDisabled:t.disabled,customProperties:t.customProperties,placeholder:t.placeholder})}),e._setLoading(!1),e._isSelectOneElement&&e._selectPlaceholderChoice()):e._handleLoadingState(!1)}}}},{key:"_searchChoices",value:function(e){var t=(0,p.isType)("String",e)?e.trim():e,i=(0,p.isType)("String",this._currentValue)?this._currentValue.trim():this._currentValue;if(t.length<1&&t==="".concat(i," "))return 0;var o=this._store.searchableChoices,r=t,s=[].concat(this.config.searchFields),a=Object.assign(this.config.fuseOptions,{keys:s}),c=new n.default(o,a).search(r);return this._currentValue=t,this._highlightPosition=0,this._isSearching=!0,this._store.dispatch((0,l.filterChoices)(c)),c.length}},{key:"_addEventListeners",value:function(){document.addEventListener("keyup",this._onKeyUp),document.addEventListener("keydown",this._onKeyDown),document.addEventListener("click",this._onClick),document.addEventListener("touchmove",this._onTouchMove),document.addEventListener("touchend",this._onTouchEnd),document.addEventListener("mousedown",this._onMouseDown),document.addEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.addEventListener("focus",this._onFocus),this.containerOuter.element.addEventListener("blur",this._onBlur)),this.input.element.addEventListener("focus",this._onFocus),this.input.element.addEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.addEventListener("reset",this._onFormReset),this.input.addEventListeners()}},{key:"_removeEventListeners",value:function(){document.removeEventListener("keyup",this._onKeyUp),document.removeEventListener("keydown",this._onKeyDown),document.removeEventListener("click",this._onClick),document.removeEventListener("touchmove",this._onTouchMove),document.removeEventListener("touchend",this._onTouchEnd),document.removeEventListener("mousedown",this._onMouseDown),document.removeEventListener("mouseover",this._onMouseOver),this._isSelectOneElement&&(this.containerOuter.element.removeEventListener("focus",this._onFocus),this.containerOuter.element.removeEventListener("blur",this._onBlur)),this.input.element.removeEventListener("focus",this._onFocus),this.input.element.removeEventListener("blur",this._onBlur),this.input.element.form&&this.input.element.form.removeEventListener("reset",this._onFormReset),this.input.removeEventListeners()}},{key:"_onKeyDown",value:function(e){var t,i=e.target,n=e.keyCode,o=e.ctrlKey,r=e.metaKey;if(i===this.input.element||this.containerOuter.element.contains(i)){var s=this._store.activeItems,c=this.input.isFocussed,l=this.dropdown.isActive,u=this.itemList.hasChildren,h=String.fromCharCode(n),d=a.KEY_CODES.BACK_KEY,f=a.KEY_CODES.DELETE_KEY,p=a.KEY_CODES.ENTER_KEY,v=a.KEY_CODES.A_KEY,g=a.KEY_CODES.ESC_KEY,_=a.KEY_CODES.UP_KEY,y=a.KEY_CODES.DOWN_KEY,b=a.KEY_CODES.PAGE_UP_KEY,E=a.KEY_CODES.PAGE_DOWN_KEY,S=o||r;!this._isTextElement&&/[a-zA-Z0-9-_ ]/.test(h)&&this.showDropdown();var I=(m(t={},v,this._onAKey),m(t,p,this._onEnterKey),m(t,g,this._onEscapeKey),m(t,_,this._onDirectionKey),m(t,b,this._onDirectionKey),m(t,y,this._onDirectionKey),m(t,E,this._onDirectionKey),m(t,f,this._onDeleteKey),m(t,d,this._onDeleteKey),t);I[n]&&I[n]({event:e,target:i,keyCode:n,metaKey:r,activeItems:s,hasFocusedInput:c,hasActiveDropdown:l,hasItems:u,hasCtrlDownKeyPressed:S})}}},{key:"_onKeyUp",value:function(e){var t=e.target,i=e.keyCode;if(t===this.input.element){var n=this.input.value,o=this._store.activeItems,r=this._canAddItem(o,n),s=a.KEY_CODES.BACK_KEY,c=a.KEY_CODES.DELETE_KEY;if(this._isTextElement){if(r.notice&&n){var u=this._getTemplate("notice",r.notice);this.dropdown.element.innerHTML=u.outerHTML,this.showDropdown(!0)}else this.hideDropdown(!0)}else{var h=(i===s||i===c)&&!t.value,d=!this._isTextElement&&this._isSearching,f=this._canSearch&&r.response;h&&d?(this._isSearching=!1,this._store.dispatch((0,l.activateChoices)(!0))):f&&this._handleSearch(this.input.value)}this._canSearch=this.config.searchEnabled}}},{key:"_onAKey",value:function(e){var t=e.hasItems;e.hasCtrlDownKeyPressed&&t&&(this._canSearch=!1,this.config.removeItems&&!this.input.value&&this.input.element===document.activeElement&&this.highlightAll())}},{key:"_onEnterKey",value:function(e){var t=e.event,i=e.target,n=e.activeItems,o=e.hasActiveDropdown,r=a.KEY_CODES.ENTER_KEY,s=i.hasAttribute("data-button");if(this._isTextElement&&i.value){var c=this.input.value;this._canAddItem(n,c).response&&(this.hideDropdown(!0),this._addItem({value:c}),this._triggerChange(c),this.clearInput())}if(s&&(this._handleButtonAction(n,i),t.preventDefault()),o){var l=this.dropdown.getChild(".".concat(this.config.classNames.highlightedState));l&&(n[0]&&(n[0].keyCode=r),this._handleChoiceAction(n,l)),t.preventDefault()}else this._isSelectOneElement&&(this.showDropdown(),t.preventDefault())}},{key:"_onEscapeKey",value:function(e){e.hasActiveDropdown&&(this.hideDropdown(!0),this.containerOuter.focus())}},{key:"_onDirectionKey",value:function(e){var t=e.event,i=e.hasActiveDropdown,n=e.keyCode,o=e.metaKey,r=a.KEY_CODES.DOWN_KEY,s=a.KEY_CODES.PAGE_UP_KEY,c=a.KEY_CODES.PAGE_DOWN_KEY;if(i||this._isSelectOneElement){this.showDropdown(),this._canSearch=!1;var l,u=n===r||n===c?1:-1;if(o||n===c||n===s)l=u>0?Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]")).pop():this.dropdown.element.querySelector("[data-choice-selectable]");else{var h=this.dropdown.element.querySelector(".".concat(this.config.classNames.highlightedState));l=h?(0,p.getAdjacentEl)(h,"[data-choice-selectable]",u):this.dropdown.element.querySelector("[data-choice-selectable]")}l&&((0,p.isScrolledIntoView)(l,this.choiceList.element,u)||this.choiceList.scrollToChoice(l,u),this._highlightChoice(l)),t.preventDefault()}}},{key:"_onDeleteKey",value:function(e){var t=e.event,i=e.target,n=e.hasFocusedInput,o=e.activeItems;!n||i.value||this._isSelectOneElement||(this._handleBackspace(o),t.preventDefault())}},{key:"_onTouchMove",value:function(){this._wasTap&&(this._wasTap=!1)}},{key:"_onTouchEnd",value:function(e){var t=(e||e.touches[0]).target;this._wasTap&&this.containerOuter.element.contains(t)&&((t===this.containerOuter.element||t===this.containerInner.element)&&(this._isTextElement?this.input.focus():this._isSelectMultipleElement&&this.showDropdown()),e.stopPropagation());this._wasTap=!0}},{key:"_onMouseDown",value:function(e){var t=e.target,i=e.shiftKey;if(this.choiceList.element.contains(t)&&(0,p.isIE11)()&&(this._isScrollingOnIe=!0),this.containerOuter.element.contains(t)&&t!==this.input.element){var n=this._store.activeItems,o=i,r=(0,p.findAncestorByAttrName)(t,"data-button"),s=(0,p.findAncestorByAttrName)(t,"data-item"),a=(0,p.findAncestorByAttrName)(t,"data-choice");r?this._handleButtonAction(n,r):s?this._handleItemAction(n,s,o):a&&this._handleChoiceAction(n,a),e.preventDefault()}}},{key:"_onMouseOver",value:function(e){var t=e.target;(t===this.dropdown||this.dropdown.element.contains(t))&&t.hasAttribute("data-choice")&&this._highlightChoice(t)}},{key:"_onClick",value:function(e){var t=e.target;this.containerOuter.element.contains(t)?this.dropdown.isActive||this.containerOuter.isDisabled?this._isSelectOneElement&&t!==this.input.element&&!this.dropdown.element.contains(t)&&this.hideDropdown():this._isTextElement?document.activeElement!==this.input.element&&this.input.focus():(this.showDropdown(),this.containerOuter.focus()):(this._store.highlightedActiveItems&&this.unhighlightAll(),this.containerOuter.removeFocusState(),this.hideDropdown(!0))}},{key:"_onFocus",value:function(e){var t=this,i=e.target;this.containerOuter.element.contains(i)&&{text:function(){i===t.input.element&&t.containerOuter.addFocusState()},"select-one":function(){t.containerOuter.addFocusState(),i===t.input.element&&t.showDropdown(!0)},"select-multiple":function(){i===t.input.element&&(t.showDropdown(!0),t.containerOuter.addFocusState())}}[this.passedElement.element.type]()}},{key:"_onBlur",value:function(e){var t=this,i=e.target;if(this.containerOuter.element.contains(i)&&!this._isScrollingOnIe){var n=this._store.activeItems.some(function(e){return e.highlighted});({text:function(){i===t.input.element&&(t.containerOuter.removeFocusState(),n&&t.unhighlightAll(),t.hideDropdown(!0))},"select-one":function(){t.containerOuter.removeFocusState(),(i===t.input.element||i===t.containerOuter.element&&!t._canSearch)&&t.hideDropdown(!0)},"select-multiple":function(){i===t.input.element&&(t.containerOuter.removeFocusState(),t.hideDropdown(!0),n&&t.unhighlightAll())}})[this.passedElement.element.type]()}else this._isScrollingOnIe=!1,this.input.element.focus()}},{key:"_onFormReset",value:function(){this._store.dispatch((0,d.resetTo)(this._initialState))}},{key:"_highlightChoice",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,i=Array.from(this.dropdown.element.querySelectorAll("[data-choice-selectable]"));if(i.length){var n=t;Array.from(this.dropdown.element.querySelectorAll(".".concat(this.config.classNames.highlightedState))).forEach(function(t){t.classList.remove(e.config.classNames.highlightedState),t.setAttribute("aria-selected","false")}),n?this._highlightPosition=i.indexOf(n):(n=i.length>this._highlightPosition?i[this._highlightPosition]:i[i.length-1])||(n=i[0]),n.classList.add(this.config.classNames.highlightedState),n.setAttribute("aria-selected","true"),this.passedElement.triggerEvent(a.EVENTS.highlightChoice,{el:n}),this.dropdown.isActive&&(this.input.setActiveDescendant(n.id),this.containerOuter.setActiveDescendant(n.id))}}},{key:"_addItem",value:function(e){var t=e.value,i=e.label,n=void 0===i?null:i,o=e.choiceId,r=void 0===o?-1:o,s=e.groupId,c=void 0===s?-1:s,l=e.customProperties,h=void 0===l?null:l,d=e.placeholder,f=void 0!==d&&d,v=e.keyCode,m=void 0===v?null:v,g=(0,p.isType)("String",t)?t.trim():t,_=m,y=h,b=this._store.items,E=n||g,S=parseInt(r,10)||-1,I=c>=0?this._store.getGroupById(c):null,O=b?b.length+1:1;return this.config.prependValue&&(g=this.config.prependValue+g.toString()),this.config.appendValue&&(g+=this.config.appendValue.toString()),this._store.dispatch((0,u.addItem)({value:g,label:E,id:O,choiceId:S,groupId:c,customProperties:h,placeholder:f,keyCode:_})),this._isSelectOneElement&&this.removeActiveItems(O),this.passedElement.triggerEvent(a.EVENTS.addItem,{id:O,value:g,label:E,customProperties:y,groupValue:I&&I.value?I.value:void 0,keyCode:_}),this}},{key:"_removeItem",value:function(e){if(!e||!(0,p.isType)("Object",e))return this;var t=e.id,i=e.value,n=e.label,o=e.choiceId,r=e.groupId,s=r>=0?this._store.getGroupById(r):null;return this._store.dispatch((0,u.removeItem)(t,o)),s&&s.value?this.passedElement.triggerEvent(a.EVENTS.removeItem,{id:t,value:i,label:n,groupValue:s.value}):this.passedElement.triggerEvent(a.EVENTS.removeItem,{id:t,value:i,label:n}),this}},{key:"_addChoice",value:function(e){var t=e.value,i=e.label,n=void 0===i?null:i,o=e.isSelected,r=void 0!==o&&o,s=e.isDisabled,a=void 0!==s&&s,c=e.groupId,u=void 0===c?-1:c,h=e.customProperties,d=void 0===h?null:h,f=e.placeholder,p=void 0!==f&&f,v=e.keyCode,m=void 0===v?null:v;if(null!=t){var g=this._store.choices,_=n||t,y=g?g.length+1:1,b="".concat(this._baseId,"-").concat(this._idNames.itemChoice,"-").concat(y);this._store.dispatch((0,l.addChoice)({value:t,label:_,id:y,groupId:u,disabled:a,elementId:b,customProperties:d,placeholder:p,keyCode:m})),r&&this._addItem({value:t,label:_,choiceId:y,customProperties:d,placeholder:p,keyCode:m})}}},{key:"_addGroup",value:function(e){var t=this,i=e.group,n=e.id,o=e.valueKey,r=void 0===o?"value":o,s=e.labelKey,a=void 0===s?"label":s,c=(0,p.isType)("Object",i)?i.choices:Array.from(i.getElementsByTagName("OPTION")),l=n||Math.floor((new Date).valueOf()*Math.random()),u=!!i.disabled&&i.disabled;if(c){this._store.dispatch((0,h.addGroup)(i.label,l,!0,u));c.forEach(function(e){var i=e.disabled||e.parentNode&&e.parentNode.disabled;t._addChoice({value:e[r],label:(0,p.isType)("Object",e)?e[a]:e.innerHTML,isSelected:e.selected,isDisabled:i,groupId:l,customProperties:e.customProperties,placeholder:e.placeholder})})}else this._store.dispatch((0,h.addGroup)(i.label,i.id,!1,i.disabled))}},{key:"_getTemplate",value:function(e){var t;if(!e)return null;for(var i=this.config,n=i.templates,o=i.classNames,r=arguments.length,s=new Array(r>1?r-1:0),a=1;a<r;a++)s[a-1]=arguments[a];return(t=n[e]).call.apply(t,[this,o].concat(s))}},{key:"_createTemplates",value:function(){var e=this.config.callbackOnCreateTemplates,t={};e&&(0,p.isType)("Function",e)&&(t=e.call(this,p.strToEl)),this.config.templates=(0,o.default)(c.TEMPLATES,t)}},{key:"_createElements",value:function(){this.containerOuter=new s.Container({element:this._getTemplate("containerOuter",this._direction,this._isSelectElement,this._isSelectOneElement,this.config.searchEnabled,this.passedElement.element.type),classNames:this.config.classNames,type:this.passedElement.element.type,position:this.config.position}),this.containerInner=new s.Container({element:this._getTemplate("containerInner"),classNames:this.config.classNames,type:this.passedElement.element.type,position:this.config.position}),this.input=new s.Input({element:this._getTemplate("input"),classNames:this.config.classNames,type:this.passedElement.element.type}),this.choiceList=new s.List({element:this._getTemplate("choiceList",this._isSelectOneElement)}),this.itemList=new s.List({element:this._getTemplate("itemList",this._isSelectOneElement)}),this.dropdown=new s.Dropdown({element:this._getTemplate("dropdown"),classNames:this.config.classNames,type:this.passedElement.element.type})}},{key:"_createStructure",value:function(){this.passedElement.conceal(),this.containerInner.wrap(this.passedElement.element),this.containerOuter.wrap(this.containerInner.element),this._isSelectOneElement?this.input.placeholder=this.config.searchPlaceholderValue||"":this._placeholderValue&&(this.input.placeholder=this._placeholderValue,this.input.setWidth(!0)),this.containerOuter.element.appendChild(this.containerInner.element),this.containerOuter.element.appendChild(this.dropdown.element),this.containerInner.element.appendChild(this.itemList.element),this._isTextElement||this.dropdown.element.appendChild(this.choiceList.element),this._isSelectOneElement?this.config.searchEnabled&&this.dropdown.element.insertBefore(this.input.element,this.dropdown.element.firstChild):this.containerInner.element.appendChild(this.input.element),this._isSelectElement?this._addPredefinedChoices():this._isTextElement&&this._addPredefinedItems()}},{key:"_addPredefinedChoices",value:function(){var e=this,t=this.passedElement.optionGroups;if(this._highlightPosition=0,this._isSearching=!1,this._setLoading(!0),t&&t.length){var i=this.passedElement.placeholderOption;i&&"SELECT"===i.parentNode.tagName&&this._addChoice({value:i.value,label:i.innerHTML,isSelected:i.selected,isDisabled:i.disabled,placeholder:!0}),t.forEach(function(t){return e._addGroup({group:t,id:t.id||null})})}else{var n=this.passedElement.options,o=this.config.sortFn,r=this._presetChoices;n.forEach(function(e){r.push({value:e.value,label:e.innerHTML,selected:e.selected,disabled:e.disabled||e.parentNode.disabled,placeholder:e.hasAttribute("placeholder"),customProperties:e.getAttribute("data-custom-properties")})}),this.config.shouldSort&&r.sort(o);var s=r.some(function(e){return e.selected});r.forEach(function(t,i){return function(t,i){var n=t.value,o=t.label,r=t.customProperties,a=t.placeholder;if(e._isSelectElement)if(t.choices)e._addGroup({group:t,id:t.id||null});else{var c=e._isSelectOneElement&&!s&&0===i,l=!!c||t.selected,u=!c&&t.disabled;e._addChoice({value:n,label:o,isSelected:l,isDisabled:u,customProperties:r,placeholder:a})}else e._addChoice({value:n,label:o,isSelected:t.selected,isDisabled:t.disabled,customProperties:r,placeholder:a})}(t,i)})}this._setLoading(!1)}},{key:"_addPredefinedItems",value:function(){var e=this;this._presetItems.forEach(function(t){return function(t){var i=(0,p.getType)(t);"Object"===i&&t.value?e._addItem({value:t.value,label:t.label,choiceId:t.id,customProperties:t.customProperties,placeholder:t.placeholder}):"String"===i&&e._addItem({value:t})}(t)})}},{key:"_setChoiceOrItem",value:function(e){var t=this;({object:function(){e.value&&(t._isTextElement?t._addItem({value:e.value,label:e.label,choiceId:e.id,customProperties:e.customProperties,placeholder:e.placeholder}):t._addChoice({value:e.value,label:e.label,isSelected:!0,isDisabled:!1,customProperties:e.customProperties,placeholder:e.placeholder}))},string:function(){t._isTextElement?t._addItem({value:e}):t._addChoice({value:e,label:e,isSelected:!0,isDisabled:!1})}})[(0,p.getType)(e).toLowerCase()]()}},{key:"_findAndSelectChoiceByValue",value:function(e){var t=this,i=this._store.choices.find(function(i){return t.config.itemComparer(i.value,e)});i&&!i.selected&&this._addItem({value:i.value,label:i.label,choiceId:i.id,groupId:i.groupId,customProperties:i.customProperties,placeholder:i.placeholder,keyCode:i.keyCode})}},{key:"_generateInstances",value:function(t,i){return t.reduce(function(t,n){return t.push(new e(n,i)),t},[this])}},{key:"_generatePlaceholderValue",value:function(){return!this._isSelectOneElement&&(!!this.config.placeholder&&(this.config.placeholderValue||this.passedElement.element.getAttribute("placeholder")))}}])&&g(t.prototype,i),v&&g(t,v),e}();_.userDefaults={},e.exports=_},function(e,t,i){
+/*!
+ * Fuse.js v3.4.2 - Lightweight fuzzy-search (http://fusejs.io)
+ *
+ * Copyright (c) 2012-2017 Kirollos Risk (http://kiro.me)
+ * All Rights Reserved. Apache Software License 2.0
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ */
+var n;n=function(){return function(e){var t={};function i(n){if(t[n])return t[n].exports;var o=t[n]={i:n,l:!1,exports:{}};return e[n].call(o.exports,o,o.exports,i),o.l=!0,o.exports}return i.m=e,i.c=t,i.d=function(e,t,n){i.o(e,t)||Object.defineProperty(e,t,{enumerable:!0,get:n})},i.r=function(e){"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},i.t=function(e,t){if(1&t&&(e=i(e)),8&t)return e;if(4&t&&"object"==typeof e&&e&&e.__esModule)return e;var n=Object.create(null);if(i.r(n),Object.defineProperty(n,"default",{enumerable:!0,value:e}),2&t&&"string"!=typeof e)for(var o in e)i.d(n,o,function(t){return e[t]}.bind(null,o));return n},i.n=function(e){var t=e&&e.__esModule?function(){return e.default}:function(){return e};return i.d(t,"a",t),t},i.o=function(e,t){return Object.prototype.hasOwnProperty.call(e,t)},i.p="",i(i.s="./src/index.js")}({"./src/bitap/bitap_matched_indices.js":
+/*!********************************************!*\
+ !*** ./src/bitap/bitap_matched_indices.js ***!
+ \********************************************/
+/*! no static exports found */function(e,t){e.exports=function(){for(var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:1,i=[],n=-1,o=-1,r=0,s=e.length;r<s;r+=1){var a=e[r];a&&-1===n?n=r:a||-1===n||((o=r-1)-n+1>=t&&i.push([n,o]),n=-1)}return e[r-1]&&r-n>=t&&i.push([n,r-1]),i}},"./src/bitap/bitap_pattern_alphabet.js":
+/*!*********************************************!*\
+ !*** ./src/bitap/bitap_pattern_alphabet.js ***!
+ \*********************************************/
+/*! no static exports found */function(e,t){e.exports=function(e){for(var t={},i=e.length,n=0;n<i;n+=1)t[e.charAt(n)]=0;for(var o=0;o<i;o+=1)t[e.charAt(o)]|=1<<i-o-1;return t}},"./src/bitap/bitap_regex_search.js":
+/*!*****************************************!*\
+ !*** ./src/bitap/bitap_regex_search.js ***!
+ \*****************************************/
+/*! no static exports found */function(e,t){var i=/[\-\[\]\/\{\}\(\)\*\+\?\.\\\^\$\|]/g;e.exports=function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:/ +/g,o=new RegExp(t.replace(i,"\\$&").replace(n,"|")),r=e.match(o),s=!!r,a=[];if(s)for(var c=0,l=r.length;c<l;c+=1){var u=r[c];a.push([e.indexOf(u),u.length-1])}return{score:s?.5:1,isMatch:s,matchedIndices:a}}},"./src/bitap/bitap_score.js":
+/*!**********************************!*\
+ !*** ./src/bitap/bitap_score.js ***!
+ \**********************************/
+/*! no static exports found */function(e,t){e.exports=function(e,t){var i=t.errors,n=void 0===i?0:i,o=t.currentLocation,r=void 0===o?0:o,s=t.expectedLocation,a=void 0===s?0:s,c=t.distance,l=void 0===c?100:c,u=n/e.length,h=Math.abs(a-r);return l?u+h/l:h?1:u}},"./src/bitap/bitap_search.js":
+/*!***********************************!*\
+ !*** ./src/bitap/bitap_search.js ***!
+ \***********************************/
+/*! no static exports found */function(e,t,i){var n=i(/*! ./bitap_score */"./src/bitap/bitap_score.js"),o=i(/*! ./bitap_matched_indices */"./src/bitap/bitap_matched_indices.js");e.exports=function(e,t,i,r){for(var s=r.location,a=void 0===s?0:s,c=r.distance,l=void 0===c?100:c,u=r.threshold,h=void 0===u?.6:u,d=r.findAllMatches,f=void 0!==d&&d,p=r.minMatchCharLength,v=void 0===p?1:p,m=a,g=e.length,_=h,y=e.indexOf(t,m),b=t.length,E=[],S=0;S<g;S+=1)E[S]=0;if(-1!==y){var I=n(t,{errors:0,currentLocation:y,expectedLocation:m,distance:l});if(_=Math.min(I,_),-1!==(y=e.lastIndexOf(t,m+b))){var O=n(t,{errors:0,currentLocation:y,expectedLocation:m,distance:l});_=Math.min(O,_)}}y=-1;for(var C=[],T=1,w=b+g,k=1<<b-1,A=0;A<b;A+=1){for(var L=0,x=w;L<x;){n(t,{errors:A,currentLocation:m+x,expectedLocation:m,distance:l})<=_?L=x:w=x,x=Math.floor((w-L)/2+L)}w=x;var P=Math.max(1,m-x+1),D=f?g:Math.min(m+x,g)+b,j=Array(D+2);j[D+1]=(1<<A)-1;for(var M=D;M>=P;M-=1){var N=M-1,F=i[e.charAt(N)];if(F&&(E[N]=1),j[M]=(j[M+1]<<1|1)&F,0!==A&&(j[M]|=(C[M+1]|C[M])<<1|1|C[M+1]),j[M]&k&&(T=n(t,{errors:A,currentLocation:N,expectedLocation:m,distance:l}))<=_){if(_=T,(y=N)<=m)break;P=Math.max(1,2*m-y)}}if(n(t,{errors:A+1,currentLocation:m,expectedLocation:m,distance:l})>_)break;C=j}return{isMatch:y>=0,score:0===T?.001:T,matchedIndices:o(E,v)}}},"./src/bitap/index.js":
+/*!****************************!*\
+ !*** ./src/bitap/index.js ***!
+ \****************************/
+/*! no static exports found */function(e,t,i){function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var o=i(/*! ./bitap_regex_search */"./src/bitap/bitap_regex_search.js"),r=i(/*! ./bitap_search */"./src/bitap/bitap_search.js"),s=i(/*! ./bitap_pattern_alphabet */"./src/bitap/bitap_pattern_alphabet.js"),a=function(){function e(t,i){var n=i.location,o=void 0===n?0:n,r=i.distance,a=void 0===r?100:r,c=i.threshold,l=void 0===c?.6:c,u=i.maxPatternLength,h=void 0===u?32:u,d=i.isCaseSensitive,f=void 0!==d&&d,p=i.tokenSeparator,v=void 0===p?/ +/g:p,m=i.findAllMatches,g=void 0!==m&&m,_=i.minMatchCharLength,y=void 0===_?1:_;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:a,threshold:l,maxPatternLength:h,isCaseSensitive:f,tokenSeparator:v,findAllMatches:g,minMatchCharLength:y},this.pattern=this.options.isCaseSensitive?t:t.toLowerCase(),this.pattern.length<=h&&(this.patternAlphabet=s(this.pattern))}var t,i,a;return t=e,(i=[{key:"search",value:function(e){if(this.options.isCaseSensitive||(e=e.toLowerCase()),this.pattern===e)return{isMatch:!0,score:0,matchedIndices:[[0,e.length-1]]};var t=this.options,i=t.maxPatternLength,n=t.tokenSeparator;if(this.pattern.length>i)return o(e,this.pattern,n);var s=this.options,a=s.location,c=s.distance,l=s.threshold,u=s.findAllMatches,h=s.minMatchCharLength;return r(e,this.pattern,this.patternAlphabet,{location:a,distance:c,threshold:l,findAllMatches:u,minMatchCharLength:h})}}])&&n(t.prototype,i),a&&n(t,a),e}();e.exports=a},"./src/helpers/deep_value.js":
+/*!***********************************!*\
+ !*** ./src/helpers/deep_value.js ***!
+ \***********************************/
+/*! no static exports found */function(e,t,i){var n=i(/*! ./is_array */"./src/helpers/is_array.js");e.exports=function(e,t){return function e(t,i,o){if(i){var r=i.indexOf("."),s=i,a=null;-1!==r&&(s=i.slice(0,r),a=i.slice(r+1));var c=t[s];if(null!=c)if(a||"string"!=typeof c&&"number"!=typeof c)if(n(c))for(var l=0,u=c.length;l<u;l+=1)e(c[l],a,o);else a&&e(c,a,o);else o.push(c.toString())}else o.push(t);return o}(e,t,[])}},"./src/helpers/is_array.js":
+/*!*********************************!*\
+ !*** ./src/helpers/is_array.js ***!
+ \*********************************/
+/*! no static exports found */function(e,t){e.exports=function(e){return Array.isArray?Array.isArray(e):"[object Array]"===Object.prototype.toString.call(e)}},"./src/index.js":
+/*!**********************!*\
+ !*** ./src/index.js ***!
+ \**********************/
+/*! no static exports found */function(e,t,i){function n(e){return(n="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=i(/*! ./bitap */"./src/bitap/index.js"),s=i(/*! ./helpers/deep_value */"./src/helpers/deep_value.js"),a=i(/*! ./helpers/is_array */"./src/helpers/is_array.js"),c=function(){function e(t,i){var n=i.location,o=void 0===n?0:n,r=i.distance,a=void 0===r?100:r,c=i.threshold,l=void 0===c?.6:c,u=i.maxPatternLength,h=void 0===u?32:u,d=i.caseSensitive,f=void 0!==d&&d,p=i.tokenSeparator,v=void 0===p?/ +/g:p,m=i.findAllMatches,g=void 0!==m&&m,_=i.minMatchCharLength,y=void 0===_?1:_,b=i.id,E=void 0===b?null:b,S=i.keys,I=void 0===S?[]:S,O=i.shouldSort,C=void 0===O||O,T=i.getFn,w=void 0===T?s:T,k=i.sortFn,A=void 0===k?function(e,t){return e.score-t.score}:k,L=i.tokenize,x=void 0!==L&&L,P=i.matchAllTokens,D=void 0!==P&&P,j=i.includeMatches,M=void 0!==j&&j,N=i.includeScore,F=void 0!==N&&N,K=i.verbose,R=void 0!==K&&K;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this.options={location:o,distance:a,threshold:l,maxPatternLength:h,isCaseSensitive:f,tokenSeparator:v,findAllMatches:g,minMatchCharLength:y,id:E,keys:I,includeMatches:M,includeScore:F,shouldSort:C,getFn:w,sortFn:A,verbose:R,tokenize:x,matchAllTokens:D},this.setCollection(t)}var t,i,c;return t=e,(i=[{key:"setCollection",value:function(e){return this.list=e,e}},{key:"search",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{limit:!1};this._log('---------\nSearch pattern: "'.concat(e,'"'));var i=this._prepareSearchers(e),n=i.tokenSearchers,o=i.fullSearcher,r=this._search(n,o),s=r.weights,a=r.results;return this._computeScore(s,a),this.options.shouldSort&&this._sort(a),t.limit&&"number"==typeof t.limit&&(a=a.slice(0,t.limit)),this._format(a)}},{key:"_prepareSearchers",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:"",t=[];if(this.options.tokenize)for(var i=e.split(this.options.tokenSeparator),n=0,o=i.length;n<o;n+=1)t.push(new r(i[n],this.options));return{tokenSearchers:t,fullSearcher:new r(e,this.options)}}},{key:"_search",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:[],t=arguments.length>1?arguments[1]:void 0,i=this.list,n={},o=[];if("string"==typeof i[0]){for(var r=0,s=i.length;r<s;r+=1)this._analyze({key:"",value:i[r],record:r,index:r},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t});return{weights:null,results:o}}for(var a={},c=0,l=i.length;c<l;c+=1)for(var u=i[c],h=0,d=this.options.keys.length;h<d;h+=1){var f=this.options.keys[h];if("string"!=typeof f){if(a[f.name]={weight:1-f.weight||1},f.weight<=0||f.weight>1)throw new Error("Key weight has to be > 0 and <= 1");f=f.name}else a[f]={weight:1};this._analyze({key:f,value:this.options.getFn(u,f),record:u,index:c},{resultMap:n,results:o,tokenSearchers:e,fullSearcher:t})}return{weights:a,results:o}}},{key:"_analyze",value:function(e,t){var i=e.key,n=e.arrayIndex,o=void 0===n?-1:n,r=e.value,s=e.record,c=e.index,l=t.tokenSearchers,u=void 0===l?[]:l,h=t.fullSearcher,d=void 0===h?[]:h,f=t.resultMap,p=void 0===f?{}:f,v=t.results,m=void 0===v?[]:v;if(null!=r){var g=!1,_=-1,y=0;if("string"==typeof r){this._log("\nKey: ".concat(""===i?"-":i));var b=d.search(r);if(this._log('Full text: "'.concat(r,'", score: ').concat(b.score)),this.options.tokenize){for(var E=r.split(this.options.tokenSeparator),S=[],I=0;I<u.length;I+=1){var O=u[I];this._log('\nPattern: "'.concat(O.pattern,'"'));for(var C=!1,T=0;T<E.length;T+=1){var w=E[T],k=O.search(w),A={};k.isMatch?(A[w]=k.score,g=!0,C=!0,S.push(k.score)):(A[w]=1,this.options.matchAllTokens||S.push(1)),this._log('Token: "'.concat(w,'", score: ').concat(A[w]))}C&&(y+=1)}_=S[0];for(var L=S.length,x=1;x<L;x+=1)_+=S[x];_/=L,this._log("Token score average:",_)}var P=b.score;_>-1&&(P=(P+_)/2),this._log("Score average:",P);var D=!this.options.tokenize||!this.options.matchAllTokens||y>=u.length;if(this._log("\nCheck Matches: ".concat(D)),(g||b.isMatch)&&D){var j=p[c];j?j.output.push({key:i,arrayIndex:o,value:r,score:P,matchedIndices:b.matchedIndices}):(p[c]={item:s,output:[{key:i,arrayIndex:o,value:r,score:P,matchedIndices:b.matchedIndices}]},m.push(p[c]))}}else if(a(r))for(var M=0,N=r.length;M<N;M+=1)this._analyze({key:i,arrayIndex:M,value:r[M],record:s,index:c},{resultMap:p,results:m,tokenSearchers:u,fullSearcher:d})}}},{key:"_computeScore",value:function(e,t){this._log("\n\nComputing score:\n");for(var i=0,n=t.length;i<n;i+=1){for(var o=t[i].output,r=o.length,s=1,a=1,c=0;c<r;c+=1){var l=e?e[o[c].key].weight:1,u=(1===l?o[c].score:o[c].score||.001)*l;1!==l?a=Math.min(a,u):(o[c].nScore=u,s*=u)}t[i].score=1===a?s:a,this._log(t[i])}}},{key:"_sort",value:function(e){this._log("\n\nSorting...."),e.sort(this.options.sortFn)}},{key:"_format",value:function(e){var t=[];if(this.options.verbose){var i=[];this._log("\n\nOutput:\n\n",JSON.stringify(e,function(e,t){if("object"===n(t)&&null!==t){if(-1!==i.indexOf(t))return;i.push(t)}return t})),i=null}var o=[];this.options.includeMatches&&o.push(function(e,t){var i=e.output;t.matches=[];for(var n=0,o=i.length;n<o;n+=1){var r=i[n];if(0!==r.matchedIndices.length){var s={indices:r.matchedIndices,value:r.value};r.key&&(s.key=r.key),r.hasOwnProperty("arrayIndex")&&r.arrayIndex>-1&&(s.arrayIndex=r.arrayIndex),t.matches.push(s)}}}),this.options.includeScore&&o.push(function(e,t){t.score=e.score});for(var r=0,s=e.length;r<s;r+=1){var a=e[r];if(this.options.id&&(a.item=this.options.getFn(a.item,this.options.id)[0]),o.length){for(var c={item:a.item},l=0,u=o.length;l<u;l+=1)o[l](a,c);t.push(c)}else t.push(a.item)}return t}},{key:"_log",value:function(){var e;this.options.verbose&&(e=console).log.apply(e,arguments)}}])&&o(t.prototype,i),c&&o(t,c),e}();e.exports=c}})},e.exports=n()},function(e,t,i){"use strict";i.r(t);var n=function(e){return function(e){return!!e&&"object"==typeof e}(e)&&!function(e){var t=Object.prototype.toString.call(e);return"[object RegExp]"===t||"[object Date]"===t||function(e){return e.$$typeof===o}(e)}(e)};var o="function"==typeof Symbol&&Symbol.for?Symbol.for("react.element"):60103;function r(e,t){return!1!==t.clone&&t.isMergeableObject(e)?a((i=e,Array.isArray(i)?[]:{}),e,t):e;var i}function s(e,t,i){return e.concat(t).map(function(e){return r(e,i)})}function a(e,t,i){(i=i||{}).arrayMerge=i.arrayMerge||s,i.isMergeableObject=i.isMergeableObject||n;var o=Array.isArray(t);return o===Array.isArray(e)?o?i.arrayMerge(e,t,i):function(e,t,i){var n={};return i.isMergeableObject(e)&&Object.keys(e).forEach(function(t){n[t]=r(e[t],i)}),Object.keys(t).forEach(function(o){i.isMergeableObject(t[o])&&e[o]?n[o]=a(e[o],t[o],i):n[o]=r(t[o],i)}),n}(e,t,i):r(t,i)}a.all=function(e,t){if(!Array.isArray(e))throw new Error("first argument should be an array");return e.reduce(function(e,i){return a(e,i,t)},{})};var c=a;t.default=c},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,o=i(6),r=(n=i(15))&&n.__esModule?n:{default:n};function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var a=function(){function e(){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._store=(0,o.createStore)(r.default,window.__REDUX_DEVTOOLS_EXTENSION__&&window.__REDUX_DEVTOOLS_EXTENSION__())}var t,i,n;return t=e,(i=[{key:"subscribe",value:function(e){this._store.subscribe(e)}},{key:"dispatch",value:function(e){this._store.dispatch(e)}},{key:"isLoading",value:function(){return this.state.general.loading}},{key:"getChoiceById",value:function(e){return!!e&&this.activeChoices.find(function(t){return t.id===parseInt(e,10)})}},{key:"getGroupById",value:function(e){return this.groups.find(function(t){return t.id===parseInt(e,10)})}},{key:"state",get:function(){return this._store.getState()}},{key:"items",get:function(){return this.state.items}},{key:"activeItems",get:function(){return this.items.filter(function(e){return!0===e.active})}},{key:"highlightedActiveItems",get:function(){return this.items.filter(function(e){return e.active&&e.highlighted})}},{key:"choices",get:function(){return this.state.choices}},{key:"activeChoices",get:function(){return this.choices.filter(function(e){return!0===e.active})}},{key:"selectableChoices",get:function(){return this.choices.filter(function(e){return!0!==e.disabled})}},{key:"searchableChoices",get:function(){return this.selectableChoices.filter(function(e){return!0!==e.placeholder})}},{key:"placeholderChoice",get:function(){return[].concat(this.choices).reverse().find(function(e){return!0===e.placeholder})}},{key:"groups",get:function(){return this.state.groups}},{key:"activeGroups",get:function(){var e=this.groups,t=this.choices;return e.filter(function(e){var i=!0===e.active&&!1===e.disabled,n=t.some(function(e){return!0===e.active&&!1===e.disabled});return i&&n},[])}}])&&s(t.prototype,i),n&&s(t,n),e}();t.default=a},function(e,t){e.exports=function(e){if(!e.webpackPolyfill){var t=Object.create(e);t.children||(t.children=[]),Object.defineProperty(t,"loaded",{enumerable:!0,get:function(){return t.l}}),Object.defineProperty(t,"id",{enumerable:!0,get:function(){return t.i}}),Object.defineProperty(t,"exports",{enumerable:!0}),t.webpackPolyfill=1}return t}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(6),o=l(i(16)),r=l(i(17)),s=l(i(18)),a=l(i(19)),c=i(0);function l(e){return e&&e.__esModule?e:{default:e}}var u=(0,n.combineReducers)({items:o.default,groups:r.default,choices:s.default,general:a.default}),h=function(e,t){var i=e;if("CLEAR_ALL"===t.type)i=void 0;else if("RESET_TO"===t.type)return(0,c.cloneObject)(t.state);return u(i,t)};t.default=h},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_ITEM":var i=[].concat(e,[{id:t.id,choiceId:t.choiceId,groupId:t.groupId,value:t.value,label:t.label,active:!0,highlighted:!1,customProperties:t.customProperties,placeholder:t.placeholder||!1,keyCode:null}]);return i.map(function(e){var t=e;return t.highlighted=!1,t});case"REMOVE_ITEM":return e.map(function(e){var i=e;return i.id===t.id&&(i.active=!1),i});case"HIGHLIGHT_ITEM":return e.map(function(e){var i=e;return i.id===t.id&&(i.highlighted=t.highlighted),i});default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_GROUP":return[].concat(e,[{id:t.id,value:t.value,active:t.active,disabled:t.disabled}]);case"CLEAR_CHOICES":return[];default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"ADD_CHOICE":return[].concat(e,[{id:t.id,elementId:t.elementId,groupId:t.groupId,value:t.value,label:t.label||t.value,disabled:t.disabled||!1,selected:!1,active:!0,score:9999,customProperties:t.customProperties,placeholder:t.placeholder||!1,keyCode:null}]);case"ADD_ITEM":return t.activateOptions?e.map(function(e){var i=e;return i.active=t.active,i}):t.choiceId>-1?e.map(function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!0),i}):e;case"REMOVE_ITEM":return t.choiceId>-1?e.map(function(e){var i=e;return i.id===parseInt(t.choiceId,10)&&(i.selected=!1),i}):e;case"FILTER_CHOICES":return e.map(function(e){var i=e;return i.active=t.results.some(function(e){var t=e.item,n=e.score;return t.id===i.id&&(i.score=n,!0)}),i});case"ACTIVATE_CHOICES":return e.map(function(e){var i=e;return i.active=t.active,i});case"CLEAR_CHOICES":return n;default:return e}},t.defaultState=void 0;var n=[];t.defaultState=n},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=t.defaultState=void 0;var n={loading:!1};t.defaultState=n;var o=function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:n,t=arguments.length>1?arguments[1]:void 0;switch(t.type){case"SET_IS_LOADING":return{loading:t.isLoading};default:return e}};t.default=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),Object.defineProperty(t,"Dropdown",{enumerable:!0,get:function(){return n.default}}),Object.defineProperty(t,"Container",{enumerable:!0,get:function(){return o.default}}),Object.defineProperty(t,"Input",{enumerable:!0,get:function(){return r.default}}),Object.defineProperty(t,"List",{enumerable:!0,get:function(){return s.default}}),Object.defineProperty(t,"WrappedInput",{enumerable:!0,get:function(){return a.default}}),Object.defineProperty(t,"WrappedSelect",{enumerable:!0,get:function(){return c.default}});var n=l(i(21)),o=l(i(22)),r=l(i(23)),s=l(i(24)),a=l(i(25)),c=l(i(26));function l(e){return e&&e.__esModule?e:{default:e}}},function(e,t,i){"use strict";function n(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var o=function(){function e(t){var i=t.element,n=t.type,o=t.classNames;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,type:n,classNames:o}),this.isActive=!1}var t,i,o;return t=e,(i=[{key:"distanceFromTopWindow",value:function(){return this.dimensions=this.element.getBoundingClientRect(),this.position=Math.ceil(this.dimensions.top+window.pageYOffset+this.element.offsetHeight),this.position}},{key:"getChild",value:function(e){return this.element.querySelector(e)}},{key:"show",value:function(){return this.element.classList.add(this.classNames.activeState),this.element.setAttribute("aria-expanded","true"),this.isActive=!0,this}},{key:"hide",value:function(){return this.element.classList.remove(this.classNames.activeState),this.element.setAttribute("aria-expanded","false"),this.isActive=!1,this}}])&&n(t.prototype,i),o&&n(t,o),e}();t.default=o},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,n=t.type,o=t.classNames,r=t.position;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,classNames:o,type:n,position:r}),this.isOpen=!1,this.isFlipped=!1,this.isFocussed=!1,this.isDisabled=!1,this.isLoading=!1,this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t,i,r;return t=e,(i=[{key:"addEventListeners",value:function(){this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur)}},{key:"removeEventListeners",value:function(){this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur)}},{key:"shouldFlip",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:(0,n.getWindowHeight)();if(void 0===e)return!1;var i=!1;return"auto"===this.position?i=e>=t:"top"===this.position&&(i=!0),i}},{key:"setActiveDescendant",value:function(e){this.element.setAttribute("aria-activedescendant",e)}},{key:"removeActiveDescendant",value:function(){this.element.removeAttribute("aria-activedescendant")}},{key:"open",value:function(e){this.element.classList.add(this.classNames.openState),this.element.setAttribute("aria-expanded","true"),this.isOpen=!0,this.shouldFlip(e)&&(this.element.classList.add(this.classNames.flippedState),this.isFlipped=!0)}},{key:"close",value:function(){this.element.classList.remove(this.classNames.openState),this.element.setAttribute("aria-expanded","false"),this.removeActiveDescendant(),this.isOpen=!1,this.isFlipped&&(this.element.classList.remove(this.classNames.flippedState),this.isFlipped=!1)}},{key:"focus",value:function(){this.isFocussed||this.element.focus()}},{key:"addFocusState",value:function(){this.element.classList.add(this.classNames.focusState)}},{key:"removeFocusState",value:function(){this.element.classList.remove(this.classNames.focusState)}},{key:"enable",value:function(){this.element.classList.remove(this.classNames.disabledState),this.element.removeAttribute("aria-disabled"),"select-one"===this.type&&this.element.setAttribute("tabindex","0"),this.isDisabled=!1}},{key:"disable",value:function(){this.element.classList.add(this.classNames.disabledState),this.element.setAttribute("aria-disabled","true"),"select-one"===this.type&&this.element.setAttribute("tabindex","-1"),this.isDisabled=!0}},{key:"wrap",value:function(e){(0,n.wrap)(e,this.element)}},{key:"unwrap",value:function(e){this.element.parentNode.insertBefore(e,this.element),this.element.parentNode.removeChild(this.element)}},{key:"addLoadingState",value:function(){this.element.classList.add(this.classNames.loadingState),this.element.setAttribute("aria-busy","true"),this.isLoading=!0}},{key:"removeLoadingState",value:function(){this.element.classList.remove(this.classNames.loadingState),this.element.removeAttribute("aria-busy"),this.isLoading=!1}},{key:"_onFocus",value:function(){this.isFocussed=!0}},{key:"_onBlur",value:function(){this.isFocussed=!1}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(0);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element,n=t.type,o=t.classNames,r=t.placeholderValue;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i,type:n,classNames:o,placeholderValue:r}),this.element=i,this.classNames=o,this.isFocussed=this.element===document.activeElement,this.isDisabled=!1,this._onPaste=this._onPaste.bind(this),this._onInput=this._onInput.bind(this),this._onFocus=this._onFocus.bind(this),this._onBlur=this._onBlur.bind(this)}var t,i,r;return t=e,(i=[{key:"addEventListeners",value:function(){this.element.addEventListener("input",this._onInput),this.element.addEventListener("paste",this._onPaste),this.element.addEventListener("focus",this._onFocus),this.element.addEventListener("blur",this._onBlur),this.element.form&&this.element.form.addEventListener("reset",this._onFormReset)}},{key:"removeEventListeners",value:function(){this.element.removeEventListener("input",this._onInput),this.element.removeEventListener("paste",this._onPaste),this.element.removeEventListener("focus",this._onFocus),this.element.removeEventListener("blur",this._onBlur),this.element.form&&this.element.form.removeEventListener("reset",this._onFormReset)}},{key:"enable",value:function(){this.element.removeAttribute("disabled"),this.isDisabled=!1}},{key:"disable",value:function(){this.element.setAttribute("disabled",""),this.isDisabled=!0}},{key:"focus",value:function(){this.isFocussed||this.element.focus()}},{key:"blur",value:function(){this.isFocussed&&this.element.blur()}},{key:"clear",value:function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return this.element.value&&(this.element.value=""),e&&this.setWidth(),this}},{key:"setWidth",value:function(e){var t=this,i=function(e){t.element.style.width=e};if(this._placeholderValue){var n=this.element.value.length>=this._placeholderValue.length/1.25;(this.element.value&&n||e)&&this.calcWidth(i)}else this.calcWidth(i)}},{key:"calcWidth",value:function(e){return(0,n.calcWidthOfInput)(this.element,e)}},{key:"setActiveDescendant",value:function(e){this.element.setAttribute("aria-activedescendant",e)}},{key:"removeActiveDescendant",value:function(){this.element.removeAttribute("aria-activedescendant")}},{key:"_onInput",value:function(){"select-one"!==this.type&&this.setWidth()}},{key:"_onPaste",value:function(e){e.target===this.element&&this.preventPaste&&e.preventDefault()}},{key:"_onFocus",value:function(){this.isFocussed=!0}},{key:"_onBlur",value:function(){this.isFocussed=!1}},{key:"placeholder",set:function(e){this.element.placeholder=e}},{key:"value",set:function(e){this.element.value=e},get:function(){return(0,n.sanitise)(this.element.value)}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=i(1);function o(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}var r=function(){function e(t){var i=t.element;!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),Object.assign(this,{element:i}),this.scrollPos=this.element.scrollTop,this.height=this.element.offsetHeight,this.hasChildren=!!this.element.children}var t,i,r;return t=e,(i=[{key:"clear",value:function(){this.element.innerHTML=""}},{key:"append",value:function(e){this.element.appendChild(e)}},{key:"getChild",value:function(e){return this.element.querySelector(e)}},{key:"scrollToTop",value:function(){this.element.scrollTop=0}},{key:"scrollToChoice",value:function(e,t){var i=this;if(e){var n=this.element.offsetHeight,o=e.offsetHeight,r=e.offsetTop+o,s=this.element.scrollTop+n,a=t>0?this.element.scrollTop+r-s:e.offsetTop;requestAnimationFrame(function(e){i._animateScroll(e,a,t)})}}},{key:"_scrollDown",value:function(e,t,i){var n=(i-e)/t,o=n>1?n:1;this.element.scrollTop=e+o}},{key:"_scrollUp",value:function(e,t,i){var n=(e-i)/t,o=n>1?n:1;this.element.scrollTop=e-o}},{key:"_animateScroll",value:function(e,t,i){var o=this,r=n.SCROLLING_SPEED,s=this.element.scrollTop,a=!1;i>0?(this._scrollDown(s,r,t),s<t&&(a=!0)):(this._scrollUp(s,r,t),s>t&&(a=!0)),a&&requestAnimationFrame(function(){o._animateScroll(e,t,i)})}}])&&o(t.prototype,i),r&&o(t,r),e}();t.default=r},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n,o=(n=i(4))&&n.__esModule?n:{default:n};function r(e){return(r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function s(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function a(e,t){return!t||"object"!==r(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function c(e,t,i){return(c="undefined"!=typeof Reflect&&Reflect.get?Reflect.get:function(e,t,i){var n=function(e,t){for(;!Object.prototype.hasOwnProperty.call(e,t)&&null!==(e=l(e)););return e}(e,t);if(n){var o=Object.getOwnPropertyDescriptor(n,t);return o.get?o.get.call(i):o.value}})(e,t,i||e)}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function t(e){var i,n=e.element,o=e.classNames,r=e.delimiter;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),(i=a(this,l(t).call(this,{element:n,classNames:o}))).delimiter=r,i}var i,n,r;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(t,o.default),i=t,(n=[{key:"value",set:function(e){var t=e.map(function(e){return e.value}).join(this.delimiter);this.element.setAttribute("value",t),this.element.value=t},get:function(){return c(l(t.prototype),"value",this)}}])&&s(i.prototype,n),r&&s(i,r),t}();t.default=h},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.default=void 0;var n=r(i(4)),o=r(i(5));function r(e){return e&&e.__esModule?e:{default:e}}function s(e){return(s="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e})(e)}function a(e,t){for(var i=0;i<t.length;i++){var n=t[i];n.enumerable=n.enumerable||!1,n.configurable=!0,"value"in n&&(n.writable=!0),Object.defineProperty(e,n.key,n)}}function c(e,t){return!t||"object"!==s(t)&&"function"!=typeof t?function(e){if(void 0===e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return e}(e):t}function l(e){return(l=Object.setPrototypeOf?Object.getPrototypeOf:function(e){return e.__proto__||Object.getPrototypeOf(e)})(e)}function u(e,t){return(u=Object.setPrototypeOf||function(e,t){return e.__proto__=t,e})(e,t)}var h=function(e){function t(e){var i=e.element,n=e.classNames;return function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),c(this,l(t).call(this,{element:i,classNames:n}))}var i,r,s;return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function");e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,writable:!0,configurable:!0}}),t&&u(e,t)}(t,n.default),i=t,(r=[{key:"appendDocFragment",value:function(e){this.element.innerHTML="",this.element.appendChild(e)}},{key:"placeholderOption",get:function(){return this.element.querySelector("option[placeholder]")}},{key:"optionGroups",get:function(){return Array.from(this.element.getElementsByTagName("OPTGROUP"))}},{key:"options",get:function(){return Array.from(this.element.options)},set:function(e){var t=document.createDocumentFragment();e.forEach(function(e){return i=e,n=o.default.option(i),void t.appendChild(n);var i,n}),this.appendDocFragment(t)}}])&&a(i.prototype,r),s&&a(i,s),t}();t.default=h},function(e,t,i){var n;
+/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+/*!
+ Copyright (c) 2017 Jed Watson.
+ Licensed under the MIT License (MIT), see
+ http://jedwatson.github.io/classnames
+*/
+!function(){"use strict";var i={}.hasOwnProperty;function o(){for(var e=[],t=0;t<arguments.length;t++){var n=arguments[t];if(n){var r=typeof n;if("string"===r||"number"===r)e.push(n);else if(Array.isArray(n)&&n.length){var s=o.apply(null,n);s&&e.push(s)}else if("object"===r)for(var a in n)i.call(n,a)&&n[a]&&e.push(a)}}return e.join(" ")}e.exports?(o.default=o,e.exports=o):void 0===(n=function(){return o}.apply(t,[]))||(e.exports=n)}()},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.clearChoices=t.activateChoices=t.filterChoices=t.addChoice=void 0;var n=i(1);t.addChoice=function(e){var t=e.value,i=e.label,o=e.id,r=e.groupId,s=e.disabled,a=e.elementId,c=e.customProperties,l=e.placeholder,u=e.keyCode;return{type:n.ACTION_TYPES.ADD_CHOICE,value:t,label:i,id:o,groupId:r,disabled:s,elementId:a,customProperties:c,placeholder:l,keyCode:u}};t.filterChoices=function(e){return{type:n.ACTION_TYPES.FILTER_CHOICES,results:e}};t.activateChoices=function(){var e=!(arguments.length>0&&void 0!==arguments[0])||arguments[0];return{type:n.ACTION_TYPES.ACTIVATE_CHOICES,active:e}};t.clearChoices=function(){return{type:n.ACTION_TYPES.CLEAR_CHOICES}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.highlightItem=t.removeItem=t.addItem=void 0;var n=i(1);t.addItem=function(e){var t=e.value,i=e.label,o=e.id,r=e.choiceId,s=e.groupId,a=e.customProperties,c=e.placeholder,l=e.keyCode;return{type:n.ACTION_TYPES.ADD_ITEM,value:t,label:i,id:o,choiceId:r,groupId:s,customProperties:a,placeholder:c,keyCode:l}};t.removeItem=function(e,t){return{type:n.ACTION_TYPES.REMOVE_ITEM,id:e,choiceId:t}};t.highlightItem=function(e,t){return{type:n.ACTION_TYPES.HIGHLIGHT_ITEM,id:e,highlighted:t}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.addGroup=void 0;var n=i(1);t.addGroup=function(e,t,i,o){return{type:n.ACTION_TYPES.ADD_GROUP,value:e,id:t,active:i,disabled:o}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.resetTo=t.clearAll=void 0;t.clearAll=function(){return{type:"CLEAR_ALL"}};t.resetTo=function(e){return{type:"RESET_TO",state:e}}},function(e,t,i){"use strict";Object.defineProperty(t,"__esModule",{value:!0}),t.setIsLoading=void 0;t.setIsLoading=function(e){return{type:"SET_IS_LOADING",isLoading:e}}}])});
\ No newline at end of file
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background: #fff;
+ -webkit-box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 1px 0 0 #e6e6e6, -1px 0 0 #e6e6e6, 0 1px 0 #e6e6e6, 0 -1px 0 #e6e6e6, 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #e6e6e6;
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #e6e6e6;
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #e6e6e6;
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #fff;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ background: transparent;
+ color: rgba(0,0,0,0.9);
+ fill: rgba(0,0,0,0.9);
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: rgba(0,0,0,0.9);
+ fill: rgba(0,0,0,0.9);
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #959ea9;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(57,57,57,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(57,57,57,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(57,57,57,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(0,0,0,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: rgba(0,0,0,0.9);
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: rgba(0,0,0,0.9);
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(0,0,0,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: transparent;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: transparent;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: transparent;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: transparent;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 #e6e6e6;
+ box-shadow: -1px 0 0 #e6e6e6;
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #393939;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e6e6e6;
+ border-color: #e6e6e6;
+}
+.flatpickr-day.today {
+ border-color: #959ea9;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #959ea9;
+ background: #959ea9;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #569ff7;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #569ff7;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #569ff7;
+ box-shadow: -10px 0 0 #569ff7;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -5px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(57,57,57,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(57,57,57,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
+ box-shadow: -5px 0 0 #569ff7, 5px 0 0 #569ff7;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ -webkit-box-shadow: 1px 0 0 #e6e6e6;
+ box-shadow: 1px 0 0 #e6e6e6;
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(57,57,57,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #393939;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #393939;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #393939;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #393939;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eee;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+/* flatpickr v4.6.2, @license MIT */
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.flatpickr = factory());
+}(this, function () { 'use strict';
+
+ /*! *****************************************************************************\r
+ Copyright (c) Microsoft Corporation. All rights reserved.\r
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use\r
+ this file except in compliance with the License. You may obtain a copy of the\r
+ License at http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r
+ MERCHANTABLITY OR NON-INFRINGEMENT.\r
+\r
+ See the Apache Version 2.0 License for specific language governing permissions\r
+ and limitations under the License.\r
+ ***************************************************************************** */\r
+\r
+ var __assign = function() {\r
+ __assign = Object.assign || function __assign(t) {\r
+ for (var s, i = 1, n = arguments.length; i < n; i++) {\r
+ s = arguments[i];\r
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
+ }\r
+ return t;\r
+ };\r
+ return __assign.apply(this, arguments);\r
+ };
+
+ var HOOKS = [
+ "onChange",
+ "onClose",
+ "onDayCreate",
+ "onDestroy",
+ "onKeyDown",
+ "onMonthChange",
+ "onOpen",
+ "onParseConfig",
+ "onReady",
+ "onValueUpdate",
+ "onYearChange",
+ "onPreCalendarPosition",
+ ];
+ var defaults = {
+ _disable: [],
+ _enable: [],
+ allowInput: false,
+ altFormat: "F j, Y",
+ altInput: false,
+ altInputClass: "form-control input",
+ animate: typeof window === "object" &&
+ window.navigator.userAgent.indexOf("MSIE") === -1,
+ ariaDateFormat: "F j, Y",
+ clickOpens: true,
+ closeOnSelect: true,
+ conjunction: ", ",
+ dateFormat: "Y-m-d",
+ defaultHour: 12,
+ defaultMinute: 0,
+ defaultSeconds: 0,
+ disable: [],
+ disableMobile: false,
+ enable: [],
+ enableSeconds: false,
+ enableTime: false,
+ errorHandler: function (err) {
+ return typeof console !== "undefined" && console.warn(err);
+ },
+ getWeek: function (givenDate) {
+ var date = new Date(givenDate.getTime());
+ date.setHours(0, 0, 0, 0);
+ // Thursday in current week decides the year.
+ date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
+ // January 4 is always in week 1.
+ var week1 = new Date(date.getFullYear(), 0, 4);
+ // Adjust to Thursday in week 1 and count number of weeks from date to week1.
+ return (1 +
+ Math.round(((date.getTime() - week1.getTime()) / 86400000 -
+ 3 +
+ ((week1.getDay() + 6) % 7)) /
+ 7));
+ },
+ hourIncrement: 1,
+ ignoredFocusElements: [],
+ inline: false,
+ locale: "default",
+ minuteIncrement: 5,
+ mode: "single",
+ monthSelectorType: "dropdown",
+ nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
+ noCalendar: false,
+ now: new Date(),
+ onChange: [],
+ onClose: [],
+ onDayCreate: [],
+ onDestroy: [],
+ onKeyDown: [],
+ onMonthChange: [],
+ onOpen: [],
+ onParseConfig: [],
+ onReady: [],
+ onValueUpdate: [],
+ onYearChange: [],
+ onPreCalendarPosition: [],
+ plugins: [],
+ position: "auto",
+ positionElement: undefined,
+ prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
+ shorthandCurrentMonth: false,
+ showMonths: 1,
+ static: false,
+ time_24hr: false,
+ weekNumbers: false,
+ wrap: false
+ };
+
+ var english = {
+ weekdays: {
+ shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ longhand: [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ ]
+ },
+ months: {
+ shorthand: [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec",
+ ],
+ longhand: [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December",
+ ]
+ },
+ daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ firstDayOfWeek: 0,
+ ordinal: function (nth) {
+ var s = nth % 100;
+ if (s > 3 && s < 21)
+ return "th";
+ switch (s % 10) {
+ case 1:
+ return "st";
+ case 2:
+ return "nd";
+ case 3:
+ return "rd";
+ default:
+ return "th";
+ }
+ },
+ rangeSeparator: " to ",
+ weekAbbreviation: "Wk",
+ scrollTitle: "Scroll to increment",
+ toggleTitle: "Click to toggle",
+ amPM: ["AM", "PM"],
+ yearAriaLabel: "Year",
+ hourAriaLabel: "Hour",
+ minuteAriaLabel: "Minute",
+ time_24hr: false
+ };
+
+ var pad = function (number) { return ("0" + number).slice(-2); };
+ var int = function (bool) { return (bool === true ? 1 : 0); };
+ /* istanbul ignore next */
+ function debounce(func, wait, immediate) {
+ if (immediate === void 0) { immediate = false; }
+ var timeout;
+ return function () {
+ var context = this, args = arguments;
+ timeout !== null && clearTimeout(timeout);
+ timeout = window.setTimeout(function () {
+ timeout = null;
+ if (!immediate)
+ func.apply(context, args);
+ }, wait);
+ if (immediate && !timeout)
+ func.apply(context, args);
+ };
+ }
+ var arrayify = function (obj) {
+ return obj instanceof Array ? obj : [obj];
+ };
+
+ function toggleClass(elem, className, bool) {
+ if (bool === true)
+ return elem.classList.add(className);
+ elem.classList.remove(className);
+ }
+ function createElement(tag, className, content) {
+ var e = window.document.createElement(tag);
+ className = className || "";
+ content = content || "";
+ e.className = className;
+ if (content !== undefined)
+ e.textContent = content;
+ return e;
+ }
+ function clearNode(node) {
+ while (node.firstChild)
+ node.removeChild(node.firstChild);
+ }
+ function findParent(node, condition) {
+ if (condition(node))
+ return node;
+ else if (node.parentNode)
+ return findParent(node.parentNode, condition);
+ return undefined; // nothing found
+ }
+ function createNumberInput(inputClassName, opts) {
+ var wrapper = createElement("div", "numInputWrapper"), numInput = createElement("input", "numInput " + inputClassName), arrowUp = createElement("span", "arrowUp"), arrowDown = createElement("span", "arrowDown");
+ if (navigator.userAgent.indexOf("MSIE 9.0") === -1) {
+ numInput.type = "number";
+ }
+ else {
+ numInput.type = "text";
+ numInput.pattern = "\\d*";
+ }
+ if (opts !== undefined)
+ for (var key in opts)
+ numInput.setAttribute(key, opts[key]);
+ wrapper.appendChild(numInput);
+ wrapper.appendChild(arrowUp);
+ wrapper.appendChild(arrowDown);
+ return wrapper;
+ }
+ function getEventTarget(event) {
+ if (typeof event.composedPath === "function") {
+ var path = event.composedPath();
+ return path[0];
+ }
+ return event.target;
+ }
+
+ var doNothing = function () { return undefined; };
+ var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
+ var revFormat = {
+ D: doNothing,
+ F: function (dateObj, monthName, locale) {
+ dateObj.setMonth(locale.months.longhand.indexOf(monthName));
+ },
+ G: function (dateObj, hour) {
+ dateObj.setHours(parseFloat(hour));
+ },
+ H: function (dateObj, hour) {
+ dateObj.setHours(parseFloat(hour));
+ },
+ J: function (dateObj, day) {
+ dateObj.setDate(parseFloat(day));
+ },
+ K: function (dateObj, amPM, locale) {
+ dateObj.setHours((dateObj.getHours() % 12) +
+ 12 * int(new RegExp(locale.amPM[1], "i").test(amPM)));
+ },
+ M: function (dateObj, shortMonth, locale) {
+ dateObj.setMonth(locale.months.shorthand.indexOf(shortMonth));
+ },
+ S: function (dateObj, seconds) {
+ dateObj.setSeconds(parseFloat(seconds));
+ },
+ U: function (_, unixSeconds) { return new Date(parseFloat(unixSeconds) * 1000); },
+ W: function (dateObj, weekNum, locale) {
+ var weekNumber = parseInt(weekNum);
+ var date = new Date(dateObj.getFullYear(), 0, 2 + (weekNumber - 1) * 7, 0, 0, 0, 0);
+ date.setDate(date.getDate() - date.getDay() + locale.firstDayOfWeek);
+ return date;
+ },
+ Y: function (dateObj, year) {
+ dateObj.setFullYear(parseFloat(year));
+ },
+ Z: function (_, ISODate) { return new Date(ISODate); },
+ d: function (dateObj, day) {
+ dateObj.setDate(parseFloat(day));
+ },
+ h: function (dateObj, hour) {
+ dateObj.setHours(parseFloat(hour));
+ },
+ i: function (dateObj, minutes) {
+ dateObj.setMinutes(parseFloat(minutes));
+ },
+ j: function (dateObj, day) {
+ dateObj.setDate(parseFloat(day));
+ },
+ l: doNothing,
+ m: function (dateObj, month) {
+ dateObj.setMonth(parseFloat(month) - 1);
+ },
+ n: function (dateObj, month) {
+ dateObj.setMonth(parseFloat(month) - 1);
+ },
+ s: function (dateObj, seconds) {
+ dateObj.setSeconds(parseFloat(seconds));
+ },
+ u: function (_, unixMillSeconds) {
+ return new Date(parseFloat(unixMillSeconds));
+ },
+ w: doNothing,
+ y: function (dateObj, year) {
+ dateObj.setFullYear(2000 + parseFloat(year));
+ }
+ };
+ var tokenRegex = {
+ D: "(\\w+)",
+ F: "(\\w+)",
+ G: "(\\d\\d|\\d)",
+ H: "(\\d\\d|\\d)",
+ J: "(\\d\\d|\\d)\\w+",
+ K: "",
+ M: "(\\w+)",
+ S: "(\\d\\d|\\d)",
+ U: "(.+)",
+ W: "(\\d\\d|\\d)",
+ Y: "(\\d{4})",
+ Z: "(.+)",
+ d: "(\\d\\d|\\d)",
+ h: "(\\d\\d|\\d)",
+ i: "(\\d\\d|\\d)",
+ j: "(\\d\\d|\\d)",
+ l: "(\\w+)",
+ m: "(\\d\\d|\\d)",
+ n: "(\\d\\d|\\d)",
+ s: "(\\d\\d|\\d)",
+ u: "(.+)",
+ w: "(\\d\\d|\\d)",
+ y: "(\\d{2})"
+ };
+ var formats = {
+ // get the date in UTC
+ Z: function (date) { return date.toISOString(); },
+ // weekday name, short, e.g. Thu
+ D: function (date, locale, options) {
+ return locale.weekdays.shorthand[formats.w(date, locale, options)];
+ },
+ // full month name e.g. January
+ F: function (date, locale, options) {
+ return monthToStr(formats.n(date, locale, options) - 1, false, locale);
+ },
+ // padded hour 1-12
+ G: function (date, locale, options) {
+ return pad(formats.h(date, locale, options));
+ },
+ // hours with leading zero e.g. 03
+ H: function (date) { return pad(date.getHours()); },
+ // day (1-30) with ordinal suffix e.g. 1st, 2nd
+ J: function (date, locale) {
+ return locale.ordinal !== undefined
+ ? date.getDate() + locale.ordinal(date.getDate())
+ : date.getDate();
+ },
+ // AM/PM
+ K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },
+ // shorthand month e.g. Jan, Sep, Oct, etc
+ M: function (date, locale) {
+ return monthToStr(date.getMonth(), true, locale);
+ },
+ // seconds 00-59
+ S: function (date) { return pad(date.getSeconds()); },
+ // unix timestamp
+ U: function (date) { return date.getTime() / 1000; },
+ W: function (date, _, options) {
+ return options.getWeek(date);
+ },
+ // full year e.g. 2016
+ Y: function (date) { return date.getFullYear(); },
+ // day in month, padded (01-30)
+ d: function (date) { return pad(date.getDate()); },
+ // hour from 1-12 (am/pm)
+ h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },
+ // minutes, padded with leading zero e.g. 09
+ i: function (date) { return pad(date.getMinutes()); },
+ // day in month (1-30)
+ j: function (date) { return date.getDate(); },
+ // weekday name, full, e.g. Thursday
+ l: function (date, locale) {
+ return locale.weekdays.longhand[date.getDay()];
+ },
+ // padded month number (01-12)
+ m: function (date) { return pad(date.getMonth() + 1); },
+ // the month number (1-12)
+ n: function (date) { return date.getMonth() + 1; },
+ // seconds 0-59
+ s: function (date) { return date.getSeconds(); },
+ // Unix Milliseconds
+ u: function (date) { return date.getTime(); },
+ // number of the day of the week
+ w: function (date) { return date.getDay(); },
+ // last two digits of year e.g. 16 for 2016
+ y: function (date) { return String(date.getFullYear()).substring(2); }
+ };
+
+ var createDateFormatter = function (_a) {
+ var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
+ return function (dateObj, frmt, overrideLocale) {
+ var locale = overrideLocale || l10n;
+ if (config.formatDate !== undefined) {
+ return config.formatDate(dateObj, frmt, locale);
+ }
+ return frmt
+ .split("")
+ .map(function (c, i, arr) {
+ return formats[c] && arr[i - 1] !== "\\"
+ ? formats[c](dateObj, locale, config)
+ : c !== "\\"
+ ? c
+ : "";
+ })
+ .join("");
+ };
+ };
+ var createDateParser = function (_a) {
+ var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
+ return function (date, givenFormat, timeless, customLocale) {
+ if (date !== 0 && !date)
+ return undefined;
+ var locale = customLocale || l10n;
+ var parsedDate;
+ var dateOrig = date;
+ if (date instanceof Date)
+ parsedDate = new Date(date.getTime());
+ else if (typeof date !== "string" &&
+ date.toFixed !== undefined // timestamp
+ )
+ // create a copy
+ parsedDate = new Date(date);
+ else if (typeof date === "string") {
+ // date string
+ var format = givenFormat || (config || defaults).dateFormat;
+ var datestr = String(date).trim();
+ if (datestr === "today") {
+ parsedDate = new Date();
+ timeless = true;
+ }
+ else if (/Z$/.test(datestr) ||
+ /GMT$/.test(datestr) // datestrings w/ timezone
+ )
+ parsedDate = new Date(date);
+ else if (config && config.parseDate)
+ parsedDate = config.parseDate(date, format);
+ else {
+ parsedDate =
+ !config || !config.noCalendar
+ ? new Date(new Date().getFullYear(), 0, 1, 0, 0, 0, 0)
+ : new Date(new Date().setHours(0, 0, 0, 0));
+ var matched = void 0, ops = [];
+ for (var i = 0, matchIndex = 0, regexStr = ""; i < format.length; i++) {
+ var token_1 = format[i];
+ var isBackSlash = token_1 === "\\";
+ var escaped = format[i - 1] === "\\" || isBackSlash;
+ if (tokenRegex[token_1] && !escaped) {
+ regexStr += tokenRegex[token_1];
+ var match = new RegExp(regexStr).exec(date);
+ if (match && (matched = true)) {
+ ops[token_1 !== "Y" ? "push" : "unshift"]({
+ fn: revFormat[token_1],
+ val: match[++matchIndex]
+ });
+ }
+ }
+ else if (!isBackSlash)
+ regexStr += "."; // don't really care
+ ops.forEach(function (_a) {
+ var fn = _a.fn, val = _a.val;
+ return (parsedDate = fn(parsedDate, val, locale) || parsedDate);
+ });
+ }
+ parsedDate = matched ? parsedDate : undefined;
+ }
+ }
+ /* istanbul ignore next */
+ if (!(parsedDate instanceof Date && !isNaN(parsedDate.getTime()))) {
+ config.errorHandler(new Error("Invalid date provided: " + dateOrig));
+ return undefined;
+ }
+ if (timeless === true)
+ parsedDate.setHours(0, 0, 0, 0);
+ return parsedDate;
+ };
+ };
+ /**
+ * Compute the difference in dates, measured in ms
+ */
+ function compareDates(date1, date2, timeless) {
+ if (timeless === void 0) { timeless = true; }
+ if (timeless !== false) {
+ return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -
+ new Date(date2.getTime()).setHours(0, 0, 0, 0));
+ }
+ return date1.getTime() - date2.getTime();
+ }
+ var isBetween = function (ts, ts1, ts2) {
+ return ts > Math.min(ts1, ts2) && ts < Math.max(ts1, ts2);
+ };
+ var duration = {
+ DAY: 86400000
+ };
+
+ if (typeof Object.assign !== "function") {
+ Object.assign = function (target) {
+ var args = [];
+ for (var _i = 1; _i < arguments.length; _i++) {
+ args[_i - 1] = arguments[_i];
+ }
+ if (!target) {
+ throw TypeError("Cannot convert undefined or null to object");
+ }
+ var _loop_1 = function (source) {
+ if (source) {
+ Object.keys(source).forEach(function (key) { return (target[key] = source[key]); });
+ }
+ };
+ for (var _a = 0, args_1 = args; _a < args_1.length; _a++) {
+ var source = args_1[_a];
+ _loop_1(source);
+ }
+ return target;
+ };
+ }
+
+ var DEBOUNCED_CHANGE_MS = 300;
+ function FlatpickrInstance(element, instanceConfig) {
+ var self = {
+ config: __assign({}, defaults, flatpickr.defaultConfig),
+ l10n: english
+ };
+ self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
+ self._handlers = [];
+ self.pluginElements = [];
+ self.loadedPlugins = [];
+ self._bind = bind;
+ self._setHoursFromDate = setHoursFromDate;
+ self._positionCalendar = positionCalendar;
+ self.changeMonth = changeMonth;
+ self.changeYear = changeYear;
+ self.clear = clear;
+ self.close = close;
+ self._createElement = createElement;
+ self.destroy = destroy;
+ self.isEnabled = isEnabled;
+ self.jumpToDate = jumpToDate;
+ self.open = open;
+ self.redraw = redraw;
+ self.set = set;
+ self.setDate = setDate;
+ self.toggle = toggle;
+ function setupHelperFunctions() {
+ self.utils = {
+ getDaysInMonth: function (month, yr) {
+ if (month === void 0) { month = self.currentMonth; }
+ if (yr === void 0) { yr = self.currentYear; }
+ if (month === 1 && ((yr % 4 === 0 && yr % 100 !== 0) || yr % 400 === 0))
+ return 29;
+ return self.l10n.daysInMonth[month];
+ }
+ };
+ }
+ function init() {
+ self.element = self.input = element;
+ self.isOpen = false;
+ parseConfig();
+ setupLocale();
+ setupInputs();
+ setupDates();
+ setupHelperFunctions();
+ if (!self.isMobile)
+ build();
+ bindEvents();
+ if (self.selectedDates.length || self.config.noCalendar) {
+ if (self.config.enableTime) {
+ setHoursFromDate(self.config.noCalendar
+ ? self.latestSelectedDateObj || self.config.minDate
+ : undefined);
+ }
+ updateValue(false);
+ }
+ setCalendarWidth();
+ self.showTimeInput =
+ self.selectedDates.length > 0 || self.config.noCalendar;
+ var isSafari = /^((?!chrome|android).)*safari/i.test(navigator.userAgent);
+ /* TODO: investigate this further
+
+ Currently, there is weird positioning behavior in safari causing pages
+ to scroll up. https://github.com/chmln/flatpickr/issues/563
+
+ However, most browsers are not Safari and positioning is expensive when used
+ in scale. https://github.com/chmln/flatpickr/issues/1096
+ */
+ if (!self.isMobile && isSafari) {
+ positionCalendar();
+ }
+ triggerEvent("onReady");
+ }
+ function bindToInstance(fn) {
+ return fn.bind(self);
+ }
+ function setCalendarWidth() {
+ var config = self.config;
+ if (config.weekNumbers === false && config.showMonths === 1)
+ return;
+ else if (config.noCalendar !== true) {
+ window.requestAnimationFrame(function () {
+ if (self.calendarContainer !== undefined) {
+ self.calendarContainer.style.visibility = "hidden";
+ self.calendarContainer.style.display = "block";
+ }
+ if (self.daysContainer !== undefined) {
+ var daysWidth = (self.days.offsetWidth + 1) * config.showMonths;
+ self.daysContainer.style.width = daysWidth + "px";
+ self.calendarContainer.style.width =
+ daysWidth +
+ (self.weekWrapper !== undefined
+ ? self.weekWrapper.offsetWidth
+ : 0) +
+ "px";
+ self.calendarContainer.style.removeProperty("visibility");
+ self.calendarContainer.style.removeProperty("display");
+ }
+ });
+ }
+ }
+ /**
+ * The handler for all events targeting the time inputs
+ */
+ function updateTime(e) {
+ if (self.selectedDates.length === 0) {
+ setDefaultTime();
+ }
+ if (e !== undefined && e.type !== "blur") {
+ timeWrapper(e);
+ }
+ var prevValue = self._input.value;
+ setHoursFromInputs();
+ updateValue();
+ if (self._input.value !== prevValue) {
+ self._debouncedChange();
+ }
+ }
+ function ampm2military(hour, amPM) {
+ return (hour % 12) + 12 * int(amPM === self.l10n.amPM[1]);
+ }
+ function military2ampm(hour) {
+ switch (hour % 24) {
+ case 0:
+ case 12:
+ return 12;
+ default:
+ return hour % 12;
+ }
+ }
+ /**
+ * Syncs the selected date object time with user's time input
+ */
+ function setHoursFromInputs() {
+ if (self.hourElement === undefined || self.minuteElement === undefined)
+ return;
+ var hours = (parseInt(self.hourElement.value.slice(-2), 10) || 0) % 24, minutes = (parseInt(self.minuteElement.value, 10) || 0) % 60, seconds = self.secondElement !== undefined
+ ? (parseInt(self.secondElement.value, 10) || 0) % 60
+ : 0;
+ if (self.amPM !== undefined) {
+ hours = ampm2military(hours, self.amPM.textContent);
+ }
+ var limitMinHours = self.config.minTime !== undefined ||
+ (self.config.minDate &&
+ self.minDateHasTime &&
+ self.latestSelectedDateObj &&
+ compareDates(self.latestSelectedDateObj, self.config.minDate, true) ===
+ 0);
+ var limitMaxHours = self.config.maxTime !== undefined ||
+ (self.config.maxDate &&
+ self.maxDateHasTime &&
+ self.latestSelectedDateObj &&
+ compareDates(self.latestSelectedDateObj, self.config.maxDate, true) ===
+ 0);
+ if (limitMaxHours) {
+ var maxTime = self.config.maxTime !== undefined
+ ? self.config.maxTime
+ : self.config.maxDate;
+ hours = Math.min(hours, maxTime.getHours());
+ if (hours === maxTime.getHours())
+ minutes = Math.min(minutes, maxTime.getMinutes());
+ if (minutes === maxTime.getMinutes())
+ seconds = Math.min(seconds, maxTime.getSeconds());
+ }
+ if (limitMinHours) {
+ var minTime = self.config.minTime !== undefined
+ ? self.config.minTime
+ : self.config.minDate;
+ hours = Math.max(hours, minTime.getHours());
+ if (hours === minTime.getHours())
+ minutes = Math.max(minutes, minTime.getMinutes());
+ if (minutes === minTime.getMinutes())
+ seconds = Math.max(seconds, minTime.getSeconds());
+ }
+ setHours(hours, minutes, seconds);
+ }
+ /**
+ * Syncs time input values with a date
+ */
+ function setHoursFromDate(dateObj) {
+ var date = dateObj || self.latestSelectedDateObj;
+ if (date)
+ setHours(date.getHours(), date.getMinutes(), date.getSeconds());
+ }
+ function setDefaultHours() {
+ var hours = self.config.defaultHour;
+ var minutes = self.config.defaultMinute;
+ var seconds = self.config.defaultSeconds;
+ if (self.config.minDate !== undefined) {
+ var minHr = self.config.minDate.getHours();
+ var minMinutes = self.config.minDate.getMinutes();
+ hours = Math.max(hours, minHr);
+ if (hours === minHr)
+ minutes = Math.max(minMinutes, minutes);
+ if (hours === minHr && minutes === minMinutes)
+ seconds = self.config.minDate.getSeconds();
+ }
+ if (self.config.maxDate !== undefined) {
+ var maxHr = self.config.maxDate.getHours();
+ var maxMinutes = self.config.maxDate.getMinutes();
+ hours = Math.min(hours, maxHr);
+ if (hours === maxHr)
+ minutes = Math.min(maxMinutes, minutes);
+ if (hours === maxHr && minutes === maxMinutes)
+ seconds = self.config.maxDate.getSeconds();
+ }
+ setHours(hours, minutes, seconds);
+ }
+ /**
+ * Sets the hours, minutes, and optionally seconds
+ * of the latest selected date object and the
+ * corresponding time inputs
+ * @param {Number} hours the hour. whether its military
+ * or am-pm gets inferred from config
+ * @param {Number} minutes the minutes
+ * @param {Number} seconds the seconds (optional)
+ */
+ function setHours(hours, minutes, seconds) {
+ if (self.latestSelectedDateObj !== undefined) {
+ self.latestSelectedDateObj.setHours(hours % 24, minutes, seconds || 0, 0);
+ }
+ if (!self.hourElement || !self.minuteElement || self.isMobile)
+ return;
+ self.hourElement.value = pad(!self.config.time_24hr
+ ? ((12 + hours) % 12) + 12 * int(hours % 12 === 0)
+ : hours);
+ self.minuteElement.value = pad(minutes);
+ if (self.amPM !== undefined)
+ self.amPM.textContent = self.l10n.amPM[int(hours >= 12)];
+ if (self.secondElement !== undefined)
+ self.secondElement.value = pad(seconds);
+ }
+ /**
+ * Handles the year input and incrementing events
+ * @param {Event} event the keyup or increment event
+ */
+ function onYearInput(event) {
+ var year = parseInt(event.target.value) + (event.delta || 0);
+ if (year / 1000 > 1 ||
+ (event.key === "Enter" && !/[^\d]/.test(year.toString()))) {
+ changeYear(year);
+ }
+ }
+ /**
+ * Essentially addEventListener + tracking
+ * @param {Element} element the element to addEventListener to
+ * @param {String} event the event name
+ * @param {Function} handler the event handler
+ */
+ function bind(element, event, handler, options) {
+ if (event instanceof Array)
+ return event.forEach(function (ev) { return bind(element, ev, handler, options); });
+ if (element instanceof Array)
+ return element.forEach(function (el) { return bind(el, event, handler, options); });
+ element.addEventListener(event, handler, options);
+ self._handlers.push({
+ element: element,
+ event: event,
+ handler: handler,
+ options: options
+ });
+ }
+ /**
+ * A mousedown handler which mimics click.
+ * Minimizes latency, since we don't need to wait for mouseup in most cases.
+ * Also, avoids handling right clicks.
+ *
+ * @param {Function} handler the event handler
+ */
+ function onClick(handler) {
+ return function (evt) {
+ evt.which === 1 && handler(evt);
+ };
+ }
+ function triggerChange() {
+ triggerEvent("onChange");
+ }
+ /**
+ * Adds all the necessary event listeners
+ */
+ function bindEvents() {
+ if (self.config.wrap) {
+ ["open", "close", "toggle", "clear"].forEach(function (evt) {
+ Array.prototype.forEach.call(self.element.querySelectorAll("[data-" + evt + "]"), function (el) {
+ return bind(el, "click", self[evt]);
+ });
+ });
+ }
+ if (self.isMobile) {
+ setupMobile();
+ return;
+ }
+ var debouncedResize = debounce(onResize, 50);
+ self._debouncedChange = debounce(triggerChange, DEBOUNCED_CHANGE_MS);
+ if (self.daysContainer && !/iPhone|iPad|iPod/i.test(navigator.userAgent))
+ bind(self.daysContainer, "mouseover", function (e) {
+ if (self.config.mode === "range")
+ onMouseOver(e.target);
+ });
+ bind(window.document.body, "keydown", onKeyDown);
+ if (!self.config.inline && !self.config.static)
+ bind(window, "resize", debouncedResize);
+ if (window.ontouchstart !== undefined)
+ bind(window.document, "touchstart", documentClick);
+ else
+ bind(window.document, "mousedown", onClick(documentClick));
+ bind(window.document, "focus", documentClick, { capture: true });
+ if (self.config.clickOpens === true) {
+ bind(self._input, "focus", self.open);
+ bind(self._input, "mousedown", onClick(self.open));
+ }
+ if (self.daysContainer !== undefined) {
+ bind(self.monthNav, "mousedown", onClick(onMonthNavClick));
+ bind(self.monthNav, ["keyup", "increment"], onYearInput);
+ bind(self.daysContainer, "mousedown", onClick(selectDate));
+ }
+ if (self.timeContainer !== undefined &&
+ self.minuteElement !== undefined &&
+ self.hourElement !== undefined) {
+ var selText = function (e) {
+ return e.target.select();
+ };
+ bind(self.timeContainer, ["increment"], updateTime);
+ bind(self.timeContainer, "blur", updateTime, { capture: true });
+ bind(self.timeContainer, "mousedown", onClick(timeIncrement));
+ bind([self.hourElement, self.minuteElement], ["focus", "click"], selText);
+ if (self.secondElement !== undefined)
+ bind(self.secondElement, "focus", function () { return self.secondElement && self.secondElement.select(); });
+ if (self.amPM !== undefined) {
+ bind(self.amPM, "mousedown", onClick(function (e) {
+ updateTime(e);
+ triggerChange();
+ }));
+ }
+ }
+ }
+ /**
+ * Set the calendar view to a particular date.
+ * @param {Date} jumpDate the date to set the view to
+ * @param {boolean} triggerChange if change events should be triggered
+ */
+ function jumpToDate(jumpDate, triggerChange) {
+ var jumpTo = jumpDate !== undefined
+ ? self.parseDate(jumpDate)
+ : self.latestSelectedDateObj ||
+ (self.config.minDate && self.config.minDate > self.now
+ ? self.config.minDate
+ : self.config.maxDate && self.config.maxDate < self.now
+ ? self.config.maxDate
+ : self.now);
+ var oldYear = self.currentYear;
+ var oldMonth = self.currentMonth;
+ try {
+ if (jumpTo !== undefined) {
+ self.currentYear = jumpTo.getFullYear();
+ self.currentMonth = jumpTo.getMonth();
+ }
+ }
+ catch (e) {
+ /* istanbul ignore next */
+ e.message = "Invalid date supplied: " + jumpTo;
+ self.config.errorHandler(e);
+ }
+ if (triggerChange && self.currentYear !== oldYear) {
+ triggerEvent("onYearChange");
+ buildMonthSwitch();
+ }
+ if (triggerChange &&
+ (self.currentYear !== oldYear || self.currentMonth !== oldMonth)) {
+ triggerEvent("onMonthChange");
+ }
+ self.redraw();
+ }
+ /**
+ * The up/down arrow handler for time inputs
+ * @param {Event} e the click event
+ */
+ function timeIncrement(e) {
+ if (~e.target.className.indexOf("arrow"))
+ incrementNumInput(e, e.target.classList.contains("arrowUp") ? 1 : -1);
+ }
+ /**
+ * Increments/decrements the value of input associ-
+ * ated with the up/down arrow by dispatching an
+ * "increment" event on the input.
+ *
+ * @param {Event} e the click event
+ * @param {Number} delta the diff (usually 1 or -1)
+ * @param {Element} inputElem the input element
+ */
+ function incrementNumInput(e, delta, inputElem) {
+ var target = e && e.target;
+ var input = inputElem ||
+ (target && target.parentNode && target.parentNode.firstChild);
+ var event = createEvent("increment");
+ event.delta = delta;
+ input && input.dispatchEvent(event);
+ }
+ function build() {
+ var fragment = window.document.createDocumentFragment();
+ self.calendarContainer = createElement("div", "flatpickr-calendar");
+ self.calendarContainer.tabIndex = -1;
+ if (!self.config.noCalendar) {
+ fragment.appendChild(buildMonthNav());
+ self.innerContainer = createElement("div", "flatpickr-innerContainer");
+ if (self.config.weekNumbers) {
+ var _a = buildWeeks(), weekWrapper = _a.weekWrapper, weekNumbers = _a.weekNumbers;
+ self.innerContainer.appendChild(weekWrapper);
+ self.weekNumbers = weekNumbers;
+ self.weekWrapper = weekWrapper;
+ }
+ self.rContainer = createElement("div", "flatpickr-rContainer");
+ self.rContainer.appendChild(buildWeekdays());
+ if (!self.daysContainer) {
+ self.daysContainer = createElement("div", "flatpickr-days");
+ self.daysContainer.tabIndex = -1;
+ }
+ buildDays();
+ self.rContainer.appendChild(self.daysContainer);
+ self.innerContainer.appendChild(self.rContainer);
+ fragment.appendChild(self.innerContainer);
+ }
+ if (self.config.enableTime) {
+ fragment.appendChild(buildTime());
+ }
+ toggleClass(self.calendarContainer, "rangeMode", self.config.mode === "range");
+ toggleClass(self.calendarContainer, "animate", self.config.animate === true);
+ toggleClass(self.calendarContainer, "multiMonth", self.config.showMonths > 1);
+ self.calendarContainer.appendChild(fragment);
+ var customAppend = self.config.appendTo !== undefined &&
+ self.config.appendTo.nodeType !== undefined;
+ if (self.config.inline || self.config.static) {
+ self.calendarContainer.classList.add(self.config.inline ? "inline" : "static");
+ if (self.config.inline) {
+ if (!customAppend && self.element.parentNode)
+ self.element.parentNode.insertBefore(self.calendarContainer, self._input.nextSibling);
+ else if (self.config.appendTo !== undefined)
+ self.config.appendTo.appendChild(self.calendarContainer);
+ }
+ if (self.config.static) {
+ var wrapper = createElement("div", "flatpickr-wrapper");
+ if (self.element.parentNode)
+ self.element.parentNode.insertBefore(wrapper, self.element);
+ wrapper.appendChild(self.element);
+ if (self.altInput)
+ wrapper.appendChild(self.altInput);
+ wrapper.appendChild(self.calendarContainer);
+ }
+ }
+ if (!self.config.static && !self.config.inline)
+ (self.config.appendTo !== undefined
+ ? self.config.appendTo
+ : window.document.body).appendChild(self.calendarContainer);
+ }
+ function createDay(className, date, dayNumber, i) {
+ var dateIsEnabled = isEnabled(date, true), dayElement = createElement("span", "flatpickr-day " + className, date.getDate().toString());
+ dayElement.dateObj = date;
+ dayElement.$i = i;
+ dayElement.setAttribute("aria-label", self.formatDate(date, self.config.ariaDateFormat));
+ if (className.indexOf("hidden") === -1 &&
+ compareDates(date, self.now) === 0) {
+ self.todayDateElem = dayElement;
+ dayElement.classList.add("today");
+ dayElement.setAttribute("aria-current", "date");
+ }
+ if (dateIsEnabled) {
+ dayElement.tabIndex = -1;
+ if (isDateSelected(date)) {
+ dayElement.classList.add("selected");
+ self.selectedDateElem = dayElement;
+ if (self.config.mode === "range") {
+ toggleClass(dayElement, "startRange", self.selectedDates[0] &&
+ compareDates(date, self.selectedDates[0], true) === 0);
+ toggleClass(dayElement, "endRange", self.selectedDates[1] &&
+ compareDates(date, self.selectedDates[1], true) === 0);
+ if (className === "nextMonthDay")
+ dayElement.classList.add("inRange");
+ }
+ }
+ }
+ else {
+ dayElement.classList.add("flatpickr-disabled");
+ }
+ if (self.config.mode === "range") {
+ if (isDateInRange(date) && !isDateSelected(date))
+ dayElement.classList.add("inRange");
+ }
+ if (self.weekNumbers &&
+ self.config.showMonths === 1 &&
+ className !== "prevMonthDay" &&
+ dayNumber % 7 === 1) {
+ self.weekNumbers.insertAdjacentHTML("beforeend", "<span class='flatpickr-day'>" + self.config.getWeek(date) + "</span>");
+ }
+ triggerEvent("onDayCreate", dayElement);
+ return dayElement;
+ }
+ function focusOnDayElem(targetNode) {
+ targetNode.focus();
+ if (self.config.mode === "range")
+ onMouseOver(targetNode);
+ }
+ function getFirstAvailableDay(delta) {
+ var startMonth = delta > 0 ? 0 : self.config.showMonths - 1;
+ var endMonth = delta > 0 ? self.config.showMonths : -1;
+ for (var m = startMonth; m != endMonth; m += delta) {
+ var month = self.daysContainer.children[m];
+ var startIndex = delta > 0 ? 0 : month.children.length - 1;
+ var endIndex = delta > 0 ? month.children.length : -1;
+ for (var i = startIndex; i != endIndex; i += delta) {
+ var c = month.children[i];
+ if (c.className.indexOf("hidden") === -1 && isEnabled(c.dateObj))
+ return c;
+ }
+ }
+ return undefined;
+ }
+ function getNextAvailableDay(current, delta) {
+ var givenMonth = current.className.indexOf("Month") === -1
+ ? current.dateObj.getMonth()
+ : self.currentMonth;
+ var endMonth = delta > 0 ? self.config.showMonths : -1;
+ var loopDelta = delta > 0 ? 1 : -1;
+ for (var m = givenMonth - self.currentMonth; m != endMonth; m += loopDelta) {
+ var month = self.daysContainer.children[m];
+ var startIndex = givenMonth - self.currentMonth === m
+ ? current.$i + delta
+ : delta < 0
+ ? month.children.length - 1
+ : 0;
+ var numMonthDays = month.children.length;
+ for (var i = startIndex; i >= 0 && i < numMonthDays && i != (delta > 0 ? numMonthDays : -1); i += loopDelta) {
+ var c = month.children[i];
+ if (c.className.indexOf("hidden") === -1 &&
+ isEnabled(c.dateObj) &&
+ Math.abs(current.$i - i) >= Math.abs(delta))
+ return focusOnDayElem(c);
+ }
+ }
+ self.changeMonth(loopDelta);
+ focusOnDay(getFirstAvailableDay(loopDelta), 0);
+ return undefined;
+ }
+ function focusOnDay(current, offset) {
+ var dayFocused = isInView(document.activeElement || document.body);
+ var startElem = current !== undefined
+ ? current
+ : dayFocused
+ ? document.activeElement
+ : self.selectedDateElem !== undefined && isInView(self.selectedDateElem)
+ ? self.selectedDateElem
+ : self.todayDateElem !== undefined && isInView(self.todayDateElem)
+ ? self.todayDateElem
+ : getFirstAvailableDay(offset > 0 ? 1 : -1);
+ if (startElem === undefined)
+ return self._input.focus();
+ if (!dayFocused)
+ return focusOnDayElem(startElem);
+ getNextAvailableDay(startElem, offset);
+ }
+ function buildMonthDays(year, month) {
+ var firstOfMonth = (new Date(year, month, 1).getDay() - self.l10n.firstDayOfWeek + 7) % 7;
+ var prevMonthDays = self.utils.getDaysInMonth((month - 1 + 12) % 12);
+ var daysInMonth = self.utils.getDaysInMonth(month), days = window.document.createDocumentFragment(), isMultiMonth = self.config.showMonths > 1, prevMonthDayClass = isMultiMonth ? "prevMonthDay hidden" : "prevMonthDay", nextMonthDayClass = isMultiMonth ? "nextMonthDay hidden" : "nextMonthDay";
+ var dayNumber = prevMonthDays + 1 - firstOfMonth, dayIndex = 0;
+ // prepend days from the ending of previous month
+ for (; dayNumber <= prevMonthDays; dayNumber++, dayIndex++) {
+ days.appendChild(createDay(prevMonthDayClass, new Date(year, month - 1, dayNumber), dayNumber, dayIndex));
+ }
+ // Start at 1 since there is no 0th day
+ for (dayNumber = 1; dayNumber <= daysInMonth; dayNumber++, dayIndex++) {
+ days.appendChild(createDay("", new Date(year, month, dayNumber), dayNumber, dayIndex));
+ }
+ // append days from the next month
+ for (var dayNum = daysInMonth + 1; dayNum <= 42 - firstOfMonth &&
+ (self.config.showMonths === 1 || dayIndex % 7 !== 0); dayNum++, dayIndex++) {
+ days.appendChild(createDay(nextMonthDayClass, new Date(year, month + 1, dayNum % daysInMonth), dayNum, dayIndex));
+ }
+ //updateNavigationCurrentMonth();
+ var dayContainer = createElement("div", "dayContainer");
+ dayContainer.appendChild(days);
+ return dayContainer;
+ }
+ function buildDays() {
+ if (self.daysContainer === undefined) {
+ return;
+ }
+ clearNode(self.daysContainer);
+ // TODO: week numbers for each month
+ if (self.weekNumbers)
+ clearNode(self.weekNumbers);
+ var frag = document.createDocumentFragment();
+ for (var i = 0; i < self.config.showMonths; i++) {
+ var d = new Date(self.currentYear, self.currentMonth, 1);
+ d.setMonth(self.currentMonth + i);
+ frag.appendChild(buildMonthDays(d.getFullYear(), d.getMonth()));
+ }
+ self.daysContainer.appendChild(frag);
+ self.days = self.daysContainer.firstChild;
+ if (self.config.mode === "range" && self.selectedDates.length === 1) {
+ onMouseOver();
+ }
+ }
+ function buildMonthSwitch() {
+ if (self.config.showMonths > 1 ||
+ self.config.monthSelectorType !== "dropdown")
+ return;
+ var shouldBuildMonth = function (month) {
+ if (self.config.minDate !== undefined &&
+ self.currentYear === self.config.minDate.getFullYear() &&
+ month < self.config.minDate.getMonth()) {
+ return false;
+ }
+ return !(self.config.maxDate !== undefined &&
+ self.currentYear === self.config.maxDate.getFullYear() &&
+ month > self.config.maxDate.getMonth());
+ };
+ self.monthsDropdownContainer.tabIndex = -1;
+ self.monthsDropdownContainer.innerHTML = "";
+ for (var i = 0; i < 12; i++) {
+ if (!shouldBuildMonth(i))
+ continue;
+ var month = createElement("option", "flatpickr-monthDropdown-month");
+ month.value = new Date(self.currentYear, i).getMonth().toString();
+ month.textContent = monthToStr(i, self.config.shorthandCurrentMonth, self.l10n);
+ month.tabIndex = -1;
+ if (self.currentMonth === i) {
+ month.selected = true;
+ }
+ self.monthsDropdownContainer.appendChild(month);
+ }
+ }
+ function buildMonth() {
+ var container = createElement("div", "flatpickr-month");
+ var monthNavFragment = window.document.createDocumentFragment();
+ var monthElement;
+ if (self.config.showMonths > 1 ||
+ self.config.monthSelectorType === "static") {
+ monthElement = createElement("span", "cur-month");
+ }
+ else {
+ self.monthsDropdownContainer = createElement("select", "flatpickr-monthDropdown-months");
+ bind(self.monthsDropdownContainer, "change", function (e) {
+ var target = e.target;
+ var selectedMonth = parseInt(target.value, 10);
+ self.changeMonth(selectedMonth - self.currentMonth);
+ triggerEvent("onMonthChange");
+ });
+ buildMonthSwitch();
+ monthElement = self.monthsDropdownContainer;
+ }
+ var yearInput = createNumberInput("cur-year", { tabindex: "-1" });
+ var yearElement = yearInput.getElementsByTagName("input")[0];
+ yearElement.setAttribute("aria-label", self.l10n.yearAriaLabel);
+ if (self.config.minDate) {
+ yearElement.setAttribute("min", self.config.minDate.getFullYear().toString());
+ }
+ if (self.config.maxDate) {
+ yearElement.setAttribute("max", self.config.maxDate.getFullYear().toString());
+ yearElement.disabled =
+ !!self.config.minDate &&
+ self.config.minDate.getFullYear() === self.config.maxDate.getFullYear();
+ }
+ var currentMonth = createElement("div", "flatpickr-current-month");
+ currentMonth.appendChild(monthElement);
+ currentMonth.appendChild(yearInput);
+ monthNavFragment.appendChild(currentMonth);
+ container.appendChild(monthNavFragment);
+ return {
+ container: container,
+ yearElement: yearElement,
+ monthElement: monthElement
+ };
+ }
+ function buildMonths() {
+ clearNode(self.monthNav);
+ self.monthNav.appendChild(self.prevMonthNav);
+ if (self.config.showMonths) {
+ self.yearElements = [];
+ self.monthElements = [];
+ }
+ for (var m = self.config.showMonths; m--;) {
+ var month = buildMonth();
+ self.yearElements.push(month.yearElement);
+ self.monthElements.push(month.monthElement);
+ self.monthNav.appendChild(month.container);
+ }
+ self.monthNav.appendChild(self.nextMonthNav);
+ }
+ function buildMonthNav() {
+ self.monthNav = createElement("div", "flatpickr-months");
+ self.yearElements = [];
+ self.monthElements = [];
+ self.prevMonthNav = createElement("span", "flatpickr-prev-month");
+ self.prevMonthNav.innerHTML = self.config.prevArrow;
+ self.nextMonthNav = createElement("span", "flatpickr-next-month");
+ self.nextMonthNav.innerHTML = self.config.nextArrow;
+ buildMonths();
+ Object.defineProperty(self, "_hidePrevMonthArrow", {
+ get: function () { return self.__hidePrevMonthArrow; },
+ set: function (bool) {
+ if (self.__hidePrevMonthArrow !== bool) {
+ toggleClass(self.prevMonthNav, "flatpickr-disabled", bool);
+ self.__hidePrevMonthArrow = bool;
+ }
+ }
+ });
+ Object.defineProperty(self, "_hideNextMonthArrow", {
+ get: function () { return self.__hideNextMonthArrow; },
+ set: function (bool) {
+ if (self.__hideNextMonthArrow !== bool) {
+ toggleClass(self.nextMonthNav, "flatpickr-disabled", bool);
+ self.__hideNextMonthArrow = bool;
+ }
+ }
+ });
+ self.currentYearElement = self.yearElements[0];
+ updateNavigationCurrentMonth();
+ return self.monthNav;
+ }
+ function buildTime() {
+ self.calendarContainer.classList.add("hasTime");
+ if (self.config.noCalendar)
+ self.calendarContainer.classList.add("noCalendar");
+ self.timeContainer = createElement("div", "flatpickr-time");
+ self.timeContainer.tabIndex = -1;
+ var separator = createElement("span", "flatpickr-time-separator", ":");
+ var hourInput = createNumberInput("flatpickr-hour", {
+ "aria-label": self.l10n.hourAriaLabel
+ });
+ self.hourElement = hourInput.getElementsByTagName("input")[0];
+ var minuteInput = createNumberInput("flatpickr-minute", {
+ "aria-label": self.l10n.minuteAriaLabel
+ });
+ self.minuteElement = minuteInput.getElementsByTagName("input")[0];
+ self.hourElement.tabIndex = self.minuteElement.tabIndex = -1;
+ self.hourElement.value = pad(self.latestSelectedDateObj
+ ? self.latestSelectedDateObj.getHours()
+ : self.config.time_24hr
+ ? self.config.defaultHour
+ : military2ampm(self.config.defaultHour));
+ self.minuteElement.value = pad(self.latestSelectedDateObj
+ ? self.latestSelectedDateObj.getMinutes()
+ : self.config.defaultMinute);
+ self.hourElement.setAttribute("step", self.config.hourIncrement.toString());
+ self.minuteElement.setAttribute("step", self.config.minuteIncrement.toString());
+ self.hourElement.setAttribute("min", self.config.time_24hr ? "0" : "1");
+ self.hourElement.setAttribute("max", self.config.time_24hr ? "23" : "12");
+ self.minuteElement.setAttribute("min", "0");
+ self.minuteElement.setAttribute("max", "59");
+ self.timeContainer.appendChild(hourInput);
+ self.timeContainer.appendChild(separator);
+ self.timeContainer.appendChild(minuteInput);
+ if (self.config.time_24hr)
+ self.timeContainer.classList.add("time24hr");
+ if (self.config.enableSeconds) {
+ self.timeContainer.classList.add("hasSeconds");
+ var secondInput = createNumberInput("flatpickr-second");
+ self.secondElement = secondInput.getElementsByTagName("input")[0];
+ self.secondElement.value = pad(self.latestSelectedDateObj
+ ? self.latestSelectedDateObj.getSeconds()
+ : self.config.defaultSeconds);
+ self.secondElement.setAttribute("step", self.minuteElement.getAttribute("step"));
+ self.secondElement.setAttribute("min", "0");
+ self.secondElement.setAttribute("max", "59");
+ self.timeContainer.appendChild(createElement("span", "flatpickr-time-separator", ":"));
+ self.timeContainer.appendChild(secondInput);
+ }
+ if (!self.config.time_24hr) {
+ // add self.amPM if appropriate
+ self.amPM = createElement("span", "flatpickr-am-pm", self.l10n.amPM[int((self.latestSelectedDateObj
+ ? self.hourElement.value
+ : self.config.defaultHour) > 11)]);
+ self.amPM.title = self.l10n.toggleTitle;
+ self.amPM.tabIndex = -1;
+ self.timeContainer.appendChild(self.amPM);
+ }
+ return self.timeContainer;
+ }
+ function buildWeekdays() {
+ if (!self.weekdayContainer)
+ self.weekdayContainer = createElement("div", "flatpickr-weekdays");
+ else
+ clearNode(self.weekdayContainer);
+ for (var i = self.config.showMonths; i--;) {
+ var container = createElement("div", "flatpickr-weekdaycontainer");
+ self.weekdayContainer.appendChild(container);
+ }
+ updateWeekdays();
+ return self.weekdayContainer;
+ }
+ function updateWeekdays() {
+ var firstDayOfWeek = self.l10n.firstDayOfWeek;
+ var weekdays = self.l10n.weekdays.shorthand.slice();
+ if (firstDayOfWeek > 0 && firstDayOfWeek < weekdays.length) {
+ weekdays = weekdays.splice(firstDayOfWeek, weekdays.length).concat(weekdays.splice(0, firstDayOfWeek));
+ }
+ for (var i = self.config.showMonths; i--;) {
+ self.weekdayContainer.children[i].innerHTML = "\n <span class='flatpickr-weekday'>\n " + weekdays.join("</span><span class='flatpickr-weekday'>") + "\n </span>\n ";
+ }
+ }
+ /* istanbul ignore next */
+ function buildWeeks() {
+ self.calendarContainer.classList.add("hasWeeks");
+ var weekWrapper = createElement("div", "flatpickr-weekwrapper");
+ weekWrapper.appendChild(createElement("span", "flatpickr-weekday", self.l10n.weekAbbreviation));
+ var weekNumbers = createElement("div", "flatpickr-weeks");
+ weekWrapper.appendChild(weekNumbers);
+ return {
+ weekWrapper: weekWrapper,
+ weekNumbers: weekNumbers
+ };
+ }
+ function changeMonth(value, isOffset) {
+ if (isOffset === void 0) { isOffset = true; }
+ var delta = isOffset ? value : value - self.currentMonth;
+ if ((delta < 0 && self._hidePrevMonthArrow === true) ||
+ (delta > 0 && self._hideNextMonthArrow === true))
+ return;
+ self.currentMonth += delta;
+ if (self.currentMonth < 0 || self.currentMonth > 11) {
+ self.currentYear += self.currentMonth > 11 ? 1 : -1;
+ self.currentMonth = (self.currentMonth + 12) % 12;
+ triggerEvent("onYearChange");
+ buildMonthSwitch();
+ }
+ buildDays();
+ triggerEvent("onMonthChange");
+ updateNavigationCurrentMonth();
+ }
+ function clear(triggerChangeEvent, toInitial) {
+ if (triggerChangeEvent === void 0) { triggerChangeEvent = true; }
+ if (toInitial === void 0) { toInitial = true; }
+ self.input.value = "";
+ if (self.altInput !== undefined)
+ self.altInput.value = "";
+ if (self.mobileInput !== undefined)
+ self.mobileInput.value = "";
+ self.selectedDates = [];
+ self.latestSelectedDateObj = undefined;
+ if (toInitial === true) {
+ self.currentYear = self._initialDate.getFullYear();
+ self.currentMonth = self._initialDate.getMonth();
+ }
+ self.showTimeInput = false;
+ if (self.config.enableTime === true) {
+ setDefaultHours();
+ }
+ self.redraw();
+ if (triggerChangeEvent)
+ // triggerChangeEvent is true (default) or an Event
+ triggerEvent("onChange");
+ }
+ function close() {
+ self.isOpen = false;
+ if (!self.isMobile) {
+ if (self.calendarContainer !== undefined) {
+ self.calendarContainer.classList.remove("open");
+ }
+ if (self._input !== undefined) {
+ self._input.classList.remove("active");
+ }
+ }
+ triggerEvent("onClose");
+ }
+ function destroy() {
+ if (self.config !== undefined)
+ triggerEvent("onDestroy");
+ for (var i = self._handlers.length; i--;) {
+ var h = self._handlers[i];
+ h.element.removeEventListener(h.event, h.handler, h.options);
+ }
+ self._handlers = [];
+ if (self.mobileInput) {
+ if (self.mobileInput.parentNode)
+ self.mobileInput.parentNode.removeChild(self.mobileInput);
+ self.mobileInput = undefined;
+ }
+ else if (self.calendarContainer && self.calendarContainer.parentNode) {
+ if (self.config.static && self.calendarContainer.parentNode) {
+ var wrapper = self.calendarContainer.parentNode;
+ wrapper.lastChild && wrapper.removeChild(wrapper.lastChild);
+ if (wrapper.parentNode) {
+ while (wrapper.firstChild)
+ wrapper.parentNode.insertBefore(wrapper.firstChild, wrapper);
+ wrapper.parentNode.removeChild(wrapper);
+ }
+ }
+ else
+ self.calendarContainer.parentNode.removeChild(self.calendarContainer);
+ }
+ if (self.altInput) {
+ self.input.type = "text";
+ if (self.altInput.parentNode)
+ self.altInput.parentNode.removeChild(self.altInput);
+ delete self.altInput;
+ }
+ if (self.input) {
+ self.input.type = self.input._type;
+ self.input.classList.remove("flatpickr-input");
+ self.input.removeAttribute("readonly");
+ self.input.value = "";
+ }
+ [
+ "_showTimeInput",
+ "latestSelectedDateObj",
+ "_hideNextMonthArrow",
+ "_hidePrevMonthArrow",
+ "__hideNextMonthArrow",
+ "__hidePrevMonthArrow",
+ "isMobile",
+ "isOpen",
+ "selectedDateElem",
+ "minDateHasTime",
+ "maxDateHasTime",
+ "days",
+ "daysContainer",
+ "_input",
+ "_positionElement",
+ "innerContainer",
+ "rContainer",
+ "monthNav",
+ "todayDateElem",
+ "calendarContainer",
+ "weekdayContainer",
+ "prevMonthNav",
+ "nextMonthNav",
+ "monthsDropdownContainer",
+ "currentMonthElement",
+ "currentYearElement",
+ "navigationCurrentMonth",
+ "selectedDateElem",
+ "config",
+ ].forEach(function (k) {
+ try {
+ delete self[k];
+ }
+ catch (_) { }
+ });
+ }
+ function isCalendarElem(elem) {
+ if (self.config.appendTo && self.config.appendTo.contains(elem))
+ return true;
+ return self.calendarContainer.contains(elem);
+ }
+ function documentClick(e) {
+ if (self.isOpen && !self.config.inline) {
+ var eventTarget_1 = getEventTarget(e);
+ var isCalendarElement = isCalendarElem(eventTarget_1);
+ var isInput = eventTarget_1 === self.input ||
+ eventTarget_1 === self.altInput ||
+ self.element.contains(eventTarget_1) ||
+ // web components
+ // e.path is not present in all browsers. circumventing typechecks
+ (e.path &&
+ e.path.indexOf &&
+ (~e.path.indexOf(self.input) ||
+ ~e.path.indexOf(self.altInput)));
+ var lostFocus = e.type === "blur"
+ ? isInput &&
+ e.relatedTarget &&
+ !isCalendarElem(e.relatedTarget)
+ : !isInput &&
+ !isCalendarElement &&
+ !isCalendarElem(e.relatedTarget);
+ var isIgnored = !self.config.ignoredFocusElements.some(function (elem) {
+ return elem.contains(eventTarget_1);
+ });
+ if (lostFocus && isIgnored) {
+ self.close();
+ if (self.config.mode === "range" && self.selectedDates.length === 1) {
+ self.clear(false);
+ self.redraw();
+ }
+ }
+ }
+ }
+ function changeYear(newYear) {
+ if (!newYear ||
+ (self.config.minDate && newYear < self.config.minDate.getFullYear()) ||
+ (self.config.maxDate && newYear > self.config.maxDate.getFullYear()))
+ return;
+ var newYearNum = newYear, isNewYear = self.currentYear !== newYearNum;
+ self.currentYear = newYearNum || self.currentYear;
+ if (self.config.maxDate &&
+ self.currentYear === self.config.maxDate.getFullYear()) {
+ self.currentMonth = Math.min(self.config.maxDate.getMonth(), self.currentMonth);
+ }
+ else if (self.config.minDate &&
+ self.currentYear === self.config.minDate.getFullYear()) {
+ self.currentMonth = Math.max(self.config.minDate.getMonth(), self.currentMonth);
+ }
+ if (isNewYear) {
+ self.redraw();
+ triggerEvent("onYearChange");
+ buildMonthSwitch();
+ }
+ }
+ function isEnabled(date, timeless) {
+ if (timeless === void 0) { timeless = true; }
+ var dateToCheck = self.parseDate(date, undefined, timeless); // timeless
+ if ((self.config.minDate &&
+ dateToCheck &&
+ compareDates(dateToCheck, self.config.minDate, timeless !== undefined ? timeless : !self.minDateHasTime) < 0) ||
+ (self.config.maxDate &&
+ dateToCheck &&
+ compareDates(dateToCheck, self.config.maxDate, timeless !== undefined ? timeless : !self.maxDateHasTime) > 0))
+ return false;
+ if (self.config.enable.length === 0 && self.config.disable.length === 0)
+ return true;
+ if (dateToCheck === undefined)
+ return false;
+ var bool = self.config.enable.length > 0, array = bool ? self.config.enable : self.config.disable;
+ for (var i = 0, d = void 0; i < array.length; i++) {
+ d = array[i];
+ if (typeof d === "function" &&
+ d(dateToCheck) // disabled by function
+ )
+ return bool;
+ else if (d instanceof Date &&
+ dateToCheck !== undefined &&
+ d.getTime() === dateToCheck.getTime())
+ // disabled by date
+ return bool;
+ else if (typeof d === "string" && dateToCheck !== undefined) {
+ // disabled by date string
+ var parsed = self.parseDate(d, undefined, true);
+ return parsed && parsed.getTime() === dateToCheck.getTime()
+ ? bool
+ : !bool;
+ }
+ else if (
+ // disabled by range
+ typeof d === "object" &&
+ dateToCheck !== undefined &&
+ d.from &&
+ d.to &&
+ dateToCheck.getTime() >= d.from.getTime() &&
+ dateToCheck.getTime() <= d.to.getTime())
+ return bool;
+ }
+ return !bool;
+ }
+ function isInView(elem) {
+ if (self.daysContainer !== undefined)
+ return (elem.className.indexOf("hidden") === -1 &&
+ self.daysContainer.contains(elem));
+ return false;
+ }
+ function onKeyDown(e) {
+ // e.key e.keyCode
+ // "Backspace" 8
+ // "Tab" 9
+ // "Enter" 13
+ // "Escape" (IE "Esc") 27
+ // "ArrowLeft" (IE "Left") 37
+ // "ArrowUp" (IE "Up") 38
+ // "ArrowRight" (IE "Right") 39
+ // "ArrowDown" (IE "Down") 40
+ // "Delete" (IE "Del") 46
+ var isInput = e.target === self._input;
+ var allowInput = self.config.allowInput;
+ var allowKeydown = self.isOpen && (!allowInput || !isInput);
+ var allowInlineKeydown = self.config.inline && isInput && !allowInput;
+ if (e.keyCode === 13 && isInput) {
+ if (allowInput) {
+ self.setDate(self._input.value, true, e.target === self.altInput
+ ? self.config.altFormat
+ : self.config.dateFormat);
+ return e.target.blur();
+ }
+ else {
+ self.open();
+ }
+ }
+ else if (isCalendarElem(e.target) ||
+ allowKeydown ||
+ allowInlineKeydown) {
+ var isTimeObj = !!self.timeContainer &&
+ self.timeContainer.contains(e.target);
+ switch (e.keyCode) {
+ case 13:
+ if (isTimeObj) {
+ e.preventDefault();
+ updateTime();
+ focusAndClose();
+ }
+ else
+ selectDate(e);
+ break;
+ case 27: // escape
+ e.preventDefault();
+ focusAndClose();
+ break;
+ case 8:
+ case 46:
+ if (isInput && !self.config.allowInput) {
+ e.preventDefault();
+ self.clear();
+ }
+ break;
+ case 37:
+ case 39:
+ if (!isTimeObj && !isInput) {
+ e.preventDefault();
+ if (self.daysContainer !== undefined &&
+ (allowInput === false ||
+ (document.activeElement && isInView(document.activeElement)))) {
+ var delta_1 = e.keyCode === 39 ? 1 : -1;
+ if (!e.ctrlKey)
+ focusOnDay(undefined, delta_1);
+ else {
+ e.stopPropagation();
+ changeMonth(delta_1);
+ focusOnDay(getFirstAvailableDay(1), 0);
+ }
+ }
+ }
+ else if (self.hourElement)
+ self.hourElement.focus();
+ break;
+ case 38:
+ case 40:
+ e.preventDefault();
+ var delta = e.keyCode === 40 ? 1 : -1;
+ if ((self.daysContainer && e.target.$i !== undefined) ||
+ e.target === self.input) {
+ if (e.ctrlKey) {
+ e.stopPropagation();
+ changeYear(self.currentYear - delta);
+ focusOnDay(getFirstAvailableDay(1), 0);
+ }
+ else if (!isTimeObj)
+ focusOnDay(undefined, delta * 7);
+ }
+ else if (e.target === self.currentYearElement) {
+ changeYear(self.currentYear - delta);
+ }
+ else if (self.config.enableTime) {
+ if (!isTimeObj && self.hourElement)
+ self.hourElement.focus();
+ updateTime(e);
+ self._debouncedChange();
+ }
+ break;
+ case 9:
+ if (isTimeObj) {
+ var elems = [
+ self.hourElement,
+ self.minuteElement,
+ self.secondElement,
+ self.amPM,
+ ]
+ .concat(self.pluginElements)
+ .filter(function (x) { return x; });
+ var i = elems.indexOf(e.target);
+ if (i !== -1) {
+ var target = elems[i + (e.shiftKey ? -1 : 1)];
+ e.preventDefault();
+ (target || self._input).focus();
+ }
+ }
+ else if (!self.config.noCalendar &&
+ self.daysContainer &&
+ self.daysContainer.contains(e.target) &&
+ e.shiftKey) {
+ e.preventDefault();
+ self._input.focus();
+ }
+ break;
+ default:
+ break;
+ }
+ }
+ if (self.amPM !== undefined && e.target === self.amPM) {
+ switch (e.key) {
+ case self.l10n.amPM[0].charAt(0):
+ case self.l10n.amPM[0].charAt(0).toLowerCase():
+ self.amPM.textContent = self.l10n.amPM[0];
+ setHoursFromInputs();
+ updateValue();
+ break;
+ case self.l10n.amPM[1].charAt(0):
+ case self.l10n.amPM[1].charAt(0).toLowerCase():
+ self.amPM.textContent = self.l10n.amPM[1];
+ setHoursFromInputs();
+ updateValue();
+ break;
+ }
+ }
+ if (isInput || isCalendarElem(e.target)) {
+ triggerEvent("onKeyDown", e);
+ }
+ }
+ function onMouseOver(elem) {
+ if (self.selectedDates.length !== 1 ||
+ (elem &&
+ (!elem.classList.contains("flatpickr-day") ||
+ elem.classList.contains("flatpickr-disabled"))))
+ return;
+ var hoverDate = elem
+ ? elem.dateObj.getTime()
+ : self.days.firstElementChild.dateObj.getTime(), initialDate = self.parseDate(self.selectedDates[0], undefined, true).getTime(), rangeStartDate = Math.min(hoverDate, self.selectedDates[0].getTime()), rangeEndDate = Math.max(hoverDate, self.selectedDates[0].getTime());
+ var containsDisabled = false;
+ var minRange = 0, maxRange = 0;
+ for (var t = rangeStartDate; t < rangeEndDate; t += duration.DAY) {
+ if (!isEnabled(new Date(t), true)) {
+ containsDisabled =
+ containsDisabled || (t > rangeStartDate && t < rangeEndDate);
+ if (t < initialDate && (!minRange || t > minRange))
+ minRange = t;
+ else if (t > initialDate && (!maxRange || t < maxRange))
+ maxRange = t;
+ }
+ }
+ for (var m = 0; m < self.config.showMonths; m++) {
+ var month = self.daysContainer.children[m];
+ var _loop_1 = function (i, l) {
+ var dayElem = month.children[i], date = dayElem.dateObj;
+ var timestamp = date.getTime();
+ var outOfRange = (minRange > 0 && timestamp < minRange) ||
+ (maxRange > 0 && timestamp > maxRange);
+ if (outOfRange) {
+ dayElem.classList.add("notAllowed");
+ ["inRange", "startRange", "endRange"].forEach(function (c) {
+ dayElem.classList.remove(c);
+ });
+ return "continue";
+ }
+ else if (containsDisabled && !outOfRange)
+ return "continue";
+ ["startRange", "inRange", "endRange", "notAllowed"].forEach(function (c) {
+ dayElem.classList.remove(c);
+ });
+ if (elem !== undefined) {
+ elem.classList.add(hoverDate <= self.selectedDates[0].getTime()
+ ? "startRange"
+ : "endRange");
+ if (initialDate < hoverDate && timestamp === initialDate)
+ dayElem.classList.add("startRange");
+ else if (initialDate > hoverDate && timestamp === initialDate)
+ dayElem.classList.add("endRange");
+ if (timestamp >= minRange &&
+ (maxRange === 0 || timestamp <= maxRange) &&
+ isBetween(timestamp, initialDate, hoverDate))
+ dayElem.classList.add("inRange");
+ }
+ };
+ for (var i = 0, l = month.children.length; i < l; i++) {
+ _loop_1(i, l);
+ }
+ }
+ }
+ function onResize() {
+ if (self.isOpen && !self.config.static && !self.config.inline)
+ positionCalendar();
+ }
+ function setDefaultTime() {
+ self.setDate(self.config.minDate !== undefined
+ ? new Date(self.config.minDate.getTime())
+ : new Date(), true);
+ setDefaultHours();
+ updateValue();
+ }
+ function open(e, positionElement) {
+ if (positionElement === void 0) { positionElement = self._positionElement; }
+ if (self.isMobile === true) {
+ if (e) {
+ e.preventDefault();
+ e.target && e.target.blur();
+ }
+ if (self.mobileInput !== undefined) {
+ self.mobileInput.focus();
+ self.mobileInput.click();
+ }
+ triggerEvent("onOpen");
+ return;
+ }
+ if (self._input.disabled || self.config.inline)
+ return;
+ var wasOpen = self.isOpen;
+ self.isOpen = true;
+ if (!wasOpen) {
+ self.calendarContainer.classList.add("open");
+ self._input.classList.add("active");
+ triggerEvent("onOpen");
+ positionCalendar(positionElement);
+ }
+ if (self.config.enableTime === true && self.config.noCalendar === true) {
+ if (self.selectedDates.length === 0) {
+ setDefaultTime();
+ }
+ if (self.config.allowInput === false &&
+ (e === undefined ||
+ !self.timeContainer.contains(e.relatedTarget))) {
+ setTimeout(function () { return self.hourElement.select(); }, 50);
+ }
+ }
+ }
+ function minMaxDateSetter(type) {
+ return function (date) {
+ var dateObj = (self.config["_" + type + "Date"] = self.parseDate(date, self.config.dateFormat));
+ var inverseDateObj = self.config["_" + (type === "min" ? "max" : "min") + "Date"];
+ if (dateObj !== undefined) {
+ self[type === "min" ? "minDateHasTime" : "maxDateHasTime"] =
+ dateObj.getHours() > 0 ||
+ dateObj.getMinutes() > 0 ||
+ dateObj.getSeconds() > 0;
+ }
+ if (self.selectedDates) {
+ self.selectedDates = self.selectedDates.filter(function (d) { return isEnabled(d); });
+ if (!self.selectedDates.length && type === "min")
+ setHoursFromDate(dateObj);
+ updateValue();
+ }
+ if (self.daysContainer) {
+ redraw();
+ if (dateObj !== undefined)
+ self.currentYearElement[type] = dateObj.getFullYear().toString();
+ else
+ self.currentYearElement.removeAttribute(type);
+ self.currentYearElement.disabled =
+ !!inverseDateObj &&
+ dateObj !== undefined &&
+ inverseDateObj.getFullYear() === dateObj.getFullYear();
+ }
+ };
+ }
+ function parseConfig() {
+ var boolOpts = [
+ "wrap",
+ "weekNumbers",
+ "allowInput",
+ "clickOpens",
+ "time_24hr",
+ "enableTime",
+ "noCalendar",
+ "altInput",
+ "shorthandCurrentMonth",
+ "inline",
+ "static",
+ "enableSeconds",
+ "disableMobile",
+ ];
+ var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
+ var formats = {};
+ self.config.parseDate = userConfig.parseDate;
+ self.config.formatDate = userConfig.formatDate;
+ Object.defineProperty(self.config, "enable", {
+ get: function () { return self.config._enable; },
+ set: function (dates) {
+ self.config._enable = parseDateRules(dates);
+ }
+ });
+ Object.defineProperty(self.config, "disable", {
+ get: function () { return self.config._disable; },
+ set: function (dates) {
+ self.config._disable = parseDateRules(dates);
+ }
+ });
+ var timeMode = userConfig.mode === "time";
+ if (!userConfig.dateFormat && (userConfig.enableTime || timeMode)) {
+ var defaultDateFormat = flatpickr.defaultConfig.dateFormat || defaults.dateFormat;
+ formats.dateFormat =
+ userConfig.noCalendar || timeMode
+ ? "H:i" + (userConfig.enableSeconds ? ":S" : "")
+ : defaultDateFormat + " H:i" + (userConfig.enableSeconds ? ":S" : "");
+ }
+ if (userConfig.altInput &&
+ (userConfig.enableTime || timeMode) &&
+ !userConfig.altFormat) {
+ var defaultAltFormat = flatpickr.defaultConfig.altFormat || defaults.altFormat;
+ formats.altFormat =
+ userConfig.noCalendar || timeMode
+ ? "h:i" + (userConfig.enableSeconds ? ":S K" : " K")
+ : defaultAltFormat + (" h:i" + (userConfig.enableSeconds ? ":S" : "") + " K");
+ }
+ if (!userConfig.altInputClass) {
+ self.config.altInputClass =
+ self.input.className + " " + self.config.altInputClass;
+ }
+ Object.defineProperty(self.config, "minDate", {
+ get: function () { return self.config._minDate; },
+ set: minMaxDateSetter("min")
+ });
+ Object.defineProperty(self.config, "maxDate", {
+ get: function () { return self.config._maxDate; },
+ set: minMaxDateSetter("max")
+ });
+ var minMaxTimeSetter = function (type) { return function (val) {
+ self.config[type === "min" ? "_minTime" : "_maxTime"] = self.parseDate(val, "H:i");
+ }; };
+ Object.defineProperty(self.config, "minTime", {
+ get: function () { return self.config._minTime; },
+ set: minMaxTimeSetter("min")
+ });
+ Object.defineProperty(self.config, "maxTime", {
+ get: function () { return self.config._maxTime; },
+ set: minMaxTimeSetter("max")
+ });
+ if (userConfig.mode === "time") {
+ self.config.noCalendar = true;
+ self.config.enableTime = true;
+ }
+ Object.assign(self.config, formats, userConfig);
+ for (var i = 0; i < boolOpts.length; i++)
+ self.config[boolOpts[i]] =
+ self.config[boolOpts[i]] === true ||
+ self.config[boolOpts[i]] === "true";
+ HOOKS.filter(function (hook) { return self.config[hook] !== undefined; }).forEach(function (hook) {
+ self.config[hook] = arrayify(self.config[hook] || []).map(bindToInstance);
+ });
+ self.isMobile =
+ !self.config.disableMobile &&
+ !self.config.inline &&
+ self.config.mode === "single" &&
+ !self.config.disable.length &&
+ !self.config.enable.length &&
+ !self.config.weekNumbers &&
+ /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);
+ for (var i = 0; i < self.config.plugins.length; i++) {
+ var pluginConf = self.config.plugins[i](self) || {};
+ for (var key in pluginConf) {
+ if (HOOKS.indexOf(key) > -1) {
+ self.config[key] = arrayify(pluginConf[key])
+ .map(bindToInstance)
+ .concat(self.config[key]);
+ }
+ else if (typeof userConfig[key] === "undefined")
+ self.config[key] = pluginConf[key];
+ }
+ }
+ triggerEvent("onParseConfig");
+ }
+ function setupLocale() {
+ if (typeof self.config.locale !== "object" &&
+ typeof flatpickr.l10ns[self.config.locale] === "undefined")
+ self.config.errorHandler(new Error("flatpickr: invalid locale " + self.config.locale));
+ self.l10n = __assign({}, flatpickr.l10ns["default"], (typeof self.config.locale === "object"
+ ? self.config.locale
+ : self.config.locale !== "default"
+ ? flatpickr.l10ns[self.config.locale]
+ : undefined));
+ tokenRegex.K = "(" + self.l10n.amPM[0] + "|" + self.l10n.amPM[1] + "|" + self.l10n.amPM[0].toLowerCase() + "|" + self.l10n.amPM[1].toLowerCase() + ")";
+ var userConfig = __assign({}, instanceConfig, JSON.parse(JSON.stringify(element.dataset || {})));
+ if (userConfig.time_24hr === undefined &&
+ flatpickr.defaultConfig.time_24hr === undefined) {
+ self.config.time_24hr = self.l10n.time_24hr;
+ }
+ self.formatDate = createDateFormatter(self);
+ self.parseDate = createDateParser({ config: self.config, l10n: self.l10n });
+ }
+ function positionCalendar(customPositionElement) {
+ if (self.calendarContainer === undefined)
+ return;
+ triggerEvent("onPreCalendarPosition");
+ var positionElement = customPositionElement || self._positionElement;
+ var calendarHeight = Array.prototype.reduce.call(self.calendarContainer.children, (function (acc, child) { return acc + child.offsetHeight; }), 0), calendarWidth = self.calendarContainer.offsetWidth, configPos = self.config.position.split(" "), configPosVertical = configPos[0], configPosHorizontal = configPos.length > 1 ? configPos[1] : null, inputBounds = positionElement.getBoundingClientRect(), distanceFromBottom = window.innerHeight - inputBounds.bottom, showOnTop = configPosVertical === "above" ||
+ (configPosVertical !== "below" &&
+ distanceFromBottom < calendarHeight &&
+ inputBounds.top > calendarHeight);
+ var top = window.pageYOffset +
+ inputBounds.top +
+ (!showOnTop ? positionElement.offsetHeight + 2 : -calendarHeight - 2);
+ toggleClass(self.calendarContainer, "arrowTop", !showOnTop);
+ toggleClass(self.calendarContainer, "arrowBottom", showOnTop);
+ if (self.config.inline)
+ return;
+ var left = window.pageXOffset +
+ inputBounds.left -
+ (configPosHorizontal != null && configPosHorizontal === "center"
+ ? (calendarWidth - inputBounds.width) / 2
+ : 0);
+ var right = window.document.body.offsetWidth - inputBounds.right;
+ var rightMost = left + calendarWidth > window.document.body.offsetWidth;
+ var centerMost = right + calendarWidth > window.document.body.offsetWidth;
+ toggleClass(self.calendarContainer, "rightMost", rightMost);
+ if (self.config.static)
+ return;
+ self.calendarContainer.style.top = top + "px";
+ if (!rightMost) {
+ self.calendarContainer.style.left = left + "px";
+ self.calendarContainer.style.right = "auto";
+ }
+ else if (!centerMost) {
+ self.calendarContainer.style.left = "auto";
+ self.calendarContainer.style.right = right + "px";
+ }
+ else {
+ var doc = document.styleSheets[0];
+ // some testing environments don't have css support
+ if (doc === undefined)
+ return;
+ var bodyWidth = window.document.body.offsetWidth;
+ var centerLeft = Math.max(0, bodyWidth / 2 - calendarWidth / 2);
+ var centerBefore = ".flatpickr-calendar.centerMost:before";
+ var centerAfter = ".flatpickr-calendar.centerMost:after";
+ var centerIndex = doc.cssRules.length;
+ var centerStyle = "{left:" + inputBounds.left + "px;right:auto;}";
+ toggleClass(self.calendarContainer, "rightMost", false);
+ toggleClass(self.calendarContainer, "centerMost", true);
+ doc.insertRule(centerBefore + "," + centerAfter + centerStyle, centerIndex);
+ self.calendarContainer.style.left = centerLeft + "px";
+ self.calendarContainer.style.right = "auto";
+ }
+ }
+ function redraw() {
+ if (self.config.noCalendar || self.isMobile)
+ return;
+ updateNavigationCurrentMonth();
+ buildDays();
+ }
+ function focusAndClose() {
+ self._input.focus();
+ if (window.navigator.userAgent.indexOf("MSIE") !== -1 ||
+ navigator.msMaxTouchPoints !== undefined) {
+ // hack - bugs in the way IE handles focus keeps the calendar open
+ setTimeout(self.close, 0);
+ }
+ else {
+ self.close();
+ }
+ }
+ function selectDate(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ var isSelectable = function (day) {
+ return day.classList &&
+ day.classList.contains("flatpickr-day") &&
+ !day.classList.contains("flatpickr-disabled") &&
+ !day.classList.contains("notAllowed");
+ };
+ var t = findParent(e.target, isSelectable);
+ if (t === undefined)
+ return;
+ var target = t;
+ var selectedDate = (self.latestSelectedDateObj = new Date(target.dateObj.getTime()));
+ var shouldChangeMonth = (selectedDate.getMonth() < self.currentMonth ||
+ selectedDate.getMonth() >
+ self.currentMonth + self.config.showMonths - 1) &&
+ self.config.mode !== "range";
+ self.selectedDateElem = target;
+ if (self.config.mode === "single")
+ self.selectedDates = [selectedDate];
+ else if (self.config.mode === "multiple") {
+ var selectedIndex = isDateSelected(selectedDate);
+ if (selectedIndex)
+ self.selectedDates.splice(parseInt(selectedIndex), 1);
+ else
+ self.selectedDates.push(selectedDate);
+ }
+ else if (self.config.mode === "range") {
+ if (self.selectedDates.length === 2) {
+ self.clear(false, false);
+ }
+ self.latestSelectedDateObj = selectedDate;
+ self.selectedDates.push(selectedDate);
+ // unless selecting same date twice, sort ascendingly
+ if (compareDates(selectedDate, self.selectedDates[0], true) !== 0)
+ self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
+ }
+ setHoursFromInputs();
+ if (shouldChangeMonth) {
+ var isNewYear = self.currentYear !== selectedDate.getFullYear();
+ self.currentYear = selectedDate.getFullYear();
+ self.currentMonth = selectedDate.getMonth();
+ if (isNewYear) {
+ triggerEvent("onYearChange");
+ buildMonthSwitch();
+ }
+ triggerEvent("onMonthChange");
+ }
+ updateNavigationCurrentMonth();
+ buildDays();
+ updateValue();
+ if (self.config.enableTime)
+ setTimeout(function () { return (self.showTimeInput = true); }, 50);
+ // maintain focus
+ if (!shouldChangeMonth &&
+ self.config.mode !== "range" &&
+ self.config.showMonths === 1)
+ focusOnDayElem(target);
+ else if (self.selectedDateElem !== undefined &&
+ self.hourElement === undefined) {
+ self.selectedDateElem && self.selectedDateElem.focus();
+ }
+ if (self.hourElement !== undefined)
+ self.hourElement !== undefined && self.hourElement.focus();
+ if (self.config.closeOnSelect) {
+ var single = self.config.mode === "single" && !self.config.enableTime;
+ var range = self.config.mode === "range" &&
+ self.selectedDates.length === 2 &&
+ !self.config.enableTime;
+ if (single || range) {
+ focusAndClose();
+ }
+ }
+ triggerChange();
+ }
+ var CALLBACKS = {
+ locale: [setupLocale, updateWeekdays],
+ showMonths: [buildMonths, setCalendarWidth, buildWeekdays],
+ minDate: [jumpToDate],
+ maxDate: [jumpToDate]
+ };
+ function set(option, value) {
+ if (option !== null && typeof option === "object") {
+ Object.assign(self.config, option);
+ for (var key in option) {
+ if (CALLBACKS[key] !== undefined)
+ CALLBACKS[key].forEach(function (x) { return x(); });
+ }
+ }
+ else {
+ self.config[option] = value;
+ if (CALLBACKS[option] !== undefined)
+ CALLBACKS[option].forEach(function (x) { return x(); });
+ else if (HOOKS.indexOf(option) > -1)
+ self.config[option] = arrayify(value);
+ }
+ self.redraw();
+ updateValue(false);
+ }
+ function setSelectedDate(inputDate, format) {
+ var dates = [];
+ if (inputDate instanceof Array)
+ dates = inputDate.map(function (d) { return self.parseDate(d, format); });
+ else if (inputDate instanceof Date || typeof inputDate === "number")
+ dates = [self.parseDate(inputDate, format)];
+ else if (typeof inputDate === "string") {
+ switch (self.config.mode) {
+ case "single":
+ case "time":
+ dates = [self.parseDate(inputDate, format)];
+ break;
+ case "multiple":
+ dates = inputDate
+ .split(self.config.conjunction)
+ .map(function (date) { return self.parseDate(date, format); });
+ break;
+ case "range":
+ dates = inputDate
+ .split(self.l10n.rangeSeparator)
+ .map(function (date) { return self.parseDate(date, format); });
+ break;
+ default:
+ break;
+ }
+ }
+ else
+ self.config.errorHandler(new Error("Invalid date supplied: " + JSON.stringify(inputDate)));
+ self.selectedDates = dates.filter(function (d) { return d instanceof Date && isEnabled(d, false); });
+ if (self.config.mode === "range")
+ self.selectedDates.sort(function (a, b) { return a.getTime() - b.getTime(); });
+ }
+ function setDate(date, triggerChange, format) {
+ if (triggerChange === void 0) { triggerChange = false; }
+ if (format === void 0) { format = self.config.dateFormat; }
+ if ((date !== 0 && !date) || (date instanceof Array && date.length === 0))
+ return self.clear(triggerChange);
+ setSelectedDate(date, format);
+ self.showTimeInput = self.selectedDates.length > 0;
+ self.latestSelectedDateObj =
+ self.selectedDates[self.selectedDates.length - 1];
+ self.redraw();
+ jumpToDate();
+ setHoursFromDate();
+ if (self.selectedDates.length === 0) {
+ self.clear(false);
+ }
+ updateValue(triggerChange);
+ if (triggerChange)
+ triggerEvent("onChange");
+ }
+ function parseDateRules(arr) {
+ return arr
+ .slice()
+ .map(function (rule) {
+ if (typeof rule === "string" ||
+ typeof rule === "number" ||
+ rule instanceof Date) {
+ return self.parseDate(rule, undefined, true);
+ }
+ else if (rule &&
+ typeof rule === "object" &&
+ rule.from &&
+ rule.to)
+ return {
+ from: self.parseDate(rule.from, undefined),
+ to: self.parseDate(rule.to, undefined)
+ };
+ return rule;
+ })
+ .filter(function (x) { return x; }); // remove falsy values
+ }
+ function setupDates() {
+ self.selectedDates = [];
+ self.now = self.parseDate(self.config.now) || new Date();
+ // Workaround IE11 setting placeholder as the input's value
+ var preloadedDate = self.config.defaultDate ||
+ ((self.input.nodeName === "INPUT" ||
+ self.input.nodeName === "TEXTAREA") &&
+ self.input.placeholder &&
+ self.input.value === self.input.placeholder
+ ? null
+ : self.input.value);
+ if (preloadedDate)
+ setSelectedDate(preloadedDate, self.config.dateFormat);
+ self._initialDate =
+ self.selectedDates.length > 0
+ ? self.selectedDates[0]
+ : self.config.minDate &&
+ self.config.minDate.getTime() > self.now.getTime()
+ ? self.config.minDate
+ : self.config.maxDate &&
+ self.config.maxDate.getTime() < self.now.getTime()
+ ? self.config.maxDate
+ : self.now;
+ self.currentYear = self._initialDate.getFullYear();
+ self.currentMonth = self._initialDate.getMonth();
+ if (self.selectedDates.length > 0)
+ self.latestSelectedDateObj = self.selectedDates[0];
+ if (self.config.minTime !== undefined)
+ self.config.minTime = self.parseDate(self.config.minTime, "H:i");
+ if (self.config.maxTime !== undefined)
+ self.config.maxTime = self.parseDate(self.config.maxTime, "H:i");
+ self.minDateHasTime =
+ !!self.config.minDate &&
+ (self.config.minDate.getHours() > 0 ||
+ self.config.minDate.getMinutes() > 0 ||
+ self.config.minDate.getSeconds() > 0);
+ self.maxDateHasTime =
+ !!self.config.maxDate &&
+ (self.config.maxDate.getHours() > 0 ||
+ self.config.maxDate.getMinutes() > 0 ||
+ self.config.maxDate.getSeconds() > 0);
+ Object.defineProperty(self, "showTimeInput", {
+ get: function () { return self._showTimeInput; },
+ set: function (bool) {
+ self._showTimeInput = bool;
+ if (self.calendarContainer)
+ toggleClass(self.calendarContainer, "showTimeInput", bool);
+ self.isOpen && positionCalendar();
+ }
+ });
+ }
+ function setupInputs() {
+ self.input = self.config.wrap
+ ? element.querySelector("[data-input]")
+ : element;
+ /* istanbul ignore next */
+ if (!self.input) {
+ self.config.errorHandler(new Error("Invalid input element specified"));
+ return;
+ }
+ // hack: store previous type to restore it after destroy()
+ self.input._type = self.input.type;
+ self.input.type = "text";
+ self.input.classList.add("flatpickr-input");
+ self._input = self.input;
+ if (self.config.altInput) {
+ // replicate self.element
+ self.altInput = createElement(self.input.nodeName, self.config.altInputClass);
+ self._input = self.altInput;
+ self.altInput.placeholder = self.input.placeholder;
+ self.altInput.disabled = self.input.disabled;
+ self.altInput.required = self.input.required;
+ self.altInput.tabIndex = self.input.tabIndex;
+ self.altInput.type = "text";
+ self.input.setAttribute("type", "hidden");
+ if (!self.config.static && self.input.parentNode)
+ self.input.parentNode.insertBefore(self.altInput, self.input.nextSibling);
+ }
+ if (!self.config.allowInput)
+ self._input.setAttribute("readonly", "readonly");
+ self._positionElement = self.config.positionElement || self._input;
+ }
+ function setupMobile() {
+ var inputType = self.config.enableTime
+ ? self.config.noCalendar
+ ? "time"
+ : "datetime-local"
+ : "date";
+ self.mobileInput = createElement("input", self.input.className + " flatpickr-mobile");
+ self.mobileInput.step = self.input.getAttribute("step") || "any";
+ self.mobileInput.tabIndex = 1;
+ self.mobileInput.type = inputType;
+ self.mobileInput.disabled = self.input.disabled;
+ self.mobileInput.required = self.input.required;
+ self.mobileInput.placeholder = self.input.placeholder;
+ self.mobileFormatStr =
+ inputType === "datetime-local"
+ ? "Y-m-d\\TH:i:S"
+ : inputType === "date"
+ ? "Y-m-d"
+ : "H:i:S";
+ if (self.selectedDates.length > 0) {
+ self.mobileInput.defaultValue = self.mobileInput.value = self.formatDate(self.selectedDates[0], self.mobileFormatStr);
+ }
+ if (self.config.minDate)
+ self.mobileInput.min = self.formatDate(self.config.minDate, "Y-m-d");
+ if (self.config.maxDate)
+ self.mobileInput.max = self.formatDate(self.config.maxDate, "Y-m-d");
+ self.input.type = "hidden";
+ if (self.altInput !== undefined)
+ self.altInput.type = "hidden";
+ try {
+ if (self.input.parentNode)
+ self.input.parentNode.insertBefore(self.mobileInput, self.input.nextSibling);
+ }
+ catch (_a) { }
+ bind(self.mobileInput, "change", function (e) {
+ self.setDate(e.target.value, false, self.mobileFormatStr);
+ triggerEvent("onChange");
+ triggerEvent("onClose");
+ });
+ }
+ function toggle(e) {
+ if (self.isOpen === true)
+ return self.close();
+ self.open(e);
+ }
+ function triggerEvent(event, data) {
+ // If the instance has been destroyed already, all hooks have been removed
+ if (self.config === undefined)
+ return;
+ var hooks = self.config[event];
+ if (hooks !== undefined && hooks.length > 0) {
+ for (var i = 0; hooks[i] && i < hooks.length; i++)
+ hooks[i](self.selectedDates, self.input.value, self, data);
+ }
+ if (event === "onChange") {
+ self.input.dispatchEvent(createEvent("change"));
+ // many front-end frameworks bind to the input event
+ self.input.dispatchEvent(createEvent("input"));
+ }
+ }
+ function createEvent(name) {
+ var e = document.createEvent("Event");
+ e.initEvent(name, true, true);
+ return e;
+ }
+ function isDateSelected(date) {
+ for (var i = 0; i < self.selectedDates.length; i++) {
+ if (compareDates(self.selectedDates[i], date) === 0)
+ return "" + i;
+ }
+ return false;
+ }
+ function isDateInRange(date) {
+ if (self.config.mode !== "range" || self.selectedDates.length < 2)
+ return false;
+ return (compareDates(date, self.selectedDates[0]) >= 0 &&
+ compareDates(date, self.selectedDates[1]) <= 0);
+ }
+ function updateNavigationCurrentMonth() {
+ if (self.config.noCalendar || self.isMobile || !self.monthNav)
+ return;
+ self.yearElements.forEach(function (yearElement, i) {
+ var d = new Date(self.currentYear, self.currentMonth, 1);
+ d.setMonth(self.currentMonth + i);
+ if (self.config.showMonths > 1 ||
+ self.config.monthSelectorType === "static") {
+ self.monthElements[i].textContent =
+ monthToStr(d.getMonth(), self.config.shorthandCurrentMonth, self.l10n) + " ";
+ }
+ else {
+ self.monthsDropdownContainer.value = d.getMonth().toString();
+ }
+ yearElement.value = d.getFullYear().toString();
+ });
+ self._hidePrevMonthArrow =
+ self.config.minDate !== undefined &&
+ (self.currentYear === self.config.minDate.getFullYear()
+ ? self.currentMonth <= self.config.minDate.getMonth()
+ : self.currentYear < self.config.minDate.getFullYear());
+ self._hideNextMonthArrow =
+ self.config.maxDate !== undefined &&
+ (self.currentYear === self.config.maxDate.getFullYear()
+ ? self.currentMonth + 1 > self.config.maxDate.getMonth()
+ : self.currentYear > self.config.maxDate.getFullYear());
+ }
+ function getDateStr(format) {
+ return self.selectedDates
+ .map(function (dObj) { return self.formatDate(dObj, format); })
+ .filter(function (d, i, arr) {
+ return self.config.mode !== "range" ||
+ self.config.enableTime ||
+ arr.indexOf(d) === i;
+ })
+ .join(self.config.mode !== "range"
+ ? self.config.conjunction
+ : self.l10n.rangeSeparator);
+ }
+ /**
+ * Updates the values of inputs associated with the calendar
+ */
+ function updateValue(triggerChange) {
+ if (triggerChange === void 0) { triggerChange = true; }
+ if (self.mobileInput !== undefined && self.mobileFormatStr) {
+ self.mobileInput.value =
+ self.latestSelectedDateObj !== undefined
+ ? self.formatDate(self.latestSelectedDateObj, self.mobileFormatStr)
+ : "";
+ }
+ self.input.value = getDateStr(self.config.dateFormat);
+ if (self.altInput !== undefined) {
+ self.altInput.value = getDateStr(self.config.altFormat);
+ }
+ if (triggerChange !== false)
+ triggerEvent("onValueUpdate");
+ }
+ function onMonthNavClick(e) {
+ var isPrevMonth = self.prevMonthNav.contains(e.target);
+ var isNextMonth = self.nextMonthNav.contains(e.target);
+ if (isPrevMonth || isNextMonth) {
+ changeMonth(isPrevMonth ? -1 : 1);
+ }
+ else if (self.yearElements.indexOf(e.target) >= 0) {
+ e.target.select();
+ }
+ else if (e.target.classList.contains("arrowUp")) {
+ self.changeYear(self.currentYear + 1);
+ }
+ else if (e.target.classList.contains("arrowDown")) {
+ self.changeYear(self.currentYear - 1);
+ }
+ }
+ function timeWrapper(e) {
+ e.preventDefault();
+ var isKeyDown = e.type === "keydown", input = e.target;
+ if (self.amPM !== undefined && e.target === self.amPM) {
+ self.amPM.textContent =
+ self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
+ }
+ var min = parseFloat(input.getAttribute("min")), max = parseFloat(input.getAttribute("max")), step = parseFloat(input.getAttribute("step")), curValue = parseInt(input.value, 10), delta = e.delta ||
+ (isKeyDown ? (e.which === 38 ? 1 : -1) : 0);
+ var newValue = curValue + step * delta;
+ if (typeof input.value !== "undefined" && input.value.length === 2) {
+ var isHourElem = input === self.hourElement, isMinuteElem = input === self.minuteElement;
+ if (newValue < min) {
+ newValue =
+ max +
+ newValue +
+ int(!isHourElem) +
+ (int(isHourElem) && int(!self.amPM));
+ if (isMinuteElem)
+ incrementNumInput(undefined, -1, self.hourElement);
+ }
+ else if (newValue > max) {
+ newValue =
+ input === self.hourElement ? newValue - max - int(!self.amPM) : min;
+ if (isMinuteElem)
+ incrementNumInput(undefined, 1, self.hourElement);
+ }
+ if (self.amPM &&
+ isHourElem &&
+ (step === 1
+ ? newValue + curValue === 23
+ : Math.abs(newValue - curValue) > step)) {
+ self.amPM.textContent =
+ self.l10n.amPM[int(self.amPM.textContent === self.l10n.amPM[0])];
+ }
+ input.value = pad(newValue);
+ }
+ }
+ init();
+ return self;
+ }
+ /* istanbul ignore next */
+ function _flatpickr(nodeList, config) {
+ // static list
+ var nodes = Array.prototype.slice
+ .call(nodeList)
+ .filter(function (x) { return x instanceof HTMLElement; });
+ var instances = [];
+ for (var i = 0; i < nodes.length; i++) {
+ var node = nodes[i];
+ try {
+ if (node.getAttribute("data-fp-omit") !== null)
+ continue;
+ if (node._flatpickr !== undefined) {
+ node._flatpickr.destroy();
+ node._flatpickr = undefined;
+ }
+ node._flatpickr = FlatpickrInstance(node, config || {});
+ instances.push(node._flatpickr);
+ }
+ catch (e) {
+ console.error(e);
+ }
+ }
+ return instances.length === 1 ? instances[0] : instances;
+ }
+ /* istanbul ignore next */
+ if (typeof HTMLElement !== "undefined" &&
+ typeof HTMLCollection !== "undefined" &&
+ typeof NodeList !== "undefined") {
+ // browser env
+ HTMLCollection.prototype.flatpickr = NodeList.prototype.flatpickr = function (config) {
+ return _flatpickr(this, config);
+ };
+ HTMLElement.prototype.flatpickr = function (config) {
+ return _flatpickr([this], config);
+ };
+ }
+ /* istanbul ignore next */
+ var flatpickr = function (selector, config) {
+ if (typeof selector === "string") {
+ return _flatpickr(window.document.querySelectorAll(selector), config);
+ }
+ else if (selector instanceof Node) {
+ return _flatpickr([selector], config);
+ }
+ else {
+ return _flatpickr(selector, config);
+ }
+ };
+ /* istanbul ignore next */
+ flatpickr.defaultConfig = {};
+ flatpickr.l10ns = {
+ en: __assign({}, english),
+ "default": __assign({}, english)
+ };
+ flatpickr.localize = function (l10n) {
+ flatpickr.l10ns["default"] = __assign({}, flatpickr.l10ns["default"], l10n);
+ };
+ flatpickr.setDefaults = function (config) {
+ flatpickr.defaultConfig = __assign({}, flatpickr.defaultConfig, config);
+ };
+ flatpickr.parseDate = createDateParser({});
+ flatpickr.formatDate = createDateFormatter({});
+ flatpickr.compareDates = compareDates;
+ /* istanbul ignore next */
+ if (typeof jQuery !== "undefined" && typeof jQuery.fn !== "undefined") {
+ jQuery.fn.flatpickr = function (config) {
+ return _flatpickr(this, config);
+ };
+ }
+ // eslint-disable-next-line @typescript-eslint/camelcase
+ Date.prototype.fp_incr = function (days) {
+ return new Date(this.getFullYear(), this.getMonth(), this.getDate() + (typeof days === "string" ? parseInt(days, 10) : days));
+ };
+ if (typeof window !== "undefined") {
+ window.flatpickr = flatpickr;
+ }
+
+ return flatpickr;
+
+}));
--- /dev/null
+.flatpickr-calendar{background:transparent;opacity:0;display:none;text-align:center;visibility:hidden;padding:0;-webkit-animation:none;animation:none;direction:ltr;border:0;font-size:14px;line-height:24px;border-radius:5px;position:absolute;width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;-ms-touch-action:manipulation;touch-action:manipulation;background:#fff;-webkit-box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);box-shadow:1px 0 0 #e6e6e6,-1px 0 0 #e6e6e6,0 1px 0 #e6e6e6,0 -1px 0 #e6e6e6,0 3px 13px rgba(0,0,0,0.08);}.flatpickr-calendar.open,.flatpickr-calendar.inline{opacity:1;max-height:640px;visibility:visible}.flatpickr-calendar.open{display:inline-block;z-index:99999}.flatpickr-calendar.animate.open{-webkit-animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1);animation:fpFadeInDown 300ms cubic-bezier(.23,1,.32,1)}.flatpickr-calendar.inline{display:block;position:relative;top:2px}.flatpickr-calendar.static{position:absolute;top:calc(100% + 2px);}.flatpickr-calendar.static.open{z-index:999;display:block}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7){-webkit-box-shadow:none !important;box-shadow:none !important}.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1){-webkit-box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-2px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-calendar .hasWeeks .dayContainer,.flatpickr-calendar .hasTime .dayContainer{border-bottom:0;border-bottom-right-radius:0;border-bottom-left-radius:0}.flatpickr-calendar .hasWeeks .dayContainer{border-left:0}.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time{height:40px;border-top:1px solid #e6e6e6}.flatpickr-calendar.noCalendar.hasTime .flatpickr-time{height:auto}.flatpickr-calendar:before,.flatpickr-calendar:after{position:absolute;display:block;pointer-events:none;border:solid transparent;content:'';height:0;width:0;left:22px}.flatpickr-calendar.rightMost:before,.flatpickr-calendar.rightMost:after{left:auto;right:22px}.flatpickr-calendar:before{border-width:5px;margin:0 -5px}.flatpickr-calendar:after{border-width:4px;margin:0 -4px}.flatpickr-calendar.arrowTop:before,.flatpickr-calendar.arrowTop:after{bottom:100%}.flatpickr-calendar.arrowTop:before{border-bottom-color:#e6e6e6}.flatpickr-calendar.arrowTop:after{border-bottom-color:#fff}.flatpickr-calendar.arrowBottom:before,.flatpickr-calendar.arrowBottom:after{top:100%}.flatpickr-calendar.arrowBottom:before{border-top-color:#e6e6e6}.flatpickr-calendar.arrowBottom:after{border-top-color:#fff}.flatpickr-calendar:focus{outline:0}.flatpickr-wrapper{position:relative;display:inline-block}.flatpickr-months{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-months .flatpickr-month{background:transparent;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);height:34px;line-height:1;text-align:center;position:relative;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;overflow:hidden;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}.flatpickr-months .flatpickr-prev-month,.flatpickr-months .flatpickr-next-month{text-decoration:none;cursor:pointer;position:absolute;top:0;height:34px;padding:10px;z-index:3;color:rgba(0,0,0,0.9);fill:rgba(0,0,0,0.9);}.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,.flatpickr-months .flatpickr-next-month.flatpickr-disabled{display:none}.flatpickr-months .flatpickr-prev-month i,.flatpickr-months .flatpickr-next-month i{position:relative}.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,.flatpickr-months .flatpickr-next-month.flatpickr-prev-month{/*
+ /*rtl:begin:ignore*/left:0;/*
+ /*rtl:end:ignore*/}/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,.flatpickr-months .flatpickr-next-month.flatpickr-next-month{/*
+ /*rtl:begin:ignore*/right:0;/*
+ /*rtl:end:ignore*/}/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,.flatpickr-months .flatpickr-next-month:hover{color:#959ea9;}.flatpickr-months .flatpickr-prev-month:hover svg,.flatpickr-months .flatpickr-next-month:hover svg{fill:#f64747}.flatpickr-months .flatpickr-prev-month svg,.flatpickr-months .flatpickr-next-month svg{width:14px;height:14px;}.flatpickr-months .flatpickr-prev-month svg path,.flatpickr-months .flatpickr-next-month svg path{-webkit-transition:fill .1s;transition:fill .1s;fill:inherit}.numInputWrapper{position:relative;height:auto;}.numInputWrapper input,.numInputWrapper span{display:inline-block}.numInputWrapper input{width:100%;}.numInputWrapper input::-ms-clear{display:none}.numInputWrapper input::-webkit-outer-spin-button,.numInputWrapper input::-webkit-inner-spin-button{margin:0;-webkit-appearance:none}.numInputWrapper span{position:absolute;right:0;width:14px;padding:0 4px 0 2px;height:50%;line-height:50%;opacity:0;cursor:pointer;border:1px solid rgba(57,57,57,0.15);-webkit-box-sizing:border-box;box-sizing:border-box;}.numInputWrapper span:hover{background:rgba(0,0,0,0.1)}.numInputWrapper span:active{background:rgba(0,0,0,0.2)}.numInputWrapper span:after{display:block;content:"";position:absolute}.numInputWrapper span.arrowUp{top:0;border-bottom:0;}.numInputWrapper span.arrowUp:after{border-left:4px solid transparent;border-right:4px solid transparent;border-bottom:4px solid rgba(57,57,57,0.6);top:26%}.numInputWrapper span.arrowDown{top:50%;}.numInputWrapper span.arrowDown:after{border-left:4px solid transparent;border-right:4px solid transparent;border-top:4px solid rgba(57,57,57,0.6);top:40%}.numInputWrapper span svg{width:inherit;height:auto;}.numInputWrapper span svg path{fill:rgba(0,0,0,0.5)}.numInputWrapper:hover{background:rgba(0,0,0,0.05);}.numInputWrapper:hover span{opacity:1}.flatpickr-current-month{font-size:135%;line-height:inherit;font-weight:300;color:inherit;position:absolute;width:75%;left:12.5%;padding:7.48px 0 0 0;line-height:1;height:34px;display:inline-block;text-align:center;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);}.flatpickr-current-month span.cur-month{font-family:inherit;font-weight:700;color:inherit;display:inline-block;margin-left:.5ch;padding:0;}.flatpickr-current-month span.cur-month:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .numInputWrapper{width:6ch;width:7ch\0;display:inline-block;}.flatpickr-current-month .numInputWrapper span.arrowUp:after{border-bottom-color:rgba(0,0,0,0.9)}.flatpickr-current-month .numInputWrapper span.arrowDown:after{border-top-color:rgba(0,0,0,0.9)}.flatpickr-current-month input.cur-year{background:transparent;-webkit-box-sizing:border-box;box-sizing:border-box;color:inherit;cursor:text;padding:0 0 0 .5ch;margin:0;display:inline-block;font-size:inherit;font-family:inherit;font-weight:300;line-height:inherit;height:auto;border:0;border-radius:0;vertical-align:initial;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-current-month input.cur-year:focus{outline:0}.flatpickr-current-month input.cur-year[disabled],.flatpickr-current-month input.cur-year[disabled]:hover{font-size:100%;color:rgba(0,0,0,0.5);background:transparent;pointer-events:none}.flatpickr-current-month .flatpickr-monthDropdown-months{appearance:menulist;background:transparent;border:none;border-radius:0;box-sizing:border-box;color:inherit;cursor:pointer;font-size:inherit;font-family:inherit;font-weight:300;height:auto;line-height:inherit;margin:-1px 0 0 0;outline:none;padding:0 0 0 .5ch;position:relative;vertical-align:initial;-webkit-box-sizing:border-box;-webkit-appearance:menulist;-moz-appearance:menulist;width:auto;}.flatpickr-current-month .flatpickr-monthDropdown-months:focus,.flatpickr-current-month .flatpickr-monthDropdown-months:active{outline:none}.flatpickr-current-month .flatpickr-monthDropdown-months:hover{background:rgba(0,0,0,0.05)}.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month{background-color:transparent;outline:none;padding:0}.flatpickr-weekdays{background:transparent;text-align:center;overflow:hidden;width:100%;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:center;-webkit-align-items:center;-ms-flex-align:center;align-items:center;height:28px;}.flatpickr-weekdays .flatpickr-weekdaycontainer{display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1}span.flatpickr-weekday{cursor:default;font-size:90%;background:transparent;color:rgba(0,0,0,0.54);line-height:1;margin:0;text-align:center;display:block;-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;font-weight:bolder}.dayContainer,.flatpickr-weeks{padding:1px 0 0 0}.flatpickr-days{position:relative;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-align:start;-webkit-align-items:flex-start;-ms-flex-align:start;align-items:flex-start;width:307.875px;}.flatpickr-days:focus{outline:0}.dayContainer{padding:0;outline:0;text-align:left;width:307.875px;min-width:307.875px;max-width:307.875px;-webkit-box-sizing:border-box;box-sizing:border-box;display:inline-block;display:-ms-flexbox;display:-webkit-box;display:-webkit-flex;display:flex;-webkit-flex-wrap:wrap;flex-wrap:wrap;-ms-flex-wrap:wrap;-ms-flex-pack:justify;-webkit-justify-content:space-around;justify-content:space-around;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0);opacity:1;}.dayContainer + .dayContainer{-webkit-box-shadow:-1px 0 0 #e6e6e6;box-shadow:-1px 0 0 #e6e6e6}.flatpickr-day{background:none;border:1px solid transparent;border-radius:150px;-webkit-box-sizing:border-box;box-sizing:border-box;color:#393939;cursor:pointer;font-weight:400;width:14.2857143%;-webkit-flex-basis:14.2857143%;-ms-flex-preferred-size:14.2857143%;flex-basis:14.2857143%;max-width:39px;height:39px;line-height:39px;margin:0;display:inline-block;position:relative;-webkit-box-pack:center;-webkit-justify-content:center;-ms-flex-pack:center;justify-content:center;text-align:center;}.flatpickr-day.inRange,.flatpickr-day.prevMonthDay.inRange,.flatpickr-day.nextMonthDay.inRange,.flatpickr-day.today.inRange,.flatpickr-day.prevMonthDay.today.inRange,.flatpickr-day.nextMonthDay.today.inRange,.flatpickr-day:hover,.flatpickr-day.prevMonthDay:hover,.flatpickr-day.nextMonthDay:hover,.flatpickr-day:focus,.flatpickr-day.prevMonthDay:focus,.flatpickr-day.nextMonthDay:focus{cursor:pointer;outline:0;background:#e6e6e6;border-color:#e6e6e6}.flatpickr-day.today{border-color:#959ea9;}.flatpickr-day.today:hover,.flatpickr-day.today:focus{border-color:#959ea9;background:#959ea9;color:#fff}.flatpickr-day.selected,.flatpickr-day.startRange,.flatpickr-day.endRange,.flatpickr-day.selected.inRange,.flatpickr-day.startRange.inRange,.flatpickr-day.endRange.inRange,.flatpickr-day.selected:focus,.flatpickr-day.startRange:focus,.flatpickr-day.endRange:focus,.flatpickr-day.selected:hover,.flatpickr-day.startRange:hover,.flatpickr-day.endRange:hover,.flatpickr-day.selected.prevMonthDay,.flatpickr-day.startRange.prevMonthDay,.flatpickr-day.endRange.prevMonthDay,.flatpickr-day.selected.nextMonthDay,.flatpickr-day.startRange.nextMonthDay,.flatpickr-day.endRange.nextMonthDay{background:#569ff7;-webkit-box-shadow:none;box-shadow:none;color:#fff;border-color:#569ff7}.flatpickr-day.selected.startRange,.flatpickr-day.startRange.startRange,.flatpickr-day.endRange.startRange{border-radius:50px 0 0 50px}.flatpickr-day.selected.endRange,.flatpickr-day.startRange.endRange,.flatpickr-day.endRange.endRange{border-radius:0 50px 50px 0}.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)){-webkit-box-shadow:-10px 0 0 #569ff7;box-shadow:-10px 0 0 #569ff7}.flatpickr-day.selected.startRange.endRange,.flatpickr-day.startRange.startRange.endRange,.flatpickr-day.endRange.startRange.endRange{border-radius:50px}.flatpickr-day.inRange{border-radius:0;-webkit-box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6;box-shadow:-5px 0 0 #e6e6e6,5px 0 0 #e6e6e6}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover,.flatpickr-day.prevMonthDay,.flatpickr-day.nextMonthDay,.flatpickr-day.notAllowed,.flatpickr-day.notAllowed.prevMonthDay,.flatpickr-day.notAllowed.nextMonthDay{color:rgba(57,57,57,0.3);background:transparent;border-color:transparent;cursor:default}.flatpickr-day.flatpickr-disabled,.flatpickr-day.flatpickr-disabled:hover{cursor:not-allowed;color:rgba(57,57,57,0.1)}.flatpickr-day.week.selected{border-radius:0;-webkit-box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7;box-shadow:-5px 0 0 #569ff7,5px 0 0 #569ff7}.flatpickr-day.hidden{visibility:hidden}.rangeMode .flatpickr-day{margin-top:1px}.flatpickr-weekwrapper{float:left;}.flatpickr-weekwrapper .flatpickr-weeks{padding:0 12px;-webkit-box-shadow:1px 0 0 #e6e6e6;box-shadow:1px 0 0 #e6e6e6}.flatpickr-weekwrapper .flatpickr-weekday{float:none;width:100%;line-height:28px}.flatpickr-weekwrapper span.flatpickr-day,.flatpickr-weekwrapper span.flatpickr-day:hover{display:block;width:100%;max-width:none;color:rgba(57,57,57,0.3);background:transparent;cursor:default;border:none}.flatpickr-innerContainer{display:block;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;}.flatpickr-rContainer{display:inline-block;padding:0;-webkit-box-sizing:border-box;box-sizing:border-box}.flatpickr-time{text-align:center;outline:0;display:block;height:0;line-height:40px;max-height:40px;-webkit-box-sizing:border-box;box-sizing:border-box;overflow:hidden;display:-webkit-box;display:-webkit-flex;display:-ms-flexbox;display:flex;}.flatpickr-time:after{content:"";display:table;clear:both}.flatpickr-time .numInputWrapper{-webkit-box-flex:1;-webkit-flex:1;-ms-flex:1;flex:1;width:40%;height:40px;float:left;}.flatpickr-time .numInputWrapper span.arrowUp:after{border-bottom-color:#393939}.flatpickr-time .numInputWrapper span.arrowDown:after{border-top-color:#393939}.flatpickr-time.hasSeconds .numInputWrapper{width:26%}.flatpickr-time.time24hr .numInputWrapper{width:49%}.flatpickr-time input{background:transparent;-webkit-box-shadow:none;box-shadow:none;border:0;border-radius:0;text-align:center;margin:0;padding:0;height:inherit;line-height:inherit;color:#393939;font-size:14px;position:relative;-webkit-box-sizing:border-box;box-sizing:border-box;-webkit-appearance:textfield;-moz-appearance:textfield;appearance:textfield;}.flatpickr-time input.flatpickr-hour{font-weight:bold}.flatpickr-time input.flatpickr-minute,.flatpickr-time input.flatpickr-second{font-weight:400}.flatpickr-time input:focus{outline:0;border:0}.flatpickr-time .flatpickr-time-separator,.flatpickr-time .flatpickr-am-pm{height:inherit;float:left;line-height:inherit;color:#393939;font-weight:bold;width:2%;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-align-self:center;-ms-flex-item-align:center;align-self:center}.flatpickr-time .flatpickr-am-pm{outline:0;width:18%;cursor:pointer;text-align:center;font-weight:400}.flatpickr-time input:hover,.flatpickr-time .flatpickr-am-pm:hover,.flatpickr-time input:focus,.flatpickr-time .flatpickr-am-pm:focus{background:#eee}.flatpickr-input[readonly]{cursor:pointer}@-webkit-keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}@keyframes fpFadeInDown{from{opacity:0;-webkit-transform:translate3d(0,-20px,0);transform:translate3d(0,-20px,0)}to{opacity:1;-webkit-transform:translate3d(0,0,0);transform:translate3d(0,0,0)}}
\ No newline at end of file
--- /dev/null
+/* flatpickr v4.6.2,, @license MIT */
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):(e=e||self).flatpickr=t()}(this,function(){"use strict";var e=function(){return(e=Object.assign||function(e){for(var t,n=1,a=arguments.length;n<a;n++)for(var i in t=arguments[n])Object.prototype.hasOwnProperty.call(t,i)&&(e[i]=t[i]);return e}).apply(this,arguments)},t=["onChange","onClose","onDayCreate","onDestroy","onKeyDown","onMonthChange","onOpen","onParseConfig","onReady","onValueUpdate","onYearChange","onPreCalendarPosition"],n={_disable:[],_enable:[],allowInput:!1,altFormat:"F j, Y",altInput:!1,altInputClass:"form-control input",animate:"object"==typeof window&&-1===window.navigator.userAgent.indexOf("MSIE"),ariaDateFormat:"F j, Y",clickOpens:!0,closeOnSelect:!0,conjunction:", ",dateFormat:"Y-m-d",defaultHour:12,defaultMinute:0,defaultSeconds:0,disable:[],disableMobile:!1,enable:[],enableSeconds:!1,enableTime:!1,errorHandler:function(e){return"undefined"!=typeof console&&console.warn(e)},getWeek:function(e){var t=new Date(e.getTime());t.setHours(0,0,0,0),t.setDate(t.getDate()+3-(t.getDay()+6)%7);var n=new Date(t.getFullYear(),0,4);return 1+Math.round(((t.getTime()-n.getTime())/864e5-3+(n.getDay()+6)%7)/7)},hourIncrement:1,ignoredFocusElements:[],inline:!1,locale:"default",minuteIncrement:5,mode:"single",monthSelectorType:"dropdown",nextArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",noCalendar:!1,now:new Date,onChange:[],onClose:[],onDayCreate:[],onDestroy:[],onKeyDown:[],onMonthChange:[],onOpen:[],onParseConfig:[],onReady:[],onValueUpdate:[],onYearChange:[],onPreCalendarPosition:[],plugins:[],position:"auto",positionElement:void 0,prevArrow:"<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",shorthandCurrentMonth:!1,showMonths:1,static:!1,time_24hr:!1,weekNumbers:!1,wrap:!1},a={weekdays:{shorthand:["Sun","Mon","Tue","Wed","Thu","Fri","Sat"],longhand:["Sunday","Monday","Tuesday","Wednesday","Thursday","Friday","Saturday"]},months:{shorthand:["Jan","Feb","Mar","Apr","May","Jun","Jul","Aug","Sep","Oct","Nov","Dec"],longhand:["January","February","March","April","May","June","July","August","September","October","November","December"]},daysInMonth:[31,28,31,30,31,30,31,31,30,31,30,31],firstDayOfWeek:0,ordinal:function(e){var t=e%100;if(t>3&&t<21)return"th";switch(t%10){case 1:return"st";case 2:return"nd";case 3:return"rd";default:return"th"}},rangeSeparator:" to ",weekAbbreviation:"Wk",scrollTitle:"Scroll to increment",toggleTitle:"Click to toggle",amPM:["AM","PM"],yearAriaLabel:"Year",hourAriaLabel:"Hour",minuteAriaLabel:"Minute",time_24hr:!1},i=function(e){return("0"+e).slice(-2)},o=function(e){return!0===e?1:0};function r(e,t,n){var a;return void 0===n&&(n=!1),function(){var i=this,o=arguments;null!==a&&clearTimeout(a),a=window.setTimeout(function(){a=null,n||e.apply(i,o)},t),n&&!a&&e.apply(i,o)}}var l=function(e){return e instanceof Array?e:[e]};function c(e,t,n){if(!0===n)return e.classList.add(t);e.classList.remove(t)}function d(e,t,n){var a=window.document.createElement(e);return t=t||"",n=n||"",a.className=t,void 0!==n&&(a.textContent=n),a}function s(e){for(;e.firstChild;)e.removeChild(e.firstChild)}function u(e,t){var n=d("div","numInputWrapper"),a=d("input","numInput "+e),i=d("span","arrowUp"),o=d("span","arrowDown");if(-1===navigator.userAgent.indexOf("MSIE 9.0")?a.type="number":(a.type="text",a.pattern="\\d*"),void 0!==t)for(var r in t)a.setAttribute(r,t[r]);return n.appendChild(a),n.appendChild(i),n.appendChild(o),n}var f=function(){},m=function(e,t,n){return n.months[t?"shorthand":"longhand"][e]},g={D:f,F:function(e,t,n){e.setMonth(n.months.longhand.indexOf(t))},G:function(e,t){e.setHours(parseFloat(t))},H:function(e,t){e.setHours(parseFloat(t))},J:function(e,t){e.setDate(parseFloat(t))},K:function(e,t,n){e.setHours(e.getHours()%12+12*o(new RegExp(n.amPM[1],"i").test(t)))},M:function(e,t,n){e.setMonth(n.months.shorthand.indexOf(t))},S:function(e,t){e.setSeconds(parseFloat(t))},U:function(e,t){return new Date(1e3*parseFloat(t))},W:function(e,t,n){var a=parseInt(t),i=new Date(e.getFullYear(),0,2+7*(a-1),0,0,0,0);return i.setDate(i.getDate()-i.getDay()+n.firstDayOfWeek),i},Y:function(e,t){e.setFullYear(parseFloat(t))},Z:function(e,t){return new Date(t)},d:function(e,t){e.setDate(parseFloat(t))},h:function(e,t){e.setHours(parseFloat(t))},i:function(e,t){e.setMinutes(parseFloat(t))},j:function(e,t){e.setDate(parseFloat(t))},l:f,m:function(e,t){e.setMonth(parseFloat(t)-1)},n:function(e,t){e.setMonth(parseFloat(t)-1)},s:function(e,t){e.setSeconds(parseFloat(t))},u:function(e,t){return new Date(parseFloat(t))},w:f,y:function(e,t){e.setFullYear(2e3+parseFloat(t))}},p={D:"(\\w+)",F:"(\\w+)",G:"(\\d\\d|\\d)",H:"(\\d\\d|\\d)",J:"(\\d\\d|\\d)\\w+",K:"",M:"(\\w+)",S:"(\\d\\d|\\d)",U:"(.+)",W:"(\\d\\d|\\d)",Y:"(\\d{4})",Z:"(.+)",d:"(\\d\\d|\\d)",h:"(\\d\\d|\\d)",i:"(\\d\\d|\\d)",j:"(\\d\\d|\\d)",l:"(\\w+)",m:"(\\d\\d|\\d)",n:"(\\d\\d|\\d)",s:"(\\d\\d|\\d)",u:"(.+)",w:"(\\d\\d|\\d)",y:"(\\d{2})"},h={Z:function(e){return e.toISOString()},D:function(e,t,n){return t.weekdays.shorthand[h.w(e,t,n)]},F:function(e,t,n){return m(h.n(e,t,n)-1,!1,t)},G:function(e,t,n){return i(h.h(e,t,n))},H:function(e){return i(e.getHours())},J:function(e,t){return void 0!==t.ordinal?e.getDate()+t.ordinal(e.getDate()):e.getDate()},K:function(e,t){return t.amPM[o(e.getHours()>11)]},M:function(e,t){return m(e.getMonth(),!0,t)},S:function(e){return i(e.getSeconds())},U:function(e){return e.getTime()/1e3},W:function(e,t,n){return n.getWeek(e)},Y:function(e){return e.getFullYear()},d:function(e){return i(e.getDate())},h:function(e){return e.getHours()%12?e.getHours()%12:12},i:function(e){return i(e.getMinutes())},j:function(e){return e.getDate()},l:function(e,t){return t.weekdays.longhand[e.getDay()]},m:function(e){return i(e.getMonth()+1)},n:function(e){return e.getMonth()+1},s:function(e){return e.getSeconds()},u:function(e){return e.getTime()},w:function(e){return e.getDay()},y:function(e){return String(e.getFullYear()).substring(2)}},v=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,n){var a=n||r;return void 0!==i.formatDate?i.formatDate(e,t,a):t.split("").map(function(t,n,o){return h[t]&&"\\"!==o[n-1]?h[t](e,a,i):"\\"!==t?t:""}).join("")}},D=function(e){var t=e.config,i=void 0===t?n:t,o=e.l10n,r=void 0===o?a:o;return function(e,t,a,o){if(0===e||e){var l,c=o||r,d=e;if(e instanceof Date)l=new Date(e.getTime());else if("string"!=typeof e&&void 0!==e.toFixed)l=new Date(e);else if("string"==typeof e){var s=t||(i||n).dateFormat,u=String(e).trim();if("today"===u)l=new Date,a=!0;else if(/Z$/.test(u)||/GMT$/.test(u))l=new Date(e);else if(i&&i.parseDate)l=i.parseDate(e,s);else{l=i&&i.noCalendar?new Date((new Date).setHours(0,0,0,0)):new Date((new Date).getFullYear(),0,1,0,0,0,0);for(var f=void 0,m=[],h=0,v=0,D="";h<s.length;h++){var w=s[h],b="\\"===w,C="\\"===s[h-1]||b;if(p[w]&&!C){D+=p[w];var M=new RegExp(D).exec(e);M&&(f=!0)&&m["Y"!==w?"push":"unshift"]({fn:g[w],val:M[++v]})}else b||(D+=".");m.forEach(function(e){var t=e.fn,n=e.val;return l=t(l,n,c)||l})}l=f?l:void 0}}if(l instanceof Date&&!isNaN(l.getTime()))return!0===a&&l.setHours(0,0,0,0),l;i.errorHandler(new Error("Invalid date provided: "+d))}}};function w(e,t,n){return void 0===n&&(n=!0),!1!==n?new Date(e.getTime()).setHours(0,0,0,0)-new Date(t.getTime()).setHours(0,0,0,0):e.getTime()-t.getTime()}var b=function(e,t,n){return e>Math.min(t,n)&&e<Math.max(t,n)},C={DAY:864e5};"function"!=typeof Object.assign&&(Object.assign=function(e){for(var t=[],n=1;n<arguments.length;n++)t[n-1]=arguments[n];if(!e)throw TypeError("Cannot convert undefined or null to object");for(var a=function(t){t&&Object.keys(t).forEach(function(n){return e[n]=t[n]})},i=0,o=t;i<o.length;i++){a(o[i])}return e});var M=300;function y(f,g){var h={config:e({},n,E.defaultConfig),l10n:a};function y(e){return e.bind(h)}function x(){var e=h.config;!1===e.weekNumbers&&1===e.showMonths||!0!==e.noCalendar&&window.requestAnimationFrame(function(){if(void 0!==h.calendarContainer&&(h.calendarContainer.style.visibility="hidden",h.calendarContainer.style.display="block"),void 0!==h.daysContainer){var t=(h.days.offsetWidth+1)*e.showMonths;h.daysContainer.style.width=t+"px",h.calendarContainer.style.width=t+(void 0!==h.weekWrapper?h.weekWrapper.offsetWidth:0)+"px",h.calendarContainer.style.removeProperty("visibility"),h.calendarContainer.style.removeProperty("display")}})}function T(e){0===h.selectedDates.length&&ie(),void 0!==e&&"blur"!==e.type&&function(e){e.preventDefault();var t="keydown"===e.type,n=e.target;void 0!==h.amPM&&e.target===h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]);var a=parseFloat(n.getAttribute("min")),r=parseFloat(n.getAttribute("max")),l=parseFloat(n.getAttribute("step")),c=parseInt(n.value,10),d=e.delta||(t?38===e.which?1:-1:0),s=c+l*d;if(void 0!==n.value&&2===n.value.length){var u=n===h.hourElement,f=n===h.minuteElement;s<a?(s=r+s+o(!u)+(o(u)&&o(!h.amPM)),f&&j(void 0,-1,h.hourElement)):s>r&&(s=n===h.hourElement?s-r-o(!h.amPM):a,f&&j(void 0,1,h.hourElement)),h.amPM&&u&&(1===l?s+c===23:Math.abs(s-c)>l)&&(h.amPM.textContent=h.l10n.amPM[o(h.amPM.textContent===h.l10n.amPM[0])]),n.value=i(s)}}(e);var t=h._input.value;k(),we(),h._input.value!==t&&h._debouncedChange()}function k(){if(void 0!==h.hourElement&&void 0!==h.minuteElement){var e,t,n=(parseInt(h.hourElement.value.slice(-2),10)||0)%24,a=(parseInt(h.minuteElement.value,10)||0)%60,i=void 0!==h.secondElement?(parseInt(h.secondElement.value,10)||0)%60:0;void 0!==h.amPM&&(e=n,t=h.amPM.textContent,n=e%12+12*o(t===h.l10n.amPM[1]));var r=void 0!==h.config.minTime||h.config.minDate&&h.minDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.minDate,!0);if(void 0!==h.config.maxTime||h.config.maxDate&&h.maxDateHasTime&&h.latestSelectedDateObj&&0===w(h.latestSelectedDateObj,h.config.maxDate,!0)){var l=void 0!==h.config.maxTime?h.config.maxTime:h.config.maxDate;(n=Math.min(n,l.getHours()))===l.getHours()&&(a=Math.min(a,l.getMinutes())),a===l.getMinutes()&&(i=Math.min(i,l.getSeconds()))}if(r){var c=void 0!==h.config.minTime?h.config.minTime:h.config.minDate;(n=Math.max(n,c.getHours()))===c.getHours()&&(a=Math.max(a,c.getMinutes())),a===c.getMinutes()&&(i=Math.max(i,c.getSeconds()))}O(n,a,i)}}function I(e){var t=e||h.latestSelectedDateObj;t&&O(t.getHours(),t.getMinutes(),t.getSeconds())}function S(){var e=h.config.defaultHour,t=h.config.defaultMinute,n=h.config.defaultSeconds;if(void 0!==h.config.minDate){var a=h.config.minDate.getHours(),i=h.config.minDate.getMinutes();(e=Math.max(e,a))===a&&(t=Math.max(i,t)),e===a&&t===i&&(n=h.config.minDate.getSeconds())}if(void 0!==h.config.maxDate){var o=h.config.maxDate.getHours(),r=h.config.maxDate.getMinutes();(e=Math.min(e,o))===o&&(t=Math.min(r,t)),e===o&&t===r&&(n=h.config.maxDate.getSeconds())}O(e,t,n)}function O(e,t,n){void 0!==h.latestSelectedDateObj&&h.latestSelectedDateObj.setHours(e%24,t,n||0,0),h.hourElement&&h.minuteElement&&!h.isMobile&&(h.hourElement.value=i(h.config.time_24hr?e:(12+e)%12+12*o(e%12==0)),h.minuteElement.value=i(t),void 0!==h.amPM&&(h.amPM.textContent=h.l10n.amPM[o(e>=12)]),void 0!==h.secondElement&&(h.secondElement.value=i(n)))}function _(e){var t=parseInt(e.target.value)+(e.delta||0);(t/1e3>1||"Enter"===e.key&&!/[^\d]/.test(t.toString()))&&Q(t)}function F(e,t,n,a){return t instanceof Array?t.forEach(function(t){return F(e,t,n,a)}):e instanceof Array?e.forEach(function(e){return F(e,t,n,a)}):(e.addEventListener(t,n,a),void h._handlers.push({element:e,event:t,handler:n,options:a}))}function N(e){return function(t){1===t.which&&e(t)}}function Y(){ge("onChange")}function A(e,t){var n=void 0!==e?h.parseDate(e):h.latestSelectedDateObj||(h.config.minDate&&h.config.minDate>h.now?h.config.minDate:h.config.maxDate&&h.config.maxDate<h.now?h.config.maxDate:h.now),a=h.currentYear,i=h.currentMonth;try{void 0!==n&&(h.currentYear=n.getFullYear(),h.currentMonth=n.getMonth())}catch(e){e.message="Invalid date supplied: "+n,h.config.errorHandler(e)}t&&h.currentYear!==a&&(ge("onYearChange"),K()),!t||h.currentYear===a&&h.currentMonth===i||ge("onMonthChange"),h.redraw()}function P(e){~e.target.className.indexOf("arrow")&&j(e,e.target.classList.contains("arrowUp")?1:-1)}function j(e,t,n){var a=e&&e.target,i=n||a&&a.parentNode&&a.parentNode.firstChild,o=pe("increment");o.delta=t,i&&i.dispatchEvent(o)}function H(e,t,n,a){var i=X(t,!0),o=d("span","flatpickr-day "+e,t.getDate().toString());return o.dateObj=t,o.$i=a,o.setAttribute("aria-label",h.formatDate(t,h.config.ariaDateFormat)),-1===e.indexOf("hidden")&&0===w(t,h.now)&&(h.todayDateElem=o,o.classList.add("today"),o.setAttribute("aria-current","date")),i?(o.tabIndex=-1,he(t)&&(o.classList.add("selected"),h.selectedDateElem=o,"range"===h.config.mode&&(c(o,"startRange",h.selectedDates[0]&&0===w(t,h.selectedDates[0],!0)),c(o,"endRange",h.selectedDates[1]&&0===w(t,h.selectedDates[1],!0)),"nextMonthDay"===e&&o.classList.add("inRange")))):o.classList.add("flatpickr-disabled"),"range"===h.config.mode&&function(e){return!("range"!==h.config.mode||h.selectedDates.length<2)&&w(e,h.selectedDates[0])>=0&&w(e,h.selectedDates[1])<=0}(t)&&!he(t)&&o.classList.add("inRange"),h.weekNumbers&&1===h.config.showMonths&&"prevMonthDay"!==e&&n%7==1&&h.weekNumbers.insertAdjacentHTML("beforeend","<span class='flatpickr-day'>"+h.config.getWeek(t)+"</span>"),ge("onDayCreate",o),o}function L(e){e.focus(),"range"===h.config.mode&&ne(e)}function W(e){for(var t=e>0?0:h.config.showMonths-1,n=e>0?h.config.showMonths:-1,a=t;a!=n;a+=e)for(var i=h.daysContainer.children[a],o=e>0?0:i.children.length-1,r=e>0?i.children.length:-1,l=o;l!=r;l+=e){var c=i.children[l];if(-1===c.className.indexOf("hidden")&&X(c.dateObj))return c}}function R(e,t){var n=ee(document.activeElement||document.body),a=void 0!==e?e:n?document.activeElement:void 0!==h.selectedDateElem&&ee(h.selectedDateElem)?h.selectedDateElem:void 0!==h.todayDateElem&&ee(h.todayDateElem)?h.todayDateElem:W(t>0?1:-1);return void 0===a?h._input.focus():n?void function(e,t){for(var n=-1===e.className.indexOf("Month")?e.dateObj.getMonth():h.currentMonth,a=t>0?h.config.showMonths:-1,i=t>0?1:-1,o=n-h.currentMonth;o!=a;o+=i)for(var r=h.daysContainer.children[o],l=n-h.currentMonth===o?e.$i+t:t<0?r.children.length-1:0,c=r.children.length,d=l;d>=0&&d<c&&d!=(t>0?c:-1);d+=i){var s=r.children[d];if(-1===s.className.indexOf("hidden")&&X(s.dateObj)&&Math.abs(e.$i-d)>=Math.abs(t))return L(s)}h.changeMonth(i),R(W(i),0)}(a,t):L(a)}function B(e,t){for(var n=(new Date(e,t,1).getDay()-h.l10n.firstDayOfWeek+7)%7,a=h.utils.getDaysInMonth((t-1+12)%12),i=h.utils.getDaysInMonth(t),o=window.document.createDocumentFragment(),r=h.config.showMonths>1,l=r?"prevMonthDay hidden":"prevMonthDay",c=r?"nextMonthDay hidden":"nextMonthDay",s=a+1-n,u=0;s<=a;s++,u++)o.appendChild(H(l,new Date(e,t-1,s),s,u));for(s=1;s<=i;s++,u++)o.appendChild(H("",new Date(e,t,s),s,u));for(var f=i+1;f<=42-n&&(1===h.config.showMonths||u%7!=0);f++,u++)o.appendChild(H(c,new Date(e,t+1,f%i),f,u));var m=d("div","dayContainer");return m.appendChild(o),m}function J(){if(void 0!==h.daysContainer){s(h.daysContainer),h.weekNumbers&&s(h.weekNumbers);for(var e=document.createDocumentFragment(),t=0;t<h.config.showMonths;t++){var n=new Date(h.currentYear,h.currentMonth,1);n.setMonth(h.currentMonth+t),e.appendChild(B(n.getFullYear(),n.getMonth()))}h.daysContainer.appendChild(e),h.days=h.daysContainer.firstChild,"range"===h.config.mode&&1===h.selectedDates.length&&ne()}}function K(){if(!(h.config.showMonths>1||"dropdown"!==h.config.monthSelectorType)){var e=function(e){return!(void 0!==h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&e<h.config.minDate.getMonth())&&!(void 0!==h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()&&e>h.config.maxDate.getMonth())};h.monthsDropdownContainer.tabIndex=-1,h.monthsDropdownContainer.innerHTML="";for(var t=0;t<12;t++)if(e(t)){var n=d("option","flatpickr-monthDropdown-month");n.value=new Date(h.currentYear,t).getMonth().toString(),n.textContent=m(t,h.config.shorthandCurrentMonth,h.l10n),n.tabIndex=-1,h.currentMonth===t&&(n.selected=!0),h.monthsDropdownContainer.appendChild(n)}}}function U(){var e,t=d("div","flatpickr-month"),n=window.document.createDocumentFragment();h.config.showMonths>1||"static"===h.config.monthSelectorType?e=d("span","cur-month"):(h.monthsDropdownContainer=d("select","flatpickr-monthDropdown-months"),F(h.monthsDropdownContainer,"change",function(e){var t=e.target,n=parseInt(t.value,10);h.changeMonth(n-h.currentMonth),ge("onMonthChange")}),K(),e=h.monthsDropdownContainer);var a=u("cur-year",{tabindex:"-1"}),i=a.getElementsByTagName("input")[0];i.setAttribute("aria-label",h.l10n.yearAriaLabel),h.config.minDate&&i.setAttribute("min",h.config.minDate.getFullYear().toString()),h.config.maxDate&&(i.setAttribute("max",h.config.maxDate.getFullYear().toString()),i.disabled=!!h.config.minDate&&h.config.minDate.getFullYear()===h.config.maxDate.getFullYear());var o=d("div","flatpickr-current-month");return o.appendChild(e),o.appendChild(a),n.appendChild(o),t.appendChild(n),{container:t,yearElement:i,monthElement:e}}function q(){s(h.monthNav),h.monthNav.appendChild(h.prevMonthNav),h.config.showMonths&&(h.yearElements=[],h.monthElements=[]);for(var e=h.config.showMonths;e--;){var t=U();h.yearElements.push(t.yearElement),h.monthElements.push(t.monthElement),h.monthNav.appendChild(t.container)}h.monthNav.appendChild(h.nextMonthNav)}function $(){h.weekdayContainer?s(h.weekdayContainer):h.weekdayContainer=d("div","flatpickr-weekdays");for(var e=h.config.showMonths;e--;){var t=d("div","flatpickr-weekdaycontainer");h.weekdayContainer.appendChild(t)}return z(),h.weekdayContainer}function z(){var e=h.l10n.firstDayOfWeek,t=h.l10n.weekdays.shorthand.slice();e>0&&e<t.length&&(t=t.splice(e,t.length).concat(t.splice(0,e)));for(var n=h.config.showMonths;n--;)h.weekdayContainer.children[n].innerHTML="\n <span class='flatpickr-weekday'>\n "+t.join("</span><span class='flatpickr-weekday'>")+"\n </span>\n "}function G(e,t){void 0===t&&(t=!0);var n=t?e:e-h.currentMonth;n<0&&!0===h._hidePrevMonthArrow||n>0&&!0===h._hideNextMonthArrow||(h.currentMonth+=n,(h.currentMonth<0||h.currentMonth>11)&&(h.currentYear+=h.currentMonth>11?1:-1,h.currentMonth=(h.currentMonth+12)%12,ge("onYearChange"),K()),J(),ge("onMonthChange"),ve())}function V(e){return!(!h.config.appendTo||!h.config.appendTo.contains(e))||h.calendarContainer.contains(e)}function Z(e){if(h.isOpen&&!h.config.inline){var t="function"==typeof(r=e).composedPath?r.composedPath()[0]:r.target,n=V(t),a=t===h.input||t===h.altInput||h.element.contains(t)||e.path&&e.path.indexOf&&(~e.path.indexOf(h.input)||~e.path.indexOf(h.altInput)),i="blur"===e.type?a&&e.relatedTarget&&!V(e.relatedTarget):!a&&!n&&!V(e.relatedTarget),o=!h.config.ignoredFocusElements.some(function(e){return e.contains(t)});i&&o&&(h.close(),"range"===h.config.mode&&1===h.selectedDates.length&&(h.clear(!1),h.redraw()))}var r}function Q(e){if(!(!e||h.config.minDate&&e<h.config.minDate.getFullYear()||h.config.maxDate&&e>h.config.maxDate.getFullYear())){var t=e,n=h.currentYear!==t;h.currentYear=t||h.currentYear,h.config.maxDate&&h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth=Math.min(h.config.maxDate.getMonth(),h.currentMonth):h.config.minDate&&h.currentYear===h.config.minDate.getFullYear()&&(h.currentMonth=Math.max(h.config.minDate.getMonth(),h.currentMonth)),n&&(h.redraw(),ge("onYearChange"),K())}}function X(e,t){void 0===t&&(t=!0);var n=h.parseDate(e,void 0,t);if(h.config.minDate&&n&&w(n,h.config.minDate,void 0!==t?t:!h.minDateHasTime)<0||h.config.maxDate&&n&&w(n,h.config.maxDate,void 0!==t?t:!h.maxDateHasTime)>0)return!1;if(0===h.config.enable.length&&0===h.config.disable.length)return!0;if(void 0===n)return!1;for(var a=h.config.enable.length>0,i=a?h.config.enable:h.config.disable,o=0,r=void 0;o<i.length;o++){if("function"==typeof(r=i[o])&&r(n))return a;if(r instanceof Date&&void 0!==n&&r.getTime()===n.getTime())return a;if("string"==typeof r&&void 0!==n){var l=h.parseDate(r,void 0,!0);return l&&l.getTime()===n.getTime()?a:!a}if("object"==typeof r&&void 0!==n&&r.from&&r.to&&n.getTime()>=r.from.getTime()&&n.getTime()<=r.to.getTime())return a}return!a}function ee(e){return void 0!==h.daysContainer&&(-1===e.className.indexOf("hidden")&&h.daysContainer.contains(e))}function te(e){var t=e.target===h._input,n=h.config.allowInput,a=h.isOpen&&(!n||!t),i=h.config.inline&&t&&!n;if(13===e.keyCode&&t){if(n)return h.setDate(h._input.value,!0,e.target===h.altInput?h.config.altFormat:h.config.dateFormat),e.target.blur();h.open()}else if(V(e.target)||a||i){var o=!!h.timeContainer&&h.timeContainer.contains(e.target);switch(e.keyCode){case 13:o?(e.preventDefault(),T(),de()):se(e);break;case 27:e.preventDefault(),de();break;case 8:case 46:t&&!h.config.allowInput&&(e.preventDefault(),h.clear());break;case 37:case 39:if(o||t)h.hourElement&&h.hourElement.focus();else if(e.preventDefault(),void 0!==h.daysContainer&&(!1===n||document.activeElement&&ee(document.activeElement))){var r=39===e.keyCode?1:-1;e.ctrlKey?(e.stopPropagation(),G(r),R(W(1),0)):R(void 0,r)}break;case 38:case 40:e.preventDefault();var l=40===e.keyCode?1:-1;h.daysContainer&&void 0!==e.target.$i||e.target===h.input?e.ctrlKey?(e.stopPropagation(),Q(h.currentYear-l),R(W(1),0)):o||R(void 0,7*l):e.target===h.currentYearElement?Q(h.currentYear-l):h.config.enableTime&&(!o&&h.hourElement&&h.hourElement.focus(),T(e),h._debouncedChange());break;case 9:if(o){var c=[h.hourElement,h.minuteElement,h.secondElement,h.amPM].concat(h.pluginElements).filter(function(e){return e}),d=c.indexOf(e.target);if(-1!==d){var s=c[d+(e.shiftKey?-1:1)];e.preventDefault(),(s||h._input).focus()}}else!h.config.noCalendar&&h.daysContainer&&h.daysContainer.contains(e.target)&&e.shiftKey&&(e.preventDefault(),h._input.focus())}}if(void 0!==h.amPM&&e.target===h.amPM)switch(e.key){case h.l10n.amPM[0].charAt(0):case h.l10n.amPM[0].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[0],k(),we();break;case h.l10n.amPM[1].charAt(0):case h.l10n.amPM[1].charAt(0).toLowerCase():h.amPM.textContent=h.l10n.amPM[1],k(),we()}(t||V(e.target))&&ge("onKeyDown",e)}function ne(e){if(1===h.selectedDates.length&&(!e||e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled"))){for(var t=e?e.dateObj.getTime():h.days.firstElementChild.dateObj.getTime(),n=h.parseDate(h.selectedDates[0],void 0,!0).getTime(),a=Math.min(t,h.selectedDates[0].getTime()),i=Math.max(t,h.selectedDates[0].getTime()),o=!1,r=0,l=0,c=a;c<i;c+=C.DAY)X(new Date(c),!0)||(o=o||c>a&&c<i,c<n&&(!r||c>r)?r=c:c>n&&(!l||c<l)&&(l=c));for(var d=0;d<h.config.showMonths;d++)for(var s=h.daysContainer.children[d],u=function(a,i){var c=s.children[a],d=c.dateObj.getTime(),u=r>0&&d<r||l>0&&d>l;return u?(c.classList.add("notAllowed"),["inRange","startRange","endRange"].forEach(function(e){c.classList.remove(e)}),"continue"):o&&!u?"continue":(["startRange","inRange","endRange","notAllowed"].forEach(function(e){c.classList.remove(e)}),void(void 0!==e&&(e.classList.add(t<=h.selectedDates[0].getTime()?"startRange":"endRange"),n<t&&d===n?c.classList.add("startRange"):n>t&&d===n&&c.classList.add("endRange"),d>=r&&(0===l||d<=l)&&b(d,n,t)&&c.classList.add("inRange"))))},f=0,m=s.children.length;f<m;f++)u(f)}}function ae(){!h.isOpen||h.config.static||h.config.inline||le()}function ie(){h.setDate(void 0!==h.config.minDate?new Date(h.config.minDate.getTime()):new Date,!0),S(),we()}function oe(e){return function(t){var n=h.config["_"+e+"Date"]=h.parseDate(t,h.config.dateFormat),a=h.config["_"+("min"===e?"max":"min")+"Date"];void 0!==n&&(h["min"===e?"minDateHasTime":"maxDateHasTime"]=n.getHours()>0||n.getMinutes()>0||n.getSeconds()>0),h.selectedDates&&(h.selectedDates=h.selectedDates.filter(function(e){return X(e)}),h.selectedDates.length||"min"!==e||I(n),we()),h.daysContainer&&(ce(),void 0!==n?h.currentYearElement[e]=n.getFullYear().toString():h.currentYearElement.removeAttribute(e),h.currentYearElement.disabled=!!a&&void 0!==n&&a.getFullYear()===n.getFullYear())}}function re(){"object"!=typeof h.config.locale&&void 0===E.l10ns[h.config.locale]&&h.config.errorHandler(new Error("flatpickr: invalid locale "+h.config.locale)),h.l10n=e({},E.l10ns.default,"object"==typeof h.config.locale?h.config.locale:"default"!==h.config.locale?E.l10ns[h.config.locale]:void 0),p.K="("+h.l10n.amPM[0]+"|"+h.l10n.amPM[1]+"|"+h.l10n.amPM[0].toLowerCase()+"|"+h.l10n.amPM[1].toLowerCase()+")",void 0===e({},g,JSON.parse(JSON.stringify(f.dataset||{}))).time_24hr&&void 0===E.defaultConfig.time_24hr&&(h.config.time_24hr=h.l10n.time_24hr),h.formatDate=v(h),h.parseDate=D({config:h.config,l10n:h.l10n})}function le(e){if(void 0!==h.calendarContainer){ge("onPreCalendarPosition");var t=e||h._positionElement,n=Array.prototype.reduce.call(h.calendarContainer.children,function(e,t){return e+t.offsetHeight},0),a=h.calendarContainer.offsetWidth,i=h.config.position.split(" "),o=i[0],r=i.length>1?i[1]:null,l=t.getBoundingClientRect(),d=window.innerHeight-l.bottom,s="above"===o||"below"!==o&&d<n&&l.top>n,u=window.pageYOffset+l.top+(s?-n-2:t.offsetHeight+2);if(c(h.calendarContainer,"arrowTop",!s),c(h.calendarContainer,"arrowBottom",s),!h.config.inline){var f=window.pageXOffset+l.left-(null!=r&&"center"===r?(a-l.width)/2:0),m=window.document.body.offsetWidth-l.right,g=f+a>window.document.body.offsetWidth,p=m+a>window.document.body.offsetWidth;if(c(h.calendarContainer,"rightMost",g),!h.config.static)if(h.calendarContainer.style.top=u+"px",g)if(p){var v=document.styleSheets[0];if(void 0===v)return;var D=window.document.body.offsetWidth,w=Math.max(0,D/2-a/2),b=v.cssRules.length,C="{left:"+l.left+"px;right:auto;}";c(h.calendarContainer,"rightMost",!1),c(h.calendarContainer,"centerMost",!0),v.insertRule(".flatpickr-calendar.centerMost:before,.flatpickr-calendar.centerMost:after"+C,b),h.calendarContainer.style.left=w+"px",h.calendarContainer.style.right="auto"}else h.calendarContainer.style.left="auto",h.calendarContainer.style.right=m+"px";else h.calendarContainer.style.left=f+"px",h.calendarContainer.style.right="auto"}}}function ce(){h.config.noCalendar||h.isMobile||(ve(),J())}function de(){h._input.focus(),-1!==window.navigator.userAgent.indexOf("MSIE")||void 0!==navigator.msMaxTouchPoints?setTimeout(h.close,0):h.close()}function se(e){e.preventDefault(),e.stopPropagation();var t=function e(t,n){return n(t)?t:t.parentNode?e(t.parentNode,n):void 0}(e.target,function(e){return e.classList&&e.classList.contains("flatpickr-day")&&!e.classList.contains("flatpickr-disabled")&&!e.classList.contains("notAllowed")});if(void 0!==t){var n=t,a=h.latestSelectedDateObj=new Date(n.dateObj.getTime()),i=(a.getMonth()<h.currentMonth||a.getMonth()>h.currentMonth+h.config.showMonths-1)&&"range"!==h.config.mode;if(h.selectedDateElem=n,"single"===h.config.mode)h.selectedDates=[a];else if("multiple"===h.config.mode){var o=he(a);o?h.selectedDates.splice(parseInt(o),1):h.selectedDates.push(a)}else"range"===h.config.mode&&(2===h.selectedDates.length&&h.clear(!1,!1),h.latestSelectedDateObj=a,h.selectedDates.push(a),0!==w(a,h.selectedDates[0],!0)&&h.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()}));if(k(),i){var r=h.currentYear!==a.getFullYear();h.currentYear=a.getFullYear(),h.currentMonth=a.getMonth(),r&&(ge("onYearChange"),K()),ge("onMonthChange")}if(ve(),J(),we(),h.config.enableTime&&setTimeout(function(){return h.showTimeInput=!0},50),i||"range"===h.config.mode||1!==h.config.showMonths?void 0!==h.selectedDateElem&&void 0===h.hourElement&&h.selectedDateElem&&h.selectedDateElem.focus():L(n),void 0!==h.hourElement&&void 0!==h.hourElement&&h.hourElement.focus(),h.config.closeOnSelect){var l="single"===h.config.mode&&!h.config.enableTime,c="range"===h.config.mode&&2===h.selectedDates.length&&!h.config.enableTime;(l||c)&&de()}Y()}}h.parseDate=D({config:h.config,l10n:h.l10n}),h._handlers=[],h.pluginElements=[],h.loadedPlugins=[],h._bind=F,h._setHoursFromDate=I,h._positionCalendar=le,h.changeMonth=G,h.changeYear=Q,h.clear=function(e,t){void 0===e&&(e=!0);void 0===t&&(t=!0);h.input.value="",void 0!==h.altInput&&(h.altInput.value="");void 0!==h.mobileInput&&(h.mobileInput.value="");h.selectedDates=[],h.latestSelectedDateObj=void 0,!0===t&&(h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth());h.showTimeInput=!1,!0===h.config.enableTime&&S();h.redraw(),e&&ge("onChange")},h.close=function(){h.isOpen=!1,h.isMobile||(void 0!==h.calendarContainer&&h.calendarContainer.classList.remove("open"),void 0!==h._input&&h._input.classList.remove("active"));ge("onClose")},h._createElement=d,h.destroy=function(){void 0!==h.config&&ge("onDestroy");for(var e=h._handlers.length;e--;){var t=h._handlers[e];t.element.removeEventListener(t.event,t.handler,t.options)}if(h._handlers=[],h.mobileInput)h.mobileInput.parentNode&&h.mobileInput.parentNode.removeChild(h.mobileInput),h.mobileInput=void 0;else if(h.calendarContainer&&h.calendarContainer.parentNode)if(h.config.static&&h.calendarContainer.parentNode){var n=h.calendarContainer.parentNode;if(n.lastChild&&n.removeChild(n.lastChild),n.parentNode){for(;n.firstChild;)n.parentNode.insertBefore(n.firstChild,n);n.parentNode.removeChild(n)}}else h.calendarContainer.parentNode.removeChild(h.calendarContainer);h.altInput&&(h.input.type="text",h.altInput.parentNode&&h.altInput.parentNode.removeChild(h.altInput),delete h.altInput);h.input&&(h.input.type=h.input._type,h.input.classList.remove("flatpickr-input"),h.input.removeAttribute("readonly"),h.input.value="");["_showTimeInput","latestSelectedDateObj","_hideNextMonthArrow","_hidePrevMonthArrow","__hideNextMonthArrow","__hidePrevMonthArrow","isMobile","isOpen","selectedDateElem","minDateHasTime","maxDateHasTime","days","daysContainer","_input","_positionElement","innerContainer","rContainer","monthNav","todayDateElem","calendarContainer","weekdayContainer","prevMonthNav","nextMonthNav","monthsDropdownContainer","currentMonthElement","currentYearElement","navigationCurrentMonth","selectedDateElem","config"].forEach(function(e){try{delete h[e]}catch(e){}})},h.isEnabled=X,h.jumpToDate=A,h.open=function(e,t){void 0===t&&(t=h._positionElement);if(!0===h.isMobile)return e&&(e.preventDefault(),e.target&&e.target.blur()),void 0!==h.mobileInput&&(h.mobileInput.focus(),h.mobileInput.click()),void ge("onOpen");if(h._input.disabled||h.config.inline)return;var n=h.isOpen;h.isOpen=!0,n||(h.calendarContainer.classList.add("open"),h._input.classList.add("active"),ge("onOpen"),le(t));!0===h.config.enableTime&&!0===h.config.noCalendar&&(0===h.selectedDates.length&&ie(),!1!==h.config.allowInput||void 0!==e&&h.timeContainer.contains(e.relatedTarget)||setTimeout(function(){return h.hourElement.select()},50))},h.redraw=ce,h.set=function(e,n){if(null!==e&&"object"==typeof e)for(var a in Object.assign(h.config,e),e)void 0!==ue[a]&&ue[a].forEach(function(e){return e()});else h.config[e]=n,void 0!==ue[e]?ue[e].forEach(function(e){return e()}):t.indexOf(e)>-1&&(h.config[e]=l(n));h.redraw(),we(!1)},h.setDate=function(e,t,n){void 0===t&&(t=!1);void 0===n&&(n=h.config.dateFormat);if(0!==e&&!e||e instanceof Array&&0===e.length)return h.clear(t);fe(e,n),h.showTimeInput=h.selectedDates.length>0,h.latestSelectedDateObj=h.selectedDates[h.selectedDates.length-1],h.redraw(),A(),I(),0===h.selectedDates.length&&h.clear(!1);we(t),t&&ge("onChange")},h.toggle=function(e){if(!0===h.isOpen)return h.close();h.open(e)};var ue={locale:[re,z],showMonths:[q,x,$],minDate:[A],maxDate:[A]};function fe(e,t){var n=[];if(e instanceof Array)n=e.map(function(e){return h.parseDate(e,t)});else if(e instanceof Date||"number"==typeof e)n=[h.parseDate(e,t)];else if("string"==typeof e)switch(h.config.mode){case"single":case"time":n=[h.parseDate(e,t)];break;case"multiple":n=e.split(h.config.conjunction).map(function(e){return h.parseDate(e,t)});break;case"range":n=e.split(h.l10n.rangeSeparator).map(function(e){return h.parseDate(e,t)})}else h.config.errorHandler(new Error("Invalid date supplied: "+JSON.stringify(e)));h.selectedDates=n.filter(function(e){return e instanceof Date&&X(e,!1)}),"range"===h.config.mode&&h.selectedDates.sort(function(e,t){return e.getTime()-t.getTime()})}function me(e){return e.slice().map(function(e){return"string"==typeof e||"number"==typeof e||e instanceof Date?h.parseDate(e,void 0,!0):e&&"object"==typeof e&&e.from&&e.to?{from:h.parseDate(e.from,void 0),to:h.parseDate(e.to,void 0)}:e}).filter(function(e){return e})}function ge(e,t){if(void 0!==h.config){var n=h.config[e];if(void 0!==n&&n.length>0)for(var a=0;n[a]&&a<n.length;a++)n[a](h.selectedDates,h.input.value,h,t);"onChange"===e&&(h.input.dispatchEvent(pe("change")),h.input.dispatchEvent(pe("input")))}}function pe(e){var t=document.createEvent("Event");return t.initEvent(e,!0,!0),t}function he(e){for(var t=0;t<h.selectedDates.length;t++)if(0===w(h.selectedDates[t],e))return""+t;return!1}function ve(){h.config.noCalendar||h.isMobile||!h.monthNav||(h.yearElements.forEach(function(e,t){var n=new Date(h.currentYear,h.currentMonth,1);n.setMonth(h.currentMonth+t),h.config.showMonths>1||"static"===h.config.monthSelectorType?h.monthElements[t].textContent=m(n.getMonth(),h.config.shorthandCurrentMonth,h.l10n)+" ":h.monthsDropdownContainer.value=n.getMonth().toString(),e.value=n.getFullYear().toString()}),h._hidePrevMonthArrow=void 0!==h.config.minDate&&(h.currentYear===h.config.minDate.getFullYear()?h.currentMonth<=h.config.minDate.getMonth():h.currentYear<h.config.minDate.getFullYear()),h._hideNextMonthArrow=void 0!==h.config.maxDate&&(h.currentYear===h.config.maxDate.getFullYear()?h.currentMonth+1>h.config.maxDate.getMonth():h.currentYear>h.config.maxDate.getFullYear()))}function De(e){return h.selectedDates.map(function(t){return h.formatDate(t,e)}).filter(function(e,t,n){return"range"!==h.config.mode||h.config.enableTime||n.indexOf(e)===t}).join("range"!==h.config.mode?h.config.conjunction:h.l10n.rangeSeparator)}function we(e){void 0===e&&(e=!0),void 0!==h.mobileInput&&h.mobileFormatStr&&(h.mobileInput.value=void 0!==h.latestSelectedDateObj?h.formatDate(h.latestSelectedDateObj,h.mobileFormatStr):""),h.input.value=De(h.config.dateFormat),void 0!==h.altInput&&(h.altInput.value=De(h.config.altFormat)),!1!==e&&ge("onValueUpdate")}function be(e){var t=h.prevMonthNav.contains(e.target),n=h.nextMonthNav.contains(e.target);t||n?G(t?-1:1):h.yearElements.indexOf(e.target)>=0?e.target.select():e.target.classList.contains("arrowUp")?h.changeYear(h.currentYear+1):e.target.classList.contains("arrowDown")&&h.changeYear(h.currentYear-1)}return function(){h.element=h.input=f,h.isOpen=!1,function(){var a=["wrap","weekNumbers","allowInput","clickOpens","time_24hr","enableTime","noCalendar","altInput","shorthandCurrentMonth","inline","static","enableSeconds","disableMobile"],i=e({},g,JSON.parse(JSON.stringify(f.dataset||{}))),o={};h.config.parseDate=i.parseDate,h.config.formatDate=i.formatDate,Object.defineProperty(h.config,"enable",{get:function(){return h.config._enable},set:function(e){h.config._enable=me(e)}}),Object.defineProperty(h.config,"disable",{get:function(){return h.config._disable},set:function(e){h.config._disable=me(e)}});var r="time"===i.mode;if(!i.dateFormat&&(i.enableTime||r)){var c=E.defaultConfig.dateFormat||n.dateFormat;o.dateFormat=i.noCalendar||r?"H:i"+(i.enableSeconds?":S":""):c+" H:i"+(i.enableSeconds?":S":"")}if(i.altInput&&(i.enableTime||r)&&!i.altFormat){var d=E.defaultConfig.altFormat||n.altFormat;o.altFormat=i.noCalendar||r?"h:i"+(i.enableSeconds?":S K":" K"):d+" h:i"+(i.enableSeconds?":S":"")+" K"}i.altInputClass||(h.config.altInputClass=h.input.className+" "+h.config.altInputClass),Object.defineProperty(h.config,"minDate",{get:function(){return h.config._minDate},set:oe("min")}),Object.defineProperty(h.config,"maxDate",{get:function(){return h.config._maxDate},set:oe("max")});var s=function(e){return function(t){h.config["min"===e?"_minTime":"_maxTime"]=h.parseDate(t,"H:i")}};Object.defineProperty(h.config,"minTime",{get:function(){return h.config._minTime},set:s("min")}),Object.defineProperty(h.config,"maxTime",{get:function(){return h.config._maxTime},set:s("max")}),"time"===i.mode&&(h.config.noCalendar=!0,h.config.enableTime=!0),Object.assign(h.config,o,i);for(var u=0;u<a.length;u++)h.config[a[u]]=!0===h.config[a[u]]||"true"===h.config[a[u]];t.filter(function(e){return void 0!==h.config[e]}).forEach(function(e){h.config[e]=l(h.config[e]||[]).map(y)}),h.isMobile=!h.config.disableMobile&&!h.config.inline&&"single"===h.config.mode&&!h.config.disable.length&&!h.config.enable.length&&!h.config.weekNumbers&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent);for(var u=0;u<h.config.plugins.length;u++){var m=h.config.plugins[u](h)||{};for(var p in m)t.indexOf(p)>-1?h.config[p]=l(m[p]).map(y).concat(h.config[p]):void 0===i[p]&&(h.config[p]=m[p])}ge("onParseConfig")}(),re(),h.input=h.config.wrap?f.querySelector("[data-input]"):f,h.input?(h.input._type=h.input.type,h.input.type="text",h.input.classList.add("flatpickr-input"),h._input=h.input,h.config.altInput&&(h.altInput=d(h.input.nodeName,h.config.altInputClass),h._input=h.altInput,h.altInput.placeholder=h.input.placeholder,h.altInput.disabled=h.input.disabled,h.altInput.required=h.input.required,h.altInput.tabIndex=h.input.tabIndex,h.altInput.type="text",h.input.setAttribute("type","hidden"),!h.config.static&&h.input.parentNode&&h.input.parentNode.insertBefore(h.altInput,h.input.nextSibling)),h.config.allowInput||h._input.setAttribute("readonly","readonly"),h._positionElement=h.config.positionElement||h._input):h.config.errorHandler(new Error("Invalid input element specified")),function(){h.selectedDates=[],h.now=h.parseDate(h.config.now)||new Date;var e=h.config.defaultDate||("INPUT"!==h.input.nodeName&&"TEXTAREA"!==h.input.nodeName||!h.input.placeholder||h.input.value!==h.input.placeholder?h.input.value:null);e&&fe(e,h.config.dateFormat),h._initialDate=h.selectedDates.length>0?h.selectedDates[0]:h.config.minDate&&h.config.minDate.getTime()>h.now.getTime()?h.config.minDate:h.config.maxDate&&h.config.maxDate.getTime()<h.now.getTime()?h.config.maxDate:h.now,h.currentYear=h._initialDate.getFullYear(),h.currentMonth=h._initialDate.getMonth(),h.selectedDates.length>0&&(h.latestSelectedDateObj=h.selectedDates[0]),void 0!==h.config.minTime&&(h.config.minTime=h.parseDate(h.config.minTime,"H:i")),void 0!==h.config.maxTime&&(h.config.maxTime=h.parseDate(h.config.maxTime,"H:i")),h.minDateHasTime=!!h.config.minDate&&(h.config.minDate.getHours()>0||h.config.minDate.getMinutes()>0||h.config.minDate.getSeconds()>0),h.maxDateHasTime=!!h.config.maxDate&&(h.config.maxDate.getHours()>0||h.config.maxDate.getMinutes()>0||h.config.maxDate.getSeconds()>0),Object.defineProperty(h,"showTimeInput",{get:function(){return h._showTimeInput},set:function(e){h._showTimeInput=e,h.calendarContainer&&c(h.calendarContainer,"showTimeInput",e),h.isOpen&&le()}})}(),h.utils={getDaysInMonth:function(e,t){return void 0===e&&(e=h.currentMonth),void 0===t&&(t=h.currentYear),1===e&&(t%4==0&&t%100!=0||t%400==0)?29:h.l10n.daysInMonth[e]}},h.isMobile||function(){var e=window.document.createDocumentFragment();if(h.calendarContainer=d("div","flatpickr-calendar"),h.calendarContainer.tabIndex=-1,!h.config.noCalendar){if(e.appendChild((h.monthNav=d("div","flatpickr-months"),h.yearElements=[],h.monthElements=[],h.prevMonthNav=d("span","flatpickr-prev-month"),h.prevMonthNav.innerHTML=h.config.prevArrow,h.nextMonthNav=d("span","flatpickr-next-month"),h.nextMonthNav.innerHTML=h.config.nextArrow,q(),Object.defineProperty(h,"_hidePrevMonthArrow",{get:function(){return h.__hidePrevMonthArrow},set:function(e){h.__hidePrevMonthArrow!==e&&(c(h.prevMonthNav,"flatpickr-disabled",e),h.__hidePrevMonthArrow=e)}}),Object.defineProperty(h,"_hideNextMonthArrow",{get:function(){return h.__hideNextMonthArrow},set:function(e){h.__hideNextMonthArrow!==e&&(c(h.nextMonthNav,"flatpickr-disabled",e),h.__hideNextMonthArrow=e)}}),h.currentYearElement=h.yearElements[0],ve(),h.monthNav)),h.innerContainer=d("div","flatpickr-innerContainer"),h.config.weekNumbers){var t=function(){h.calendarContainer.classList.add("hasWeeks");var e=d("div","flatpickr-weekwrapper");e.appendChild(d("span","flatpickr-weekday",h.l10n.weekAbbreviation));var t=d("div","flatpickr-weeks");return e.appendChild(t),{weekWrapper:e,weekNumbers:t}}(),n=t.weekWrapper,a=t.weekNumbers;h.innerContainer.appendChild(n),h.weekNumbers=a,h.weekWrapper=n}h.rContainer=d("div","flatpickr-rContainer"),h.rContainer.appendChild($()),h.daysContainer||(h.daysContainer=d("div","flatpickr-days"),h.daysContainer.tabIndex=-1),J(),h.rContainer.appendChild(h.daysContainer),h.innerContainer.appendChild(h.rContainer),e.appendChild(h.innerContainer)}h.config.enableTime&&e.appendChild(function(){h.calendarContainer.classList.add("hasTime"),h.config.noCalendar&&h.calendarContainer.classList.add("noCalendar"),h.timeContainer=d("div","flatpickr-time"),h.timeContainer.tabIndex=-1;var e=d("span","flatpickr-time-separator",":"),t=u("flatpickr-hour",{"aria-label":h.l10n.hourAriaLabel});h.hourElement=t.getElementsByTagName("input")[0];var n=u("flatpickr-minute",{"aria-label":h.l10n.minuteAriaLabel});if(h.minuteElement=n.getElementsByTagName("input")[0],h.hourElement.tabIndex=h.minuteElement.tabIndex=-1,h.hourElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getHours():h.config.time_24hr?h.config.defaultHour:function(e){switch(e%24){case 0:case 12:return 12;default:return e%12}}(h.config.defaultHour)),h.minuteElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getMinutes():h.config.defaultMinute),h.hourElement.setAttribute("step",h.config.hourIncrement.toString()),h.minuteElement.setAttribute("step",h.config.minuteIncrement.toString()),h.hourElement.setAttribute("min",h.config.time_24hr?"0":"1"),h.hourElement.setAttribute("max",h.config.time_24hr?"23":"12"),h.minuteElement.setAttribute("min","0"),h.minuteElement.setAttribute("max","59"),h.timeContainer.appendChild(t),h.timeContainer.appendChild(e),h.timeContainer.appendChild(n),h.config.time_24hr&&h.timeContainer.classList.add("time24hr"),h.config.enableSeconds){h.timeContainer.classList.add("hasSeconds");var a=u("flatpickr-second");h.secondElement=a.getElementsByTagName("input")[0],h.secondElement.value=i(h.latestSelectedDateObj?h.latestSelectedDateObj.getSeconds():h.config.defaultSeconds),h.secondElement.setAttribute("step",h.minuteElement.getAttribute("step")),h.secondElement.setAttribute("min","0"),h.secondElement.setAttribute("max","59"),h.timeContainer.appendChild(d("span","flatpickr-time-separator",":")),h.timeContainer.appendChild(a)}return h.config.time_24hr||(h.amPM=d("span","flatpickr-am-pm",h.l10n.amPM[o((h.latestSelectedDateObj?h.hourElement.value:h.config.defaultHour)>11)]),h.amPM.title=h.l10n.toggleTitle,h.amPM.tabIndex=-1,h.timeContainer.appendChild(h.amPM)),h.timeContainer}()),c(h.calendarContainer,"rangeMode","range"===h.config.mode),c(h.calendarContainer,"animate",!0===h.config.animate),c(h.calendarContainer,"multiMonth",h.config.showMonths>1),h.calendarContainer.appendChild(e);var r=void 0!==h.config.appendTo&&void 0!==h.config.appendTo.nodeType;if((h.config.inline||h.config.static)&&(h.calendarContainer.classList.add(h.config.inline?"inline":"static"),h.config.inline&&(!r&&h.element.parentNode?h.element.parentNode.insertBefore(h.calendarContainer,h._input.nextSibling):void 0!==h.config.appendTo&&h.config.appendTo.appendChild(h.calendarContainer)),h.config.static)){var l=d("div","flatpickr-wrapper");h.element.parentNode&&h.element.parentNode.insertBefore(l,h.element),l.appendChild(h.element),h.altInput&&l.appendChild(h.altInput),l.appendChild(h.calendarContainer)}h.config.static||h.config.inline||(void 0!==h.config.appendTo?h.config.appendTo:window.document.body).appendChild(h.calendarContainer)}(),function(){if(h.config.wrap&&["open","close","toggle","clear"].forEach(function(e){Array.prototype.forEach.call(h.element.querySelectorAll("[data-"+e+"]"),function(t){return F(t,"click",h[e])})}),h.isMobile)!function(){var e=h.config.enableTime?h.config.noCalendar?"time":"datetime-local":"date";h.mobileInput=d("input",h.input.className+" flatpickr-mobile"),h.mobileInput.step=h.input.getAttribute("step")||"any",h.mobileInput.tabIndex=1,h.mobileInput.type=e,h.mobileInput.disabled=h.input.disabled,h.mobileInput.required=h.input.required,h.mobileInput.placeholder=h.input.placeholder,h.mobileFormatStr="datetime-local"===e?"Y-m-d\\TH:i:S":"date"===e?"Y-m-d":"H:i:S",h.selectedDates.length>0&&(h.mobileInput.defaultValue=h.mobileInput.value=h.formatDate(h.selectedDates[0],h.mobileFormatStr)),h.config.minDate&&(h.mobileInput.min=h.formatDate(h.config.minDate,"Y-m-d")),h.config.maxDate&&(h.mobileInput.max=h.formatDate(h.config.maxDate,"Y-m-d")),h.input.type="hidden",void 0!==h.altInput&&(h.altInput.type="hidden");try{h.input.parentNode&&h.input.parentNode.insertBefore(h.mobileInput,h.input.nextSibling)}catch(e){}F(h.mobileInput,"change",function(e){h.setDate(e.target.value,!1,h.mobileFormatStr),ge("onChange"),ge("onClose")})}();else{var e=r(ae,50);h._debouncedChange=r(Y,M),h.daysContainer&&!/iPhone|iPad|iPod/i.test(navigator.userAgent)&&F(h.daysContainer,"mouseover",function(e){"range"===h.config.mode&&ne(e.target)}),F(window.document.body,"keydown",te),h.config.inline||h.config.static||F(window,"resize",e),void 0!==window.ontouchstart?F(window.document,"touchstart",Z):F(window.document,"mousedown",N(Z)),F(window.document,"focus",Z,{capture:!0}),!0===h.config.clickOpens&&(F(h._input,"focus",h.open),F(h._input,"mousedown",N(h.open))),void 0!==h.daysContainer&&(F(h.monthNav,"mousedown",N(be)),F(h.monthNav,["keyup","increment"],_),F(h.daysContainer,"mousedown",N(se))),void 0!==h.timeContainer&&void 0!==h.minuteElement&&void 0!==h.hourElement&&(F(h.timeContainer,["increment"],T),F(h.timeContainer,"blur",T,{capture:!0}),F(h.timeContainer,"mousedown",N(P)),F([h.hourElement,h.minuteElement],["focus","click"],function(e){return e.target.select()}),void 0!==h.secondElement&&F(h.secondElement,"focus",function(){return h.secondElement&&h.secondElement.select()}),void 0!==h.amPM&&F(h.amPM,"mousedown",N(function(e){T(e),Y()})))}}(),(h.selectedDates.length||h.config.noCalendar)&&(h.config.enableTime&&I(h.config.noCalendar?h.latestSelectedDateObj||h.config.minDate:void 0),we(!1)),x(),h.showTimeInput=h.selectedDates.length>0||h.config.noCalendar;var a=/^((?!chrome|android).)*safari/i.test(navigator.userAgent);!h.isMobile&&a&&le(),ge("onReady")}(),h}function x(e,t){for(var n=Array.prototype.slice.call(e).filter(function(e){return e instanceof HTMLElement}),a=[],i=0;i<n.length;i++){var o=n[i];try{if(null!==o.getAttribute("data-fp-omit"))continue;void 0!==o._flatpickr&&(o._flatpickr.destroy(),o._flatpickr=void 0),o._flatpickr=y(o,t||{}),a.push(o._flatpickr)}catch(e){console.error(e)}}return 1===a.length?a[0]:a}"undefined"!=typeof HTMLElement&&"undefined"!=typeof HTMLCollection&&"undefined"!=typeof NodeList&&(HTMLCollection.prototype.flatpickr=NodeList.prototype.flatpickr=function(e){return x(this,e)},HTMLElement.prototype.flatpickr=function(e){return x([this],e)});var E=function(e,t){return"string"==typeof e?x(window.document.querySelectorAll(e),t):e instanceof Node?x([e],t):x(e,t)};return E.defaultConfig={},E.l10ns={en:e({},a),default:e({},a)},E.localize=function(t){E.l10ns.default=e({},E.l10ns.default,t)},E.setDefaults=function(t){E.defaultConfig=e({},E.defaultConfig,t)},E.parseDate=D({}),E.formatDate=v({}),E.compareDates=w,"undefined"!=typeof jQuery&&void 0!==jQuery.fn&&(jQuery.fn.flatpickr=function(e){return x(this,e)}),Date.prototype.fp_incr=function(e){return new Date(this.getFullYear(),this.getMonth(),this.getDate()+("string"==typeof e?parseInt(e,10):e))},"undefined"!=typeof window&&(window.flatpickr=E),E});
\ No newline at end of file
--- /dev/null
+span.flatpickr-weekday {
+ display: inline-block;
+ width: 14.2857143%;
+}
+span.flatpickr-day {
+ width: 14.2857143%;
+ margin: 0 2.491071428571428px;
+}
+@media screen and (min-width: 0\0) {
+ div.flatpickr-current-month {
+ padding-top: 0px !important;
+ }
+}
--- /dev/null
+import { FlatpickrFn } from "./types/instance";
+import "./utils/polyfills";
+declare var flatpickr: FlatpickrFn;
+export default flatpickr;
--- /dev/null
+import { CustomLocale } from "../types/locale";
+export declare const German: CustomLocale;
+declare const _default: {
+ default?: CustomLocale | undefined;
+ hr?: CustomLocale | undefined;
+ th?: CustomLocale | undefined;
+ tr?: CustomLocale | undefined;
+ ar?: CustomLocale | undefined;
+ at?: CustomLocale | undefined;
+ az?: CustomLocale | undefined;
+ be?: CustomLocale | undefined;
+ bg?: CustomLocale | undefined;
+ bn?: CustomLocale | undefined;
+ bs?: CustomLocale | undefined;
+ cat?: CustomLocale | undefined;
+ cs?: CustomLocale | undefined;
+ cy?: CustomLocale | undefined;
+ da?: CustomLocale | undefined;
+ de?: CustomLocale | undefined;
+ en?: CustomLocale | undefined;
+ eo?: CustomLocale | undefined;
+ es?: CustomLocale | undefined;
+ et?: CustomLocale | undefined;
+ fa?: CustomLocale | undefined;
+ fi?: CustomLocale | undefined;
+ fo?: CustomLocale | undefined;
+ fr?: CustomLocale | undefined;
+ gr?: CustomLocale | undefined;
+ he?: CustomLocale | undefined;
+ hi?: CustomLocale | undefined;
+ hu?: CustomLocale | undefined;
+ id?: CustomLocale | undefined;
+ is?: CustomLocale | undefined;
+ it?: CustomLocale | undefined;
+ ja?: CustomLocale | undefined;
+ ka?: CustomLocale | undefined;
+ ko?: CustomLocale | undefined;
+ km?: CustomLocale | undefined;
+ kz?: CustomLocale | undefined;
+ lt?: CustomLocale | undefined;
+ lv?: CustomLocale | undefined;
+ mk?: CustomLocale | undefined;
+ mn?: CustomLocale | undefined;
+ ms?: CustomLocale | undefined;
+ my?: CustomLocale | undefined;
+ nl?: CustomLocale | undefined;
+ no?: CustomLocale | undefined;
+ pa?: CustomLocale | undefined;
+ pl?: CustomLocale | undefined;
+ pt?: CustomLocale | undefined;
+ ro?: CustomLocale | undefined;
+ ru?: CustomLocale | undefined;
+ si?: CustomLocale | undefined;
+ sk?: CustomLocale | undefined;
+ sl?: CustomLocale | undefined;
+ sq?: CustomLocale | undefined;
+ sr?: CustomLocale | undefined;
+ sv?: CustomLocale | undefined;
+ uk?: CustomLocale | undefined;
+ vn?: CustomLocale | undefined;
+ zh?: CustomLocale | undefined;
+ zh_tw?: CustomLocale | undefined;
+} & {
+ default: import("../types/locale").Locale;
+};
+export default _default;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = global || self, factory(global.de = {}));
+}(this, function (exports) { 'use strict';
+
+ var fp = typeof window !== "undefined" && window.flatpickr !== undefined
+ ? window.flatpickr
+ : {
+ l10ns: {}
+ };
+ var German = {
+ weekdays: {
+ shorthand: ["So", "Mo", "Di", "Mi", "Do", "Fr", "Sa"],
+ longhand: [
+ "Sonntag",
+ "Montag",
+ "Dienstag",
+ "Mittwoch",
+ "Donnerstag",
+ "Freitag",
+ "Samstag",
+ ]
+ },
+ months: {
+ shorthand: [
+ "Jan",
+ "Feb",
+ "Mär",
+ "Apr",
+ "Mai",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez",
+ ],
+ longhand: [
+ "Januar",
+ "Februar",
+ "März",
+ "April",
+ "Mai",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember",
+ ]
+ },
+ firstDayOfWeek: 1,
+ weekAbbreviation: "KW",
+ rangeSeparator: " bis ",
+ scrollTitle: "Zum Ändern scrollen",
+ toggleTitle: "Zum Umschalten klicken",
+ time_24hr: true
+ };
+ fp.l10ns.de = German;
+ var de = fp.l10ns;
+
+ exports.German = German;
+ exports.default = de;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
--- /dev/null
+import { Locale } from "../types/locale";
+export declare const english: Locale;
+export default english;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = global || self, factory(global.default = {}));
+}(this, function (exports) { 'use strict';
+
+ var english = {
+ weekdays: {
+ shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ longhand: [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ ]
+ },
+ months: {
+ shorthand: [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec",
+ ],
+ longhand: [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December",
+ ]
+ },
+ daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ firstDayOfWeek: 0,
+ ordinal: function (nth) {
+ var s = nth % 100;
+ if (s > 3 && s < 21)
+ return "th";
+ switch (s % 10) {
+ case 1:
+ return "st";
+ case 2:
+ return "nd";
+ case 3:
+ return "rd";
+ default:
+ return "th";
+ }
+ },
+ rangeSeparator: " to ",
+ weekAbbreviation: "Wk",
+ scrollTitle: "Scroll to increment",
+ toggleTitle: "Click to toggle",
+ amPM: ["AM", "PM"],
+ yearAriaLabel: "Year",
+ hourAriaLabel: "Hour",
+ minuteAriaLabel: "Minute",
+ time_24hr: false
+ };
+
+ exports.default = english;
+ exports.english = english;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
--- /dev/null
+import { CustomLocale } from "../types/locale";
+export declare const French: CustomLocale;
+declare const _default: {
+ default?: CustomLocale | undefined;
+ hr?: CustomLocale | undefined;
+ th?: CustomLocale | undefined;
+ tr?: CustomLocale | undefined;
+ ar?: CustomLocale | undefined;
+ at?: CustomLocale | undefined;
+ az?: CustomLocale | undefined;
+ be?: CustomLocale | undefined;
+ bg?: CustomLocale | undefined;
+ bn?: CustomLocale | undefined;
+ bs?: CustomLocale | undefined;
+ cat?: CustomLocale | undefined;
+ cs?: CustomLocale | undefined;
+ cy?: CustomLocale | undefined;
+ da?: CustomLocale | undefined;
+ de?: CustomLocale | undefined;
+ en?: CustomLocale | undefined;
+ eo?: CustomLocale | undefined;
+ es?: CustomLocale | undefined;
+ et?: CustomLocale | undefined;
+ fa?: CustomLocale | undefined;
+ fi?: CustomLocale | undefined;
+ fo?: CustomLocale | undefined;
+ fr?: CustomLocale | undefined;
+ gr?: CustomLocale | undefined;
+ he?: CustomLocale | undefined;
+ hi?: CustomLocale | undefined;
+ hu?: CustomLocale | undefined;
+ id?: CustomLocale | undefined;
+ is?: CustomLocale | undefined;
+ it?: CustomLocale | undefined;
+ ja?: CustomLocale | undefined;
+ ka?: CustomLocale | undefined;
+ ko?: CustomLocale | undefined;
+ km?: CustomLocale | undefined;
+ kz?: CustomLocale | undefined;
+ lt?: CustomLocale | undefined;
+ lv?: CustomLocale | undefined;
+ mk?: CustomLocale | undefined;
+ mn?: CustomLocale | undefined;
+ ms?: CustomLocale | undefined;
+ my?: CustomLocale | undefined;
+ nl?: CustomLocale | undefined;
+ no?: CustomLocale | undefined;
+ pa?: CustomLocale | undefined;
+ pl?: CustomLocale | undefined;
+ pt?: CustomLocale | undefined;
+ ro?: CustomLocale | undefined;
+ ru?: CustomLocale | undefined;
+ si?: CustomLocale | undefined;
+ sk?: CustomLocale | undefined;
+ sl?: CustomLocale | undefined;
+ sq?: CustomLocale | undefined;
+ sr?: CustomLocale | undefined;
+ sv?: CustomLocale | undefined;
+ uk?: CustomLocale | undefined;
+ vn?: CustomLocale | undefined;
+ zh?: CustomLocale | undefined;
+ zh_tw?: CustomLocale | undefined;
+} & {
+ default: import("../types/locale").Locale;
+};
+export default _default;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = global || self, factory(global.fr = {}));
+}(this, function (exports) { 'use strict';
+
+ var fp = typeof window !== "undefined" && window.flatpickr !== undefined
+ ? window.flatpickr
+ : {
+ l10ns: {}
+ };
+ var French = {
+ firstDayOfWeek: 1,
+ weekdays: {
+ shorthand: ["dim", "lun", "mar", "mer", "jeu", "ven", "sam"],
+ longhand: [
+ "dimanche",
+ "lundi",
+ "mardi",
+ "mercredi",
+ "jeudi",
+ "vendredi",
+ "samedi",
+ ]
+ },
+ months: {
+ shorthand: [
+ "janv",
+ "févr",
+ "mars",
+ "avr",
+ "mai",
+ "juin",
+ "juil",
+ "août",
+ "sept",
+ "oct",
+ "nov",
+ "déc",
+ ],
+ longhand: [
+ "janvier",
+ "février",
+ "mars",
+ "avril",
+ "mai",
+ "juin",
+ "juillet",
+ "août",
+ "septembre",
+ "octobre",
+ "novembre",
+ "décembre",
+ ]
+ },
+ ordinal: function (nth) {
+ if (nth > 1)
+ return "";
+ return "er";
+ },
+ rangeSeparator: " au ",
+ weekAbbreviation: "Sem",
+ scrollTitle: "Défiler pour augmenter la valeur",
+ toggleTitle: "Cliquer pour basculer",
+ time_24hr: true
+ };
+ fp.l10ns.fr = French;
+ var fr = fp.l10ns;
+
+ exports.French = French;
+ exports.default = fr;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
--- /dev/null
+import { CustomLocale } from "../types/locale";
+export declare const Luxembourgish: CustomLocale;
+declare const _default: {
+ default?: CustomLocale | undefined;
+ hr?: CustomLocale | undefined;
+ th?: CustomLocale | undefined;
+ tr?: CustomLocale | undefined;
+ ar?: CustomLocale | undefined;
+ at?: CustomLocale | undefined;
+ az?: CustomLocale | undefined;
+ be?: CustomLocale | undefined;
+ bg?: CustomLocale | undefined;
+ bn?: CustomLocale | undefined;
+ bs?: CustomLocale | undefined;
+ cat?: CustomLocale | undefined;
+ cs?: CustomLocale | undefined;
+ cy?: CustomLocale | undefined;
+ da?: CustomLocale | undefined;
+ de?: CustomLocale | undefined;
+ en?: CustomLocale | undefined;
+ eo?: CustomLocale | undefined;
+ es?: CustomLocale | undefined;
+ et?: CustomLocale | undefined;
+ fa?: CustomLocale | undefined;
+ fi?: CustomLocale | undefined;
+ fo?: CustomLocale | undefined;
+ fr?: CustomLocale | undefined;
+ gr?: CustomLocale | undefined;
+ he?: CustomLocale | undefined;
+ hi?: CustomLocale | undefined;
+ hu?: CustomLocale | undefined;
+ id?: CustomLocale | undefined;
+ is?: CustomLocale | undefined;
+ it?: CustomLocale | undefined;
+ ja?: CustomLocale | undefined;
+ ka?: CustomLocale | undefined;
+ ko?: CustomLocale | undefined;
+ km?: CustomLocale | undefined;
+ kz?: CustomLocale | undefined;
+ lt?: CustomLocale | undefined;
+ lv?: CustomLocale | undefined;
+ lu?: CustomLocale | undefined;
+ mk?: CustomLocale | undefined;
+ mn?: CustomLocale | undefined;
+ ms?: CustomLocale | undefined;
+ my?: CustomLocale | undefined;
+ nl?: CustomLocale | undefined;
+ no?: CustomLocale | undefined;
+ pa?: CustomLocale | undefined;
+ pl?: CustomLocale | undefined;
+ pt?: CustomLocale | undefined;
+ ro?: CustomLocale | undefined;
+ ru?: CustomLocale | undefined;
+ si?: CustomLocale | undefined;
+ sk?: CustomLocale | undefined;
+ sl?: CustomLocale | undefined;
+ sq?: CustomLocale | undefined;
+ sr?: CustomLocale | undefined;
+ sv?: CustomLocale | undefined;
+ uk?: CustomLocale | undefined;
+ vn?: CustomLocale | undefined;
+ zh?: CustomLocale | undefined;
+ zh_tw?: CustomLocale | undefined;
+} & {
+ default: import("../types/locale").Locale;
+};
+export default _default;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? factory(exports) :
+ typeof define === 'function' && define.amd ? define(['exports'], factory) :
+ (global = global || self, factory(global.lu = {}));
+}(this, function (exports) { 'use strict';
+
+ var fp = typeof window !== "undefined" && window.flatpickr !== undefined
+ ? window.flatpickr
+ : {
+ l10ns: {}
+ };
+ var Luxembourgish = {
+ firstDayOfWeek: 1,
+ weekdays: {
+ shorthand: ["So", "Me", "De", "Me", "Do", "Fr", "Sa"],
+ longhand: [
+ "Sonndeg",
+ "Méindeg",
+ "Dënsdeg",
+ "Mëttwoch",
+ "Donneschdeg",
+ "Freideg",
+ "Samsdeg",
+ ]
+ },
+ months: {
+ shorthand: [
+ "Jan",
+ "Feb",
+ "Mär",
+ "Abr",
+ "Mee",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Okt",
+ "Nov",
+ "Dez",
+ ],
+ longhand: [
+ "Januar",
+ "Februar",
+ "März",
+ "Abrëll",
+ "Mee",
+ "Juni",
+ "Juli",
+ "August",
+ "September",
+ "Oktober",
+ "November",
+ "Dezember",
+ ]
+ },
+
+ weekAbbreviation: "KW",
+ rangeSeparator: " bis ",
+ scrollTitle: "fir ze ännerne scrollen",
+ toggleTitle: "Zum Ëmschalten klicken",
+ time_24hr: true
+ };
+ fp.l10ns.lu = Luxembourgish;
+ var lu = fp.l10ns;
+
+ exports.Luxembourgish = Luxembourgish;
+ exports.default = lu;
+
+ Object.defineProperty(exports, '__esModule', { value: true });
+
+}));
--- /dev/null
+.flatpickr-confirm {
+ height: 40px;
+ max-height: 0px;
+ visibility: hidden;
+ display: flex;
+ justify-content: center;
+ align-items: center;
+ cursor: pointer;
+ background: rgba(0,0,0,0.06)
+}
+
+.flatpickr-confirm svg path {
+ fill: inherit;
+}
+
+.flatpickr-confirm.darkTheme {
+ color: white;
+ fill: white;
+}
+
+.flatpickr-confirm.visible {
+ max-height: 40px;
+ visibility: visible
+}
--- /dev/null
+import { Plugin } from "../../types/options";
+export interface Config {
+ confirmIcon?: string;
+ confirmText?: string;
+ showAlways?: boolean;
+ theme?: string;
+}
+declare function confirmDatePlugin(pluginConfig: Config): Plugin;
+export default confirmDatePlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.confirmDatePlugin = factory());
+}(this, function () { 'use strict';
+
+ /*! *****************************************************************************\r
+ Copyright (c) Microsoft Corporation. All rights reserved.\r
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use\r
+ this file except in compliance with the License. You may obtain a copy of the\r
+ License at http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r
+ MERCHANTABLITY OR NON-INFRINGEMENT.\r
+\r
+ See the Apache Version 2.0 License for specific language governing permissions\r
+ and limitations under the License.\r
+ ***************************************************************************** */\r
+\r
+ var __assign = function() {\r
+ __assign = Object.assign || function __assign(t) {\r
+ for (var s, i = 1, n = arguments.length; i < n; i++) {\r
+ s = arguments[i];\r
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
+ }\r
+ return t;\r
+ };\r
+ return __assign.apply(this, arguments);\r
+ };
+
+ var defaultConfig = {
+ confirmIcon: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' width='17' height='17' viewBox='0 0 17 17'> <g> </g> <path d='M15.418 1.774l-8.833 13.485-4.918-4.386 0.666-0.746 4.051 3.614 8.198-12.515 0.836 0.548z' fill='#000000' /> </svg>",
+ confirmText: "OK ",
+ showAlways: false,
+ theme: "light"
+ };
+ function confirmDatePlugin(pluginConfig) {
+ var config = __assign({}, defaultConfig, pluginConfig);
+ var confirmContainer;
+ var confirmButtonCSSClass = "flatpickr-confirm";
+ return function (fp) {
+ if (fp.config.noCalendar || fp.isMobile)
+ return {};
+ return __assign({ onKeyDown: function (_, __, ___, e) {
+ if (fp.config.enableTime && e.key === "Tab" && e.target === fp.amPM) {
+ e.preventDefault();
+ confirmContainer.focus();
+ }
+ else if (e.key === "Enter" && e.target === confirmContainer)
+ fp.close();
+ },
+ onReady: function () {
+ confirmContainer = fp._createElement("div", confirmButtonCSSClass + " " + (config.showAlways ? "visible" : "") + " " + config.theme + "Theme", config.confirmText);
+ confirmContainer.tabIndex = -1;
+ confirmContainer.innerHTML += config.confirmIcon;
+ confirmContainer.addEventListener("click", fp.close);
+ fp.calendarContainer.appendChild(confirmContainer);
+ fp.loadedPlugins.push("confirmDate");
+ } }, (!config.showAlways
+ ? {
+ onChange: function (_, dateStr) {
+ var showCondition = fp.config.enableTime ||
+ fp.config.mode === "multiple" ||
+ fp.loadedPlugins.indexOf("monthSelect") !== -1;
+ var localConfirmContainer = fp.calendarContainer.querySelector("." + confirmButtonCSSClass);
+ if (!localConfirmContainer)
+ return;
+ if (dateStr &&
+ !fp.config.inline &&
+ showCondition &&
+ localConfirmContainer)
+ return localConfirmContainer.classList.add("visible");
+ localConfirmContainer.classList.remove("visible");
+ }
+ }
+ : {}));
+ };
+ }
+
+ return confirmDatePlugin;
+
+}));
--- /dev/null
+import { Plugin } from "../../types/options";
+declare function labelPlugin(): Plugin;
+export default labelPlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.labelPlugin = factory());
+}(this, function () { 'use strict';
+
+ function labelPlugin() {
+ return function (fp) {
+ return {
+ onReady: function () {
+ var id = fp.input.id;
+ if (!id) {
+ return;
+ }
+ if (fp.mobileInput) {
+ fp.input.removeAttribute("id");
+ fp.mobileInput.id = id;
+ }
+ else if (fp.altInput) {
+ fp.input.removeAttribute("id");
+ fp.altInput.id = id;
+ }
+ fp.loadedPlugins.push("labelPlugin");
+ }
+ };
+ };
+ }
+
+ return labelPlugin;
+
+}));
--- /dev/null
+import { Plugin } from "../types/options";
+export interface MinMaxTime {
+ minTime?: string;
+ maxTime?: string;
+}
+export interface Config {
+ table?: Record<string, MinMaxTime>;
+ getTimeLimits?: (date: Date) => MinMaxTime;
+ tableDateFormat?: string;
+}
+export interface State {
+ formatDate: (date: Date, f: string) => string;
+ tableDateFormat: string;
+ defaults: MinMaxTime;
+}
+declare function minMaxTimePlugin(config?: Config): Plugin;
+export default minMaxTimePlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.minMaxTimePlugin = factory());
+}(this, function () { 'use strict';
+
+ var pad = function (number) { return ("0" + number).slice(-2); };
+ var int = function (bool) { return (bool === true ? 1 : 0); };
+
+ var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
+ var formats = {
+ // get the date in UTC
+ Z: function (date) { return date.toISOString(); },
+ // weekday name, short, e.g. Thu
+ D: function (date, locale, options) {
+ return locale.weekdays.shorthand[formats.w(date, locale, options)];
+ },
+ // full month name e.g. January
+ F: function (date, locale, options) {
+ return monthToStr(formats.n(date, locale, options) - 1, false, locale);
+ },
+ // padded hour 1-12
+ G: function (date, locale, options) {
+ return pad(formats.h(date, locale, options));
+ },
+ // hours with leading zero e.g. 03
+ H: function (date) { return pad(date.getHours()); },
+ // day (1-30) with ordinal suffix e.g. 1st, 2nd
+ J: function (date, locale) {
+ return locale.ordinal !== undefined
+ ? date.getDate() + locale.ordinal(date.getDate())
+ : date.getDate();
+ },
+ // AM/PM
+ K: function (date, locale) { return locale.amPM[int(date.getHours() > 11)]; },
+ // shorthand month e.g. Jan, Sep, Oct, etc
+ M: function (date, locale) {
+ return monthToStr(date.getMonth(), true, locale);
+ },
+ // seconds 00-59
+ S: function (date) { return pad(date.getSeconds()); },
+ // unix timestamp
+ U: function (date) { return date.getTime() / 1000; },
+ W: function (date, _, options) {
+ return options.getWeek(date);
+ },
+ // full year e.g. 2016
+ Y: function (date) { return date.getFullYear(); },
+ // day in month, padded (01-30)
+ d: function (date) { return pad(date.getDate()); },
+ // hour from 1-12 (am/pm)
+ h: function (date) { return (date.getHours() % 12 ? date.getHours() % 12 : 12); },
+ // minutes, padded with leading zero e.g. 09
+ i: function (date) { return pad(date.getMinutes()); },
+ // day in month (1-30)
+ j: function (date) { return date.getDate(); },
+ // weekday name, full, e.g. Thursday
+ l: function (date, locale) {
+ return locale.weekdays.longhand[date.getDay()];
+ },
+ // padded month number (01-12)
+ m: function (date) { return pad(date.getMonth() + 1); },
+ // the month number (1-12)
+ n: function (date) { return date.getMonth() + 1; },
+ // seconds 0-59
+ s: function (date) { return date.getSeconds(); },
+ // Unix Milliseconds
+ u: function (date) { return date.getTime(); },
+ // number of the day of the week
+ w: function (date) { return date.getDay(); },
+ // last two digits of year e.g. 16 for 2016
+ y: function (date) { return String(date.getFullYear()).substring(2); }
+ };
+
+ var defaults = {
+ _disable: [],
+ _enable: [],
+ allowInput: false,
+ altFormat: "F j, Y",
+ altInput: false,
+ altInputClass: "form-control input",
+ animate: typeof window === "object" &&
+ window.navigator.userAgent.indexOf("MSIE") === -1,
+ ariaDateFormat: "F j, Y",
+ clickOpens: true,
+ closeOnSelect: true,
+ conjunction: ", ",
+ dateFormat: "Y-m-d",
+ defaultHour: 12,
+ defaultMinute: 0,
+ defaultSeconds: 0,
+ disable: [],
+ disableMobile: false,
+ enable: [],
+ enableSeconds: false,
+ enableTime: false,
+ errorHandler: function (err) {
+ return typeof console !== "undefined" && console.warn(err);
+ },
+ getWeek: function (givenDate) {
+ var date = new Date(givenDate.getTime());
+ date.setHours(0, 0, 0, 0);
+ // Thursday in current week decides the year.
+ date.setDate(date.getDate() + 3 - ((date.getDay() + 6) % 7));
+ // January 4 is always in week 1.
+ var week1 = new Date(date.getFullYear(), 0, 4);
+ // Adjust to Thursday in week 1 and count number of weeks from date to week1.
+ return (1 +
+ Math.round(((date.getTime() - week1.getTime()) / 86400000 -
+ 3 +
+ ((week1.getDay() + 6) % 7)) /
+ 7));
+ },
+ hourIncrement: 1,
+ ignoredFocusElements: [],
+ inline: false,
+ locale: "default",
+ minuteIncrement: 5,
+ mode: "single",
+ monthSelectorType: "dropdown",
+ nextArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M13.207 8.472l-7.854 7.854-0.707-0.707 7.146-7.146-7.146-7.148 0.707-0.707 7.854 7.854z' /></svg>",
+ noCalendar: false,
+ now: new Date(),
+ onChange: [],
+ onClose: [],
+ onDayCreate: [],
+ onDestroy: [],
+ onKeyDown: [],
+ onMonthChange: [],
+ onOpen: [],
+ onParseConfig: [],
+ onReady: [],
+ onValueUpdate: [],
+ onYearChange: [],
+ onPreCalendarPosition: [],
+ plugins: [],
+ position: "auto",
+ positionElement: undefined,
+ prevArrow: "<svg version='1.1' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' viewBox='0 0 17 17'><g></g><path d='M5.207 8.471l7.146 7.147-0.707 0.707-7.853-7.854 7.854-7.853 0.707 0.707-7.147 7.146z' /></svg>",
+ shorthandCurrentMonth: false,
+ showMonths: 1,
+ static: false,
+ time_24hr: false,
+ weekNumbers: false,
+ wrap: false
+ };
+
+ var english = {
+ weekdays: {
+ shorthand: ["Sun", "Mon", "Tue", "Wed", "Thu", "Fri", "Sat"],
+ longhand: [
+ "Sunday",
+ "Monday",
+ "Tuesday",
+ "Wednesday",
+ "Thursday",
+ "Friday",
+ "Saturday",
+ ]
+ },
+ months: {
+ shorthand: [
+ "Jan",
+ "Feb",
+ "Mar",
+ "Apr",
+ "May",
+ "Jun",
+ "Jul",
+ "Aug",
+ "Sep",
+ "Oct",
+ "Nov",
+ "Dec",
+ ],
+ longhand: [
+ "January",
+ "February",
+ "March",
+ "April",
+ "May",
+ "June",
+ "July",
+ "August",
+ "September",
+ "October",
+ "November",
+ "December",
+ ]
+ },
+ daysInMonth: [31, 28, 31, 30, 31, 30, 31, 31, 30, 31, 30, 31],
+ firstDayOfWeek: 0,
+ ordinal: function (nth) {
+ var s = nth % 100;
+ if (s > 3 && s < 21)
+ return "th";
+ switch (s % 10) {
+ case 1:
+ return "st";
+ case 2:
+ return "nd";
+ case 3:
+ return "rd";
+ default:
+ return "th";
+ }
+ },
+ rangeSeparator: " to ",
+ weekAbbreviation: "Wk",
+ scrollTitle: "Scroll to increment",
+ toggleTitle: "Click to toggle",
+ amPM: ["AM", "PM"],
+ yearAriaLabel: "Year",
+ hourAriaLabel: "Hour",
+ minuteAriaLabel: "Minute",
+ time_24hr: false
+ };
+
+ var createDateFormatter = function (_a) {
+ var _b = _a.config, config = _b === void 0 ? defaults : _b, _c = _a.l10n, l10n = _c === void 0 ? english : _c;
+ return function (dateObj, frmt, overrideLocale) {
+ var locale = overrideLocale || l10n;
+ if (config.formatDate !== undefined) {
+ return config.formatDate(dateObj, frmt, locale);
+ }
+ return frmt
+ .split("")
+ .map(function (c, i, arr) {
+ return formats[c] && arr[i - 1] !== "\\"
+ ? formats[c](dateObj, locale, config)
+ : c !== "\\"
+ ? c
+ : "";
+ })
+ .join("");
+ };
+ };
+ /**
+ * Compute the difference in dates, measured in ms
+ */
+ function compareDates(date1, date2, timeless) {
+ if (timeless === void 0) { timeless = true; }
+ if (timeless !== false) {
+ return (new Date(date1.getTime()).setHours(0, 0, 0, 0) -
+ new Date(date2.getTime()).setHours(0, 0, 0, 0));
+ }
+ return date1.getTime() - date2.getTime();
+ }
+ /**
+ * Compute the difference in times, measured in ms
+ */
+ function compareTimes(date1, date2) {
+ return (3600 * (date1.getHours() - date2.getHours()) +
+ 60 * (date1.getMinutes() - date2.getMinutes()) +
+ date1.getSeconds() -
+ date2.getSeconds());
+ }
+
+ function minMaxTimePlugin(config) {
+ if (config === void 0) { config = {}; }
+ var state = {
+ formatDate: createDateFormatter({}),
+ tableDateFormat: config.tableDateFormat || "Y-m-d",
+ defaults: {
+ minTime: undefined,
+ maxTime: undefined
+ }
+ };
+ function findDateTimeLimit(date) {
+ if (config.table !== undefined) {
+ return config.table[state.formatDate(date, state.tableDateFormat)];
+ }
+ return config.getTimeLimits && config.getTimeLimits(date);
+ }
+ return function (fp) {
+ return {
+ onReady: function () {
+ state.formatDate = this.formatDate;
+ state.defaults = {
+ minTime: this.config.minTime && state.formatDate(this.config.minTime, "H:i"),
+ maxTime: this.config.maxTime && state.formatDate(this.config.maxTime, "H:i")
+ };
+ fp.loadedPlugins.push("minMaxTime");
+ },
+ onChange: function () {
+ var latest = this.latestSelectedDateObj;
+ var matchingTimeLimit = latest && findDateTimeLimit(latest);
+ if (latest && matchingTimeLimit !== undefined) {
+ this.set(matchingTimeLimit);
+ fp.config.minTime.setFullYear(latest.getFullYear());
+ fp.config.maxTime.setFullYear(latest.getFullYear());
+ fp.config.minTime.setMonth(latest.getMonth());
+ fp.config.maxTime.setMonth(latest.getMonth());
+ fp.config.minTime.setDate(latest.getDate());
+ fp.config.maxTime.setDate(latest.getDate());
+ if (compareDates(latest, fp.config.maxTime, false) > 0) {
+ fp.setDate(new Date(latest.getTime()).setHours(fp.config.maxTime.getHours(), fp.config.maxTime.getMinutes(), fp.config.maxTime.getSeconds(), fp.config.maxTime.getMilliseconds()), false);
+ }
+ else if (compareDates(latest, fp.config.minTime, false) < 0)
+ fp.setDate(new Date(latest.getTime()).setHours(fp.config.minTime.getHours(), fp.config.minTime.getMinutes(), fp.config.minTime.getSeconds(), fp.config.minTime.getMilliseconds()), false);
+ }
+ else {
+ var newMinMax = state.defaults || {
+ minTime: undefined,
+ maxTime: undefined
+ };
+ this.set(newMinMax);
+ if (!latest)
+ return;
+ var _a = fp.config, minTime = _a.minTime, maxTime = _a.maxTime;
+ if (minTime && compareTimes(latest, minTime) < 0) {
+ fp.setDate(new Date(latest.getTime()).setHours(minTime.getHours(), minTime.getMinutes(), minTime.getSeconds(), minTime.getMilliseconds()), false);
+ }
+ else if (maxTime && compareTimes(latest, maxTime) > 0) {
+ fp.setDate(new Date(latest.getTime()).setHours(maxTime.getHours(), maxTime.getMinutes(), maxTime.getSeconds(), maxTime.getMilliseconds()));
+ }
+ //
+ }
+ }
+ };
+ };
+ }
+
+ return minMaxTimePlugin;
+
+}));
--- /dev/null
+import { Plugin } from "../../types/options";
+export interface Config {
+ shorthand: boolean;
+ dateFormat: string;
+ altFormat: string;
+ theme: string;
+}
+export declare type MonthElement = HTMLSpanElement & {
+ dateObj: Date;
+ $i: number;
+};
+declare function monthSelectPlugin(pluginConfig?: Partial<Config>): Plugin;
+export default monthSelectPlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.monthSelectPlugin = factory());
+}(this, function () { 'use strict';
+
+ /*! *****************************************************************************\r
+ Copyright (c) Microsoft Corporation. All rights reserved.\r
+ Licensed under the Apache License, Version 2.0 (the "License"); you may not use\r
+ this file except in compliance with the License. You may obtain a copy of the\r
+ License at http://www.apache.org/licenses/LICENSE-2.0\r
+\r
+ THIS CODE IS PROVIDED ON AN *AS IS* BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY\r
+ KIND, EITHER EXPRESS OR IMPLIED, INCLUDING WITHOUT LIMITATION ANY IMPLIED\r
+ WARRANTIES OR CONDITIONS OF TITLE, FITNESS FOR A PARTICULAR PURPOSE,\r
+ MERCHANTABLITY OR NON-INFRINGEMENT.\r
+\r
+ See the Apache Version 2.0 License for specific language governing permissions\r
+ and limitations under the License.\r
+ ***************************************************************************** */\r
+\r
+ var __assign = function() {\r
+ __assign = Object.assign || function __assign(t) {\r
+ for (var s, i = 1, n = arguments.length; i < n; i++) {\r
+ s = arguments[i];\r
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p)) t[p] = s[p];\r
+ }\r
+ return t;\r
+ };\r
+ return __assign.apply(this, arguments);\r
+ };
+
+ var monthToStr = function (monthNumber, shorthand, locale) { return locale.months[shorthand ? "shorthand" : "longhand"][monthNumber]; };
+
+ var defaultConfig = {
+ shorthand: false,
+ dateFormat: "F Y",
+ altFormat: "F Y",
+ theme: "light"
+ };
+ function monthSelectPlugin(pluginConfig) {
+ var config = __assign({}, defaultConfig, pluginConfig);
+ return function (fp) {
+ fp.config.dateFormat = config.dateFormat;
+ fp.config.altFormat = config.altFormat;
+ var self = { monthsContainer: null };
+ function clearUnnecessaryDOMElements() {
+ if (!fp.rContainer || !fp.daysContainer || !fp.weekdayContainer)
+ return;
+ fp.rContainer.removeChild(fp.daysContainer);
+ fp.rContainer.removeChild(fp.weekdayContainer);
+ for (var index = 0; index < fp.monthElements.length; index++) {
+ var element = fp.monthElements[index];
+ if (!element.parentNode)
+ continue;
+ element.parentNode.removeChild(element);
+ }
+ }
+ function addListeners() {
+ fp._bind(fp.prevMonthNav, "click", function () {
+ fp.currentYear -= 1;
+ selectYear();
+ });
+ fp._bind(fp.nextMonthNav, "mousedown", function () {
+ fp.currentYear += 1;
+ selectYear();
+ });
+ }
+ function addMonths() {
+ if (!fp.rContainer)
+ return;
+ self.monthsContainer = fp._createElement("div", "flatpickr-monthSelect-months");
+ self.monthsContainer.tabIndex = -1;
+ fp.calendarContainer.classList.add("flatpickr-monthSelect-theme-" + config.theme);
+ for (var i = 0; i < 12; i++) {
+ var month = fp._createElement("span", "flatpickr-monthSelect-month");
+ month.dateObj = new Date(fp.currentYear, i);
+ month.$i = i;
+ month.textContent = monthToStr(i, config.shorthand, fp.l10n);
+ month.tabIndex = -1;
+ month.addEventListener("click", selectMonth);
+ self.monthsContainer.appendChild(month);
+ }
+ fp.rContainer.appendChild(self.monthsContainer);
+ }
+ function setCurrentlySelected() {
+ if (!fp.rContainer)
+ return;
+ var currentlySelected = fp.rContainer.querySelectorAll(".flatpickr-monthSelect-month.selected");
+ for (var index = 0; index < currentlySelected.length; index++) {
+ currentlySelected[index].classList.remove("selected");
+ }
+ var month = fp.rContainer.querySelector(".flatpickr-monthSelect-month:nth-child(" + (fp.currentMonth + 1) + ")");
+ if (month) {
+ month.classList.add("selected");
+ }
+ }
+ function selectYear() {
+ var selectedDate = fp.selectedDates[0];
+ selectedDate.setFullYear(fp.currentYear);
+ fp.setDate(selectedDate, true);
+ }
+ function selectMonth(e) {
+ e.preventDefault();
+ e.stopPropagation();
+ setMonth(e.target.dateObj);
+ }
+ function setMonth(date) {
+ var selectedDate = new Date(date);
+ selectedDate.setFullYear(fp.currentYear);
+ fp.currentMonth = selectedDate.getMonth();
+ fp.setDate(selectedDate, true);
+ setCurrentlySelected();
+ }
+ var shifts = {
+ 37: -1,
+ 39: 1,
+ 40: 3,
+ 38: -3
+ };
+ function onKeyDown(_, __, ___, e) {
+ var shouldMove = shifts[e.keyCode] !== undefined;
+ if (!shouldMove && e.keyCode !== 13) {
+ return;
+ }
+ if (!fp.rContainer || !self.monthsContainer)
+ return;
+ var currentlySelected = fp.rContainer.querySelector(".flatpickr-monthSelect-month.selected");
+ var index = Array.prototype.indexOf.call(self.monthsContainer.children, document.activeElement);
+ if (index === -1) {
+ var target = currentlySelected || self.monthsContainer.firstElementChild;
+ target.focus();
+ index = target.$i;
+ }
+ if (shouldMove) {
+ self.monthsContainer.children[(12 + index + shifts[e.keyCode]) % 12].focus();
+ }
+ else if (e.keyCode === 13 &&
+ self.monthsContainer.contains(document.activeElement)) {
+ setMonth(document.activeElement.dateObj);
+ }
+ }
+ function destroyPluginInstance() {
+ if (self.monthsContainer !== null) {
+ var months = self.monthsContainer.querySelectorAll(".flatpickr-monthSelect-month");
+ for (var index = 0; index < months.length; index++) {
+ months[index].removeEventListener("click", selectMonth);
+ }
+ }
+ }
+ return {
+ onParseConfig: function () {
+ fp.config.mode = "single";
+ fp.config.enableTime = false;
+ },
+ onValueUpdate: setCurrentlySelected,
+ onKeyDown: onKeyDown,
+ onReady: [
+ clearUnnecessaryDOMElements,
+ addListeners,
+ addMonths,
+ setCurrentlySelected,
+ function () {
+ fp.loadedPlugins.push("monthSelect");
+ },
+ ],
+ onDestroy: destroyPluginInstance
+ };
+ };
+ }
+
+ return monthSelectPlugin;
+
+}));
--- /dev/null
+.flatpickr-monthSelect-months {
+ margin: 10px 1px 3px 1px;
+ flex-wrap: wrap;
+}
+
+.flatpickr-monthSelect-month {
+ background: none;
+ border: 0;
+ border-radius: 2px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #393939;
+ cursor: pointer;
+ display: inline-block;
+ font-weight: 400;
+ margin: 0.5px;
+ justify-content: center;
+ padding: 10px;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ text-align: center;
+ width: 33%;
+}
+
+.flatpickr-monthSelect-theme-dark {
+ background: #3f4458;
+}
+
+.flatpickr-monthSelect-theme-dark .flatpickr-current-month input.cur-year {
+ color: #fff;
+}
+
+.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-prev-month,
+.flatpickr-monthSelect-theme-dark .flatpickr-months .flatpickr-next-month {
+ color: #fff;
+ fill: #fff;
+}
+
+.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month {
+ color: rgba(255, 255, 255, 0.95);
+}
+
+.flatpickr-monthSelect-month:hover,
+.flatpickr-monthSelect-month:focus {
+ background: #e6e6e6;
+ cursor: pointer;
+ outline: 0;
+}
+
+.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:hover,
+.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month:focus {
+ background: #646c8c;
+ border-color: #646c8c;
+}
+
+.flatpickr-monthSelect-month.selected {
+ background-color: #569ff7;
+ color: #fff;
+}
+
+.flatpickr-monthSelect-theme-dark .flatpickr-monthSelect-month.selected {
+ background: #80cbc4;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #80cbc4;
+}
--- /dev/null
+export {};
--- /dev/null
+import { Plugin } from "../types/options";
+export interface Config {
+ input?: string | HTMLInputElement;
+ position?: "left";
+}
+declare global {
+ interface Window {
+ rangePlugin: (config?: Config) => void;
+ }
+}
+declare function rangePlugin(config?: Config): Plugin;
+export default rangePlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.rangePlugin = factory());
+}(this, function () { 'use strict';
+
+ function rangePlugin(config) {
+ if (config === void 0) { config = {}; }
+ return function (fp) {
+ var dateFormat = "", secondInput, _secondInputFocused, _prevDates;
+ var createSecondInput = function () {
+ if (config.input) {
+ secondInput =
+ config.input instanceof Element
+ ? config.input
+ : window.document.querySelector(config.input);
+ if (!secondInput) {
+ fp.config.errorHandler(new Error("Invalid input element specified"));
+ return;
+ }
+ if (fp.config.wrap) {
+ secondInput = secondInput.querySelector("[data-input]");
+ }
+ }
+ else {
+ secondInput = fp._input.cloneNode();
+ secondInput.removeAttribute("id");
+ secondInput._flatpickr = undefined;
+ }
+ if (secondInput.value) {
+ var parsedDate = fp.parseDate(secondInput.value);
+ if (parsedDate)
+ fp.selectedDates.push(parsedDate);
+ }
+ secondInput.setAttribute("data-fp-omit", "");
+ fp._bind(secondInput, ["focus", "click"], function () {
+ if (fp.selectedDates[1]) {
+ fp.latestSelectedDateObj = fp.selectedDates[1];
+ fp._setHoursFromDate(fp.selectedDates[1]);
+ fp.jumpToDate(fp.selectedDates[1]);
+ }
+ _secondInputFocused = true;
+ fp.isOpen = false;
+ fp.open(undefined, config.position === "left" ? fp._input : secondInput);
+ });
+ fp._bind(fp._input, ["focus", "click"], function (e) {
+ e.preventDefault();
+ fp.isOpen = false;
+ fp.open();
+ });
+ if (fp.config.allowInput)
+ fp._bind(secondInput, "keydown", function (e) {
+ if (e.key === "Enter") {
+ fp.setDate([fp.selectedDates[0], secondInput.value], true, dateFormat);
+ secondInput.click();
+ }
+ });
+ if (!config.input)
+ fp._input.parentNode &&
+ fp._input.parentNode.insertBefore(secondInput, fp._input.nextSibling);
+ };
+ var plugin = {
+ onParseConfig: function () {
+ fp.config.mode = "range";
+ dateFormat = fp.config.altInput
+ ? fp.config.altFormat
+ : fp.config.dateFormat;
+ },
+ onReady: function () {
+ createSecondInput();
+ fp.config.ignoredFocusElements.push(secondInput);
+ if (fp.config.allowInput) {
+ fp._input.removeAttribute("readonly");
+ secondInput.removeAttribute("readonly");
+ }
+ else {
+ secondInput.setAttribute("readonly", "readonly");
+ }
+ fp._bind(fp._input, "focus", function () {
+ fp.latestSelectedDateObj = fp.selectedDates[0];
+ fp._setHoursFromDate(fp.selectedDates[0]);
+ _secondInputFocused = false;
+ fp.jumpToDate(fp.selectedDates[0]);
+ });
+ if (fp.config.allowInput)
+ fp._bind(fp._input, "keydown", function (e) {
+ if (e.key === "Enter")
+ fp.setDate([fp._input.value, fp.selectedDates[1]], true, dateFormat);
+ });
+ fp.setDate(fp.selectedDates, false);
+ plugin.onValueUpdate(fp.selectedDates);
+ fp.loadedPlugins.push("range");
+ },
+ onPreCalendarPosition: function () {
+ if (_secondInputFocused) {
+ fp._positionElement = secondInput;
+ setTimeout(function () {
+ fp._positionElement = fp._input;
+ }, 0);
+ }
+ },
+ onChange: function () {
+ if (!fp.selectedDates.length) {
+ setTimeout(function () {
+ if (fp.selectedDates.length)
+ return;
+ secondInput.value = "";
+ _prevDates = [];
+ }, 10);
+ }
+ if (_secondInputFocused) {
+ setTimeout(function () {
+ secondInput.focus();
+ }, 0);
+ }
+ },
+ onDestroy: function () {
+ if (!config.input)
+ secondInput.parentNode &&
+ secondInput.parentNode.removeChild(secondInput);
+ },
+ onValueUpdate: function (selDates) {
+ var _a, _b, _c;
+ if (!secondInput)
+ return;
+ _prevDates =
+ !_prevDates || selDates.length >= _prevDates.length
+ ? selDates.slice() : _prevDates;
+ if (_prevDates.length > selDates.length) {
+ var newSelectedDate = selDates[0];
+ var newDates = _secondInputFocused
+ ? [_prevDates[0], newSelectedDate]
+ : [newSelectedDate, _prevDates[1]];
+ fp.setDate(newDates, false);
+ _prevDates = newDates.slice();
+ }
+ _a = fp.selectedDates.map(function (d) { return fp.formatDate(d, dateFormat); }), _b = _a[0], fp._input.value = _b === void 0 ? "" : _b, _c = _a[1], secondInput.value = _c === void 0 ? "" : _c;
+ }
+ };
+ return plugin;
+ };
+ }
+
+ return rangePlugin;
+
+}));
--- /dev/null
+import { Plugin } from "../types/options";
+declare function scrollPlugin(): Plugin;
+export default scrollPlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.scrollPlugin = factory());
+}(this, function () { 'use strict';
+
+ function delta(e) {
+ return Math.max(-1, Math.min(1, e.wheelDelta || -e.deltaY));
+ }
+ var scroll = function (e) {
+ e.preventDefault();
+ var ev = new CustomEvent("increment", {
+ bubbles: true
+ });
+ ev.delta = delta(e);
+ e.target.dispatchEvent(ev);
+ };
+ function scrollMonth(fp) {
+ return function (e) {
+ e.preventDefault();
+ var mDelta = delta(e);
+ fp.changeMonth(mDelta);
+ };
+ }
+ function scrollPlugin() {
+ return function (fp) {
+ var monthScroller = scrollMonth(fp);
+ return {
+ onReady: function () {
+ if (fp.timeContainer) {
+ fp.timeContainer.addEventListener("wheel", scroll);
+ }
+ fp.yearElements.forEach(function (yearElem) {
+ return yearElem.addEventListener("wheel", scroll);
+ });
+ fp.monthElements.forEach(function (monthElem) {
+ return monthElem.addEventListener("wheel", monthScroller);
+ });
+ fp.loadedPlugins.push("scroll");
+ },
+ onDestroy: function () {
+ if (fp.timeContainer) {
+ fp.timeContainer.removeEventListener("wheel", scroll);
+ }
+ fp.yearElements.forEach(function (yearElem) {
+ return yearElem.removeEventListener("wheel", scroll);
+ });
+ fp.monthElements.forEach(function (monthElem) {
+ return monthElem.removeEventListener("wheel", monthScroller);
+ });
+ }
+ };
+ };
+ }
+
+ return scrollPlugin;
+
+}));
--- /dev/null
+import { Plugin } from "../../types/options";
+export declare type PlusWeeks = {
+ weekStartDay: Date;
+ weekEndDay: Date;
+};
+declare function weekSelectPlugin(): Plugin<PlusWeeks>;
+export default weekSelectPlugin;
--- /dev/null
+(function (global, factory) {
+ typeof exports === 'object' && typeof module !== 'undefined' ? module.exports = factory() :
+ typeof define === 'function' && define.amd ? define(factory) :
+ (global = global || self, global.weekSelect = factory());
+}(this, function () { 'use strict';
+
+ function weekSelectPlugin() {
+ return function (fp) {
+ function onDayHover(event) {
+ var day = event.target;
+ if (!day.classList.contains("flatpickr-day"))
+ return;
+ var days = fp.days.childNodes;
+ var dayIndex = day.$i;
+ var dayIndSeven = dayIndex / 7;
+ var weekStartDay = days[7 * Math.floor(dayIndSeven)]
+ .dateObj;
+ var weekEndDay = days[7 * Math.ceil(dayIndSeven + 0.01) - 1].dateObj;
+ for (var i = days.length; i--;) {
+ var day_1 = days[i];
+ var date = day_1.dateObj;
+ if (date > weekEndDay || date < weekStartDay)
+ day_1.classList.remove("inRange");
+ else
+ day_1.classList.add("inRange");
+ }
+ }
+ function highlightWeek() {
+ var selDate = fp.latestSelectedDateObj;
+ if (selDate !== undefined &&
+ selDate.getMonth() === fp.currentMonth &&
+ selDate.getFullYear() === fp.currentYear) {
+ fp.weekStartDay = fp.days.childNodes[7 * Math.floor(fp.selectedDateElem.$i / 7)].dateObj;
+ fp.weekEndDay = fp.days.childNodes[7 * Math.ceil(fp.selectedDateElem.$i / 7 + 0.01) - 1].dateObj;
+ }
+ var days = fp.days.childNodes;
+ for (var i = days.length; i--;) {
+ var date = days[i].dateObj;
+ if (date >= fp.weekStartDay && date <= fp.weekEndDay)
+ days[i].classList.add("week", "selected");
+ }
+ }
+ function clearHover() {
+ var days = fp.days.childNodes;
+ for (var i = days.length; i--;)
+ days[i].classList.remove("inRange");
+ }
+ function onReady() {
+ if (fp.daysContainer !== undefined)
+ fp.daysContainer.addEventListener("mouseover", onDayHover);
+ }
+ function onDestroy() {
+ if (fp.daysContainer !== undefined)
+ fp.daysContainer.removeEventListener("mouseover", onDayHover);
+ }
+ return {
+ onValueUpdate: highlightWeek,
+ onMonthChange: highlightWeek,
+ onYearChange: highlightWeek,
+ onOpen: highlightWeek,
+ onClose: clearHover,
+ onParseConfig: function () {
+ fp.config.mode = "single";
+ fp.config.enableTime = false;
+ fp.config.dateFormat = fp.config.dateFormat
+ ? fp.config.dateFormat
+ : "\\W\\e\\e\\k #W, Y";
+ fp.config.altFormat = fp.config.altFormat
+ ? fp.config.altFormat
+ : "\\W\\e\\e\\k #W, Y";
+ },
+ onReady: [
+ onReady,
+ highlightWeek,
+ function () {
+ fp.loadedPlugins.push("weekSelect");
+ },
+ ],
+ onDestroy: onDestroy
+ };
+ };
+ }
+
+ return weekSelectPlugin;
+
+}));
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background: #fff;
+ -webkit-box-shadow: 1px 0 0 #eee, -1px 0 0 #eee, 0 1px 0 #eee, 0 -1px 0 #eee, 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 1px 0 0 #eee, -1px 0 0 #eee, 0 1px 0 #eee, 0 -1px 0 #eee, 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #eee;
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #eee;
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #eee;
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #fff;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ background: transparent;
+ color: #3c3f40;
+ fill: #3c3f40;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #3c3f40;
+ fill: #3c3f40;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(64,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(64,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(64,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(60,63,64,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #3c3f40;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #3c3f40;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(60,63,64,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: transparent;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: transparent;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: transparent;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: transparent;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 #eee;
+ box-shadow: -1px 0 0 #eee;
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #404848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e9e9e9;
+ border-color: #e9e9e9;
+}
+.flatpickr-day.today {
+ border-color: #f64747;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #f64747;
+ background: #f64747;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #4f99ff;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #4f99ff;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #4f99ff;
+ box-shadow: -10px 0 0 #4f99ff;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e9e9e9, 5px 0 0 #e9e9e9;
+ box-shadow: -5px 0 0 #e9e9e9, 5px 0 0 #e9e9e9;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(64,72,72,0.3);
+ background: transparent;
+ border-color: #e9e9e9;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(64,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #4f99ff, 5px 0 0 #4f99ff;
+ box-shadow: -5px 0 0 #4f99ff, 5px 0 0 #4f99ff;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ -webkit-box-shadow: 1px 0 0 #eee;
+ box-shadow: 1px 0 0 #eee;
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(64,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #404848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #404848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #404848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #404848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #f1f1f1;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+.flatpickr-calendar {
+ width: 307.875px;
+}
+.dayContainer {
+ padding: 0;
+ border-right: 0;
+}
+span.flatpickr-day,
+span.flatpickr-day.prevMonthDay,
+span.flatpickr-day.nextMonthDay {
+ border-radius: 0 !important;
+ border: 1px solid #e9e9e9;
+ max-width: none;
+ border-right-color: transparent;
+}
+span.flatpickr-day:nth-child(n+8),
+span.flatpickr-day.prevMonthDay:nth-child(n+8),
+span.flatpickr-day.nextMonthDay:nth-child(n+8) {
+ border-top-color: transparent;
+}
+span.flatpickr-day:nth-child(7n-6),
+span.flatpickr-day.prevMonthDay:nth-child(7n-6),
+span.flatpickr-day.nextMonthDay:nth-child(7n-6) {
+ border-left: 0;
+}
+span.flatpickr-day:nth-child(n+36),
+span.flatpickr-day.prevMonthDay:nth-child(n+36),
+span.flatpickr-day.nextMonthDay:nth-child(n+36) {
+ border-bottom: 0;
+}
+span.flatpickr-day:nth-child(-n+7),
+span.flatpickr-day.prevMonthDay:nth-child(-n+7),
+span.flatpickr-day.nextMonthDay:nth-child(-n+7) {
+ margin-top: 0;
+}
+span.flatpickr-day.today:not(.selected),
+span.flatpickr-day.prevMonthDay.today:not(.selected),
+span.flatpickr-day.nextMonthDay.today:not(.selected) {
+ border-color: #e9e9e9;
+ border-right-color: transparent;
+ border-top-color: transparent;
+ border-bottom-color: #f64747;
+}
+span.flatpickr-day.today:not(.selected):hover,
+span.flatpickr-day.prevMonthDay.today:not(.selected):hover,
+span.flatpickr-day.nextMonthDay.today:not(.selected):hover {
+ border: 1px solid #f64747;
+}
+span.flatpickr-day.startRange,
+span.flatpickr-day.prevMonthDay.startRange,
+span.flatpickr-day.nextMonthDay.startRange,
+span.flatpickr-day.endRange,
+span.flatpickr-day.prevMonthDay.endRange,
+span.flatpickr-day.nextMonthDay.endRange {
+ border-color: #4f99ff;
+}
+span.flatpickr-day.today,
+span.flatpickr-day.prevMonthDay.today,
+span.flatpickr-day.nextMonthDay.today,
+span.flatpickr-day.selected,
+span.flatpickr-day.prevMonthDay.selected,
+span.flatpickr-day.nextMonthDay.selected {
+ z-index: 2;
+}
+.rangeMode .flatpickr-day {
+ margin-top: -1px;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ -webkit-box-shadow: none;
+ box-shadow: none;
+}
+.flatpickr-weekwrapper span.flatpickr-day {
+ border: 0;
+ margin: -1px 0 0 -1px;
+}
+.hasWeeks .flatpickr-days {
+ border-right: 0;
+}
+
+ @media screen and (min-width:0\0) and (min-resolution: +72dpi) {
+ span.flatpickr-day {
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1 0 auto;
+ -ms-flex: 1 0 auto;
+ flex: 1 0 auto;
+ }
+ }
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid rgba(72,72,72,0.1);
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid rgba(72,72,72,0.1);
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: rgba(72,72,72,0.1);
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #ffb866;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: rgba(72,72,72,0.1);
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #ffb866;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #ffb866;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #ffb866;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #ffb866;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #ffb866;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #ffb866;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid rgba(72,72,72,0.1);
+ border-right: 1px solid rgba(72,72,72,0.1);
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.1);
+ box-shadow: -1px 0 0 rgba(72,72,72,0.1);
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #ffb866;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #ffb866;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #ffb866;
+ box-shadow: -10px 0 0 #ffb866;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #ffb866, 5px 0 0 #ffb866;
+ box-shadow: -5px 0 0 #ffb866, 5px 0 0 #ffb866;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid rgba(72,72,72,0.1);
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid rgba(72,72,72,0.1);
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ background: #3f4458;
+ -webkit-box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c, 0 -1px 0 #20222c, 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 1px 0 0 #20222c, -1px 0 0 #20222c, 0 1px 0 #20222c, 0 -1px 0 #20222c, 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #20222c;
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #20222c;
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #3f4458;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #20222c;
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #3f4458;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ background: #3f4458;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #eee;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(255,255,255,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(192,187,167,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(192,187,167,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(255,255,255,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(255,255,255,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(192,187,167,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(192,187,167,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #3f4458;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(192,187,167,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #3f4458;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: transparent;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #3f4458;
+ color: #fff;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 #20222c;
+ box-shadow: -1px 0 0 #20222c;
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: rgba(255,255,255,0.95);
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #646c8c;
+ border-color: #646c8c;
+}
+.flatpickr-day.today {
+ border-color: #eee;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #eee;
+ background: #eee;
+ color: #3f4458;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #80cbc4;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #80cbc4;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #80cbc4;
+ box-shadow: -10px 0 0 #80cbc4;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
+ box-shadow: -5px 0 0 #646c8c, 5px 0 0 #646c8c;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(255,255,255,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(255,255,255,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
+ box-shadow: -5px 0 0 #80cbc4, 5px 0 0 #80cbc4;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ -webkit-box-shadow: 1px 0 0 #20222c;
+ box-shadow: 1px 0 0 #20222c;
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(255,255,255,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: rgba(255,255,255,0.95);
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: rgba(255,255,255,0.95);
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: rgba(255,255,255,0.95);
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: rgba(255,255,255,0.95);
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #6a7395;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid #eceef1;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid #eceef1;
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: #eceef1;
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #eceef1;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: #eceef1;
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #eceef1;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #eceef1;
+ color: #5a6171;
+ fill: #5a6171;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #5a6171;
+ fill: #5a6171;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(90,97,113,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #5a6171;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #5a6171;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(90,97,113,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #eceef1;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #eceef1;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #eceef1;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #eceef1;
+ color: #5a6171;
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid #eceef1;
+ border-right: 1px solid #eceef1;
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 #eceef1;
+ box-shadow: -1px 0 0 #eceef1;
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #ff5a5f;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #ff5a5f;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #ff5a5f;
+ box-shadow: -10px 0 0 #ff5a5f;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #ff5a5f, 5px 0 0 #ff5a5f;
+ box-shadow: -5px 0 0 #ff5a5f, 5px 0 0 #ff5a5f;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid #eceef1;
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid #eceef1;
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+span.flatpickr-day.selected {
+ font-weight: bold;
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #42a5f5;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #42a5f5;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #42a5f5;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #42a5f5;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #42a5f5;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #42a5f5;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #42a5f5;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+ border-right: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+ box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #42a5f5;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #42a5f5;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #42a5f5;
+ box-shadow: -10px 0 0 #42a5f5;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #42a5f5, 5px 0 0 #42a5f5;
+ box-shadow: -5px 0 0 #42a5f5, 5px 0 0 #42a5f5;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #1bbc9b;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #1bbc9b;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #1bbc9b;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #1bbc9b;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #1bbc9b;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #1bbc9b;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #1bbc9b;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+ border-right: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+ box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #1bbc9b;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #1bbc9b;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #1bbc9b;
+ box-shadow: -10px 0 0 #1bbc9b;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
+ box-shadow: -5px 0 0 #1bbc9b, 5px 0 0 #1bbc9b;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #ff8a65;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #ff8a65;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #ff8a65;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #ff8a65;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #ff8a65;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #ff8a65;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #ff8a65;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+ border-right: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+ box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #ff8a65;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #ff8a65;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #ff8a65;
+ box-shadow: -10px 0 0 #ff8a65;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #ff8a65, 5px 0 0 #ff8a65;
+ box-shadow: -5px 0 0 #ff8a65, 5px 0 0 #ff8a65;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+.flatpickr-calendar {
+ background: transparent;
+ opacity: 0;
+ display: none;
+ text-align: center;
+ visibility: hidden;
+ padding: 0;
+ -webkit-animation: none;
+ animation: none;
+ direction: ltr;
+ border: 0;
+ font-size: 14px;
+ line-height: 24px;
+ border-radius: 5px;
+ position: absolute;
+ width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -ms-touch-action: manipulation;
+ touch-action: manipulation;
+ -webkit-box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+ box-shadow: 0 3px 13px rgba(0,0,0,0.08);
+}
+.flatpickr-calendar.open,
+.flatpickr-calendar.inline {
+ opacity: 1;
+ max-height: 640px;
+ visibility: visible;
+}
+.flatpickr-calendar.open {
+ display: inline-block;
+ z-index: 99999;
+}
+.flatpickr-calendar.animate.open {
+ -webkit-animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+ animation: fpFadeInDown 300ms cubic-bezier(0.23, 1, 0.32, 1);
+}
+.flatpickr-calendar.inline {
+ display: block;
+ position: relative;
+ top: 2px;
+}
+.flatpickr-calendar.static {
+ position: absolute;
+ top: calc(100% + 2px);
+}
+.flatpickr-calendar.static.open {
+ z-index: 999;
+ display: block;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+1) .flatpickr-day.inRange:nth-child(7n+7) {
+ -webkit-box-shadow: none !important;
+ box-shadow: none !important;
+}
+.flatpickr-calendar.multiMonth .flatpickr-days .dayContainer:nth-child(n+2) .flatpickr-day.inRange:nth-child(7n+1) {
+ -webkit-box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+ box-shadow: -2px 0 0 #e6e6e6, 5px 0 0 #e6e6e6;
+}
+.flatpickr-calendar .hasWeeks .dayContainer,
+.flatpickr-calendar .hasTime .dayContainer {
+ border-bottom: 0;
+ border-bottom-right-radius: 0;
+ border-bottom-left-radius: 0;
+}
+.flatpickr-calendar .hasWeeks .dayContainer {
+ border-left: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ height: 40px;
+ border-top: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-innerContainer {
+ border-bottom: 0;
+}
+.flatpickr-calendar.showTimeInput.hasTime .flatpickr-time {
+ border: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.noCalendar.hasTime .flatpickr-time {
+ height: auto;
+}
+.flatpickr-calendar:before,
+.flatpickr-calendar:after {
+ position: absolute;
+ display: block;
+ pointer-events: none;
+ border: solid transparent;
+ content: '';
+ height: 0;
+ width: 0;
+ left: 22px;
+}
+.flatpickr-calendar.rightMost:before,
+.flatpickr-calendar.rightMost:after {
+ left: auto;
+ right: 22px;
+}
+.flatpickr-calendar:before {
+ border-width: 5px;
+ margin: 0 -5px;
+}
+.flatpickr-calendar:after {
+ border-width: 4px;
+ margin: 0 -4px;
+}
+.flatpickr-calendar.arrowTop:before,
+.flatpickr-calendar.arrowTop:after {
+ bottom: 100%;
+}
+.flatpickr-calendar.arrowTop:before {
+ border-bottom-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowTop:after {
+ border-bottom-color: #ef5350;
+}
+.flatpickr-calendar.arrowBottom:before,
+.flatpickr-calendar.arrowBottom:after {
+ top: 100%;
+}
+.flatpickr-calendar.arrowBottom:before {
+ border-top-color: rgba(72,72,72,0.2);
+}
+.flatpickr-calendar.arrowBottom:after {
+ border-top-color: #ef5350;
+}
+.flatpickr-calendar:focus {
+ outline: 0;
+}
+.flatpickr-wrapper {
+ position: relative;
+ display: inline-block;
+}
+.flatpickr-months {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+}
+.flatpickr-months .flatpickr-month {
+ border-radius: 5px 5px 0 0;
+ background: #ef5350;
+ color: #fff;
+ fill: #fff;
+ height: 34px;
+ line-height: 1;
+ text-align: center;
+ position: relative;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ overflow: hidden;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+.flatpickr-months .flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month {
+ text-decoration: none;
+ cursor: pointer;
+ position: absolute;
+ top: 0;
+ height: 34px;
+ padding: 10px;
+ z-index: 3;
+ color: #fff;
+ fill: #fff;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-disabled,
+.flatpickr-months .flatpickr-next-month.flatpickr-disabled {
+ display: none;
+}
+.flatpickr-months .flatpickr-prev-month i,
+.flatpickr-months .flatpickr-next-month i {
+ position: relative;
+}
+.flatpickr-months .flatpickr-prev-month.flatpickr-prev-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-prev-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ left: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month.flatpickr-next-month,
+.flatpickr-months .flatpickr-next-month.flatpickr-next-month {
+/*
+ /*rtl:begin:ignore*/
+/*
+ */
+ right: 0;
+/*
+ /*rtl:end:ignore*/
+/*
+ */
+}
+/*
+ /*rtl:begin:ignore*/
+/*
+ /*rtl:end:ignore*/
+.flatpickr-months .flatpickr-prev-month:hover,
+.flatpickr-months .flatpickr-next-month:hover {
+ color: #bbb;
+}
+.flatpickr-months .flatpickr-prev-month:hover svg,
+.flatpickr-months .flatpickr-next-month:hover svg {
+ fill: #f64747;
+}
+.flatpickr-months .flatpickr-prev-month svg,
+.flatpickr-months .flatpickr-next-month svg {
+ width: 14px;
+ height: 14px;
+}
+.flatpickr-months .flatpickr-prev-month svg path,
+.flatpickr-months .flatpickr-next-month svg path {
+ -webkit-transition: fill 0.1s;
+ transition: fill 0.1s;
+ fill: inherit;
+}
+.numInputWrapper {
+ position: relative;
+ height: auto;
+}
+.numInputWrapper input,
+.numInputWrapper span {
+ display: inline-block;
+}
+.numInputWrapper input {
+ width: 100%;
+}
+.numInputWrapper input::-ms-clear {
+ display: none;
+}
+.numInputWrapper input::-webkit-outer-spin-button,
+.numInputWrapper input::-webkit-inner-spin-button {
+ margin: 0;
+ -webkit-appearance: none;
+}
+.numInputWrapper span {
+ position: absolute;
+ right: 0;
+ width: 14px;
+ padding: 0 4px 0 2px;
+ height: 50%;
+ line-height: 50%;
+ opacity: 0;
+ cursor: pointer;
+ border: 1px solid rgba(72,72,72,0.15);
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.numInputWrapper span:hover {
+ background: rgba(0,0,0,0.1);
+}
+.numInputWrapper span:active {
+ background: rgba(0,0,0,0.2);
+}
+.numInputWrapper span:after {
+ display: block;
+ content: "";
+ position: absolute;
+}
+.numInputWrapper span.arrowUp {
+ top: 0;
+ border-bottom: 0;
+}
+.numInputWrapper span.arrowUp:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-bottom: 4px solid rgba(72,72,72,0.6);
+ top: 26%;
+}
+.numInputWrapper span.arrowDown {
+ top: 50%;
+}
+.numInputWrapper span.arrowDown:after {
+ border-left: 4px solid transparent;
+ border-right: 4px solid transparent;
+ border-top: 4px solid rgba(72,72,72,0.6);
+ top: 40%;
+}
+.numInputWrapper span svg {
+ width: inherit;
+ height: auto;
+}
+.numInputWrapper span svg path {
+ fill: rgba(255,255,255,0.5);
+}
+.numInputWrapper:hover {
+ background: rgba(0,0,0,0.05);
+}
+.numInputWrapper:hover span {
+ opacity: 1;
+}
+.flatpickr-current-month {
+ font-size: 135%;
+ line-height: inherit;
+ font-weight: 300;
+ color: inherit;
+ position: absolute;
+ width: 75%;
+ left: 12.5%;
+ padding: 7.48px 0 0 0;
+ line-height: 1;
+ height: 34px;
+ display: inline-block;
+ text-align: center;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+}
+.flatpickr-current-month span.cur-month {
+ font-family: inherit;
+ font-weight: 700;
+ color: inherit;
+ display: inline-block;
+ margin-left: 0.5ch;
+ padding: 0;
+}
+.flatpickr-current-month span.cur-month:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .numInputWrapper {
+ width: 6ch;
+ width: 7ch\0;
+ display: inline-block;
+}
+.flatpickr-current-month .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #fff;
+}
+.flatpickr-current-month .numInputWrapper span.arrowDown:after {
+ border-top-color: #fff;
+}
+.flatpickr-current-month input.cur-year {
+ background: transparent;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: text;
+ padding: 0 0 0 0.5ch;
+ margin: 0;
+ display: inline-block;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ line-height: inherit;
+ height: auto;
+ border: 0;
+ border-radius: 0;
+ vertical-align: initial;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-current-month input.cur-year:focus {
+ outline: 0;
+}
+.flatpickr-current-month input.cur-year[disabled],
+.flatpickr-current-month input.cur-year[disabled]:hover {
+ font-size: 100%;
+ color: rgba(255,255,255,0.5);
+ background: transparent;
+ pointer-events: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months {
+ appearance: menulist;
+ background: #ef5350;
+ border: none;
+ border-radius: 0;
+ box-sizing: border-box;
+ color: inherit;
+ cursor: pointer;
+ font-size: inherit;
+ font-family: inherit;
+ font-weight: 300;
+ height: auto;
+ line-height: inherit;
+ margin: -1px 0 0 0;
+ outline: none;
+ padding: 0 0 0 0.5ch;
+ position: relative;
+ vertical-align: initial;
+ -webkit-box-sizing: border-box;
+ -webkit-appearance: menulist;
+ -moz-appearance: menulist;
+ width: auto;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:focus,
+.flatpickr-current-month .flatpickr-monthDropdown-months:active {
+ outline: none;
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months:hover {
+ background: rgba(0,0,0,0.05);
+}
+.flatpickr-current-month .flatpickr-monthDropdown-months .flatpickr-monthDropdown-month {
+ background-color: #ef5350;
+ outline: none;
+ padding: 0;
+}
+.flatpickr-weekdays {
+ background: #ef5350;
+ text-align: center;
+ overflow: hidden;
+ width: 100%;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: center;
+ -webkit-align-items: center;
+ -ms-flex-align: center;
+ align-items: center;
+ height: 28px;
+}
+.flatpickr-weekdays .flatpickr-weekdaycontainer {
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+}
+span.flatpickr-weekday {
+ cursor: default;
+ font-size: 90%;
+ background: #ef5350;
+ color: rgba(0,0,0,0.54);
+ line-height: 1;
+ margin: 0;
+ text-align: center;
+ display: block;
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ font-weight: bolder;
+}
+.dayContainer,
+.flatpickr-weeks {
+ padding: 1px 0 0 0;
+}
+.flatpickr-days {
+ position: relative;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-align: start;
+ -webkit-align-items: flex-start;
+ -ms-flex-align: start;
+ align-items: flex-start;
+ width: 307.875px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+ border-right: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-days:focus {
+ outline: 0;
+}
+.dayContainer {
+ padding: 0;
+ outline: 0;
+ text-align: left;
+ width: 307.875px;
+ min-width: 307.875px;
+ max-width: 307.875px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ display: inline-block;
+ display: -ms-flexbox;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: flex;
+ -webkit-flex-wrap: wrap;
+ flex-wrap: wrap;
+ -ms-flex-wrap: wrap;
+ -ms-flex-pack: justify;
+ -webkit-justify-content: space-around;
+ justify-content: space-around;
+ -webkit-transform: translate3d(0px, 0px, 0px);
+ transform: translate3d(0px, 0px, 0px);
+ opacity: 1;
+}
+.dayContainer + .dayContainer {
+ -webkit-box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+ box-shadow: -1px 0 0 rgba(72,72,72,0.2);
+}
+.flatpickr-day {
+ background: none;
+ border: 1px solid transparent;
+ border-radius: 150px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ color: #484848;
+ cursor: pointer;
+ font-weight: 400;
+ width: 14.2857143%;
+ -webkit-flex-basis: 14.2857143%;
+ -ms-flex-preferred-size: 14.2857143%;
+ flex-basis: 14.2857143%;
+ max-width: 39px;
+ height: 39px;
+ line-height: 39px;
+ margin: 0;
+ display: inline-block;
+ position: relative;
+ -webkit-box-pack: center;
+ -webkit-justify-content: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ text-align: center;
+}
+.flatpickr-day.inRange,
+.flatpickr-day.prevMonthDay.inRange,
+.flatpickr-day.nextMonthDay.inRange,
+.flatpickr-day.today.inRange,
+.flatpickr-day.prevMonthDay.today.inRange,
+.flatpickr-day.nextMonthDay.today.inRange,
+.flatpickr-day:hover,
+.flatpickr-day.prevMonthDay:hover,
+.flatpickr-day.nextMonthDay:hover,
+.flatpickr-day:focus,
+.flatpickr-day.prevMonthDay:focus,
+.flatpickr-day.nextMonthDay:focus {
+ cursor: pointer;
+ outline: 0;
+ background: #e2e2e2;
+ border-color: #e2e2e2;
+}
+.flatpickr-day.today {
+ border-color: #bbb;
+}
+.flatpickr-day.today:hover,
+.flatpickr-day.today:focus {
+ border-color: #bbb;
+ background: #bbb;
+ color: #fff;
+}
+.flatpickr-day.selected,
+.flatpickr-day.startRange,
+.flatpickr-day.endRange,
+.flatpickr-day.selected.inRange,
+.flatpickr-day.startRange.inRange,
+.flatpickr-day.endRange.inRange,
+.flatpickr-day.selected:focus,
+.flatpickr-day.startRange:focus,
+.flatpickr-day.endRange:focus,
+.flatpickr-day.selected:hover,
+.flatpickr-day.startRange:hover,
+.flatpickr-day.endRange:hover,
+.flatpickr-day.selected.prevMonthDay,
+.flatpickr-day.startRange.prevMonthDay,
+.flatpickr-day.endRange.prevMonthDay,
+.flatpickr-day.selected.nextMonthDay,
+.flatpickr-day.startRange.nextMonthDay,
+.flatpickr-day.endRange.nextMonthDay {
+ background: #ef5350;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ color: #fff;
+ border-color: #ef5350;
+}
+.flatpickr-day.selected.startRange,
+.flatpickr-day.startRange.startRange,
+.flatpickr-day.endRange.startRange {
+ border-radius: 50px 0 0 50px;
+}
+.flatpickr-day.selected.endRange,
+.flatpickr-day.startRange.endRange,
+.flatpickr-day.endRange.endRange {
+ border-radius: 0 50px 50px 0;
+}
+.flatpickr-day.selected.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.startRange.startRange + .endRange:not(:nth-child(7n+1)),
+.flatpickr-day.endRange.startRange + .endRange:not(:nth-child(7n+1)) {
+ -webkit-box-shadow: -10px 0 0 #ef5350;
+ box-shadow: -10px 0 0 #ef5350;
+}
+.flatpickr-day.selected.startRange.endRange,
+.flatpickr-day.startRange.startRange.endRange,
+.flatpickr-day.endRange.startRange.endRange {
+ border-radius: 50px;
+}
+.flatpickr-day.inRange {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+ box-shadow: -5px 0 0 #e2e2e2, 5px 0 0 #e2e2e2;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover,
+.flatpickr-day.prevMonthDay,
+.flatpickr-day.nextMonthDay,
+.flatpickr-day.notAllowed,
+.flatpickr-day.notAllowed.prevMonthDay,
+.flatpickr-day.notAllowed.nextMonthDay {
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ border-color: transparent;
+ cursor: default;
+}
+.flatpickr-day.flatpickr-disabled,
+.flatpickr-day.flatpickr-disabled:hover {
+ cursor: not-allowed;
+ color: rgba(72,72,72,0.1);
+}
+.flatpickr-day.week.selected {
+ border-radius: 0;
+ -webkit-box-shadow: -5px 0 0 #ef5350, 5px 0 0 #ef5350;
+ box-shadow: -5px 0 0 #ef5350, 5px 0 0 #ef5350;
+}
+.flatpickr-day.hidden {
+ visibility: hidden;
+}
+.rangeMode .flatpickr-day {
+ margin-top: 1px;
+}
+.flatpickr-weekwrapper {
+ float: left;
+}
+.flatpickr-weekwrapper .flatpickr-weeks {
+ padding: 0 12px;
+ border-left: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-weekwrapper .flatpickr-weekday {
+ float: none;
+ width: 100%;
+ line-height: 28px;
+}
+.flatpickr-weekwrapper span.flatpickr-day,
+.flatpickr-weekwrapper span.flatpickr-day:hover {
+ display: block;
+ width: 100%;
+ max-width: none;
+ color: rgba(72,72,72,0.3);
+ background: transparent;
+ cursor: default;
+ border: none;
+}
+.flatpickr-innerContainer {
+ display: block;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ background: #fff;
+ border-bottom: 1px solid rgba(72,72,72,0.2);
+}
+.flatpickr-rContainer {
+ display: inline-block;
+ padding: 0;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+}
+.flatpickr-time {
+ text-align: center;
+ outline: 0;
+ display: block;
+ height: 0;
+ line-height: 40px;
+ max-height: 40px;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ overflow: hidden;
+ display: -webkit-box;
+ display: -webkit-flex;
+ display: -ms-flexbox;
+ display: flex;
+ background: #fff;
+ border-radius: 0 0 5px 5px;
+}
+.flatpickr-time:after {
+ content: "";
+ display: table;
+ clear: both;
+}
+.flatpickr-time .numInputWrapper {
+ -webkit-box-flex: 1;
+ -webkit-flex: 1;
+ -ms-flex: 1;
+ flex: 1;
+ width: 40%;
+ height: 40px;
+ float: left;
+}
+.flatpickr-time .numInputWrapper span.arrowUp:after {
+ border-bottom-color: #484848;
+}
+.flatpickr-time .numInputWrapper span.arrowDown:after {
+ border-top-color: #484848;
+}
+.flatpickr-time.hasSeconds .numInputWrapper {
+ width: 26%;
+}
+.flatpickr-time.time24hr .numInputWrapper {
+ width: 49%;
+}
+.flatpickr-time input {
+ background: transparent;
+ -webkit-box-shadow: none;
+ box-shadow: none;
+ border: 0;
+ border-radius: 0;
+ text-align: center;
+ margin: 0;
+ padding: 0;
+ height: inherit;
+ line-height: inherit;
+ color: #484848;
+ font-size: 14px;
+ position: relative;
+ -webkit-box-sizing: border-box;
+ box-sizing: border-box;
+ -webkit-appearance: textfield;
+ -moz-appearance: textfield;
+ appearance: textfield;
+}
+.flatpickr-time input.flatpickr-hour {
+ font-weight: bold;
+}
+.flatpickr-time input.flatpickr-minute,
+.flatpickr-time input.flatpickr-second {
+ font-weight: 400;
+}
+.flatpickr-time input:focus {
+ outline: 0;
+ border: 0;
+}
+.flatpickr-time .flatpickr-time-separator,
+.flatpickr-time .flatpickr-am-pm {
+ height: inherit;
+ float: left;
+ line-height: inherit;
+ color: #484848;
+ font-weight: bold;
+ width: 2%;
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+ -webkit-align-self: center;
+ -ms-flex-item-align: center;
+ align-self: center;
+}
+.flatpickr-time .flatpickr-am-pm {
+ outline: 0;
+ width: 18%;
+ cursor: pointer;
+ text-align: center;
+ font-weight: 400;
+}
+.flatpickr-time input:hover,
+.flatpickr-time .flatpickr-am-pm:hover,
+.flatpickr-time input:focus,
+.flatpickr-time .flatpickr-am-pm:focus {
+ background: #eaeaea;
+}
+.flatpickr-input[readonly] {
+ cursor: pointer;
+}
+@-webkit-keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
+@keyframes fpFadeInDown {
+ from {
+ opacity: 0;
+ -webkit-transform: translate3d(0, -20px, 0);
+ transform: translate3d(0, -20px, 0);
+ }
+ to {
+ opacity: 1;
+ -webkit-transform: translate3d(0, 0, 0);
+ transform: translate3d(0, 0, 0);
+ }
+}
--- /dev/null
+import { Options } from "./options";
+import { Instance, FlatpickrFn } from "./instance";
+declare global {
+ interface HTMLElement {
+ flatpickr: (config?: Options) => Instance;
+ _flatpickr?: Instance;
+ }
+ interface NodeList {
+ flatpickr: (config?: Options) => Instance | Instance[];
+ }
+ interface HTMLCollection {
+ flatpickr: (config?: Options) => Instance | Instance[];
+ }
+ interface Window {
+ flatpickr: FlatpickrFn;
+ }
+ interface Date {
+ fp_incr: (n: number) => Date;
+ }
+}
--- /dev/null
+import { DateOption, Options, ParsedOptions } from "./options";
+import { Locale, CustomLocale, key as LocaleKey } from "./locale";
+import { RevFormat, Formats, TokenRegex } from "../utils/formatting";
+export interface Elements {
+ element: HTMLElement;
+ input: HTMLInputElement;
+ altInput?: HTMLInputElement;
+ _input: HTMLInputElement;
+ mobileInput?: HTMLInputElement;
+ mobileFormatStr?: string;
+ selectedDateElem?: DayElement;
+ todayDateElem?: DayElement;
+ _positionElement: HTMLElement;
+ weekdayContainer: HTMLDivElement;
+ calendarContainer: HTMLDivElement;
+ innerContainer?: HTMLDivElement;
+ rContainer?: HTMLDivElement;
+ daysContainer?: HTMLDivElement;
+ days: HTMLDivElement;
+ weekWrapper?: HTMLDivElement;
+ weekNumbers?: HTMLDivElement;
+ monthNav: HTMLDivElement;
+ monthsDropdownContainer: HTMLSelectElement;
+ yearElements: HTMLInputElement[];
+ monthElements: HTMLSpanElement[];
+ currentYearElement: HTMLInputElement;
+ currentMonthElement: HTMLSpanElement;
+ _hidePrevMonthArrow: boolean;
+ _hideNextMonthArrow: boolean;
+ prevMonthNav: HTMLElement;
+ nextMonthNav: HTMLElement;
+ timeContainer?: HTMLDivElement;
+ hourElement?: HTMLInputElement;
+ minuteElement?: HTMLInputElement;
+ secondElement?: HTMLInputElement;
+ amPM?: HTMLSpanElement;
+ pluginElements: Node[];
+}
+export interface Formatting {
+ revFormat: RevFormat;
+ formats: Formats;
+ tokenRegex: TokenRegex;
+}
+export declare type Instance = Elements & Formatting & {
+ minRangeDate?: Date;
+ maxRangeDate?: Date;
+ now: Date;
+ latestSelectedDateObj?: Date;
+ _selectedDateObj?: Date;
+ selectedDates: Date[];
+ _initialDate: Date;
+ config: ParsedOptions;
+ loadedPlugins: string[];
+ l10n: Locale;
+ currentYear: number;
+ currentMonth: number;
+ isOpen: boolean;
+ isMobile: boolean;
+ minDateHasTime: boolean;
+ maxDateHasTime: boolean;
+ showTimeInput: boolean;
+ _showTimeInput: boolean;
+ changeMonth: (value: number, isOffset?: boolean, fromKeyboard?: boolean) => void;
+ changeYear: (year: number) => void;
+ clear: (emitChangeEvent?: boolean, toInitial?: boolean) => void;
+ close: () => void;
+ destroy: () => void;
+ isEnabled: (date: DateOption, timeless?: boolean) => boolean;
+ jumpToDate: (date?: DateOption, triggerChange?: boolean) => void;
+ open: (e?: FocusEvent | MouseEvent, positionElement?: HTMLElement) => void;
+ redraw: () => void;
+ set: (option: keyof Options | {
+ [k in keyof Options]?: Options[k];
+ }, value?: any) => void;
+ setDate: (date: DateOption | DateOption[], triggerChange?: boolean, format?: string) => void;
+ toggle: () => void;
+ pad: (num: string | number) => string;
+ parseDate: (date: Date | string | number, givenFormat?: string, timeless?: boolean) => Date | undefined;
+ formatDate: (dateObj: Date, frmt: string) => string;
+ _handlers: {
+ event: string;
+ element: Element;
+ handler: (e?: Event) => void;
+ options?: {
+ capture?: boolean;
+ };
+ }[];
+ _bind: <E extends Element>(element: E | E[], event: string | string[], handler: (e?: any) => void) => void;
+ _createElement: <E extends HTMLElement>(tag: keyof HTMLElementTagNameMap, className: string, content?: string) => E;
+ _setHoursFromDate: (date: Date) => void;
+ _debouncedChange: () => void;
+ __hideNextMonthArrow: boolean;
+ __hidePrevMonthArrow: boolean;
+ _positionCalendar: (customPositionElement?: HTMLElement) => void;
+ utils: {
+ getDaysInMonth: (month?: number, year?: number) => number;
+ };
+};
+export interface FlatpickrFn {
+ (selector: Node, config?: Options): Instance;
+ (selector: ArrayLike<Node>, config?: Options): Instance[];
+ (selector: string, config?: Options): Instance | Instance[];
+ defaultConfig: Partial<ParsedOptions>;
+ l10ns: {
+ [k in LocaleKey]?: CustomLocale;
+ } & {
+ default: Locale;
+ };
+ localize: (l10n: CustomLocale) => void;
+ setDefaults: (config: Options) => void;
+ parseDate: (date: DateOption, format?: string, timeless?: boolean) => Date | undefined;
+ formatDate: (date: Date, format: string) => string;
+ compareDates: (date1: Date, date2: Date, timeless?: boolean) => number;
+}
+export declare type DayElement = HTMLSpanElement & {
+ dateObj: Date;
+ $i: number;
+};
--- /dev/null
+export declare type Locale = {
+ weekdays: {
+ shorthand: [string, string, string, string, string, string, string];
+ longhand: [string, string, string, string, string, string, string];
+ };
+ months: {
+ shorthand: [string, string, string, string, string, string, string, string, string, string, string, string];
+ longhand: [string, string, string, string, string, string, string, string, string, string, string, string];
+ };
+ daysInMonth: [number, number, number, number, number, number, number, number, number, number, number, number];
+ firstDayOfWeek: number;
+ ordinal: (nth: number) => string;
+ rangeSeparator: string;
+ weekAbbreviation: string;
+ scrollTitle: string;
+ toggleTitle: string;
+ amPM: [string, string];
+ yearAriaLabel: string;
+ hourAriaLabel: string;
+ minuteAriaLabel: string;
+ time_24hr: boolean;
+};
+export declare type CustomLocale = {
+ ordinal?: Locale["ordinal"];
+ daysInMonth?: Locale["daysInMonth"];
+ firstDayOfWeek?: Locale["firstDayOfWeek"];
+ rangeSeparator?: Locale["rangeSeparator"];
+ weekAbbreviation?: Locale["weekAbbreviation"];
+ toggleTitle?: Locale["toggleTitle"];
+ scrollTitle?: Locale["scrollTitle"];
+ yearAriaLabel?: string;
+ hourAriaLabel?: string;
+ minuteAriaLabel?: string;
+ amPM?: Locale["amPM"];
+ time_24hr?: Locale["time_24hr"];
+ weekdays: {
+ shorthand: [string, string, string, string, string, string, string];
+ longhand: [string, string, string, string, string, string, string];
+ };
+ months: {
+ shorthand: [string, string, string, string, string, string, string, string, string, string, string, string];
+ longhand: [string, string, string, string, string, string, string, string, string, string, string, string];
+ };
+};
+export declare type key = "ar" | "at" | "az" | "be" | "bg" | "bn" | "bs" | "cat" | "cs" | "cy" | "da" | "de" | "default" | "en" | "eo" | "es" | "et" | "fa" | "fi" | "fo" | "fr" | "gr" | "he" | "hi" | "hr" | "hu" | "id" | "is" | "it" | "ja" | "ka" | "ko" | "km" | "kz" | "lt" | "lv" | "mk" | "mn" | "ms" | "my" | "nl" | "no" | "pa" | "pl" | "pt" | "ro" | "ru" | "si" | "sk" | "sl" | "sq" | "sr" | "sv" | "th" | "tr" | "uk" | "vn" | "zh" | "zh_tw" | "lu";
--- /dev/null
+import { Instance } from "./instance";
+import { CustomLocale, key as LocaleKey, Locale } from "./locale";
+export declare type DateOption = Date | string | number;
+export declare type DateRangeLimit<D = DateOption> = {
+ from: D;
+ to: D;
+};
+export declare type DateLimit<D = DateOption> = D | DateRangeLimit<D> | ((date: Date) => boolean);
+export declare type Hook = (dates: Date[], currentDateString: string, self: Instance, data?: any) => void;
+export declare type HookKey = "onChange" | "onClose" | "onDayCreate" | "onDestroy" | "onKeyDown" | "onMonthChange" | "onOpen" | "onParseConfig" | "onReady" | "onValueUpdate" | "onYearChange" | "onPreCalendarPosition";
+export declare const HOOKS: HookKey[];
+export declare type Plugin<E = {}> = (fp: Instance & E) => Options;
+export interface BaseOptions {
+ allowInput: boolean;
+ altFormat: string;
+ altInput: boolean;
+ altInputClass: string;
+ animate: boolean;
+ appendTo: HTMLElement;
+ ariaDateFormat: string;
+ clickOpens: boolean;
+ closeOnSelect: boolean;
+ conjunction: string;
+ dateFormat: string;
+ defaultDate: DateOption | DateOption[];
+ defaultHour: number;
+ defaultMinute: number;
+ defaultSeconds: number;
+ disable: DateLimit<DateOption>[];
+ disableMobile: boolean;
+ enable: DateLimit<DateOption>[];
+ enableSeconds: boolean;
+ enableTime: boolean;
+ errorHandler: (e: Error) => void;
+ formatDate: (date: Date, format: string, locale: Locale) => string;
+ getWeek: (date: Date) => string | number;
+ hourIncrement: number;
+ ignoredFocusElements: HTMLElement[];
+ inline: boolean;
+ locale: LocaleKey | CustomLocale;
+ maxDate: DateOption;
+ maxTime: DateOption;
+ minDate: DateOption;
+ minTime: DateOption;
+ minuteIncrement: number;
+ mode: "single" | "multiple" | "range" | "time";
+ monthSelectorType: "dropdown" | "static";
+ nextArrow: string;
+ noCalendar: boolean;
+ now?: DateOption;
+ onChange: Hook | Hook[];
+ onClose: Hook | Hook[];
+ onDayCreate: Hook | Hook[];
+ onDestroy: Hook | Hook[];
+ onKeyDown: Hook | Hook[];
+ onMonthChange: Hook | Hook[];
+ onOpen: Hook | Hook[];
+ onParseConfig: Hook | Hook[];
+ onReady: Hook | Hook[];
+ onValueUpdate: Hook | Hook[];
+ onYearChange: Hook | Hook[];
+ onPreCalendarPosition: Hook | Hook[];
+ parseDate: (date: string, format: string) => Date;
+ plugins: Plugin[];
+ position: "auto" | "above" | "below";
+ positionElement: Element;
+ prevArrow: string;
+ shorthandCurrentMonth: boolean;
+ static: boolean;
+ showMonths?: number;
+ time_24hr: boolean;
+ weekNumbers: boolean;
+ wrap: boolean;
+}
+export declare type Options = Partial<BaseOptions>;
+export interface ParsedOptions {
+ _disable: DateLimit<Date>[];
+ _enable: DateLimit<Date>[];
+ _maxDate?: Date;
+ _maxTime?: Date;
+ _minDate?: Date;
+ _minTime?: Date;
+ allowInput: boolean;
+ altFormat: string;
+ altInput: boolean;
+ altInputClass: string;
+ animate: boolean;
+ appendTo?: HTMLElement;
+ ariaDateFormat: string;
+ clickOpens: boolean;
+ closeOnSelect: boolean;
+ conjunction: string;
+ dateFormat: string;
+ defaultDate?: Date | Date[];
+ defaultHour: number;
+ defaultMinute: number;
+ defaultSeconds: number;
+ disable: DateLimit<Date>[];
+ disableMobile: boolean;
+ enable: DateLimit<Date>[];
+ enableSeconds: boolean;
+ enableTime: boolean;
+ errorHandler: (err: Error) => void;
+ formatDate?: Options["formatDate"];
+ getWeek: (date: Date) => string | number;
+ hourIncrement: number;
+ ignoredFocusElements: HTMLElement[];
+ inline: boolean;
+ locale: LocaleKey | CustomLocale;
+ maxDate?: Date;
+ maxTime?: Date;
+ minDate?: Date;
+ minTime?: Date;
+ minuteIncrement: number;
+ mode: BaseOptions["mode"];
+ monthSelectorType: string;
+ nextArrow: string;
+ noCalendar: boolean;
+ now: Date;
+ onChange: Hook[];
+ onClose: Hook[];
+ onDayCreate: Hook[];
+ onDestroy: Hook[];
+ onKeyDown: Hook[];
+ onMonthChange: Hook[];
+ onOpen: Hook[];
+ onParseConfig: Hook[];
+ onReady: Hook[];
+ onValueUpdate: Hook[];
+ onYearChange: Hook[];
+ onPreCalendarPosition: Hook[];
+ parseDate?: BaseOptions["parseDate"];
+ plugins: Plugin[];
+ position: BaseOptions["position"];
+ positionElement?: HTMLElement;
+ prevArrow: string;
+ shorthandCurrentMonth: boolean;
+ showMonths: number;
+ static: boolean;
+ time_24hr: boolean;
+ weekNumbers: boolean;
+ wrap: boolean;
+}
+export declare const defaults: ParsedOptions;
--- /dev/null
+import { FlatpickrFn } from "./types/instance";
+import { Instance as _Instance } from "./types/instance";
+import {
+ Options as _Options,
+ Hook as _Hook,
+ HookKey as _HookKey,
+ ParsedOptions as _ParsedOptions,
+ DateLimit as _DateLimit,
+ DateOption as _DateOption,
+ DateRangeLimit as _DateRangeLimit,
+ Plugin as _Plugin,
+} from "./types/options";
+
+import {
+ Locale as _Locale,
+ CustomLocale as _CustomLocale,
+} from "./types/locale";
+
+declare var flatpickr: FlatpickrFn;
+
+declare namespace flatpickr {
+ export type Instance = _Instance;
+ export type CustomLocale = _CustomLocale;
+ export type Locale = _Locale;
+
+ export namespace Options {
+ export type Options = _Options;
+ export type Hook = _Hook;
+ export type HookKey = _HookKey;
+ export type ParsedOptions = _ParsedOptions;
+ export type DateLimit = _DateLimit;
+ export type DateOption = _DateOption;
+ export type DateRangeLimit = _DateRangeLimit;
+ export type Plugin = _Plugin;
+ }
+}
+
+export default flatpickr;
--- /dev/null
+import { Locale } from "../types/locale";
+import { ParsedOptions } from "../types/options";
+export interface FormatterArgs {
+ config?: ParsedOptions;
+ l10n?: Locale;
+}
+export declare const createDateFormatter: ({ config, l10n, }: FormatterArgs) => (dateObj: Date, frmt: string, overrideLocale?: Locale | undefined) => string;
+export declare const createDateParser: ({ config, l10n }: {
+ config?: ParsedOptions | undefined;
+ l10n?: Locale | undefined;
+}) => (date: string | number | Date, givenFormat?: string | undefined, timeless?: boolean | undefined, customLocale?: Locale | undefined) => Date | undefined;
+export declare function compareDates(date1: Date, date2: Date, timeless?: boolean): number;
+export declare function compareTimes(date1: Date, date2: Date): number;
+export declare const isBetween: (ts: number, ts1: number, ts2: number) => boolean;
+export declare const duration: {
+ DAY: number;
+};
--- /dev/null
+export declare function toggleClass(elem: HTMLElement, className: string, bool: boolean): void;
+export declare function createElement<T extends HTMLElement>(tag: keyof HTMLElementTagNameMap, className: string, content?: string): T;
+export declare function clearNode(node: HTMLElement): void;
+export declare function findParent(node: Element, condition: (n: Element) => boolean): Element | undefined;
+export declare function createNumberInput(inputClassName: string, opts?: Record<string, any>): HTMLDivElement;
+export declare function getEventTarget(event: Event): EventTarget | null;
--- /dev/null
+import { Locale } from "../types/locale";
+import { ParsedOptions } from "../types/options";
+export declare type token = "D" | "F" | "G" | "H" | "J" | "K" | "M" | "S" | "U" | "W" | "Y" | "Z" | "d" | "h" | "i" | "j" | "l" | "m" | "n" | "s" | "u" | "w" | "y";
+export declare const monthToStr: (monthNumber: number, shorthand: boolean, locale: Locale) => string;
+export declare type RevFormatFn = (date: Date, data: string, locale: Locale) => Date | void | undefined;
+export declare type RevFormat = Record<string, RevFormatFn>;
+export declare const revFormat: RevFormat;
+export declare type TokenRegex = {
+ [k in token]: string;
+};
+export declare const tokenRegex: TokenRegex;
+export declare type Formats = Record<token, (date: Date, locale: Locale, options: ParsedOptions) => string | number>;
+export declare const formats: Formats;
--- /dev/null
+export declare const pad: (number: string | number) => string;
+export declare const int: (bool: boolean) => 1 | 0;
+export declare function debounce<F extends Function>(func: F, wait: number, immediate?: boolean): (this: Function) => void;
+export declare const arrayify: <T>(obj: T | T[]) => T[];
+export declare type IncrementEvent = MouseEvent & {
+ delta: number;
+ type: "increment";
+};
--- /dev/null
+!function(e,a){"object"==typeof exports&&"undefined"!=typeof module?module.exports=a():"function"==typeof define&&define.amd?define(a):e.moment=a()}(this,function(){"use strict";var e,n;function l(){return e.apply(null,arguments)}function _(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function i(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function o(e){return void 0===e}function m(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function u(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function M(e,a){var t,s=[];for(t=0;t<e.length;++t)s.push(a(e[t],t));return s}function h(e,a){return Object.prototype.hasOwnProperty.call(e,a)}function L(e,a){for(var t in a)h(a,t)&&(e[t]=a[t]);return h(a,"toString")&&(e.toString=a.toString),h(a,"valueOf")&&(e.valueOf=a.valueOf),e}function c(e,a,t,s){return va(e,a,t,s,!0).utc()}function Y(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function y(e){if(null==e._isValid){var a=Y(e),t=n.call(a.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&a.overflow<0&&!a.empty&&!a.invalidMonth&&!a.invalidWeekday&&!a.weekdayMismatch&&!a.nullInput&&!a.invalidFormat&&!a.userInvalidated&&(!a.meridiem||a.meridiem&&t);if(e._strict&&(s=s&&0===a.charsLeftOver&&0===a.unusedTokens.length&&void 0===a.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function f(e){var a=c(NaN);return null!=e?L(Y(a),e):Y(a).userInvalidated=!0,a}n=Array.prototype.some?Array.prototype.some:function(e){for(var a=Object(this),t=a.length>>>0,s=0;s<t;s++)if(s in a&&e.call(this,a[s],s,a))return!0;return!1};var d=l.momentProperties=[];function k(e,a){var t,s,n;if(o(a._isAMomentObject)||(e._isAMomentObject=a._isAMomentObject),o(a._i)||(e._i=a._i),o(a._f)||(e._f=a._f),o(a._l)||(e._l=a._l),o(a._strict)||(e._strict=a._strict),o(a._tzm)||(e._tzm=a._tzm),o(a._isUTC)||(e._isUTC=a._isUTC),o(a._offset)||(e._offset=a._offset),o(a._pf)||(e._pf=Y(a)),o(a._locale)||(e._locale=a._locale),0<d.length)for(t=0;t<d.length;t++)o(n=a[s=d[t]])||(e[s]=n);return e}var a=!1;function p(e){k(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===a&&(a=!0,l.updateOffset(this),a=!1)}function D(e){return e instanceof p||null!=e&&null!=e._isAMomentObject}function T(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function g(e){var a=+e,t=0;return 0!==a&&isFinite(a)&&(t=T(a)),t}function r(e,a,t){var s,n=Math.min(e.length,a.length),d=Math.abs(e.length-a.length),r=0;for(s=0;s<n;s++)(t&&e[s]!==a[s]||!t&&g(e[s])!==g(a[s]))&&r++;return r+d}function w(e){!1===l.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function t(n,d){var r=!0;return L(function(){if(null!=l.deprecationHandler&&l.deprecationHandler(null,n),r){for(var e,a=[],t=0;t<arguments.length;t++){if(e="","object"==typeof arguments[t]){for(var s in e+="\n["+t+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[t];a.push(e)}w(n+"\nArguments: "+Array.prototype.slice.call(a).join("")+"\n"+(new Error).stack),r=!1}return d.apply(this,arguments)},d)}var s,v={};function H(e,a){null!=l.deprecationHandler&&l.deprecationHandler(e,a),v[e]||(w(a),v[e]=!0)}function S(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,a){var t,s=L({},e);for(t in a)h(a,t)&&(i(e[t])&&i(a[t])?(s[t]={},L(s[t],e[t]),L(s[t],a[t])):null!=a[t]?s[t]=a[t]:delete s[t]);for(t in e)h(e,t)&&!h(a,t)&&i(e[t])&&(s[t]=L({},s[t]));return s}function j(e){null!=e&&this.set(e)}l.suppressDeprecationWarnings=!1,l.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var a,t=[];for(a in e)h(e,a)&&t.push(a);return t};var x={};function P(e,a){var t=e.toLowerCase();x[t]=x[t+"s"]=x[a]=e}function O(e){return"string"==typeof e?x[e]||x[e.toLowerCase()]:void 0}function W(e){var a,t,s={};for(t in e)h(e,t)&&(a=O(t))&&(s[a]=e[t]);return s}var E={};function A(e,a){E[e]=a}function F(e,a,t){var s=""+Math.abs(e),n=a-s.length;return(0<=e?t?"+":"":"-")+Math.pow(10,Math.max(0,n)).toString().substr(1)+s}var z=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,J=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,N={},R={};function I(e,a,t,s){var n=s;"string"==typeof s&&(n=function(){return this[s]()}),e&&(R[e]=n),a&&(R[a[0]]=function(){return F(n.apply(this,arguments),a[1],a[2])}),t&&(R[t]=function(){return this.localeData().ordinal(n.apply(this,arguments),e)})}function C(e,a){return e.isValid()?(a=G(a,e.localeData()),N[a]=N[a]||function(s){var e,n,a,d=s.match(z);for(e=0,n=d.length;e<n;e++)R[d[e]]?d[e]=R[d[e]]:d[e]=(a=d[e]).match(/\[[\s\S]/)?a.replace(/^\[|\]$/g,""):a.replace(/\\/g,"");return function(e){var a,t="";for(a=0;a<n;a++)t+=S(d[a])?d[a].call(e,s):d[a];return t}}(a),N[a](e)):e.localeData().invalidDate()}function G(e,a){var t=5;function s(e){return a.longDateFormat(e)||e}for(J.lastIndex=0;0<=t&&J.test(e);)e=e.replace(J,s),J.lastIndex=0,t-=1;return e}var U=/\d/,V=/\d\d/,K=/\d{3}/,$=/\d{4}/,Z=/[+-]?\d{6}/,B=/\d\d?/,q=/\d\d\d\d?/,Q=/\d\d\d\d\d\d?/,X=/\d{1,3}/,ee=/\d{1,4}/,ae=/[+-]?\d{1,6}/,te=/\d+/,se=/[+-]?\d+/,ne=/Z|[+-]\d\d:?\d\d/gi,de=/Z|[+-]\d\d(?::?\d\d)?/gi,re=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,_e={};function ie(e,t,s){_e[e]=S(t)?t:function(e,a){return e&&s?s:t}}function oe(e,a){return h(_e,e)?_e[e](a._strict,a._locale):new RegExp(me(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,a,t,s,n){return a||t||s||n})))}function me(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var ue={};function le(e,t){var a,s=t;for("string"==typeof e&&(e=[e]),m(t)&&(s=function(e,a){a[t]=g(e)}),a=0;a<e.length;a++)ue[e[a]]=s}function Me(e,n){le(e,function(e,a,t,s){t._w=t._w||{},n(e,t._w,t,s)})}var he=0,Le=1,ce=2,Ye=3,ye=4,fe=5,ke=6,pe=7,De=8;function Te(e){return ge(e)?366:365}function ge(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),P("year","y"),A("year",1),ie("Y",se),ie("YY",B,V),ie("YYYY",ee,$),ie("YYYYY",ae,Z),ie("YYYYYY",ae,Z),le(["YYYYY","YYYYYY"],he),le("YYYY",function(e,a){a[he]=2===e.length?l.parseTwoDigitYear(e):g(e)}),le("YY",function(e,a){a[he]=l.parseTwoDigitYear(e)}),le("Y",function(e,a){a[he]=parseInt(e,10)}),l.parseTwoDigitYear=function(e){return g(e)+(68<g(e)?1900:2e3)};var we,ve=He("FullYear",!0);function He(a,t){return function(e){return null!=e?(be(this,a,e),l.updateOffset(this,t),this):Se(this,a)}}function Se(e,a){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+a]():NaN}function be(e,a,t){e.isValid()&&!isNaN(t)&&("FullYear"===a&&ge(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+a](t,e.month(),je(t,e.month())):e._d["set"+(e._isUTC?"UTC":"")+a](t))}function je(e,a){if(isNaN(e)||isNaN(a))return NaN;var t,s=(a%(t=12)+t)%t;return e+=(a-s)/12,1===s?ge(e)?29:28:31-s%7%2}we=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var a;for(a=0;a<this.length;++a)if(this[a]===e)return a;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),P("month","M"),A("month",8),ie("M",B),ie("MM",B,V),ie("MMM",function(e,a){return a.monthsShortRegex(e)}),ie("MMMM",function(e,a){return a.monthsRegex(e)}),le(["M","MM"],function(e,a){a[Le]=g(e)-1}),le(["MMM","MMMM"],function(e,a,t,s){var n=t._locale.monthsParse(e,s,t._strict);null!=n?a[Le]=n:Y(t).invalidMonth=e});var xe=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,Pe="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Oe="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function We(e,a){var t;if(!e.isValid())return e;if("string"==typeof a)if(/^\d+$/.test(a))a=g(a);else if(!m(a=e.localeData().monthsParse(a)))return e;return t=Math.min(e.date(),je(e.year(),a)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](a,t),e}function Ee(e){return null!=e?(We(this,e),l.updateOffset(this,!0),this):Se(this,"Month")}var Ae=re;var Fe=re;function ze(){function e(e,a){return a.length-e.length}var a,t,s=[],n=[],d=[];for(a=0;a<12;a++)t=c([2e3,a]),s.push(this.monthsShort(t,"")),n.push(this.months(t,"")),d.push(this.months(t,"")),d.push(this.monthsShort(t,""));for(s.sort(e),n.sort(e),d.sort(e),a=0;a<12;a++)s[a]=me(s[a]),n[a]=me(n[a]);for(a=0;a<24;a++)d[a]=me(d[a]);this._monthsRegex=new RegExp("^("+d.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+n.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Je(e){var a=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(a.getUTCFullYear())&&a.setUTCFullYear(e),a}function Ne(e,a,t){var s=7+a-t;return-((7+Je(e,0,s).getUTCDay()-a)%7)+s-1}function Re(e,a,t,s,n){var d,r,_=1+7*(a-1)+(7+t-s)%7+Ne(e,s,n);return r=_<=0?Te(d=e-1)+_:_>Te(e)?(d=e+1,_-Te(e)):(d=e,_),{year:d,dayOfYear:r}}function Ie(e,a,t){var s,n,d=Ne(e.year(),a,t),r=Math.floor((e.dayOfYear()-d-1)/7)+1;return r<1?s=r+Ce(n=e.year()-1,a,t):r>Ce(e.year(),a,t)?(s=r-Ce(e.year(),a,t),n=e.year()+1):(n=e.year(),s=r),{week:s,year:n}}function Ce(e,a,t){var s=Ne(e,a,t),n=Ne(e+1,a,t);return(Te(e)-s+n)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),P("week","w"),P("isoWeek","W"),A("week",5),A("isoWeek",5),ie("w",B),ie("ww",B,V),ie("W",B),ie("WW",B,V),Me(["w","ww","W","WW"],function(e,a,t,s){a[s.substr(0,1)]=g(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),P("day","d"),P("weekday","e"),P("isoWeekday","E"),A("day",11),A("weekday",11),A("isoWeekday",11),ie("d",B),ie("e",B),ie("E",B),ie("dd",function(e,a){return a.weekdaysMinRegex(e)}),ie("ddd",function(e,a){return a.weekdaysShortRegex(e)}),ie("dddd",function(e,a){return a.weekdaysRegex(e)}),Me(["dd","ddd","dddd"],function(e,a,t,s){var n=t._locale.weekdaysParse(e,s,t._strict);null!=n?a.d=n:Y(t).invalidWeekday=e}),Me(["d","e","E"],function(e,a,t,s){a[s]=g(e)});var Ge="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ue="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var Ve="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var Ke=re;var $e=re;var Ze=re;function Be(){function e(e,a){return a.length-e.length}var a,t,s,n,d,r=[],_=[],i=[],o=[];for(a=0;a<7;a++)t=c([2e3,1]).day(a),s=this.weekdaysMin(t,""),n=this.weekdaysShort(t,""),d=this.weekdays(t,""),r.push(s),_.push(n),i.push(d),o.push(s),o.push(n),o.push(d);for(r.sort(e),_.sort(e),i.sort(e),o.sort(e),a=0;a<7;a++)_[a]=me(_[a]),i[a]=me(i[a]),o[a]=me(o[a]);this._weekdaysRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+_.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+r.join("|")+")","i")}function qe(){return this.hours()%12||12}function Qe(e,a){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),a)})}function Xe(e,a){return a._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)}),I("hmmss",0,0,function(){return""+qe.apply(this)+F(this.minutes(),2)+F(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+F(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+F(this.minutes(),2)+F(this.seconds(),2)}),Qe("a",!0),Qe("A",!1),P("hour","h"),A("hour",13),ie("a",Xe),ie("A",Xe),ie("H",B),ie("h",B),ie("k",B),ie("HH",B,V),ie("hh",B,V),ie("kk",B,V),ie("hmm",q),ie("hmmss",Q),ie("Hmm",q),ie("Hmmss",Q),le(["H","HH"],Ye),le(["k","kk"],function(e,a,t){var s=g(e);a[Ye]=24===s?0:s}),le(["a","A"],function(e,a,t){t._isPm=t._locale.isPM(e),t._meridiem=e}),le(["h","hh"],function(e,a,t){a[Ye]=g(e),Y(t).bigHour=!0}),le("hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s)),Y(t).bigHour=!0}),le("hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n)),Y(t).bigHour=!0}),le("Hmm",function(e,a,t){var s=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s))}),le("Hmmss",function(e,a,t){var s=e.length-4,n=e.length-2;a[Ye]=g(e.substr(0,s)),a[ye]=g(e.substr(s,2)),a[fe]=g(e.substr(n))});var ea,aa=He("Hours",!0),ta={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:Pe,monthsShort:Oe,week:{dow:0,doy:6},weekdays:Ge,weekdaysMin:Ve,weekdaysShort:Ue,meridiemParse:/[ap]\.?m?\.?/i},sa={},na={};function da(e){return e?e.toLowerCase().replace("_","-"):e}function ra(e){var a=null;if(!sa[e]&&"undefined"!=typeof module&&module&&module.exports)try{a=ea._abbr,require("./locale/"+e),_a(a)}catch(e){}return sa[e]}function _a(e,a){var t;return e&&((t=o(a)?oa(e):ia(e,a))?ea=t:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),ea._abbr}function ia(e,a){if(null===a)return delete sa[e],null;var t,s=ta;if(a.abbr=e,null!=sa[e])H("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=sa[e]._config;else if(null!=a.parentLocale)if(null!=sa[a.parentLocale])s=sa[a.parentLocale]._config;else{if(null==(t=ra(a.parentLocale)))return na[a.parentLocale]||(na[a.parentLocale]=[]),na[a.parentLocale].push({name:e,config:a}),null;s=t._config}return sa[e]=new j(b(s,a)),na[e]&&na[e].forEach(function(e){ia(e.name,e.config)}),_a(e),sa[e]}function oa(e){var a;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return ea;if(!_(e)){if(a=ra(e))return a;e=[e]}return function(e){for(var a,t,s,n,d=0;d<e.length;){for(a=(n=da(e[d]).split("-")).length,t=(t=da(e[d+1]))?t.split("-"):null;0<a;){if(s=ra(n.slice(0,a).join("-")))return s;if(t&&t.length>=a&&r(n,t,!0)>=a-1)break;a--}d++}return ea}(e)}function ma(e){var a,t=e._a;return t&&-2===Y(e).overflow&&(a=t[Le]<0||11<t[Le]?Le:t[ce]<1||t[ce]>je(t[he],t[Le])?ce:t[Ye]<0||24<t[Ye]||24===t[Ye]&&(0!==t[ye]||0!==t[fe]||0!==t[ke])?Ye:t[ye]<0||59<t[ye]?ye:t[fe]<0||59<t[fe]?fe:t[ke]<0||999<t[ke]?ke:-1,Y(e)._overflowDayOfYear&&(a<he||ce<a)&&(a=ce),Y(e)._overflowWeeks&&-1===a&&(a=pe),Y(e)._overflowWeekday&&-1===a&&(a=De),Y(e).overflow=a),e}function ua(e,a,t){return null!=e?e:null!=a?a:t}function la(e){var a,t,s,n,d,r=[];if(!e._d){var _,i;for(_=e,i=new Date(l.now()),s=_._useUTC?[i.getUTCFullYear(),i.getUTCMonth(),i.getUTCDate()]:[i.getFullYear(),i.getMonth(),i.getDate()],e._w&&null==e._a[ce]&&null==e._a[Le]&&function(e){var a,t,s,n,d,r,_,i;if(null!=(a=e._w).GG||null!=a.W||null!=a.E)d=1,r=4,t=ua(a.GG,e._a[he],Ie(Ha(),1,4).year),s=ua(a.W,1),((n=ua(a.E,1))<1||7<n)&&(i=!0);else{d=e._locale._week.dow,r=e._locale._week.doy;var o=Ie(Ha(),d,r);t=ua(a.gg,e._a[he],o.year),s=ua(a.w,o.week),null!=a.d?((n=a.d)<0||6<n)&&(i=!0):null!=a.e?(n=a.e+d,(a.e<0||6<a.e)&&(i=!0)):n=d}s<1||s>Ce(t,d,r)?Y(e)._overflowWeeks=!0:null!=i?Y(e)._overflowWeekday=!0:(_=Re(t,s,n,d,r),e._a[he]=_.year,e._dayOfYear=_.dayOfYear)}(e),null!=e._dayOfYear&&(d=ua(e._a[he],s[he]),(e._dayOfYear>Te(d)||0===e._dayOfYear)&&(Y(e)._overflowDayOfYear=!0),t=Je(d,0,e._dayOfYear),e._a[Le]=t.getUTCMonth(),e._a[ce]=t.getUTCDate()),a=0;a<3&&null==e._a[a];++a)e._a[a]=r[a]=s[a];for(;a<7;a++)e._a[a]=r[a]=null==e._a[a]?2===a?1:0:e._a[a];24===e._a[Ye]&&0===e._a[ye]&&0===e._a[fe]&&0===e._a[ke]&&(e._nextDay=!0,e._a[Ye]=0),e._d=(e._useUTC?Je:function(e,a,t,s,n,d,r){var _=new Date(e,a,t,s,n,d,r);return e<100&&0<=e&&isFinite(_.getFullYear())&&_.setFullYear(e),_}).apply(null,r),n=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[Ye]=24),e._w&&void 0!==e._w.d&&e._w.d!==n&&(Y(e).weekdayMismatch=!0)}}var Ma=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,ha=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,La=/Z|[+-]\d\d(?::?\d\d)?/,ca=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],Ya=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],ya=/^\/?Date\((\-?\d+)/i;function fa(e){var a,t,s,n,d,r,_=e._i,i=Ma.exec(_)||ha.exec(_);if(i){for(Y(e).iso=!0,a=0,t=ca.length;a<t;a++)if(ca[a][1].exec(i[1])){n=ca[a][0],s=!1!==ca[a][2];break}if(null==n)return void(e._isValid=!1);if(i[3]){for(a=0,t=Ya.length;a<t;a++)if(Ya[a][1].exec(i[3])){d=(i[2]||" ")+Ya[a][0];break}if(null==d)return void(e._isValid=!1)}if(!s&&null!=d)return void(e._isValid=!1);if(i[4]){if(!La.exec(i[4]))return void(e._isValid=!1);r="Z"}e._f=n+(d||"")+(r||""),ga(e)}else e._isValid=!1}var ka=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function pa(e,a,t,s,n,d){var r=[function(e){var a=parseInt(e,10);{if(a<=49)return 2e3+a;if(a<=999)return 1900+a}return a}(e),Oe.indexOf(a),parseInt(t,10),parseInt(s,10),parseInt(n,10)];return d&&r.push(parseInt(d,10)),r}var Da={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Ta(e){var a,t,s,n=ka.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(n){var d=pa(n[4],n[3],n[2],n[5],n[6],n[7]);if(a=n[1],t=d,s=e,a&&Ue.indexOf(a)!==new Date(t[0],t[1],t[2]).getDay()&&(Y(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=d,e._tzm=function(e,a,t){if(e)return Da[e];if(a)return 0;var s=parseInt(t,10),n=s%100;return(s-n)/100*60+n}(n[8],n[9],n[10]),e._d=Je.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),Y(e).rfc2822=!0}else e._isValid=!1}function ga(e){if(e._f!==l.ISO_8601)if(e._f!==l.RFC_2822){e._a=[],Y(e).empty=!0;var a,t,s,n,d,r,_,i,o=""+e._i,m=o.length,u=0;for(s=G(e._f,e._locale).match(z)||[],a=0;a<s.length;a++)n=s[a],(t=(o.match(oe(n,e))||[])[0])&&(0<(d=o.substr(0,o.indexOf(t))).length&&Y(e).unusedInput.push(d),o=o.slice(o.indexOf(t)+t.length),u+=t.length),R[n]?(t?Y(e).empty=!1:Y(e).unusedTokens.push(n),r=n,i=e,null!=(_=t)&&h(ue,r)&&ue[r](_,i._a,i,r)):e._strict&&!t&&Y(e).unusedTokens.push(n);Y(e).charsLeftOver=m-u,0<o.length&&Y(e).unusedInput.push(o),e._a[Ye]<=12&&!0===Y(e).bigHour&&0<e._a[Ye]&&(Y(e).bigHour=void 0),Y(e).parsedDateParts=e._a.slice(0),Y(e).meridiem=e._meridiem,e._a[Ye]=function(e,a,t){var s;if(null==t)return a;return null!=e.meridiemHour?e.meridiemHour(a,t):(null!=e.isPM&&((s=e.isPM(t))&&a<12&&(a+=12),s||12!==a||(a=0)),a)}(e._locale,e._a[Ye],e._meridiem),la(e),ma(e)}else Ta(e);else fa(e)}function wa(e){var a,t,s,n,d=e._i,r=e._f;return e._locale=e._locale||oa(e._l),null===d||void 0===r&&""===d?f({nullInput:!0}):("string"==typeof d&&(e._i=d=e._locale.preparse(d)),D(d)?new p(ma(d)):(u(d)?e._d=d:_(r)?function(e){var a,t,s,n,d;if(0===e._f.length)return Y(e).invalidFormat=!0,e._d=new Date(NaN);for(n=0;n<e._f.length;n++)d=0,a=k({},e),null!=e._useUTC&&(a._useUTC=e._useUTC),a._f=e._f[n],ga(a),y(a)&&(d+=Y(a).charsLeftOver,d+=10*Y(a).unusedTokens.length,Y(a).score=d,(null==s||d<s)&&(s=d,t=a));L(e,t||a)}(e):r?ga(e):o(t=(a=e)._i)?a._d=new Date(l.now()):u(t)?a._d=new Date(t.valueOf()):"string"==typeof t?(s=a,null===(n=ya.exec(s._i))?(fa(s),!1===s._isValid&&(delete s._isValid,Ta(s),!1===s._isValid&&(delete s._isValid,l.createFromInputFallback(s)))):s._d=new Date(+n[1])):_(t)?(a._a=M(t.slice(0),function(e){return parseInt(e,10)}),la(a)):i(t)?function(e){if(!e._d){var a=W(e._i);e._a=M([a.year,a.month,a.day||a.date,a.hour,a.minute,a.second,a.millisecond],function(e){return e&&parseInt(e,10)}),la(e)}}(a):m(t)?a._d=new Date(t):l.createFromInputFallback(a),y(e)||(e._d=null),e))}function va(e,a,t,s,n){var d,r={};return!0!==t&&!1!==t||(s=t,t=void 0),(i(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var a;for(a in e)if(e.hasOwnProperty(a))return!1;return!0}(e)||_(e)&&0===e.length)&&(e=void 0),r._isAMomentObject=!0,r._useUTC=r._isUTC=n,r._l=t,r._i=e,r._f=a,r._strict=s,(d=new p(ma(wa(r))))._nextDay&&(d.add(1,"d"),d._nextDay=void 0),d}function Ha(e,a,t,s){return va(e,a,t,s,!1)}l.createFromInputFallback=t("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),l.ISO_8601=function(){},l.RFC_2822=function(){};var Sa=t("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:f()}),ba=t("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Ha.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:f()});function ja(e,a){var t,s;if(1===a.length&&_(a[0])&&(a=a[0]),!a.length)return Ha();for(t=a[0],s=1;s<a.length;++s)a[s].isValid()&&!a[s][e](t)||(t=a[s]);return t}var xa=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Pa(e){var a=W(e),t=a.year||0,s=a.quarter||0,n=a.month||0,d=a.week||a.isoWeek||0,r=a.day||0,_=a.hour||0,i=a.minute||0,o=a.second||0,m=a.millisecond||0;this._isValid=function(e){for(var a in e)if(-1===we.call(xa,a)||null!=e[a]&&isNaN(e[a]))return!1;for(var t=!1,s=0;s<xa.length;++s)if(e[xa[s]]){if(t)return!1;parseFloat(e[xa[s]])!==g(e[xa[s]])&&(t=!0)}return!0}(a),this._milliseconds=+m+1e3*o+6e4*i+1e3*_*60*60,this._days=+r+7*d,this._months=+n+3*s+12*t,this._data={},this._locale=oa(),this._bubble()}function Oa(e){return e instanceof Pa}function Wa(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ea(e,t){I(e,0,0,function(){var e=this.utcOffset(),a="+";return e<0&&(e=-e,a="-"),a+F(~~(e/60),2)+t+F(~~e%60,2)})}Ea("Z",":"),Ea("ZZ",""),ie("Z",de),ie("ZZ",de),le(["Z","ZZ"],function(e,a,t){t._useUTC=!0,t._tzm=Fa(de,e)});var Aa=/([\+\-]|\d\d)/gi;function Fa(e,a){var t=(a||"").match(e);if(null===t)return null;var s=((t[t.length-1]||[])+"").match(Aa)||["-",0,0],n=60*s[1]+g(s[2]);return 0===n?0:"+"===s[0]?n:-n}function za(e,a){var t,s;return a._isUTC?(t=a.clone(),s=(D(e)||u(e)?e.valueOf():Ha(e).valueOf())-t.valueOf(),t._d.setTime(t._d.valueOf()+s),l.updateOffset(t,!1),t):Ha(e).local()}function Ja(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Na(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}l.updateOffset=function(){};var Ra=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,Ia=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function Ca(e,a){var t,s,n,d=e,r=null;return Oa(e)?d={ms:e._milliseconds,d:e._days,M:e._months}:m(e)?(d={},a?d[a]=e:d.milliseconds=e):(r=Ra.exec(e))?(t="-"===r[1]?-1:1,d={y:0,d:g(r[ce])*t,h:g(r[Ye])*t,m:g(r[ye])*t,s:g(r[fe])*t,ms:g(Wa(1e3*r[ke]))*t}):(r=Ia.exec(e))?(t="-"===r[1]?-1:1,d={y:Ga(r[2],t),M:Ga(r[3],t),w:Ga(r[4],t),d:Ga(r[5],t),h:Ga(r[6],t),m:Ga(r[7],t),s:Ga(r[8],t)}):null==d?d={}:"object"==typeof d&&("from"in d||"to"in d)&&(n=function(e,a){var t;if(!e.isValid()||!a.isValid())return{milliseconds:0,months:0};a=za(a,e),e.isBefore(a)?t=Ua(e,a):((t=Ua(a,e)).milliseconds=-t.milliseconds,t.months=-t.months);return t}(Ha(d.from),Ha(d.to)),(d={}).ms=n.milliseconds,d.M=n.months),s=new Pa(d),Oa(e)&&h(e,"_locale")&&(s._locale=e._locale),s}function Ga(e,a){var t=e&&parseFloat(e.replace(",","."));return(isNaN(t)?0:t)*a}function Ua(e,a){var t={milliseconds:0,months:0};return t.months=a.month()-e.month()+12*(a.year()-e.year()),e.clone().add(t.months,"M").isAfter(a)&&--t.months,t.milliseconds=+a-+e.clone().add(t.months,"M"),t}function Va(s,n){return function(e,a){var t;return null===a||isNaN(+a)||(H(n,"moment()."+n+"(period, number) is deprecated. Please use moment()."+n+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),t=e,e=a,a=t),Ka(this,Ca(e="string"==typeof e?+e:e,a),s),this}}function Ka(e,a,t,s){var n=a._milliseconds,d=Wa(a._days),r=Wa(a._months);e.isValid()&&(s=null==s||s,r&&We(e,Se(e,"Month")+r*t),d&&be(e,"Date",Se(e,"Date")+d*t),n&&e._d.setTime(e._d.valueOf()+n*t),s&&l.updateOffset(e,d||r))}Ca.fn=Pa.prototype,Ca.invalid=function(){return Ca(NaN)};var $a=Va(1,"add"),Za=Va(-1,"subtract");function Ba(e,a){var t=12*(a.year()-e.year())+(a.month()-e.month()),s=e.clone().add(t,"months");return-(t+(a-s<0?(a-s)/(s-e.clone().add(t-1,"months")):(a-s)/(e.clone().add(t+1,"months")-s)))||0}function qa(e){var a;return void 0===e?this._locale._abbr:(null!=(a=oa(e))&&(this._locale=a),this)}l.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",l.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Qa=t("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Xa(){return this._locale}function et(e,a){I(0,[e,e.length],0,a)}function at(e,a,t,s,n){var d;return null==e?Ie(this,s,n).year:((d=Ce(e,s,n))<a&&(a=d),function(e,a,t,s,n){var d=Re(e,a,t,s,n),r=Je(d.year,0,d.dayOfYear);return this.year(r.getUTCFullYear()),this.month(r.getUTCMonth()),this.date(r.getUTCDate()),this}.call(this,e,a,t,s,n))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),et("gggg","weekYear"),et("ggggg","weekYear"),et("GGGG","isoWeekYear"),et("GGGGG","isoWeekYear"),P("weekYear","gg"),P("isoWeekYear","GG"),A("weekYear",1),A("isoWeekYear",1),ie("G",se),ie("g",se),ie("GG",B,V),ie("gg",B,V),ie("GGGG",ee,$),ie("gggg",ee,$),ie("GGGGG",ae,Z),ie("ggggg",ae,Z),Me(["gggg","ggggg","GGGG","GGGGG"],function(e,a,t,s){a[s.substr(0,2)]=g(e)}),Me(["gg","GG"],function(e,a,t,s){a[s]=l.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),P("quarter","Q"),A("quarter",7),ie("Q",U),le("Q",function(e,a){a[Le]=3*(g(e)-1)}),I("D",["DD",2],"Do","date"),P("date","D"),A("date",9),ie("D",B),ie("DD",B,V),ie("Do",function(e,a){return e?a._dayOfMonthOrdinalParse||a._ordinalParse:a._dayOfMonthOrdinalParseLenient}),le(["D","DD"],ce),le("Do",function(e,a){a[ce]=g(e.match(B)[0])});var tt=He("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),P("dayOfYear","DDD"),A("dayOfYear",4),ie("DDD",X),ie("DDDD",K),le(["DDD","DDDD"],function(e,a,t){t._dayOfYear=g(e)}),I("m",["mm",2],0,"minute"),P("minute","m"),A("minute",14),ie("m",B),ie("mm",B,V),le(["m","mm"],ye);var st=He("Minutes",!1);I("s",["ss",2],0,"second"),P("second","s"),A("second",15),ie("s",B),ie("ss",B,V),le(["s","ss"],fe);var nt,dt=He("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),P("millisecond","ms"),A("millisecond",16),ie("S",X,U),ie("SS",X,V),ie("SSS",X,K),nt="SSSS";nt.length<=9;nt+="S")ie(nt,te);function rt(e,a){a[ke]=g(1e3*("0."+e))}for(nt="S";nt.length<=9;nt+="S")le(nt,rt);var _t=He("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var it=p.prototype;function ot(e){return e}it.add=$a,it.calendar=function(e,a){var t=e||Ha(),s=za(t,this).startOf("day"),n=l.calendarFormat(this,s)||"sameElse",d=a&&(S(a[n])?a[n].call(this,t):a[n]);return this.format(d||this.localeData().calendar(n,this,Ha(t)))},it.clone=function(){return new p(this)},it.diff=function(e,a,t){var s,n,d;if(!this.isValid())return NaN;if(!(s=za(e,this)).isValid())return NaN;switch(n=6e4*(s.utcOffset()-this.utcOffset()),a=O(a)){case"year":d=Ba(this,s)/12;break;case"month":d=Ba(this,s);break;case"quarter":d=Ba(this,s)/3;break;case"second":d=(this-s)/1e3;break;case"minute":d=(this-s)/6e4;break;case"hour":d=(this-s)/36e5;break;case"day":d=(this-s-n)/864e5;break;case"week":d=(this-s-n)/6048e5;break;default:d=this-s}return t?d:T(d)},it.endOf=function(e){return void 0===(e=O(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},it.format=function(e){e||(e=this.isUtc()?l.defaultFormatUtc:l.defaultFormat);var a=C(this,e);return this.localeData().postformat(a)},it.from=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({to:this,from:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.fromNow=function(e){return this.from(Ha(),e)},it.to=function(e,a){return this.isValid()&&(D(e)&&e.isValid()||Ha(e).isValid())?Ca({from:this,to:e}).locale(this.locale()).humanize(!a):this.localeData().invalidDate()},it.toNow=function(e){return this.to(Ha(),e)},it.get=function(e){return S(this[e=O(e)])?this[e]():this},it.invalidAt=function(){return Y(this).overflow},it.isAfter=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()>t.valueOf():t.valueOf()<this.clone().startOf(a).valueOf())},it.isBefore=function(e,a){var t=D(e)?e:Ha(e);return!(!this.isValid()||!t.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()<t.valueOf():this.clone().endOf(a).valueOf()<t.valueOf())},it.isBetween=function(e,a,t,s){var n=D(e)?e:Ha(e),d=D(a)?a:Ha(a);return!!(this.isValid()&&n.isValid()&&d.isValid())&&("("===(s=s||"()")[0]?this.isAfter(n,t):!this.isBefore(n,t))&&(")"===s[1]?this.isBefore(d,t):!this.isAfter(d,t))},it.isSame=function(e,a){var t,s=D(e)?e:Ha(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(a=O(a)||"millisecond")?this.valueOf()===s.valueOf():(t=s.valueOf(),this.clone().startOf(a).valueOf()<=t&&t<=this.clone().endOf(a).valueOf()))},it.isSameOrAfter=function(e,a){return this.isSame(e,a)||this.isAfter(e,a)},it.isSameOrBefore=function(e,a){return this.isSame(e,a)||this.isBefore(e,a)},it.isValid=function(){return y(this)},it.lang=Qa,it.locale=qa,it.localeData=Xa,it.max=ba,it.min=Sa,it.parsingFlags=function(){return L({},Y(this))},it.set=function(e,a){if("object"==typeof e)for(var t=function(e){var a=[];for(var t in e)a.push({unit:t,priority:E[t]});return a.sort(function(e,a){return e.priority-a.priority}),a}(e=W(e)),s=0;s<t.length;s++)this[t[s].unit](e[t[s].unit]);else if(S(this[e=O(e)]))return this[e](a);return this},it.startOf=function(e){switch(e=O(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},it.subtract=Za,it.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},it.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},it.toDate=function(){return new Date(this.valueOf())},it.toISOString=function(e){if(!this.isValid())return null;var a=!0!==e,t=a?this.clone().utc():this;return t.year()<0||9999<t.year()?C(t,a?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):S(Date.prototype.toISOString)?a?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",C(t,"Z")):C(t,a?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},it.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",a="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",a="Z");var t="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",n=a+'[")]';return this.format(t+s+"-MM-DD[T]HH:mm:ss.SSS"+n)},it.toJSON=function(){return this.isValid()?this.toISOString():null},it.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},it.unix=function(){return Math.floor(this.valueOf()/1e3)},it.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},it.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},it.year=ve,it.isLeapYear=function(){return ge(this.year())},it.weekYear=function(e){return at.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},it.isoWeekYear=function(e){return at.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},it.quarter=it.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},it.month=Ee,it.daysInMonth=function(){return je(this.year(),this.month())},it.week=it.weeks=function(e){var a=this.localeData().week(this);return null==e?a:this.add(7*(e-a),"d")},it.isoWeek=it.isoWeeks=function(e){var a=Ie(this,1,4).week;return null==e?a:this.add(7*(e-a),"d")},it.weeksInYear=function(){var e=this.localeData()._week;return Ce(this.year(),e.dow,e.doy)},it.isoWeeksInYear=function(){return Ce(this.year(),1,4)},it.date=tt,it.day=it.days=function(e){if(!this.isValid())return null!=e?this:NaN;var a,t,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(a=e,t=this.localeData(),e="string"!=typeof a?a:isNaN(a)?"number"==typeof(a=t.weekdaysParse(a))?a:null:parseInt(a,10),this.add(e-s,"d")):s},it.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var a=(this.day()+7-this.localeData()._week.dow)%7;return null==e?a:this.add(e-a,"d")},it.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var a,t,s=(a=e,t=this.localeData(),"string"==typeof a?t.weekdaysParse(a)%7||7:isNaN(a)?null:a);return this.day(this.day()%7?s:s-7)},it.dayOfYear=function(e){var a=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?a:this.add(e-a,"d")},it.hour=it.hours=aa,it.minute=it.minutes=st,it.second=it.seconds=dt,it.millisecond=it.milliseconds=_t,it.utcOffset=function(e,a,t){var s,n=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?n:Ja(this);if("string"==typeof e){if(null===(e=Fa(de,e)))return this}else Math.abs(e)<16&&!t&&(e*=60);return!this._isUTC&&a&&(s=Ja(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),n!==e&&(!a||this._changeInProgress?Ka(this,Ca(e-n,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,l.updateOffset(this,!0),this._changeInProgress=null)),this},it.utc=function(e){return this.utcOffset(0,e)},it.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Ja(this),"m")),this},it.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Fa(ne,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},it.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Ha(e).utcOffset():0,(this.utcOffset()-e)%60==0)},it.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},it.isLocal=function(){return!!this.isValid()&&!this._isUTC},it.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},it.isUtc=Na,it.isUTC=Na,it.zoneAbbr=function(){return this._isUTC?"UTC":""},it.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},it.dates=t("dates accessor is deprecated. Use date instead.",tt),it.months=t("months accessor is deprecated. Use month instead",Ee),it.years=t("years accessor is deprecated. Use year instead",ve),it.zone=t("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,a){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,a),this):-this.utcOffset()}),it.isDSTShifted=t("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!o(this._isDSTShifted))return this._isDSTShifted;var e={};if(k(e,this),(e=wa(e))._a){var a=e._isUTC?c(e._a):Ha(e._a);this._isDSTShifted=this.isValid()&&0<r(e._a,a.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var mt=j.prototype;function ut(e,a,t,s){var n=oa(),d=c().set(s,a);return n[t](d,e)}function lt(e,a,t){if(m(e)&&(a=e,e=void 0),e=e||"",null!=a)return ut(e,a,t,"month");var s,n=[];for(s=0;s<12;s++)n[s]=ut(e,s,t,"month");return n}function Mt(e,a,t,s){a=("boolean"==typeof e?m(a)&&(t=a,a=void 0):(a=e,e=!1,m(t=a)&&(t=a,a=void 0)),a||"");var n,d=oa(),r=e?d._week.dow:0;if(null!=t)return ut(a,(t+r)%7,s,"day");var _=[];for(n=0;n<7;n++)_[n]=ut(a,(n+r)%7,s,"day");return _}mt.calendar=function(e,a,t){var s=this._calendar[e]||this._calendar.sameElse;return S(s)?s.call(a,t):s},mt.longDateFormat=function(e){var a=this._longDateFormat[e],t=this._longDateFormat[e.toUpperCase()];return a||!t?a:(this._longDateFormat[e]=t.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},mt.invalidDate=function(){return this._invalidDate},mt.ordinal=function(e){return this._ordinal.replace("%d",e)},mt.preparse=ot,mt.postformat=ot,mt.relativeTime=function(e,a,t,s){var n=this._relativeTime[t];return S(n)?n(e,a,t,s):n.replace(/%d/i,e)},mt.pastFuture=function(e,a){var t=this._relativeTime[0<e?"future":"past"];return S(t)?t(a):t.replace(/%s/i,a)},mt.set=function(e){var a,t;for(t in e)S(a=e[t])?this[t]=a:this["_"+t]=a;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},mt.months=function(e,a){return e?_(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||xe).test(a)?"format":"standalone"][e.month()]:_(this._months)?this._months:this._months.standalone},mt.monthsShort=function(e,a){return e?_(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[xe.test(a)?"format":"standalone"][e.month()]:_(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},mt.monthsParse=function(e,a,t){var s,n,d;if(this._monthsParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)d=c([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(d,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(d,"").toLocaleLowerCase();return t?"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:null:"MMM"===a?-1!==(n=we.call(this._shortMonthsParse,r))?n:-1!==(n=we.call(this._longMonthsParse,r))?n:null:-1!==(n=we.call(this._longMonthsParse,r))?n:-1!==(n=we.call(this._shortMonthsParse,r))?n:null}.call(this,e,a,t);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(n=c([2e3,s]),t&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(n,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(n,"").replace(".","")+"$","i")),t||this._monthsParse[s]||(d="^"+this.months(n,"")+"|^"+this.monthsShort(n,""),this._monthsParse[s]=new RegExp(d.replace(".",""),"i")),t&&"MMMM"===a&&this._longMonthsParse[s].test(e))return s;if(t&&"MMM"===a&&this._shortMonthsParse[s].test(e))return s;if(!t&&this._monthsParse[s].test(e))return s}},mt.monthsRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsStrictRegex:this._monthsRegex):(h(this,"_monthsRegex")||(this._monthsRegex=Fe),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},mt.monthsShortRegex=function(e){return this._monthsParseExact?(h(this,"_monthsRegex")||ze.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(h(this,"_monthsShortRegex")||(this._monthsShortRegex=Ae),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},mt.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},mt.firstDayOfYear=function(){return this._week.doy},mt.firstDayOfWeek=function(){return this._week.dow},mt.weekdays=function(e,a){return e?_(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(a)?"format":"standalone"][e.day()]:_(this._weekdays)?this._weekdays:this._weekdays.standalone},mt.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},mt.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},mt.weekdaysParse=function(e,a,t){var s,n,d;if(this._weekdaysParseExact)return function(e,a,t){var s,n,d,r=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)d=c([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(d,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(d,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(d,"").toLocaleLowerCase();return t?"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"dddd"===a?-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:"ddd"===a?-1!==(n=we.call(this._shortWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._minWeekdaysParse,r))?n:null:-1!==(n=we.call(this._minWeekdaysParse,r))?n:-1!==(n=we.call(this._weekdaysParse,r))?n:-1!==(n=we.call(this._shortWeekdaysParse,r))?n:null}.call(this,e,a,t);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(n=c([2e3,1]).day(s),t&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(n,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(n,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(n,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(d="^"+this.weekdays(n,"")+"|^"+this.weekdaysShort(n,"")+"|^"+this.weekdaysMin(n,""),this._weekdaysParse[s]=new RegExp(d.replace(".",""),"i")),t&&"dddd"===a&&this._fullWeekdaysParse[s].test(e))return s;if(t&&"ddd"===a&&this._shortWeekdaysParse[s].test(e))return s;if(t&&"dd"===a&&this._minWeekdaysParse[s].test(e))return s;if(!t&&this._weekdaysParse[s].test(e))return s}},mt.weekdaysRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(h(this,"_weekdaysRegex")||(this._weekdaysRegex=Ke),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},mt.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(h(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=$e),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},mt.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(h(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(h(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Ze),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},mt.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},mt.meridiem=function(e,a,t){return 11<e?t?"pm":"PM":t?"am":"AM"},_a("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1===g(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.lang=t("moment.lang is deprecated. Use moment.locale instead.",_a),l.langData=t("moment.langData is deprecated. Use moment.localeData instead.",oa);var ht=Math.abs;function Lt(e,a,t,s){var n=Ca(a,t);return e._milliseconds+=s*n._milliseconds,e._days+=s*n._days,e._months+=s*n._months,e._bubble()}function ct(e){return e<0?Math.floor(e):Math.ceil(e)}function Yt(e){return 4800*e/146097}function yt(e){return 146097*e/4800}function ft(e){return function(){return this.as(e)}}var kt=ft("ms"),pt=ft("s"),Dt=ft("m"),Tt=ft("h"),gt=ft("d"),wt=ft("w"),vt=ft("M"),Ht=ft("y");function St(e){return function(){return this.isValid()?this._data[e]:NaN}}var bt=St("milliseconds"),jt=St("seconds"),xt=St("minutes"),Pt=St("hours"),Ot=St("days"),Wt=St("months"),Et=St("years");var At=Math.round,Ft={ss:44,s:45,m:45,h:22,d:26,M:11};var zt=Math.abs;function Jt(e){return(0<e)-(e<0)||+e}function Nt(){if(!this.isValid())return this.localeData().invalidDate();var e,a,t=zt(this._milliseconds)/1e3,s=zt(this._days),n=zt(this._months);a=T((e=T(t/60))/60),t%=60,e%=60;var d=T(n/12),r=n%=12,_=s,i=a,o=e,m=t?t.toFixed(3).replace(/\.?0+$/,""):"",u=this.asSeconds();if(!u)return"P0D";var l=u<0?"-":"",M=Jt(this._months)!==Jt(u)?"-":"",h=Jt(this._days)!==Jt(u)?"-":"",L=Jt(this._milliseconds)!==Jt(u)?"-":"";return l+"P"+(d?M+d+"Y":"")+(r?M+r+"M":"")+(_?h+_+"D":"")+(i||o||m?"T":"")+(i?L+i+"H":"")+(o?L+o+"M":"")+(m?L+m+"S":"")}var Rt=Pa.prototype;Rt.isValid=function(){return this._isValid},Rt.abs=function(){var e=this._data;return this._milliseconds=ht(this._milliseconds),this._days=ht(this._days),this._months=ht(this._months),e.milliseconds=ht(e.milliseconds),e.seconds=ht(e.seconds),e.minutes=ht(e.minutes),e.hours=ht(e.hours),e.months=ht(e.months),e.years=ht(e.years),this},Rt.add=function(e,a){return Lt(this,e,a,1)},Rt.subtract=function(e,a){return Lt(this,e,a,-1)},Rt.as=function(e){if(!this.isValid())return NaN;var a,t,s=this._milliseconds;if("month"===(e=O(e))||"year"===e)return a=this._days+s/864e5,t=this._months+Yt(a),"month"===e?t:t/12;switch(a=this._days+Math.round(yt(this._months)),e){case"week":return a/7+s/6048e5;case"day":return a+s/864e5;case"hour":return 24*a+s/36e5;case"minute":return 1440*a+s/6e4;case"second":return 86400*a+s/1e3;case"millisecond":return Math.floor(864e5*a)+s;default:throw new Error("Unknown unit "+e)}},Rt.asMilliseconds=kt,Rt.asSeconds=pt,Rt.asMinutes=Dt,Rt.asHours=Tt,Rt.asDays=gt,Rt.asWeeks=wt,Rt.asMonths=vt,Rt.asYears=Ht,Rt.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*g(this._months/12):NaN},Rt._bubble=function(){var e,a,t,s,n,d=this._milliseconds,r=this._days,_=this._months,i=this._data;return 0<=d&&0<=r&&0<=_||d<=0&&r<=0&&_<=0||(d+=864e5*ct(yt(_)+r),_=r=0),i.milliseconds=d%1e3,e=T(d/1e3),i.seconds=e%60,a=T(e/60),i.minutes=a%60,t=T(a/60),i.hours=t%24,_+=n=T(Yt(r+=T(t/24))),r-=ct(yt(n)),s=T(_/12),_%=12,i.days=r,i.months=_,i.years=s,this},Rt.clone=function(){return Ca(this)},Rt.get=function(e){return e=O(e),this.isValid()?this[e+"s"]():NaN},Rt.milliseconds=bt,Rt.seconds=jt,Rt.minutes=xt,Rt.hours=Pt,Rt.days=Ot,Rt.weeks=function(){return T(this.days()/7)},Rt.months=Wt,Rt.years=Et,Rt.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var a,t,s,n,d,r,_,i,o,m,u,l=this.localeData(),M=(t=!e,s=l,n=Ca(a=this).abs(),d=At(n.as("s")),r=At(n.as("m")),_=At(n.as("h")),i=At(n.as("d")),o=At(n.as("M")),m=At(n.as("y")),(u=d<=Ft.ss&&["s",d]||d<Ft.s&&["ss",d]||r<=1&&["m"]||r<Ft.m&&["mm",r]||_<=1&&["h"]||_<Ft.h&&["hh",_]||i<=1&&["d"]||i<Ft.d&&["dd",i]||o<=1&&["M"]||o<Ft.M&&["MM",o]||m<=1&&["y"]||["yy",m])[2]=t,u[3]=0<+a,u[4]=s,function(e,a,t,s,n){return n.relativeTime(a||1,!!t,e,s)}.apply(null,u));return e&&(M=l.pastFuture(+this,M)),l.postformat(M)},Rt.toISOString=Nt,Rt.toString=Nt,Rt.toJSON=Nt,Rt.locale=qa,Rt.localeData=Xa,Rt.toIsoString=t("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",Nt),Rt.lang=Qa,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ie("x",se),ie("X",/[+-]?\d+(\.\d{1,3})?/),le("X",function(e,a,t){t._d=new Date(1e3*parseFloat(e,10))}),le("x",function(e,a,t){t._d=new Date(g(e))}),l.version="2.23.0",e=Ha,l.fn=it,l.min=function(){return ja("isBefore",[].slice.call(arguments,0))},l.max=function(){return ja("isAfter",[].slice.call(arguments,0))},l.now=function(){return Date.now?Date.now():+new Date},l.utc=c,l.unix=function(e){return Ha(1e3*e)},l.months=function(e,a){return lt(e,a,"months")},l.isDate=u,l.locale=_a,l.invalid=f,l.duration=Ca,l.isMoment=D,l.weekdays=function(e,a,t){return Mt(e,a,t,"weekdays")},l.parseZone=function(){return Ha.apply(null,arguments).parseZone()},l.localeData=oa,l.isDuration=Oa,l.monthsShort=function(e,a){return lt(e,a,"monthsShort")},l.weekdaysMin=function(e,a,t){return Mt(e,a,t,"weekdaysMin")},l.defineLocale=ia,l.updateLocale=function(e,a){if(null!=a){var t,s,n=ta;null!=(s=ra(e))&&(n=s._config),(t=new j(a=b(n,a))).parentLocale=sa[e],sa[e]=t,_a(e)}else null!=sa[e]&&(null!=sa[e].parentLocale?sa[e]=sa[e].parentLocale:null!=sa[e]&&delete sa[e]);return sa[e]},l.locales=function(){return s(sa)},l.weekdaysShort=function(e,a,t){return Mt(e,a,t,"weekdaysShort")},l.normalizeUnits=O,l.relativeTimeRounding=function(e){return void 0===e?At:"function"==typeof e&&(At=e,!0)},l.relativeTimeThreshold=function(e,a){return void 0!==Ft[e]&&(void 0===a?Ft[e]:(Ft[e]=a,"s"===e&&(Ft.ss=a-1),!0))},l.calendarFormat=function(e,a){var t=e.diff(a,"days",!0);return t<-6?"sameElse":t<-1?"lastWeek":t<0?"lastDay":t<1?"sameDay":t<2?"nextDay":t<7?"nextWeek":"sameElse"},l.prototype=it,l.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},l.defineLocale("af",{months:"Januarie_Februarie_Maart_April_Mei_Junie_Julie_Augustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mrt_Apr_Mei_Jun_Jul_Aug_Sep_Okt_Nov_Des".split("_"),weekdays:"Sondag_Maandag_Dinsdag_Woensdag_Donderdag_Vrydag_Saterdag".split("_"),weekdaysShort:"Son_Maa_Din_Woe_Don_Vry_Sat".split("_"),weekdaysMin:"So_Ma_Di_Wo_Do_Vr_Sa".split("_"),meridiemParse:/vm|nm/i,isPM:function(e){return/^nm$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"vm":"VM":t?"nm":"NM"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Vandag om] LT",nextDay:"[M\xf4re om] LT",nextWeek:"dddd [om] LT",lastDay:"[Gister om] LT",lastWeek:"[Laas] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oor %s",past:"%s gelede",s:"'n paar sekondes",ss:"%d sekondes",m:"'n minuut",mm:"%d minute",h:"'n uur",hh:"%d ure",d:"'n dag",dd:"%d dae",M:"'n maand",MM:"%d maande",y:"'n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("ar-dz",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u0623\u062d_\u0625\u062b_\u062b\u0644\u0627_\u0623\u0631_\u062e\u0645_\u062c\u0645_\u0633\u0628".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:4}}),l.defineLocale("ar-kw",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:0,doy:12}});var It={1:"1",2:"2",3:"3",4:"4",5:"5",6:"6",7:"7",8:"8",9:"9",0:"0"},Ct=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Gt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Ut=function(r){return function(e,a,t,s){var n=Ct(e),d=Gt[r][Ct(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},Vt=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar-ly",{months:Vt,monthsShort:Vt,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Ut("s"),ss:Ut("s"),m:Ut("m"),mm:Ut("m"),h:Ut("h"),hh:Ut("h"),d:Ut("d"),dd:Ut("d"),M:Ut("M"),MM:Ut("M"),y:Ut("y"),yy:Ut("y")},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return It[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}}),l.defineLocale("ar-ma",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648\u0632_\u063a\u0634\u062a_\u0634\u062a\u0646\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0646\u0628\u0631_\u062f\u062c\u0646\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062a\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0627\u062d\u062f_\u0627\u062a\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:6,doy:12}});var Kt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},$t={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"};l.defineLocale("ar-sa",{months:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u064a\u0646\u0627\u064a\u0631_\u0641\u0628\u0631\u0627\u064a\u0631_\u0645\u0627\u0631\u0633_\u0623\u0628\u0631\u064a\u0644_\u0645\u0627\u064a\u0648_\u064a\u0648\u0646\u064a\u0648_\u064a\u0648\u0644\u064a\u0648_\u0623\u063a\u0633\u0637\u0633_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return $t[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Kt[e]}).replace(/,/g,"\u060c")},week:{dow:0,doy:6}}),l.defineLocale("ar-tn",{months:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),monthsShort:"\u062c\u0627\u0646\u0641\u064a_\u0641\u064a\u0641\u0631\u064a_\u0645\u0627\u0631\u0633_\u0623\u0641\u0631\u064a\u0644_\u0645\u0627\u064a_\u062c\u0648\u0627\u0646_\u062c\u0648\u064a\u0644\u064a\u0629_\u0623\u0648\u062a_\u0633\u0628\u062a\u0645\u0628\u0631_\u0623\u0643\u062a\u0648\u0628\u0631_\u0646\u0648\u0641\u0645\u0628\u0631_\u062f\u064a\u0633\u0645\u0628\u0631".split("_"),weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u0627 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0644\u0649 \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0641\u064a %s",past:"\u0645\u0646\u0630 %s",s:"\u062b\u0648\u0627\u0646",ss:"%d \u062b\u0627\u0646\u064a\u0629",m:"\u062f\u0642\u064a\u0642\u0629",mm:"%d \u062f\u0642\u0627\u0626\u0642",h:"\u0633\u0627\u0639\u0629",hh:"%d \u0633\u0627\u0639\u0627\u062a",d:"\u064a\u0648\u0645",dd:"%d \u0623\u064a\u0627\u0645",M:"\u0634\u0647\u0631",MM:"%d \u0623\u0634\u0647\u0631",y:"\u0633\u0646\u0629",yy:"%d \u0633\u0646\u0648\u0627\u062a"},week:{dow:1,doy:4}});var Zt={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Bt={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},qt=function(e){return 0===e?0:1===e?1:2===e?2:3<=e%100&&e%100<=10?3:11<=e%100?4:5},Qt={s:["\u0623\u0642\u0644 \u0645\u0646 \u062b\u0627\u0646\u064a\u0629","\u062b\u0627\u0646\u064a\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062b\u0627\u0646\u064a\u062a\u0627\u0646","\u062b\u0627\u0646\u064a\u062a\u064a\u0646"],"%d \u062b\u0648\u0627\u0646","%d \u062b\u0627\u0646\u064a\u0629","%d \u062b\u0627\u0646\u064a\u0629"],m:["\u0623\u0642\u0644 \u0645\u0646 \u062f\u0642\u064a\u0642\u0629","\u062f\u0642\u064a\u0642\u0629 \u0648\u0627\u062d\u062f\u0629",["\u062f\u0642\u064a\u0642\u062a\u0627\u0646","\u062f\u0642\u064a\u0642\u062a\u064a\u0646"],"%d \u062f\u0642\u0627\u0626\u0642","%d \u062f\u0642\u064a\u0642\u0629","%d \u062f\u0642\u064a\u0642\u0629"],h:["\u0623\u0642\u0644 \u0645\u0646 \u0633\u0627\u0639\u0629","\u0633\u0627\u0639\u0629 \u0648\u0627\u062d\u062f\u0629",["\u0633\u0627\u0639\u062a\u0627\u0646","\u0633\u0627\u0639\u062a\u064a\u0646"],"%d \u0633\u0627\u0639\u0627\u062a","%d \u0633\u0627\u0639\u0629","%d \u0633\u0627\u0639\u0629"],d:["\u0623\u0642\u0644 \u0645\u0646 \u064a\u0648\u0645","\u064a\u0648\u0645 \u0648\u0627\u062d\u062f",["\u064a\u0648\u0645\u0627\u0646","\u064a\u0648\u0645\u064a\u0646"],"%d \u0623\u064a\u0627\u0645","%d \u064a\u0648\u0645\u064b\u0627","%d \u064a\u0648\u0645"],M:["\u0623\u0642\u0644 \u0645\u0646 \u0634\u0647\u0631","\u0634\u0647\u0631 \u0648\u0627\u062d\u062f",["\u0634\u0647\u0631\u0627\u0646","\u0634\u0647\u0631\u064a\u0646"],"%d \u0623\u0634\u0647\u0631","%d \u0634\u0647\u0631\u0627","%d \u0634\u0647\u0631"],y:["\u0623\u0642\u0644 \u0645\u0646 \u0639\u0627\u0645","\u0639\u0627\u0645 \u0648\u0627\u062d\u062f",["\u0639\u0627\u0645\u0627\u0646","\u0639\u0627\u0645\u064a\u0646"],"%d \u0623\u0639\u0648\u0627\u0645","%d \u0639\u0627\u0645\u064b\u0627","%d \u0639\u0627\u0645"]},Xt=function(r){return function(e,a,t,s){var n=qt(e),d=Qt[r][qt(e)];return 2===n&&(d=d[a?0:1]),d.replace(/%d/i,e)}},es=["\u064a\u0646\u0627\u064a\u0631","\u0641\u0628\u0631\u0627\u064a\u0631","\u0645\u0627\u0631\u0633","\u0623\u0628\u0631\u064a\u0644","\u0645\u0627\u064a\u0648","\u064a\u0648\u0646\u064a\u0648","\u064a\u0648\u0644\u064a\u0648","\u0623\u063a\u0633\u0637\u0633","\u0633\u0628\u062a\u0645\u0628\u0631","\u0623\u0643\u062a\u0648\u0628\u0631","\u0646\u0648\u0641\u0645\u0628\u0631","\u062f\u064a\u0633\u0645\u0628\u0631"];l.defineLocale("ar",{months:es,monthsShort:es,weekdays:"\u0627\u0644\u0623\u062d\u062f_\u0627\u0644\u0625\u062b\u0646\u064a\u0646_\u0627\u0644\u062b\u0644\u0627\u062b\u0627\u0621_\u0627\u0644\u0623\u0631\u0628\u0639\u0627\u0621_\u0627\u0644\u062e\u0645\u064a\u0633_\u0627\u0644\u062c\u0645\u0639\u0629_\u0627\u0644\u0633\u0628\u062a".split("_"),weekdaysShort:"\u0623\u062d\u062f_\u0625\u062b\u0646\u064a\u0646_\u062b\u0644\u0627\u062b\u0627\u0621_\u0623\u0631\u0628\u0639\u0627\u0621_\u062e\u0645\u064a\u0633_\u062c\u0645\u0639\u0629_\u0633\u0628\u062a".split("_"),weekdaysMin:"\u062d_\u0646_\u062b_\u0631_\u062e_\u062c_\u0633".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/\u200fM/\u200fYYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0635|\u0645/,isPM:function(e){return"\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635":"\u0645"},calendar:{sameDay:"[\u0627\u0644\u064a\u0648\u0645 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextDay:"[\u063a\u062f\u064b\u0627 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",nextWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastDay:"[\u0623\u0645\u0633 \u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",lastWeek:"dddd [\u0639\u0646\u062f \u0627\u0644\u0633\u0627\u0639\u0629] LT",sameElse:"L"},relativeTime:{future:"\u0628\u0639\u062f %s",past:"\u0645\u0646\u0630 %s",s:Xt("s"),ss:Xt("s"),m:Xt("m"),mm:Xt("m"),h:Xt("h"),hh:Xt("h"),d:Xt("d"),dd:Xt("d"),M:Xt("M"),MM:Xt("M"),y:Xt("y"),yy:Xt("y")},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Bt[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Zt[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var as={1:"-inci",5:"-inci",8:"-inci",70:"-inci",80:"-inci",2:"-nci",7:"-nci",20:"-nci",50:"-nci",3:"-\xfcnc\xfc",4:"-\xfcnc\xfc",100:"-\xfcnc\xfc",6:"-nc\u0131",9:"-uncu",10:"-uncu",30:"-uncu",60:"-\u0131nc\u0131",90:"-\u0131nc\u0131"};function ts(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443":"h"===t?a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0456\u043b\u0456\u043d\u0430_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d":"\u0445\u0432\u0456\u043b\u0456\u043d\u0443_\u0445\u0432\u0456\u043b\u0456\u043d\u044b_\u0445\u0432\u0456\u043b\u0456\u043d",hh:a?"\u0433\u0430\u0434\u0437\u0456\u043d\u0430_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d":"\u0433\u0430\u0434\u0437\u0456\u043d\u0443_\u0433\u0430\u0434\u0437\u0456\u043d\u044b_\u0433\u0430\u0434\u0437\u0456\u043d",dd:"\u0434\u0437\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u0437\u0451\u043d",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u044b_\u043c\u0435\u0441\u044f\u0446\u0430\u045e",yy:"\u0433\u043e\u0434_\u0433\u0430\u0434\u044b_\u0433\u0430\u0434\u043e\u045e"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("az",{months:"yanvar_fevral_mart_aprel_may_iyun_iyul_avqust_sentyabr_oktyabr_noyabr_dekabr".split("_"),monthsShort:"yan_fev_mar_apr_may_iyn_iyl_avq_sen_okt_noy_dek".split("_"),weekdays:"Bazar_Bazar ert\u0259si_\xc7\u0259r\u015f\u0259nb\u0259 ax\u015fam\u0131_\xc7\u0259r\u015f\u0259nb\u0259_C\xfcm\u0259 ax\u015fam\u0131_C\xfcm\u0259_\u015e\u0259nb\u0259".split("_"),weekdaysShort:"Baz_BzE_\xc7Ax_\xc7\u0259r_CAx_C\xfcm_\u015e\u0259n".split("_"),weekdaysMin:"Bz_BE_\xc7A_\xc7\u0259_CA_C\xfc_\u015e\u0259".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[sabah saat] LT",nextWeek:"[g\u0259l\u0259n h\u0259ft\u0259] dddd [saat] LT",lastDay:"[d\xfcn\u0259n] LT",lastWeek:"[ke\xe7\u0259n h\u0259ft\u0259] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \u0259vv\u0259l",s:"birne\xe7\u0259 saniy\u0259",ss:"%d saniy\u0259",m:"bir d\u0259qiq\u0259",mm:"%d d\u0259qiq\u0259",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir il",yy:"%d il"},meridiemParse:/gec\u0259|s\u0259h\u0259r|g\xfcnd\xfcz|ax\u015fam/,isPM:function(e){return/^(g\xfcnd\xfcz|ax\u015fam)$/.test(e)},meridiem:function(e,a,t){return e<4?"gec\u0259":e<12?"s\u0259h\u0259r":e<17?"g\xfcnd\xfcz":"ax\u015fam"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0131nc\u0131|inci|nci|\xfcnc\xfc|nc\u0131|uncu)/,ordinal:function(e){if(0===e)return e+"-\u0131nc\u0131";var a=e%10;return e+(as[a]||as[e%100-a]||as[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("be",{months:{format:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044f_\u043b\u044e\u0442\u0430\u0433\u0430_\u0441\u0430\u043a\u0430\u0432\u0456\u043a\u0430_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a\u0430_\u0442\u0440\u0430\u045e\u043d\u044f_\u0447\u044d\u0440\u0432\u0435\u043d\u044f_\u043b\u0456\u043f\u0435\u043d\u044f_\u0436\u043d\u0456\u045e\u043d\u044f_\u0432\u0435\u0440\u0430\u0441\u043d\u044f_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a\u0430_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434\u0430_\u0441\u043d\u0435\u0436\u043d\u044f".split("_"),standalone:"\u0441\u0442\u0443\u0434\u0437\u0435\u043d\u044c_\u043b\u044e\u0442\u044b_\u0441\u0430\u043a\u0430\u0432\u0456\u043a_\u043a\u0440\u0430\u0441\u0430\u0432\u0456\u043a_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u044d\u0440\u0432\u0435\u043d\u044c_\u043b\u0456\u043f\u0435\u043d\u044c_\u0436\u043d\u0456\u0432\u0435\u043d\u044c_\u0432\u0435\u0440\u0430\u0441\u0435\u043d\u044c_\u043a\u0430\u0441\u0442\u0440\u044b\u0447\u043d\u0456\u043a_\u043b\u0456\u0441\u0442\u0430\u043f\u0430\u0434_\u0441\u043d\u0435\u0436\u0430\u043d\u044c".split("_")},monthsShort:"\u0441\u0442\u0443\u0434_\u043b\u044e\u0442_\u0441\u0430\u043a_\u043a\u0440\u0430\u0441_\u0442\u0440\u0430\u0432_\u0447\u044d\u0440\u0432_\u043b\u0456\u043f_\u0436\u043d\u0456\u0432_\u0432\u0435\u0440_\u043a\u0430\u0441\u0442_\u043b\u0456\u0441\u0442_\u0441\u043d\u0435\u0436".split("_"),weekdays:{format:"\u043d\u044f\u0434\u0437\u0435\u043b\u044e_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0443_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0443_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),standalone:"\u043d\u044f\u0434\u0437\u0435\u043b\u044f_\u043f\u0430\u043d\u044f\u0434\u0437\u0435\u043b\u0430\u043a_\u0430\u045e\u0442\u043e\u0440\u0430\u043a_\u0441\u0435\u0440\u0430\u0434\u0430_\u0447\u0430\u0446\u0432\u0435\u0440_\u043f\u044f\u0442\u043d\u0456\u0446\u0430_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),isFormat:/\[ ?[\u0423\u0443\u045e] ?(?:\u043c\u0456\u043d\u0443\u043b\u0443\u044e|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u0443\u044e)? ?\] ?dddd/},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0430\u0442_\u0441\u0440_\u0447\u0446_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., HH:mm",LLLL:"dddd, D MMMM YYYY \u0433., HH:mm"},calendar:{sameDay:"[\u0421\u0451\u043d\u043d\u044f \u045e] LT",nextDay:"[\u0417\u0430\u045e\u0442\u0440\u0430 \u045e] LT",lastDay:"[\u0423\u0447\u043e\u0440\u0430 \u045e] LT",nextWeek:function(){return"[\u0423] dddd [\u045e] LT"},lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u0443\u044e] dddd [\u045e] LT";case 1:case 2:case 4:return"[\u0423 \u043c\u0456\u043d\u0443\u043b\u044b] dddd [\u045e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u0440\u0430\u0437 %s",past:"%s \u0442\u0430\u043c\u0443",s:"\u043d\u0435\u043a\u0430\u043b\u044c\u043a\u0456 \u0441\u0435\u043a\u0443\u043d\u0434",m:ts,mm:ts,h:ts,hh:ts,d:"\u0434\u0437\u0435\u043d\u044c",dd:ts,M:"\u043c\u0435\u0441\u044f\u0446",MM:ts,y:"\u0433\u043e\u0434",yy:ts},meridiemParse:/\u043d\u043e\u0447\u044b|\u0440\u0430\u043d\u0456\u0446\u044b|\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0430\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u044b":e<12?"\u0440\u0430\u043d\u0456\u0446\u044b":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0430\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0456|\u044b|\u0433\u0430)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e%10!=2&&e%10!=3||e%100==12||e%100==13?e+"-\u044b":e+"-\u0456";case"D":return e+"-\u0433\u0430";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("bg",{months:"\u044f\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u044f\u043d\u0440_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u044e\u043d\u0438_\u044e\u043b\u0438_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u044f\u0434\u0430_\u0447\u0435\u0442\u0432\u044a\u0440\u0442\u044a\u043a_\u043f\u0435\u0442\u044a\u043a_\u0441\u044a\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u044f_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u044a\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u043d\u0435\u0441 \u0432] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432] LT",nextWeek:"dddd [\u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0430\u0442\u0430] dddd [\u0432] LT";case 1:case 2:case 4:case 5:return"[\u0412 \u0438\u0437\u043c\u0438\u043d\u0430\u043b\u0438\u044f] dddd [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0441\u043b\u0435\u0434 %s",past:"\u043f\u0440\u0435\u0434\u0438 %s",s:"\u043d\u044f\u043a\u043e\u043b\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u043d\u0438",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0430",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("bm",{months:"Zanwuyekalo_Fewuruyekalo_Marisikalo_Awirilikalo_M\u025bkalo_Zuw\u025bnkalo_Zuluyekalo_Utikalo_S\u025btanburukalo_\u0254kut\u0254burukalo_Nowanburukalo_Desanburukalo".split("_"),monthsShort:"Zan_Few_Mar_Awi_M\u025b_Zuw_Zul_Uti_S\u025bt_\u0254ku_Now_Des".split("_"),weekdays:"Kari_Nt\u025bn\u025bn_Tarata_Araba_Alamisa_Juma_Sibiri".split("_"),weekdaysShort:"Kar_Nt\u025b_Tar_Ara_Ala_Jum_Sib".split("_"),weekdaysMin:"Ka_Nt_Ta_Ar_Al_Ju_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"MMMM [tile] D [san] YYYY",LLL:"MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm",LLLL:"dddd MMMM [tile] D [san] YYYY [l\u025br\u025b] HH:mm"},calendar:{sameDay:"[Bi l\u025br\u025b] LT",nextDay:"[Sini l\u025br\u025b] LT",nextWeek:"dddd [don l\u025br\u025b] LT",lastDay:"[Kunu l\u025br\u025b] LT",lastWeek:"dddd [t\u025bm\u025bnen l\u025br\u025b] LT",sameElse:"L"},relativeTime:{future:"%s k\u0254n\u0254",past:"a b\u025b %s b\u0254",s:"sanga dama dama",ss:"sekondi %d",m:"miniti kelen",mm:"miniti %d",h:"l\u025br\u025b kelen",hh:"l\u025br\u025b %d",d:"tile kelen",dd:"tile %d",M:"kalo kelen",MM:"kalo %d",y:"san kelen",yy:"san %d"},week:{dow:1,doy:4}});var ss={1:"\u09e7",2:"\u09e8",3:"\u09e9",4:"\u09ea",5:"\u09eb",6:"\u09ec",7:"\u09ed",8:"\u09ee",9:"\u09ef",0:"\u09e6"},ns={"\u09e7":"1","\u09e8":"2","\u09e9":"3","\u09ea":"4","\u09eb":"5","\u09ec":"6","\u09ed":"7","\u09ee":"8","\u09ef":"9","\u09e6":"0"};l.defineLocale("bn",{months:"\u099c\u09be\u09a8\u09c1\u09df\u09be\u09b0\u09c0_\u09ab\u09c7\u09ac\u09cd\u09b0\u09c1\u09df\u09be\u09b0\u09bf_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0\u09bf\u09b2_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2\u09be\u0987_\u0986\u0997\u09b8\u09cd\u099f_\u09b8\u09c7\u09aa\u09cd\u099f\u09c7\u09ae\u09cd\u09ac\u09b0_\u0985\u0995\u09cd\u099f\u09cb\u09ac\u09b0_\u09a8\u09ad\u09c7\u09ae\u09cd\u09ac\u09b0_\u09a1\u09bf\u09b8\u09c7\u09ae\u09cd\u09ac\u09b0".split("_"),monthsShort:"\u099c\u09be\u09a8\u09c1_\u09ab\u09c7\u09ac_\u09ae\u09be\u09b0\u09cd\u099a_\u098f\u09aa\u09cd\u09b0_\u09ae\u09c7_\u099c\u09c1\u09a8_\u099c\u09c1\u09b2_\u0986\u0997_\u09b8\u09c7\u09aa\u09cd\u099f_\u0985\u0995\u09cd\u099f\u09cb_\u09a8\u09ad\u09c7_\u09a1\u09bf\u09b8\u09c7".split("_"),weekdays:"\u09b0\u09ac\u09bf\u09ac\u09be\u09b0_\u09b8\u09cb\u09ae\u09ac\u09be\u09b0_\u09ae\u0999\u09cd\u0997\u09b2\u09ac\u09be\u09b0_\u09ac\u09c1\u09a7\u09ac\u09be\u09b0_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf\u09ac\u09be\u09b0_\u09b6\u09c1\u0995\u09cd\u09b0\u09ac\u09be\u09b0_\u09b6\u09a8\u09bf\u09ac\u09be\u09b0".split("_"),weekdaysShort:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997\u09b2_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u09b8\u09cd\u09aa\u09a4\u09bf_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),weekdaysMin:"\u09b0\u09ac\u09bf_\u09b8\u09cb\u09ae_\u09ae\u0999\u09cd\u0997_\u09ac\u09c1\u09a7_\u09ac\u09c3\u09b9\u0983_\u09b6\u09c1\u0995\u09cd\u09b0_\u09b6\u09a8\u09bf".split("_"),longDateFormat:{LT:"A h:mm \u09b8\u09ae\u09df",LTS:"A h:mm:ss \u09b8\u09ae\u09df",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u09b8\u09ae\u09df",LLLL:"dddd, D MMMM YYYY, A h:mm \u09b8\u09ae\u09df"},calendar:{sameDay:"[\u0986\u099c] LT",nextDay:"[\u0986\u0997\u09be\u09ae\u09c0\u0995\u09be\u09b2] LT",nextWeek:"dddd, LT",lastDay:"[\u0997\u09a4\u0995\u09be\u09b2] LT",lastWeek:"[\u0997\u09a4] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u09aa\u09b0\u09c7",past:"%s \u0986\u0997\u09c7",s:"\u0995\u09df\u09c7\u0995 \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",ss:"%d \u09b8\u09c7\u0995\u09c7\u09a8\u09cd\u09a1",m:"\u098f\u0995 \u09ae\u09bf\u09a8\u09bf\u099f",mm:"%d \u09ae\u09bf\u09a8\u09bf\u099f",h:"\u098f\u0995 \u0998\u09a8\u09cd\u099f\u09be",hh:"%d \u0998\u09a8\u09cd\u099f\u09be",d:"\u098f\u0995 \u09a6\u09bf\u09a8",dd:"%d \u09a6\u09bf\u09a8",M:"\u098f\u0995 \u09ae\u09be\u09b8",MM:"%d \u09ae\u09be\u09b8",y:"\u098f\u0995 \u09ac\u099b\u09b0",yy:"%d \u09ac\u099b\u09b0"},preparse:function(e){return e.replace(/[\u09e7\u09e8\u09e9\u09ea\u09eb\u09ec\u09ed\u09ee\u09ef\u09e6]/g,function(e){return ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ss[e]})},meridiemParse:/\u09b0\u09be\u09a4|\u09b8\u0995\u09be\u09b2|\u09a6\u09c1\u09aa\u09c1\u09b0|\u09ac\u09bf\u0995\u09be\u09b2|\u09b0\u09be\u09a4/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u09b0\u09be\u09a4"===a&&4<=e||"\u09a6\u09c1\u09aa\u09c1\u09b0"===a&&e<5||"\u09ac\u09bf\u0995\u09be\u09b2"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u09b0\u09be\u09a4":e<10?"\u09b8\u0995\u09be\u09b2":e<17?"\u09a6\u09c1\u09aa\u09c1\u09b0":e<20?"\u09ac\u09bf\u0995\u09be\u09b2":"\u09b0\u09be\u09a4"},week:{dow:0,doy:6}});var ds={1:"\u0f21",2:"\u0f22",3:"\u0f23",4:"\u0f24",5:"\u0f25",6:"\u0f26",7:"\u0f27",8:"\u0f28",9:"\u0f29",0:"\u0f20"},rs={"\u0f21":"1","\u0f22":"2","\u0f23":"3","\u0f24":"4","\u0f25":"5","\u0f26":"6","\u0f27":"7","\u0f28":"8","\u0f29":"9","\u0f20":"0"};function _s(e,a,t){var s,n,d;return e+" "+(s={mm:"munutenn",MM:"miz",dd:"devezh"}[t],2!==e?s:void 0!==(d={m:"v",b:"v",d:"z"})[(n=s).charAt(0)]?d[n.charAt(0)]+n.substring(1):n)}function is(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("bo",{months:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),monthsShort:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f44\u0f0b\u0f54\u0f7c_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f66\u0f74\u0f58\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f5e\u0f72\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f63\u0f94\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0fb2\u0f74\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f62\u0f92\u0fb1\u0f51\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f51\u0f42\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f45\u0f72\u0f42\u0f0b\u0f54_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f56\u0f45\u0f74\u0f0b\u0f42\u0f49\u0f72\u0f66\u0f0b\u0f54".split("_"),weekdays:"\u0f42\u0f5f\u0f60\u0f0b\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f42\u0f5f\u0f60\u0f0b\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f42\u0f5f\u0f60\u0f0b\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysShort:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),weekdaysMin:"\u0f49\u0f72\u0f0b\u0f58\u0f0b_\u0f5f\u0fb3\u0f0b\u0f56\u0f0b_\u0f58\u0f72\u0f42\u0f0b\u0f51\u0f58\u0f62\u0f0b_\u0f63\u0fb7\u0f42\u0f0b\u0f54\u0f0b_\u0f55\u0f74\u0f62\u0f0b\u0f56\u0f74_\u0f54\u0f0b\u0f66\u0f44\u0f66\u0f0b_\u0f66\u0fa4\u0f7a\u0f53\u0f0b\u0f54\u0f0b".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0f51\u0f72\u0f0b\u0f62\u0f72\u0f44] LT",nextDay:"[\u0f66\u0f44\u0f0b\u0f49\u0f72\u0f53] LT",nextWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f62\u0f97\u0f7a\u0f66\u0f0b\u0f58], LT",lastDay:"[\u0f41\u0f0b\u0f66\u0f44] LT",lastWeek:"[\u0f56\u0f51\u0f74\u0f53\u0f0b\u0f55\u0fb2\u0f42\u0f0b\u0f58\u0f50\u0f60\u0f0b\u0f58] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0f63\u0f0b",past:"%s \u0f66\u0f94\u0f53\u0f0b\u0f63",s:"\u0f63\u0f58\u0f0b\u0f66\u0f44",ss:"%d \u0f66\u0f90\u0f62\u0f0b\u0f46\u0f0d",m:"\u0f66\u0f90\u0f62\u0f0b\u0f58\u0f0b\u0f42\u0f45\u0f72\u0f42",mm:"%d \u0f66\u0f90\u0f62\u0f0b\u0f58",h:"\u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51\u0f0b\u0f42\u0f45\u0f72\u0f42",hh:"%d \u0f46\u0f74\u0f0b\u0f5a\u0f7c\u0f51",d:"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f45\u0f72\u0f42",dd:"%d \u0f49\u0f72\u0f53\u0f0b",M:"\u0f5f\u0fb3\u0f0b\u0f56\u0f0b\u0f42\u0f45\u0f72\u0f42",MM:"%d \u0f5f\u0fb3\u0f0b\u0f56",y:"\u0f63\u0f7c\u0f0b\u0f42\u0f45\u0f72\u0f42",yy:"%d \u0f63\u0f7c"},preparse:function(e){return e.replace(/[\u0f21\u0f22\u0f23\u0f24\u0f25\u0f26\u0f27\u0f28\u0f29\u0f20]/g,function(e){return rs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return ds[e]})},meridiemParse:/\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c|\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66|\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44|\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42|\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"===a&&4<=e||"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44"===a&&e<5||"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c":e<10?"\u0f5e\u0f7c\u0f42\u0f66\u0f0b\u0f40\u0f66":e<17?"\u0f49\u0f72\u0f53\u0f0b\u0f42\u0f74\u0f44":e<20?"\u0f51\u0f42\u0f7c\u0f44\u0f0b\u0f51\u0f42":"\u0f58\u0f5a\u0f53\u0f0b\u0f58\u0f7c"},week:{dow:0,doy:6}}),l.defineLocale("br",{months:"Genver_C'hwevrer_Meurzh_Ebrel_Mae_Mezheven_Gouere_Eost_Gwengolo_Here_Du_Kerzu".split("_"),monthsShort:"Gen_C'hwe_Meu_Ebr_Mae_Eve_Gou_Eos_Gwe_Her_Du_Ker".split("_"),weekdays:"Sul_Lun_Meurzh_Merc'her_Yaou_Gwener_Sadorn".split("_"),weekdaysShort:"Sul_Lun_Meu_Mer_Yao_Gwe_Sad".split("_"),weekdaysMin:"Su_Lu_Me_Mer_Ya_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h[e]mm A",LTS:"h[e]mm:ss A",L:"DD/MM/YYYY",LL:"D [a viz] MMMM YYYY",LLL:"D [a viz] MMMM YYYY h[e]mm A",LLLL:"dddd, D [a viz] MMMM YYYY h[e]mm A"},calendar:{sameDay:"[Hiziv da] LT",nextDay:"[Warc'hoazh da] LT",nextWeek:"dddd [da] LT",lastDay:"[Dec'h da] LT",lastWeek:"dddd [paset da] LT",sameElse:"L"},relativeTime:{future:"a-benn %s",past:"%s 'zo",s:"un nebeud segondenno\xf9",ss:"%d eilenn",m:"ur vunutenn",mm:_s,h:"un eur",hh:"%d eur",d:"un devezh",dd:_s,M:"ur miz",MM:_s,y:"ur bloaz",yy:function(e){switch(function e(a){return 9<a?e(a%10):a}(e)){case 1:case 3:case 4:case 5:case 9:return e+" bloaz";default:return e+" vloaz"}}},dayOfMonthOrdinalParse:/\d{1,2}(a\xf1|vet)/,ordinal:function(e){return e+(1===e?"a\xf1":"vet")},week:{dow:1,doy:4}}),l.defineLocale("bs",{months:"januar_februar_mart_april_maj_juni_juli_august_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._aug._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:is,m:is,mm:is,h:is,hh:is,d:"dan",dd:is,M:"mjesec",MM:is,y:"godinu",yy:is},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ca",{months:{standalone:"gener_febrer_mar\xe7_abril_maig_juny_juliol_agost_setembre_octubre_novembre_desembre".split("_"),format:"de gener_de febrer_de mar\xe7_d'abril_de maig_de juny_de juliol_d'agost_de setembre_d'octubre_de novembre_de desembre".split("_"),isFormat:/D[oD]?(\s)+MMMM/},monthsShort:"gen._febr._mar\xe7_abr._maig_juny_jul._ag._set._oct._nov._des.".split("_"),monthsParseExact:!0,weekdays:"diumenge_dilluns_dimarts_dimecres_dijous_divendres_dissabte".split("_"),weekdaysShort:"dg._dl._dt._dc._dj._dv._ds.".split("_"),weekdaysMin:"dg_dl_dt_dc_dj_dv_ds".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [de] YYYY",ll:"D MMM YYYY",LLL:"D MMMM [de] YYYY [a les] H:mm",lll:"D MMM YYYY, H:mm",LLLL:"dddd D MMMM [de] YYYY [a les] H:mm",llll:"ddd D MMM YYYY, H:mm"},calendar:{sameDay:function(){return"[avui a "+(1!==this.hours()?"les":"la")+"] LT"},nextDay:function(){return"[dem\xe0 a "+(1!==this.hours()?"les":"la")+"] LT"},nextWeek:function(){return"dddd [a "+(1!==this.hours()?"les":"la")+"] LT"},lastDay:function(){return"[ahir a "+(1!==this.hours()?"les":"la")+"] LT"},lastWeek:function(){return"[el] dddd [passat a "+(1!==this.hours()?"les":"la")+"] LT"},sameElse:"L"},relativeTime:{future:"d'aqu\xed %s",past:"fa %s",s:"uns segons",ss:"%d segons",m:"un minut",mm:"%d minuts",h:"una hora",hh:"%d hores",d:"un dia",dd:"%d dies",M:"un mes",MM:"%d mesos",y:"un any",yy:"%d anys"},dayOfMonthOrdinalParse:/\d{1,2}(r|n|t|\xe8|a)/,ordinal:function(e,a){var t=1===e?"r":2===e?"n":3===e?"r":4===e?"t":"\xe8";return"w"!==a&&"W"!==a||(t="a"),e+t},week:{dow:1,doy:4}});var os="leden_\xfanor_b\u0159ezen_duben_kv\u011bten_\u010derven_\u010dervenec_srpen_z\xe1\u0159\xed_\u0159\xedjen_listopad_prosinec".split("_"),ms="led_\xfano_b\u0159e_dub_kv\u011b_\u010dvn_\u010dvc_srp_z\xe1\u0159_\u0159\xedj_lis_pro".split("_");function us(e){return 1<e&&e<5&&1!=~~(e/10)}function ls(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sekund":"p\xe1r sekundami";case"ss":return a||s?n+(us(e)?"sekundy":"sekund"):n+"sekundami";break;case"m":return a?"minuta":s?"minutu":"minutou";case"mm":return a||s?n+(us(e)?"minuty":"minut"):n+"minutami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(us(e)?"hodiny":"hodin"):n+"hodinami";break;case"d":return a||s?"den":"dnem";case"dd":return a||s?n+(us(e)?"dny":"dn\xed"):n+"dny";break;case"M":return a||s?"m\u011bs\xedc":"m\u011bs\xedcem";case"MM":return a||s?n+(us(e)?"m\u011bs\xedce":"m\u011bs\xedc\u016f"):n+"m\u011bs\xedci";break;case"y":return a||s?"rok":"rokem";case"yy":return a||s?n+(us(e)?"roky":"let"):n+"lety";break}}function Ms(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function hs(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}function Ls(e,a,t,s){var n={m:["eine Minute","einer Minute"],h:["eine Stunde","einer Stunde"],d:["ein Tag","einem Tag"],dd:[e+" Tage",e+" Tagen"],M:["ein Monat","einem Monat"],MM:[e+" Monate",e+" Monaten"],y:["ein Jahr","einem Jahr"],yy:[e+" Jahre",e+" Jahren"]};return a?n[t][0]:n[t][1]}l.defineLocale("cs",{months:os,monthsShort:ms,monthsParse:function(e,a){var t,s=[];for(t=0;t<12;t++)s[t]=new RegExp("^"+e[t]+"$|^"+a[t]+"$","i");return s}(os,ms),shortMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(ms),longMonthsParse:function(e){var a,t=[];for(a=0;a<12;a++)t[a]=new RegExp("^"+e[a]+"$","i");return t}(os),weekdays:"ned\u011ble_pond\u011bl\xed_\xfater\xfd_st\u0159eda_\u010dtvrtek_p\xe1tek_sobota".split("_"),weekdaysShort:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),weekdaysMin:"ne_po_\xfat_st_\u010dt_p\xe1_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm",l:"D. M. YYYY"},calendar:{sameDay:"[dnes v] LT",nextDay:"[z\xedtra v] LT",nextWeek:function(){switch(this.day()){case 0:return"[v ned\u011bli v] LT";case 1:case 2:return"[v] dddd [v] LT";case 3:return"[ve st\u0159edu v] LT";case 4:return"[ve \u010dtvrtek v] LT";case 5:return"[v p\xe1tek v] LT";case 6:return"[v sobotu v] LT"}},lastDay:"[v\u010dera v] LT",lastWeek:function(){switch(this.day()){case 0:return"[minulou ned\u011bli v] LT";case 1:case 2:return"[minul\xe9] dddd [v] LT";case 3:return"[minulou st\u0159edu v] LT";case 4:case 5:return"[minul\xfd] dddd [v] LT";case 6:return"[minulou sobotu v] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"p\u0159ed %s",s:ls,ss:ls,m:ls,mm:ls,h:ls,hh:ls,d:ls,dd:ls,M:ls,MM:ls,y:ls,yy:ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("cv",{months:"\u043a\u04d1\u0440\u043b\u0430\u0447_\u043d\u0430\u0440\u04d1\u0441_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440\u0442\u043c\u0435_\u0443\u0442\u04d1_\u04ab\u0443\u0440\u043b\u0430_\u0430\u0432\u04d1\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448\u0442\u0430\u0432".split("_"),monthsShort:"\u043a\u04d1\u0440_\u043d\u0430\u0440_\u043f\u0443\u0448_\u0430\u043a\u0430_\u043c\u0430\u0439_\u04ab\u04d7\u0440_\u0443\u0442\u04d1_\u04ab\u0443\u0440_\u0430\u0432\u043d_\u044e\u043f\u0430_\u0447\u04f3\u043a_\u0440\u0430\u0448".split("_"),weekdays:"\u0432\u044b\u0440\u0441\u0430\u0440\u043d\u0438\u043a\u0443\u043d_\u0442\u0443\u043d\u0442\u0438\u043a\u0443\u043d_\u044b\u0442\u043b\u0430\u0440\u0438\u043a\u0443\u043d_\u044e\u043d\u043a\u0443\u043d_\u043a\u04d7\u04ab\u043d\u0435\u0440\u043d\u0438\u043a\u0443\u043d_\u044d\u0440\u043d\u0435\u043a\u0443\u043d_\u0448\u04d1\u043c\u0430\u0442\u043a\u0443\u043d".split("_"),weekdaysShort:"\u0432\u044b\u0440_\u0442\u0443\u043d_\u044b\u0442\u043b_\u044e\u043d_\u043a\u04d7\u04ab_\u044d\u0440\u043d_\u0448\u04d1\u043c".split("_"),weekdaysMin:"\u0432\u0440_\u0442\u043d_\u044b\u0442_\u044e\u043d_\u043a\u04ab_\u044d\u0440_\u0448\u043c".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7]",LLL:"YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm",LLLL:"dddd, YYYY [\u04ab\u0443\u043b\u0445\u0438] MMMM [\u0443\u0439\u04d1\u0445\u04d7\u043d] D[-\u043c\u04d7\u0448\u04d7], HH:mm"},calendar:{sameDay:"[\u041f\u0430\u044f\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextDay:"[\u042b\u0440\u0430\u043d] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastDay:"[\u04d6\u043d\u0435\u0440] LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",nextWeek:"[\u04aa\u0438\u0442\u0435\u0441] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",lastWeek:"[\u0418\u0440\u0442\u043d\u04d7] dddd LT [\u0441\u0435\u0445\u0435\u0442\u0440\u0435]",sameElse:"L"},relativeTime:{future:function(e){return e+(/\u0441\u0435\u0445\u0435\u0442$/i.exec(e)?"\u0440\u0435\u043d":/\u04ab\u0443\u043b$/i.exec(e)?"\u0442\u0430\u043d":"\u0440\u0430\u043d")},past:"%s \u043a\u0430\u044f\u043b\u043b\u0430",s:"\u043f\u04d7\u0440-\u0438\u043a \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",ss:"%d \u04ab\u0435\u043a\u043a\u0443\u043d\u0442",m:"\u043f\u04d7\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u043f\u04d7\u0440 \u0441\u0435\u0445\u0435\u0442",hh:"%d \u0441\u0435\u0445\u0435\u0442",d:"\u043f\u04d7\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u043f\u04d7\u0440 \u0443\u0439\u04d1\u0445",MM:"%d \u0443\u0439\u04d1\u0445",y:"\u043f\u04d7\u0440 \u04ab\u0443\u043b",yy:"%d \u04ab\u0443\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-\u043c\u04d7\u0448/,ordinal:"%d-\u043c\u04d7\u0448",week:{dow:1,doy:7}}),l.defineLocale("cy",{months:"Ionawr_Chwefror_Mawrth_Ebrill_Mai_Mehefin_Gorffennaf_Awst_Medi_Hydref_Tachwedd_Rhagfyr".split("_"),monthsShort:"Ion_Chwe_Maw_Ebr_Mai_Meh_Gor_Aws_Med_Hyd_Tach_Rhag".split("_"),weekdays:"Dydd Sul_Dydd Llun_Dydd Mawrth_Dydd Mercher_Dydd Iau_Dydd Gwener_Dydd Sadwrn".split("_"),weekdaysShort:"Sul_Llun_Maw_Mer_Iau_Gwe_Sad".split("_"),weekdaysMin:"Su_Ll_Ma_Me_Ia_Gw_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Heddiw am] LT",nextDay:"[Yfory am] LT",nextWeek:"dddd [am] LT",lastDay:"[Ddoe am] LT",lastWeek:"dddd [diwethaf am] LT",sameElse:"L"},relativeTime:{future:"mewn %s",past:"%s yn \xf4l",s:"ychydig eiliadau",ss:"%d eiliad",m:"munud",mm:"%d munud",h:"awr",hh:"%d awr",d:"diwrnod",dd:"%d diwrnod",M:"mis",MM:"%d mis",y:"blwyddyn",yy:"%d flynedd"},dayOfMonthOrdinalParse:/\d{1,2}(fed|ain|af|il|ydd|ed|eg)/,ordinal:function(e){var a="";return 20<e?a=40===e||50===e||60===e||80===e||100===e?"fed":"ain":0<e&&(a=["","af","il","ydd","ydd","ed","ed","ed","fed","fed","fed","eg","fed","eg","eg","fed","eg","eg","fed","eg","fed"][e]),e+a},week:{dow:1,doy:4}}),l.defineLocale("da",{months:"januar_februar_marts_april_maj_juni_juli_august_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8n_man_tir_ons_tor_fre_l\xf8r".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd [d.] D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"p\xe5 dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[i] dddd[s kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"f\xe5 sekunder",ss:"%d sekunder",m:"et minut",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dage",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"et \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-at",{months:"J\xe4nner_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"J\xe4n._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ms,mm:"%d Minuten",h:Ms,hh:"%d Stunden",d:Ms,dd:Ms,M:Ms,MM:Ms,y:Ms,yy:Ms},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de-ch",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:hs,mm:"%d Minuten",h:hs,hh:"%d Stunden",d:hs,dd:hs,M:hs,MM:hs,y:hs,yy:hs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("de",{months:"Januar_Februar_M\xe4rz_April_Mai_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Feb._M\xe4rz_Apr._Mai_Juni_Juli_Aug._Sep._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonntag_Montag_Dienstag_Mittwoch_Donnerstag_Freitag_Samstag".split("_"),weekdaysShort:"So._Mo._Di._Mi._Do._Fr._Sa.".split("_"),weekdaysMin:"So_Mo_Di_Mi_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY HH:mm",LLLL:"dddd, D. MMMM YYYY HH:mm"},calendar:{sameDay:"[heute um] LT [Uhr]",sameElse:"L",nextDay:"[morgen um] LT [Uhr]",nextWeek:"dddd [um] LT [Uhr]",lastDay:"[gestern um] LT [Uhr]",lastWeek:"[letzten] dddd [um] LT [Uhr]"},relativeTime:{future:"in %s",past:"vor %s",s:"ein paar Sekunden",ss:"%d Sekunden",m:Ls,mm:"%d Minuten",h:Ls,hh:"%d Stunden",d:Ls,dd:Ls,M:Ls,MM:Ls,y:Ls,yy:Ls},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var cs=["\u0796\u07ac\u0782\u07aa\u0787\u07a6\u0783\u07a9","\u078a\u07ac\u0784\u07b0\u0783\u07aa\u0787\u07a6\u0783\u07a9","\u0789\u07a7\u0783\u07a8\u0797\u07aa","\u0787\u07ad\u0795\u07b0\u0783\u07a9\u078d\u07aa","\u0789\u07ad","\u0796\u07ab\u0782\u07b0","\u0796\u07aa\u078d\u07a6\u0787\u07a8","\u0787\u07af\u078e\u07a6\u0790\u07b0\u0793\u07aa","\u0790\u07ac\u0795\u07b0\u0793\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0787\u07ae\u0786\u07b0\u0793\u07af\u0784\u07a6\u0783\u07aa","\u0782\u07ae\u0788\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa","\u0791\u07a8\u0790\u07ac\u0789\u07b0\u0784\u07a6\u0783\u07aa"],Ys=["\u0787\u07a7\u078b\u07a8\u0787\u07b0\u078c\u07a6","\u0780\u07af\u0789\u07a6","\u0787\u07a6\u0782\u07b0\u078e\u07a7\u0783\u07a6","\u0784\u07aa\u078b\u07a6","\u0784\u07aa\u0783\u07a7\u0790\u07b0\u078a\u07a6\u078c\u07a8","\u0780\u07aa\u0786\u07aa\u0783\u07aa","\u0780\u07ae\u0782\u07a8\u0780\u07a8\u0783\u07aa"];l.defineLocale("dv",{months:cs,monthsShort:cs,weekdays:Ys,weekdaysShort:Ys,weekdaysMin:"\u0787\u07a7\u078b\u07a8_\u0780\u07af\u0789\u07a6_\u0787\u07a6\u0782\u07b0_\u0784\u07aa\u078b\u07a6_\u0784\u07aa\u0783\u07a7_\u0780\u07aa\u0786\u07aa_\u0780\u07ae\u0782\u07a8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"D/M/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0789\u0786|\u0789\u078a/,isPM:function(e){return"\u0789\u078a"===e},meridiem:function(e,a,t){return e<12?"\u0789\u0786":"\u0789\u078a"},calendar:{sameDay:"[\u0789\u07a8\u0787\u07a6\u078b\u07aa] LT",nextDay:"[\u0789\u07a7\u078b\u07a6\u0789\u07a7] LT",nextWeek:"dddd LT",lastDay:"[\u0787\u07a8\u0787\u07b0\u0794\u07ac] LT",lastWeek:"[\u078a\u07a7\u0787\u07a8\u078c\u07aa\u0788\u07a8] dddd LT",sameElse:"L"},relativeTime:{future:"\u078c\u07ac\u0783\u07ad\u078e\u07a6\u0787\u07a8 %s",past:"\u0786\u07aa\u0783\u07a8\u0782\u07b0 %s",s:"\u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa\u0786\u07ae\u0785\u07ac\u0787\u07b0",ss:"d% \u0790\u07a8\u0786\u07aa\u0782\u07b0\u078c\u07aa",m:"\u0789\u07a8\u0782\u07a8\u0793\u07ac\u0787\u07b0",mm:"\u0789\u07a8\u0782\u07a8\u0793\u07aa %d",h:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07ac\u0787\u07b0",hh:"\u078e\u07a6\u0791\u07a8\u0787\u07a8\u0783\u07aa %d",d:"\u078b\u07aa\u0788\u07a6\u0780\u07ac\u0787\u07b0",dd:"\u078b\u07aa\u0788\u07a6\u0790\u07b0 %d",M:"\u0789\u07a6\u0780\u07ac\u0787\u07b0",MM:"\u0789\u07a6\u0790\u07b0 %d",y:"\u0787\u07a6\u0780\u07a6\u0783\u07ac\u0787\u07b0",yy:"\u0787\u07a6\u0780\u07a6\u0783\u07aa %d"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:7,doy:12}}),l.defineLocale("el",{monthsNominativeEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03ac\u03c1\u03b9\u03bf\u03c2_\u039c\u03ac\u03c1\u03c4\u03b9\u03bf\u03c2_\u0391\u03c0\u03c1\u03af\u03bb\u03b9\u03bf\u03c2_\u039c\u03ac\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bd\u03b9\u03bf\u03c2_\u0399\u03bf\u03cd\u03bb\u03b9\u03bf\u03c2_\u0391\u03cd\u03b3\u03bf\u03c5\u03c3\u03c4\u03bf\u03c2_\u03a3\u03b5\u03c0\u03c4\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u039f\u03ba\u03c4\u03ce\u03b2\u03c1\u03b9\u03bf\u03c2_\u039d\u03bf\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2_\u0394\u03b5\u03ba\u03ad\u03bc\u03b2\u03c1\u03b9\u03bf\u03c2".split("_"),monthsGenitiveEl:"\u0399\u03b1\u03bd\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u03a6\u03b5\u03b2\u03c1\u03bf\u03c5\u03b1\u03c1\u03af\u03bf\u03c5_\u039c\u03b1\u03c1\u03c4\u03af\u03bf\u03c5_\u0391\u03c0\u03c1\u03b9\u03bb\u03af\u03bf\u03c5_\u039c\u03b1\u0390\u03bf\u03c5_\u0399\u03bf\u03c5\u03bd\u03af\u03bf\u03c5_\u0399\u03bf\u03c5\u03bb\u03af\u03bf\u03c5_\u0391\u03c5\u03b3\u03bf\u03cd\u03c3\u03c4\u03bf\u03c5_\u03a3\u03b5\u03c0\u03c4\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u039f\u03ba\u03c4\u03c9\u03b2\u03c1\u03af\u03bf\u03c5_\u039d\u03bf\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5_\u0394\u03b5\u03ba\u03b5\u03bc\u03b2\u03c1\u03af\u03bf\u03c5".split("_"),months:function(e,a){return e?"string"==typeof a&&/D/.test(a.substring(0,a.indexOf("MMMM")))?this._monthsGenitiveEl[e.month()]:this._monthsNominativeEl[e.month()]:this._monthsNominativeEl},monthsShort:"\u0399\u03b1\u03bd_\u03a6\u03b5\u03b2_\u039c\u03b1\u03c1_\u0391\u03c0\u03c1_\u039c\u03b1\u03ca_\u0399\u03bf\u03c5\u03bd_\u0399\u03bf\u03c5\u03bb_\u0391\u03c5\u03b3_\u03a3\u03b5\u03c0_\u039f\u03ba\u03c4_\u039d\u03bf\u03b5_\u0394\u03b5\u03ba".split("_"),weekdays:"\u039a\u03c5\u03c1\u03b9\u03b1\u03ba\u03ae_\u0394\u03b5\u03c5\u03c4\u03ad\u03c1\u03b1_\u03a4\u03c1\u03af\u03c4\u03b7_\u03a4\u03b5\u03c4\u03ac\u03c1\u03c4\u03b7_\u03a0\u03ad\u03bc\u03c0\u03c4\u03b7_\u03a0\u03b1\u03c1\u03b1\u03c3\u03ba\u03b5\u03c5\u03ae_\u03a3\u03ac\u03b2\u03b2\u03b1\u03c4\u03bf".split("_"),weekdaysShort:"\u039a\u03c5\u03c1_\u0394\u03b5\u03c5_\u03a4\u03c1\u03b9_\u03a4\u03b5\u03c4_\u03a0\u03b5\u03bc_\u03a0\u03b1\u03c1_\u03a3\u03b1\u03b2".split("_"),weekdaysMin:"\u039a\u03c5_\u0394\u03b5_\u03a4\u03c1_\u03a4\u03b5_\u03a0\u03b5_\u03a0\u03b1_\u03a3\u03b1".split("_"),meridiem:function(e,a,t){return 11<e?t?"\u03bc\u03bc":"\u039c\u039c":t?"\u03c0\u03bc":"\u03a0\u039c"},isPM:function(e){return"\u03bc"===(e+"").toLowerCase()[0]},meridiemParse:/[\u03a0\u039c]\.?\u039c?\.?/i,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendarEl:{sameDay:"[\u03a3\u03ae\u03bc\u03b5\u03c1\u03b1 {}] LT",nextDay:"[\u0391\u03cd\u03c1\u03b9\u03bf {}] LT",nextWeek:"dddd [{}] LT",lastDay:"[\u03a7\u03b8\u03b5\u03c2 {}] LT",lastWeek:function(){switch(this.day()){case 6:return"[\u03c4\u03bf \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03bf] dddd [{}] LT";default:return"[\u03c4\u03b7\u03bd \u03c0\u03c1\u03bf\u03b7\u03b3\u03bf\u03cd\u03bc\u03b5\u03bd\u03b7] dddd [{}] LT"}},sameElse:"L"},calendar:function(e,a){var t=this._calendarEl[e],s=a&&a.hours();return S(t)&&(t=t.apply(a)),t.replace("{}",s%12==1?"\u03c3\u03c4\u03b7":"\u03c3\u03c4\u03b9\u03c2")},relativeTime:{future:"\u03c3\u03b5 %s",past:"%s \u03c0\u03c1\u03b9\u03bd",s:"\u03bb\u03af\u03b3\u03b1 \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",ss:"%d \u03b4\u03b5\u03c5\u03c4\u03b5\u03c1\u03cc\u03bb\u03b5\u03c0\u03c4\u03b1",m:"\u03ad\u03bd\u03b1 \u03bb\u03b5\u03c0\u03c4\u03cc",mm:"%d \u03bb\u03b5\u03c0\u03c4\u03ac",h:"\u03bc\u03af\u03b1 \u03ce\u03c1\u03b1",hh:"%d \u03ce\u03c1\u03b5\u03c2",d:"\u03bc\u03af\u03b1 \u03bc\u03ad\u03c1\u03b1",dd:"%d \u03bc\u03ad\u03c1\u03b5\u03c2",M:"\u03ad\u03bd\u03b1\u03c2 \u03bc\u03ae\u03bd\u03b1\u03c2",MM:"%d \u03bc\u03ae\u03bd\u03b5\u03c2",y:"\u03ad\u03bd\u03b1\u03c2 \u03c7\u03c1\u03cc\u03bd\u03bf\u03c2",yy:"%d \u03c7\u03c1\u03cc\u03bd\u03b9\u03b1"},dayOfMonthOrdinalParse:/\d{1,2}\u03b7/,ordinal:"%d\u03b7",week:{dow:1,doy:4}}),l.defineLocale("en-au",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ca",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"YYYY-MM-DD",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-gb",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-ie",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("en-il",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")}}),l.defineLocale("en-nz",{months:"January_February_March_April_May_June_July_August_September_October_November_December".split("_"),monthsShort:"Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_"),weekdays:"Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_"),weekdaysShort:"Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_"),weekdaysMin:"Su_Mo_Tu_We_Th_Fr_Sa".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("eo",{months:"januaro_februaro_marto_aprilo_majo_junio_julio_a\u016dgusto_septembro_oktobro_novembro_decembro".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_a\u016dg_sep_okt_nov_dec".split("_"),weekdays:"diman\u0109o_lundo_mardo_merkredo_\u0135a\u016ddo_vendredo_sabato".split("_"),weekdaysShort:"dim_lun_mard_merk_\u0135a\u016d_ven_sab".split("_"),weekdaysMin:"di_lu_ma_me_\u0135a_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D[-a de] MMMM, YYYY",LLL:"D[-a de] MMMM, YYYY HH:mm",LLLL:"dddd, [la] D[-a de] MMMM, YYYY HH:mm"},meridiemParse:/[ap]\.t\.m/i,isPM:function(e){return"p"===e.charAt(0).toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"p.t.m.":"P.T.M.":t?"a.t.m.":"A.T.M."},calendar:{sameDay:"[Hodia\u016d je] LT",nextDay:"[Morga\u016d je] LT",nextWeek:"dddd [je] LT",lastDay:"[Hiera\u016d je] LT",lastWeek:"[pasinta] dddd [je] LT",sameElse:"L"},relativeTime:{future:"post %s",past:"anta\u016d %s",s:"sekundoj",ss:"%d sekundoj",m:"minuto",mm:"%d minutoj",h:"horo",hh:"%d horoj",d:"tago",dd:"%d tagoj",M:"monato",MM:"%d monatoj",y:"jaro",yy:"%d jaroj"},dayOfMonthOrdinalParse:/\d{1,2}a/,ordinal:"%da",week:{dow:1,doy:7}});var ys="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),fs="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),ks=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],ps=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;l.defineLocale("es-do",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?fs[e.month()]:ys[e.month()]:ys},monthsRegex:ps,monthsShortRegex:ps,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:ks,longMonthsParse:ks,shortMonthsParse:ks,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY h:mm A",LLLL:"dddd, D [de] MMMM [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var Ds="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),Ts="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_");l.defineLocale("es-us",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Ts[e.month()]:Ds[e.month()]:Ds},monthsParseExact:!0,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"MM/DD/YYYY",LL:"MMMM [de] D [de] YYYY",LLL:"MMMM [de] D [de] YYYY h:mm A",LLLL:"dddd, MMMM [de] D [de] YYYY h:mm A"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:0,doy:6}});var gs="ene._feb._mar._abr._may._jun._jul._ago._sep._oct._nov._dic.".split("_"),ws="ene_feb_mar_abr_may_jun_jul_ago_sep_oct_nov_dic".split("_"),vs=[/^ene/i,/^feb/i,/^mar/i,/^abr/i,/^may/i,/^jun/i,/^jul/i,/^ago/i,/^sep/i,/^oct/i,/^nov/i,/^dic/i],Hs=/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre|ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i;function Ss(e,a,t,s){var n={s:["m\xf5ne sekundi","m\xf5ni sekund","paar sekundit"],ss:[e+"sekundi",e+"sekundit"],m:["\xfche minuti","\xfcks minut"],mm:[e+" minuti",e+" minutit"],h:["\xfche tunni","tund aega","\xfcks tund"],hh:[e+" tunni",e+" tundi"],d:["\xfche p\xe4eva","\xfcks p\xe4ev"],M:["kuu aja","kuu aega","\xfcks kuu"],MM:[e+" kuu",e+" kuud"],y:["\xfche aasta","aasta","\xfcks aasta"],yy:[e+" aasta",e+" aastat"]};return a?n[t][2]?n[t][2]:n[t][1]:s?n[t][0]:n[t][1]}l.defineLocale("es",{months:"enero_febrero_marzo_abril_mayo_junio_julio_agosto_septiembre_octubre_noviembre_diciembre".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?ws[e.month()]:gs[e.month()]:gs},monthsRegex:Hs,monthsShortRegex:Hs,monthsStrictRegex:/^(enero|febrero|marzo|abril|mayo|junio|julio|agosto|septiembre|octubre|noviembre|diciembre)/i,monthsShortStrictRegex:/^(ene\.?|feb\.?|mar\.?|abr\.?|may\.?|jun\.?|jul\.?|ago\.?|sep\.?|oct\.?|nov\.?|dic\.?)/i,monthsParse:vs,longMonthsParse:vs,shortMonthsParse:vs,weekdays:"domingo_lunes_martes_mi\xe9rcoles_jueves_viernes_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._mi\xe9._jue._vie._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_mi_ju_vi_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoy a la"+(1!==this.hours()?"s":"")+"] LT"},nextDay:function(){return"[ma\xf1ana a la"+(1!==this.hours()?"s":"")+"] LT"},nextWeek:function(){return"dddd [a la"+(1!==this.hours()?"s":"")+"] LT"},lastDay:function(){return"[ayer a la"+(1!==this.hours()?"s":"")+"] LT"},lastWeek:function(){return"[el] dddd [pasado a la"+(1!==this.hours()?"s":"")+"] LT"},sameElse:"L"},relativeTime:{future:"en %s",past:"hace %s",s:"unos segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"una hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un a\xf1o",yy:"%d a\xf1os"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("et",{months:"jaanuar_veebruar_m\xe4rts_aprill_mai_juuni_juuli_august_september_oktoober_november_detsember".split("_"),monthsShort:"jaan_veebr_m\xe4rts_apr_mai_juuni_juuli_aug_sept_okt_nov_dets".split("_"),weekdays:"p\xfchap\xe4ev_esmasp\xe4ev_teisip\xe4ev_kolmap\xe4ev_neljap\xe4ev_reede_laup\xe4ev".split("_"),weekdaysShort:"P_E_T_K_N_R_L".split("_"),weekdaysMin:"P_E_T_K_N_R_L".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[T\xe4na,] LT",nextDay:"[Homme,] LT",nextWeek:"[J\xe4rgmine] dddd LT",lastDay:"[Eile,] LT",lastWeek:"[Eelmine] dddd LT",sameElse:"L"},relativeTime:{future:"%s p\xe4rast",past:"%s tagasi",s:Ss,ss:Ss,m:Ss,mm:Ss,h:Ss,hh:Ss,d:Ss,dd:"%d p\xe4eva",M:Ss,MM:Ss,y:Ss,yy:Ss},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("eu",{months:"urtarrila_otsaila_martxoa_apirila_maiatza_ekaina_uztaila_abuztua_iraila_urria_azaroa_abendua".split("_"),monthsShort:"urt._ots._mar._api._mai._eka._uzt._abu._ira._urr._aza._abe.".split("_"),monthsParseExact:!0,weekdays:"igandea_astelehena_asteartea_asteazkena_osteguna_ostirala_larunbata".split("_"),weekdaysShort:"ig._al._ar._az._og._ol._lr.".split("_"),weekdaysMin:"ig_al_ar_az_og_ol_lr".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY[ko] MMMM[ren] D[a]",LLL:"YYYY[ko] MMMM[ren] D[a] HH:mm",LLLL:"dddd, YYYY[ko] MMMM[ren] D[a] HH:mm",l:"YYYY-M-D",ll:"YYYY[ko] MMM D[a]",lll:"YYYY[ko] MMM D[a] HH:mm",llll:"ddd, YYYY[ko] MMM D[a] HH:mm"},calendar:{sameDay:"[gaur] LT[etan]",nextDay:"[bihar] LT[etan]",nextWeek:"dddd LT[etan]",lastDay:"[atzo] LT[etan]",lastWeek:"[aurreko] dddd LT[etan]",sameElse:"L"},relativeTime:{future:"%s barru",past:"duela %s",s:"segundo batzuk",ss:"%d segundo",m:"minutu bat",mm:"%d minutu",h:"ordu bat",hh:"%d ordu",d:"egun bat",dd:"%d egun",M:"hilabete bat",MM:"%d hilabete",y:"urte bat",yy:"%d urte"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var bs={1:"\u06f1",2:"\u06f2",3:"\u06f3",4:"\u06f4",5:"\u06f5",6:"\u06f6",7:"\u06f7",8:"\u06f8",9:"\u06f9",0:"\u06f0"},js={"\u06f1":"1","\u06f2":"2","\u06f3":"3","\u06f4":"4","\u06f5":"5","\u06f6":"6","\u06f7":"7","\u06f8":"8","\u06f9":"9","\u06f0":"0"};l.defineLocale("fa",{months:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),monthsShort:"\u0698\u0627\u0646\u0648\u06cc\u0647_\u0641\u0648\u0631\u06cc\u0647_\u0645\u0627\u0631\u0633_\u0622\u0648\u0631\u06cc\u0644_\u0645\u0647_\u0698\u0648\u0626\u0646_\u0698\u0648\u0626\u06cc\u0647_\u0627\u0648\u062a_\u0633\u067e\u062a\u0627\u0645\u0628\u0631_\u0627\u06a9\u062a\u0628\u0631_\u0646\u0648\u0627\u0645\u0628\u0631_\u062f\u0633\u0627\u0645\u0628\u0631".split("_"),weekdays:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysShort:"\u06cc\u06a9\u200c\u0634\u0646\u0628\u0647_\u062f\u0648\u0634\u0646\u0628\u0647_\u0633\u0647\u200c\u0634\u0646\u0628\u0647_\u0686\u0647\u0627\u0631\u0634\u0646\u0628\u0647_\u067e\u0646\u062c\u200c\u0634\u0646\u0628\u0647_\u062c\u0645\u0639\u0647_\u0634\u0646\u0628\u0647".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u062c_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631|\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/,isPM:function(e){return/\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631/.test(e)},meridiem:function(e,a,t){return e<12?"\u0642\u0628\u0644 \u0627\u0632 \u0638\u0647\u0631":"\u0628\u0639\u062f \u0627\u0632 \u0638\u0647\u0631"},calendar:{sameDay:"[\u0627\u0645\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",nextDay:"[\u0641\u0631\u062f\u0627 \u0633\u0627\u0639\u062a] LT",nextWeek:"dddd [\u0633\u0627\u0639\u062a] LT",lastDay:"[\u062f\u06cc\u0631\u0648\u0632 \u0633\u0627\u0639\u062a] LT",lastWeek:"dddd [\u067e\u06cc\u0634] [\u0633\u0627\u0639\u062a] LT",sameElse:"L"},relativeTime:{future:"\u062f\u0631 %s",past:"%s \u067e\u06cc\u0634",s:"\u0686\u0646\u062f \u062b\u0627\u0646\u06cc\u0647",ss:"\u062b\u0627\u0646\u06cc\u0647 d%",m:"\u06cc\u06a9 \u062f\u0642\u06cc\u0642\u0647",mm:"%d \u062f\u0642\u06cc\u0642\u0647",h:"\u06cc\u06a9 \u0633\u0627\u0639\u062a",hh:"%d \u0633\u0627\u0639\u062a",d:"\u06cc\u06a9 \u0631\u0648\u0632",dd:"%d \u0631\u0648\u0632",M:"\u06cc\u06a9 \u0645\u0627\u0647",MM:"%d \u0645\u0627\u0647",y:"\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/[\u06f0-\u06f9]/g,function(e){return js[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return bs[e]}).replace(/,/g,"\u060c")},dayOfMonthOrdinalParse:/\d{1,2}\u0645/,ordinal:"%d\u0645",week:{dow:6,doy:12}});var xs="nolla yksi kaksi kolme nelj\xe4 viisi kuusi seitsem\xe4n kahdeksan yhdeks\xe4n".split(" "),Ps=["nolla","yhden","kahden","kolmen","nelj\xe4n","viiden","kuuden",xs[7],xs[8],xs[9]];function Os(e,a,t,s){var n,d,r="";switch(t){case"s":return s?"muutaman sekunnin":"muutama sekunti";case"ss":return s?"sekunnin":"sekuntia";case"m":return s?"minuutin":"minuutti";case"mm":r=s?"minuutin":"minuuttia";break;case"h":return s?"tunnin":"tunti";case"hh":r=s?"tunnin":"tuntia";break;case"d":return s?"p\xe4iv\xe4n":"p\xe4iv\xe4";case"dd":r=s?"p\xe4iv\xe4n":"p\xe4iv\xe4\xe4";break;case"M":return s?"kuukauden":"kuukausi";case"MM":r=s?"kuukauden":"kuukautta";break;case"y":return s?"vuoden":"vuosi";case"yy":r=s?"vuoden":"vuotta";break}return d=s,r=((n=e)<10?d?Ps[n]:xs[n]:n)+" "+r}l.defineLocale("fi",{months:"tammikuu_helmikuu_maaliskuu_huhtikuu_toukokuu_kes\xe4kuu_hein\xe4kuu_elokuu_syyskuu_lokakuu_marraskuu_joulukuu".split("_"),monthsShort:"tammi_helmi_maalis_huhti_touko_kes\xe4_hein\xe4_elo_syys_loka_marras_joulu".split("_"),weekdays:"sunnuntai_maanantai_tiistai_keskiviikko_torstai_perjantai_lauantai".split("_"),weekdaysShort:"su_ma_ti_ke_to_pe_la".split("_"),weekdaysMin:"su_ma_ti_ke_to_pe_la".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"Do MMMM[ta] YYYY",LLL:"Do MMMM[ta] YYYY, [klo] HH.mm",LLLL:"dddd, Do MMMM[ta] YYYY, [klo] HH.mm",l:"D.M.YYYY",ll:"Do MMM YYYY",lll:"Do MMM YYYY, [klo] HH.mm",llll:"ddd, Do MMM YYYY, [klo] HH.mm"},calendar:{sameDay:"[t\xe4n\xe4\xe4n] [klo] LT",nextDay:"[huomenna] [klo] LT",nextWeek:"dddd [klo] LT",lastDay:"[eilen] [klo] LT",lastWeek:"[viime] dddd[na] [klo] LT",sameElse:"L"},relativeTime:{future:"%s p\xe4\xe4st\xe4",past:"%s sitten",s:Os,ss:Os,m:Os,mm:Os,h:Os,hh:Os,d:Os,dd:Os,M:Os,MM:Os,y:Os,yy:Os},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fo",{months:"januar_februar_mars_apr\xedl_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sunnudagur_m\xe1nadagur_t\xfdsdagur_mikudagur_h\xf3sdagur_fr\xedggjadagur_leygardagur".split("_"),weekdaysShort:"sun_m\xe1n_t\xfds_mik_h\xf3s_fr\xed_ley".split("_"),weekdaysMin:"su_m\xe1_t\xfd_mi_h\xf3_fr_le".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D. MMMM, YYYY HH:mm"},calendar:{sameDay:"[\xcd dag kl.] LT",nextDay:"[\xcd morgin kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xcd gj\xe1r kl.] LT",lastWeek:"[s\xed\xf0stu] dddd [kl] LT",sameElse:"L"},relativeTime:{future:"um %s",past:"%s s\xed\xf0ani",s:"f\xe1 sekund",ss:"%d sekundir",m:"ein minutt",mm:"%d minuttir",h:"ein t\xedmi",hh:"%d t\xedmar",d:"ein dagur",dd:"%d dagar",M:"ein m\xe1na\xf0i",MM:"%d m\xe1na\xf0ir",y:"eitt \xe1r",yy:"%d \xe1r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("fr-ca",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}}}),l.defineLocale("fr-ch",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|e)/,ordinal:function(e,a){switch(a){default:case"M":case"Q":case"D":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}}),l.defineLocale("fr",{months:"janvier_f\xe9vrier_mars_avril_mai_juin_juillet_ao\xfbt_septembre_octobre_novembre_d\xe9cembre".split("_"),monthsShort:"janv._f\xe9vr._mars_avr._mai_juin_juil._ao\xfbt_sept._oct._nov._d\xe9c.".split("_"),monthsParseExact:!0,weekdays:"dimanche_lundi_mardi_mercredi_jeudi_vendredi_samedi".split("_"),weekdaysShort:"dim._lun._mar._mer._jeu._ven._sam.".split("_"),weekdaysMin:"di_lu_ma_me_je_ve_sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Aujourd\u2019hui \xe0] LT",nextDay:"[Demain \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[Hier \xe0] LT",lastWeek:"dddd [dernier \xe0] LT",sameElse:"L"},relativeTime:{future:"dans %s",past:"il y a %s",s:"quelques secondes",ss:"%d secondes",m:"une minute",mm:"%d minutes",h:"une heure",hh:"%d heures",d:"un jour",dd:"%d jours",M:"un mois",MM:"%d mois",y:"un an",yy:"%d ans"},dayOfMonthOrdinalParse:/\d{1,2}(er|)/,ordinal:function(e,a){switch(a){case"D":return e+(1===e?"er":"");default:case"M":case"Q":case"DDD":case"d":return e+(1===e?"er":"e");case"w":case"W":return e+(1===e?"re":"e")}},week:{dow:1,doy:4}});var Ws="jan._feb._mrt._apr._mai_jun._jul._aug._sep._okt._nov._des.".split("_"),Es="jan_feb_mrt_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_");l.defineLocale("fy",{months:"jannewaris_febrewaris_maart_april_maaie_juny_july_augustus_septimber_oktober_novimber_desimber".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Es[e.month()]:Ws[e.month()]:Ws},monthsParseExact:!0,weekdays:"snein_moandei_tiisdei_woansdei_tongersdei_freed_sneon".split("_"),weekdaysShort:"si._mo._ti._wo._to._fr._so.".split("_"),weekdaysMin:"Si_Mo_Ti_Wo_To_Fr_So".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[hjoed om] LT",nextDay:"[moarn om] LT",nextWeek:"dddd [om] LT",lastDay:"[juster om] LT",lastWeek:"[\xf4fr\xfbne] dddd [om] LT",sameElse:"L"},relativeTime:{future:"oer %s",past:"%s lyn",s:"in pear sekonden",ss:"%d sekonden",m:"ien min\xfat",mm:"%d minuten",h:"ien oere",hh:"%d oeren",d:"ien dei",dd:"%d dagen",M:"ien moanne",MM:"%d moannen",y:"ien jier",yy:"%d jierren"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});function As(e,a,t,s){var n={s:["thodde secondanim","thodde second"],ss:[e+" secondanim",e+" second"],m:["eka mintan","ek minute"],mm:[e+" mintanim",e+" mintam"],h:["eka horan","ek hor"],hh:[e+" horanim",e+" horam"],d:["eka disan","ek dis"],dd:[e+" disanim",e+" dis"],M:["eka mhoinean","ek mhoino"],MM:[e+" mhoineanim",e+" mhoine"],y:["eka vorsan","ek voros"],yy:[e+" vorsanim",e+" vorsam"]};return a?n[t][0]:n[t][1]}l.defineLocale("gd",{months:["Am Faoilleach","An Gearran","Am M\xe0rt","An Giblean","An C\xe8itean","An t-\xd2gmhios","An t-Iuchar","An L\xf9nastal","An t-Sultain","An D\xe0mhair","An t-Samhain","An D\xf9bhlachd"],monthsShort:["Faoi","Gear","M\xe0rt","Gibl","C\xe8it","\xd2gmh","Iuch","L\xf9n","Sult","D\xe0mh","Samh","D\xf9bh"],monthsParseExact:!0,weekdays:["Did\xf2mhnaich","Diluain","Dim\xe0irt","Diciadain","Diardaoin","Dihaoine","Disathairne"],weekdaysShort:["Did","Dil","Dim","Dic","Dia","Dih","Dis"],weekdaysMin:["D\xf2","Lu","M\xe0","Ci","Ar","Ha","Sa"],longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[An-diugh aig] LT",nextDay:"[A-m\xe0ireach aig] LT",nextWeek:"dddd [aig] LT",lastDay:"[An-d\xe8 aig] LT",lastWeek:"dddd [seo chaidh] [aig] LT",sameElse:"L"},relativeTime:{future:"ann an %s",past:"bho chionn %s",s:"beagan diogan",ss:"%d diogan",m:"mionaid",mm:"%d mionaidean",h:"uair",hh:"%d uairean",d:"latha",dd:"%d latha",M:"m\xecos",MM:"%d m\xecosan",y:"bliadhna",yy:"%d bliadhna"},dayOfMonthOrdinalParse:/\d{1,2}(d|na|mh)/,ordinal:function(e){return e+(1===e?"d":e%10==2?"na":"mh")},week:{dow:1,doy:4}}),l.defineLocale("gl",{months:"xaneiro_febreiro_marzo_abril_maio_xu\xf1o_xullo_agosto_setembro_outubro_novembro_decembro".split("_"),monthsShort:"xan._feb._mar._abr._mai._xu\xf1._xul._ago._set._out._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"domingo_luns_martes_m\xe9rcores_xoves_venres_s\xe1bado".split("_"),weekdaysShort:"dom._lun._mar._m\xe9r._xov._ven._s\xe1b.".split("_"),weekdaysMin:"do_lu_ma_m\xe9_xo_ve_s\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY H:mm",LLLL:"dddd, D [de] MMMM [de] YYYY H:mm"},calendar:{sameDay:function(){return"[hoxe "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextDay:function(){return"[ma\xf1\xe1 "+(1!==this.hours()?"\xe1s":"\xe1")+"] LT"},nextWeek:function(){return"dddd ["+(1!==this.hours()?"\xe1s":"a")+"] LT"},lastDay:function(){return"[onte "+(1!==this.hours()?"\xe1":"a")+"] LT"},lastWeek:function(){return"[o] dddd [pasado "+(1!==this.hours()?"\xe1s":"a")+"] LT"},sameElse:"L"},relativeTime:{future:function(e){return 0===e.indexOf("un")?"n"+e:"en "+e},past:"hai %s",s:"uns segundos",ss:"%d segundos",m:"un minuto",mm:"%d minutos",h:"unha hora",hh:"%d horas",d:"un d\xeda",dd:"%d d\xedas",M:"un mes",MM:"%d meses",y:"un ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("gom-latn",{months:"Janer_Febrer_Mars_Abril_Mai_Jun_Julai_Agost_Setembr_Otubr_Novembr_Dezembr".split("_"),monthsShort:"Jan._Feb._Mars_Abr._Mai_Jun_Jul._Ago._Set._Otu._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Aitar_Somar_Mongllar_Budvar_Brestar_Sukrar_Son'var".split("_"),weekdaysShort:"Ait._Som._Mon._Bud._Bre._Suk._Son.".split("_"),weekdaysMin:"Ai_Sm_Mo_Bu_Br_Su_Sn".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A h:mm [vazta]",LTS:"A h:mm:ss [vazta]",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY A h:mm [vazta]",LLLL:"dddd, MMMM[achea] Do, YYYY, A h:mm [vazta]",llll:"ddd, D MMM YYYY, A h:mm [vazta]"},calendar:{sameDay:"[Aiz] LT",nextDay:"[Faleam] LT",nextWeek:"[Ieta to] dddd[,] LT",lastDay:"[Kal] LT",lastWeek:"[Fatlo] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s",past:"%s adim",s:As,ss:As,m:As,mm:As,h:As,hh:As,d:As,dd:As,M:As,MM:As,y:As,yy:As},dayOfMonthOrdinalParse:/\d{1,2}(er)/,ordinal:function(e,a){switch(a){case"D":return e+"er";default:case"M":case"Q":case"DDD":case"d":case"w":case"W":return e}},week:{dow:1,doy:4},meridiemParse:/rati|sokalli|donparam|sanje/,meridiemHour:function(e,a){return 12===e&&(e=0),"rati"===a?e<4?e:e+12:"sokalli"===a?e:"donparam"===a?12<e?e:e+12:"sanje"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"rati":e<12?"sokalli":e<16?"donparam":e<20?"sanje":"rati"}});var Fs={1:"\u0ae7",2:"\u0ae8",3:"\u0ae9",4:"\u0aea",5:"\u0aeb",6:"\u0aec",7:"\u0aed",8:"\u0aee",9:"\u0aef",0:"\u0ae6"},zs={"\u0ae7":"1","\u0ae8":"2","\u0ae9":"3","\u0aea":"4","\u0aeb":"5","\u0aec":"6","\u0aed":"7","\u0aee":"8","\u0aef":"9","\u0ae6":"0"};l.defineLocale("gu",{months:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1\u0a86\u0ab0\u0ac0_\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1\u0a86\u0ab0\u0ac0_\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf\u0ab2_\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe\u0a88_\u0a91\u0a97\u0ab8\u0acd\u0a9f_\u0ab8\u0aaa\u0acd\u0a9f\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0a91\u0a95\u0acd\u0a9f\u0acd\u0aac\u0ab0_\u0aa8\u0ab5\u0ac7\u0aae\u0acd\u0aac\u0ab0_\u0aa1\u0abf\u0ab8\u0ac7\u0aae\u0acd\u0aac\u0ab0".split("_"),monthsShort:"\u0a9c\u0abe\u0aa8\u0acd\u0aaf\u0ac1._\u0aab\u0ac7\u0aac\u0acd\u0ab0\u0ac1._\u0aae\u0abe\u0ab0\u0acd\u0a9a_\u0a8f\u0aaa\u0acd\u0ab0\u0abf._\u0aae\u0ac7_\u0a9c\u0ac2\u0aa8_\u0a9c\u0ac1\u0ab2\u0abe._\u0a91\u0a97._\u0ab8\u0aaa\u0acd\u0a9f\u0ac7._\u0a91\u0a95\u0acd\u0a9f\u0acd._\u0aa8\u0ab5\u0ac7._\u0aa1\u0abf\u0ab8\u0ac7.".split("_"),monthsParseExact:!0,weekdays:"\u0ab0\u0ab5\u0abf\u0ab5\u0abe\u0ab0_\u0ab8\u0acb\u0aae\u0ab5\u0abe\u0ab0_\u0aae\u0a82\u0a97\u0ab3\u0ab5\u0abe\u0ab0_\u0aac\u0ac1\u0aa7\u0acd\u0ab5\u0abe\u0ab0_\u0a97\u0ac1\u0ab0\u0ac1\u0ab5\u0abe\u0ab0_\u0ab6\u0ac1\u0a95\u0acd\u0ab0\u0ab5\u0abe\u0ab0_\u0ab6\u0aa8\u0abf\u0ab5\u0abe\u0ab0".split("_"),weekdaysShort:"\u0ab0\u0ab5\u0abf_\u0ab8\u0acb\u0aae_\u0aae\u0a82\u0a97\u0ab3_\u0aac\u0ac1\u0aa7\u0acd_\u0a97\u0ac1\u0ab0\u0ac1_\u0ab6\u0ac1\u0a95\u0acd\u0ab0_\u0ab6\u0aa8\u0abf".split("_"),weekdaysMin:"\u0ab0_\u0ab8\u0acb_\u0aae\u0a82_\u0aac\u0ac1_\u0a97\u0ac1_\u0ab6\u0ac1_\u0ab6".split("_"),longDateFormat:{LT:"A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LTS:"A h:mm:ss \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7",LLLL:"dddd, D MMMM YYYY, A h:mm \u0ab5\u0abe\u0a97\u0acd\u0aaf\u0ac7"},calendar:{sameDay:"[\u0a86\u0a9c] LT",nextDay:"[\u0a95\u0abe\u0ab2\u0ac7] LT",nextWeek:"dddd, LT",lastDay:"[\u0a97\u0a87\u0a95\u0abe\u0ab2\u0ac7] LT",lastWeek:"[\u0aaa\u0abe\u0a9b\u0ab2\u0abe] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0aae\u0abe",past:"%s \u0aaa\u0ac7\u0ab9\u0ab2\u0abe",s:"\u0a85\u0aae\u0ac1\u0a95 \u0aaa\u0ab3\u0acb",ss:"%d \u0ab8\u0ac7\u0a95\u0a82\u0aa1",m:"\u0a8f\u0a95 \u0aae\u0abf\u0aa8\u0abf\u0a9f",mm:"%d \u0aae\u0abf\u0aa8\u0abf\u0a9f",h:"\u0a8f\u0a95 \u0a95\u0ab2\u0abe\u0a95",hh:"%d \u0a95\u0ab2\u0abe\u0a95",d:"\u0a8f\u0a95 \u0aa6\u0abf\u0ab5\u0ab8",dd:"%d \u0aa6\u0abf\u0ab5\u0ab8",M:"\u0a8f\u0a95 \u0aae\u0ab9\u0abf\u0aa8\u0acb",MM:"%d \u0aae\u0ab9\u0abf\u0aa8\u0acb",y:"\u0a8f\u0a95 \u0ab5\u0ab0\u0acd\u0ab7",yy:"%d \u0ab5\u0ab0\u0acd\u0ab7"},preparse:function(e){return e.replace(/[\u0ae7\u0ae8\u0ae9\u0aea\u0aeb\u0aec\u0aed\u0aee\u0aef\u0ae6]/g,function(e){return zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Fs[e]})},meridiemParse:/\u0ab0\u0abe\u0aa4|\u0aac\u0aaa\u0acb\u0ab0|\u0ab8\u0ab5\u0abe\u0ab0|\u0ab8\u0abe\u0a82\u0a9c/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0ab0\u0abe\u0aa4"===a?e<4?e:e+12:"\u0ab8\u0ab5\u0abe\u0ab0"===a?e:"\u0aac\u0aaa\u0acb\u0ab0"===a?10<=e?e:e+12:"\u0ab8\u0abe\u0a82\u0a9c"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0ab0\u0abe\u0aa4":e<10?"\u0ab8\u0ab5\u0abe\u0ab0":e<17?"\u0aac\u0aaa\u0acb\u0ab0":e<20?"\u0ab8\u0abe\u0a82\u0a9c":"\u0ab0\u0abe\u0aa4"},week:{dow:0,doy:6}}),l.defineLocale("he",{months:"\u05d9\u05e0\u05d5\u05d0\u05e8_\u05e4\u05d1\u05e8\u05d5\u05d0\u05e8_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05d9\u05dc_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05d5\u05e1\u05d8_\u05e1\u05e4\u05d8\u05de\u05d1\u05e8_\u05d0\u05d5\u05e7\u05d8\u05d5\u05d1\u05e8_\u05e0\u05d5\u05d1\u05de\u05d1\u05e8_\u05d3\u05e6\u05de\u05d1\u05e8".split("_"),monthsShort:"\u05d9\u05e0\u05d5\u05f3_\u05e4\u05d1\u05e8\u05f3_\u05de\u05e8\u05e5_\u05d0\u05e4\u05e8\u05f3_\u05de\u05d0\u05d9_\u05d9\u05d5\u05e0\u05d9_\u05d9\u05d5\u05dc\u05d9_\u05d0\u05d5\u05d2\u05f3_\u05e1\u05e4\u05d8\u05f3_\u05d0\u05d5\u05e7\u05f3_\u05e0\u05d5\u05d1\u05f3_\u05d3\u05e6\u05de\u05f3".split("_"),weekdays:"\u05e8\u05d0\u05e9\u05d5\u05df_\u05e9\u05e0\u05d9_\u05e9\u05dc\u05d9\u05e9\u05d9_\u05e8\u05d1\u05d9\u05e2\u05d9_\u05d7\u05de\u05d9\u05e9\u05d9_\u05e9\u05d9\u05e9\u05d9_\u05e9\u05d1\u05ea".split("_"),weekdaysShort:"\u05d0\u05f3_\u05d1\u05f3_\u05d2\u05f3_\u05d3\u05f3_\u05d4\u05f3_\u05d5\u05f3_\u05e9\u05f3".split("_"),weekdaysMin:"\u05d0_\u05d1_\u05d2_\u05d3_\u05d4_\u05d5_\u05e9".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [\u05d1]MMMM YYYY",LLL:"D [\u05d1]MMMM YYYY HH:mm",LLLL:"dddd, D [\u05d1]MMMM YYYY HH:mm",l:"D/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[\u05d4\u05d9\u05d5\u05dd \u05d1\u05be]LT",nextDay:"[\u05de\u05d7\u05e8 \u05d1\u05be]LT",nextWeek:"dddd [\u05d1\u05e9\u05e2\u05d4] LT",lastDay:"[\u05d0\u05ea\u05de\u05d5\u05dc \u05d1\u05be]LT",lastWeek:"[\u05d1\u05d9\u05d5\u05dd] dddd [\u05d4\u05d0\u05d7\u05e8\u05d5\u05df \u05d1\u05e9\u05e2\u05d4] LT",sameElse:"L"},relativeTime:{future:"\u05d1\u05e2\u05d5\u05d3 %s",past:"\u05dc\u05e4\u05e0\u05d9 %s",s:"\u05de\u05e1\u05e4\u05e8 \u05e9\u05e0\u05d9\u05d5\u05ea",ss:"%d \u05e9\u05e0\u05d9\u05d5\u05ea",m:"\u05d3\u05e7\u05d4",mm:"%d \u05d3\u05e7\u05d5\u05ea",h:"\u05e9\u05e2\u05d4",hh:function(e){return 2===e?"\u05e9\u05e2\u05ea\u05d9\u05d9\u05dd":e+" \u05e9\u05e2\u05d5\u05ea"},d:"\u05d9\u05d5\u05dd",dd:function(e){return 2===e?"\u05d9\u05d5\u05de\u05d9\u05d9\u05dd":e+" \u05d9\u05de\u05d9\u05dd"},M:"\u05d7\u05d5\u05d3\u05e9",MM:function(e){return 2===e?"\u05d7\u05d5\u05d3\u05e9\u05d9\u05d9\u05dd":e+" \u05d7\u05d5\u05d3\u05e9\u05d9\u05dd"},y:"\u05e9\u05e0\u05d4",yy:function(e){return 2===e?"\u05e9\u05e0\u05ea\u05d9\u05d9\u05dd":e%10==0&&10!==e?e+" \u05e9\u05e0\u05d4":e+" \u05e9\u05e0\u05d9\u05dd"}},meridiemParse:/\u05d0\u05d7\u05d4"\u05e6|\u05dc\u05e4\u05e0\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8|\u05d1\u05d1\u05d5\u05e7\u05e8|\u05d1\u05e2\u05e8\u05d1/i,isPM:function(e){return/^(\u05d0\u05d7\u05d4"\u05e6|\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd|\u05d1\u05e2\u05e8\u05d1)$/.test(e)},meridiem:function(e,a,t){return e<5?"\u05dc\u05e4\u05e0\u05d5\u05ea \u05d1\u05d5\u05e7\u05e8":e<10?"\u05d1\u05d1\u05d5\u05e7\u05e8":e<12?t?'\u05dc\u05e4\u05e0\u05d4"\u05e6':"\u05dc\u05e4\u05e0\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":e<18?t?'\u05d0\u05d7\u05d4"\u05e6':"\u05d0\u05d7\u05e8\u05d9 \u05d4\u05e6\u05d4\u05e8\u05d9\u05d9\u05dd":"\u05d1\u05e2\u05e8\u05d1"}});var Js={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Ns={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function Rs(e,a,t){var s=e+" ";switch(t){case"ss":return s+=1===e?"sekunda":2===e||3===e||4===e?"sekunde":"sekundi";case"m":return a?"jedna minuta":"jedne minute";case"mm":return s+=1===e?"minuta":2===e||3===e||4===e?"minute":"minuta";case"h":return a?"jedan sat":"jednog sata";case"hh":return s+=1===e?"sat":2===e||3===e||4===e?"sata":"sati";case"dd":return s+=1===e?"dan":"dana";case"MM":return s+=1===e?"mjesec":2===e||3===e||4===e?"mjeseca":"mjeseci";case"yy":return s+=1===e?"godina":2===e||3===e||4===e?"godine":"godina"}}l.defineLocale("hi",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u093c\u0930\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948\u0932_\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0938\u094d\u0924_\u0938\u093f\u0924\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u0942\u092c\u0930_\u0928\u0935\u092e\u094d\u092c\u0930_\u0926\u093f\u0938\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u093c\u0930._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u0948._\u092e\u0908_\u091c\u0942\u0928_\u091c\u0941\u0932._\u0905\u0917._\u0938\u093f\u0924._\u0905\u0915\u094d\u091f\u0942._\u0928\u0935._\u0926\u093f\u0938.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0932\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0932_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u092c\u091c\u0947",LTS:"A h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A h:mm \u092c\u091c\u0947"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0915\u0932] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u0932] LT",lastWeek:"[\u092a\u093f\u091b\u0932\u0947] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u092e\u0947\u0902",past:"%s \u092a\u0939\u0932\u0947",s:"\u0915\u0941\u091b \u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0902\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u091f",mm:"%d \u092e\u093f\u0928\u091f",h:"\u090f\u0915 \u0918\u0902\u091f\u093e",hh:"%d \u0918\u0902\u091f\u0947",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u0940\u0928\u0947",MM:"%d \u092e\u0939\u0940\u0928\u0947",y:"\u090f\u0915 \u0935\u0930\u094d\u0937",yy:"%d \u0935\u0930\u094d\u0937"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Ns[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Js[e]})},meridiemParse:/\u0930\u093e\u0924|\u0938\u0941\u092c\u0939|\u0926\u094b\u092a\u0939\u0930|\u0936\u093e\u092e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924"===a?e<4?e:e+12:"\u0938\u0941\u092c\u0939"===a?e:"\u0926\u094b\u092a\u0939\u0930"===a?10<=e?e:e+12:"\u0936\u093e\u092e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924":e<10?"\u0938\u0941\u092c\u0939":e<17?"\u0926\u094b\u092a\u0939\u0930":e<20?"\u0936\u093e\u092e":"\u0930\u093e\u0924"},week:{dow:0,doy:6}}),l.defineLocale("hr",{months:{format:"sije\u010dnja_velja\u010de_o\u017eujka_travnja_svibnja_lipnja_srpnja_kolovoza_rujna_listopada_studenoga_prosinca".split("_"),standalone:"sije\u010danj_velja\u010da_o\u017eujak_travanj_svibanj_lipanj_srpanj_kolovoz_rujan_listopad_studeni_prosinac".split("_")},monthsShort:"sij._velj._o\u017eu._tra._svi._lip._srp._kol._ruj._lis._stu._pro.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010der u] LT",lastWeek:function(){switch(this.day()){case 0:case 3:return"[pro\u0161lu] dddd [u] LT";case 6:return"[pro\u0161le] [subote] [u] LT";case 1:case 2:case 4:case 5:return"[pro\u0161li] dddd [u] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"par sekundi",ss:Rs,m:Rs,mm:Rs,h:Rs,hh:Rs,d:"dan",dd:Rs,M:"mjesec",MM:Rs,y:"godinu",yy:Rs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var Is="vas\xe1rnap h\xe9tf\u0151n kedden szerd\xe1n cs\xfct\xf6rt\xf6k\xf6n p\xe9nteken szombaton".split(" ");function Cs(e,a,t,s){var n=e;switch(t){case"s":return s||a?"n\xe9h\xe1ny m\xe1sodperc":"n\xe9h\xe1ny m\xe1sodperce";case"ss":return n+(s||a)?" m\xe1sodperc":" m\xe1sodperce";case"m":return"egy"+(s||a?" perc":" perce");case"mm":return n+(s||a?" perc":" perce");case"h":return"egy"+(s||a?" \xf3ra":" \xf3r\xe1ja");case"hh":return n+(s||a?" \xf3ra":" \xf3r\xe1ja");case"d":return"egy"+(s||a?" nap":" napja");case"dd":return n+(s||a?" nap":" napja");case"M":return"egy"+(s||a?" h\xf3nap":" h\xf3napja");case"MM":return n+(s||a?" h\xf3nap":" h\xf3napja");case"y":return"egy"+(s||a?" \xe9v":" \xe9ve");case"yy":return n+(s||a?" \xe9v":" \xe9ve")}return""}function Gs(e){return(e?"":"[m\xfalt] ")+"["+Is[this.day()]+"] LT[-kor]"}function Us(e){return e%100==11||e%10!=1}function Vs(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nokkrar sek\xfandur":"nokkrum sek\xfandum";case"ss":return Us(e)?n+(a||s?"sek\xfandur":"sek\xfandum"):n+"sek\xfanda";case"m":return a?"m\xedn\xfata":"m\xedn\xfatu";case"mm":return Us(e)?n+(a||s?"m\xedn\xfatur":"m\xedn\xfatum"):a?n+"m\xedn\xfata":n+"m\xedn\xfatu";case"hh":return Us(e)?n+(a||s?"klukkustundir":"klukkustundum"):n+"klukkustund";case"d":return a?"dagur":s?"dag":"degi";case"dd":return Us(e)?a?n+"dagar":n+(s?"daga":"d\xf6gum"):a?n+"dagur":n+(s?"dag":"degi");case"M":return a?"m\xe1nu\xf0ur":s?"m\xe1nu\xf0":"m\xe1nu\xf0i";case"MM":return Us(e)?a?n+"m\xe1nu\xf0ir":n+(s?"m\xe1nu\xf0i":"m\xe1nu\xf0um"):a?n+"m\xe1nu\xf0ur":n+(s?"m\xe1nu\xf0":"m\xe1nu\xf0i");case"y":return a||s?"\xe1r":"\xe1ri";case"yy":return Us(e)?n+(a||s?"\xe1r":"\xe1rum"):n+(a||s?"\xe1r":"\xe1ri")}}l.defineLocale("hu",{months:"janu\xe1r_febru\xe1r_m\xe1rcius_\xe1prilis_m\xe1jus_j\xfanius_j\xfalius_augusztus_szeptember_okt\xf3ber_november_december".split("_"),monthsShort:"jan_feb_m\xe1rc_\xe1pr_m\xe1j_j\xfan_j\xfal_aug_szept_okt_nov_dec".split("_"),weekdays:"vas\xe1rnap_h\xe9tf\u0151_kedd_szerda_cs\xfct\xf6rt\xf6k_p\xe9ntek_szombat".split("_"),weekdaysShort:"vas_h\xe9t_kedd_sze_cs\xfct_p\xe9n_szo".split("_"),weekdaysMin:"v_h_k_sze_cs_p_szo".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY. MMMM D.",LLL:"YYYY. MMMM D. H:mm",LLLL:"YYYY. MMMM D., dddd H:mm"},meridiemParse:/de|du/i,isPM:function(e){return"u"===e.charAt(1).toLowerCase()},meridiem:function(e,a,t){return e<12?!0===t?"de":"DE":!0===t?"du":"DU"},calendar:{sameDay:"[ma] LT[-kor]",nextDay:"[holnap] LT[-kor]",nextWeek:function(){return Gs.call(this,!0)},lastDay:"[tegnap] LT[-kor]",lastWeek:function(){return Gs.call(this,!1)},sameElse:"L"},relativeTime:{future:"%s m\xfalva",past:"%s",s:Cs,ss:Cs,m:Cs,mm:Cs,h:Cs,hh:Cs,d:Cs,dd:Cs,M:Cs,MM:Cs,y:Cs,yy:Cs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("hy-am",{months:{format:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580\u056b_\u0583\u0565\u057f\u0580\u057e\u0561\u0580\u056b_\u0574\u0561\u0580\u057f\u056b_\u0561\u057a\u0580\u056b\u056c\u056b_\u0574\u0561\u0575\u056b\u057d\u056b_\u0570\u0578\u0582\u0576\u056b\u057d\u056b_\u0570\u0578\u0582\u056c\u056b\u057d\u056b_\u0585\u0563\u0578\u057d\u057f\u0578\u057d\u056b_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580\u056b_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580\u056b".split("_"),standalone:"\u0570\u0578\u0582\u0576\u057e\u0561\u0580_\u0583\u0565\u057f\u0580\u057e\u0561\u0580_\u0574\u0561\u0580\u057f_\u0561\u057a\u0580\u056b\u056c_\u0574\u0561\u0575\u056b\u057d_\u0570\u0578\u0582\u0576\u056b\u057d_\u0570\u0578\u0582\u056c\u056b\u057d_\u0585\u0563\u0578\u057d\u057f\u0578\u057d_\u057d\u0565\u057a\u057f\u0565\u0574\u0562\u0565\u0580_\u0570\u0578\u056f\u057f\u0565\u0574\u0562\u0565\u0580_\u0576\u0578\u0575\u0565\u0574\u0562\u0565\u0580_\u0564\u0565\u056f\u057f\u0565\u0574\u0562\u0565\u0580".split("_")},monthsShort:"\u0570\u0576\u057e_\u0583\u057f\u0580_\u0574\u0580\u057f_\u0561\u057a\u0580_\u0574\u0575\u057d_\u0570\u0576\u057d_\u0570\u056c\u057d_\u0585\u0563\u057d_\u057d\u057a\u057f_\u0570\u056f\u057f_\u0576\u0574\u0562_\u0564\u056f\u057f".split("_"),weekdays:"\u056f\u056b\u0580\u0561\u056f\u056b_\u0565\u0580\u056f\u0578\u0582\u0577\u0561\u0562\u0569\u056b_\u0565\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0579\u0578\u0580\u0565\u0584\u0577\u0561\u0562\u0569\u056b_\u0570\u056b\u0576\u0563\u0577\u0561\u0562\u0569\u056b_\u0578\u0582\u0580\u0562\u0561\u0569_\u0577\u0561\u0562\u0561\u0569".split("_"),weekdaysShort:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),weekdaysMin:"\u056f\u0580\u056f_\u0565\u0580\u056f_\u0565\u0580\u0584_\u0579\u0580\u0584_\u0570\u0576\u0563_\u0578\u0582\u0580\u0562_\u0577\u0562\u0569".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0569.",LLL:"D MMMM YYYY \u0569., HH:mm",LLLL:"dddd, D MMMM YYYY \u0569., HH:mm"},calendar:{sameDay:"[\u0561\u0575\u057d\u0585\u0580] LT",nextDay:"[\u057e\u0561\u0572\u0568] LT",lastDay:"[\u0565\u0580\u0565\u056f] LT",nextWeek:function(){return"dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},lastWeek:function(){return"[\u0561\u0576\u0581\u0561\u056e] dddd [\u0585\u0580\u0568 \u056a\u0561\u0574\u0568] LT"},sameElse:"L"},relativeTime:{future:"%s \u0570\u0565\u057f\u0578",past:"%s \u0561\u057c\u0561\u057b",s:"\u0574\u056b \u0584\u0561\u0576\u056b \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",ss:"%d \u057e\u0561\u0575\u0580\u056f\u0575\u0561\u0576",m:"\u0580\u0578\u057a\u0565",mm:"%d \u0580\u0578\u057a\u0565",h:"\u056a\u0561\u0574",hh:"%d \u056a\u0561\u0574",d:"\u0585\u0580",dd:"%d \u0585\u0580",M:"\u0561\u0574\u056b\u057d",MM:"%d \u0561\u0574\u056b\u057d",y:"\u057f\u0561\u0580\u056b",yy:"%d \u057f\u0561\u0580\u056b"},meridiemParse:/\u0563\u056b\u0577\u0565\u0580\u057e\u0561|\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561|\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576/,isPM:function(e){return/^(\u0581\u0565\u0580\u0565\u056f\u057e\u0561|\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576)$/.test(e)},meridiem:function(e){return e<4?"\u0563\u056b\u0577\u0565\u0580\u057e\u0561":e<12?"\u0561\u057c\u0561\u057e\u0578\u057f\u057e\u0561":e<17?"\u0581\u0565\u0580\u0565\u056f\u057e\u0561":"\u0565\u0580\u0565\u056f\u0578\u0575\u0561\u0576"},dayOfMonthOrdinalParse:/\d{1,2}|\d{1,2}-(\u056b\u0576|\u0580\u0564)/,ordinal:function(e,a){switch(a){case"DDD":case"w":case"W":case"DDDo":return 1===e?e+"-\u056b\u0576":e+"-\u0580\u0564";default:return e}},week:{dow:1,doy:7}}),l.defineLocale("id",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_November_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Agt_Sep_Okt_Nov_Des".split("_"),weekdays:"Minggu_Senin_Selasa_Rabu_Kamis_Jumat_Sabtu".split("_"),weekdaysShort:"Min_Sen_Sel_Rab_Kam_Jum_Sab".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|siang|sore|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"siang"===a?11<=e?e:e+12:"sore"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"siang":e<19?"sore":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Besok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kemarin pukul] LT",lastWeek:"dddd [lalu pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lalu",s:"beberapa detik",ss:"%d detik",m:"semenit",mm:"%d menit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("is",{months:"jan\xfaar_febr\xfaar_mars_apr\xedl_ma\xed_j\xfan\xed_j\xfal\xed_\xe1g\xfast_september_okt\xf3ber_n\xf3vember_desember".split("_"),monthsShort:"jan_feb_mar_apr_ma\xed_j\xfan_j\xfal_\xe1g\xfa_sep_okt_n\xf3v_des".split("_"),weekdays:"sunnudagur_m\xe1nudagur_\xferi\xf0judagur_mi\xf0vikudagur_fimmtudagur_f\xf6studagur_laugardagur".split("_"),weekdaysShort:"sun_m\xe1n_\xferi_mi\xf0_fim_f\xf6s_lau".split("_"),weekdaysMin:"Su_M\xe1_\xder_Mi_Fi_F\xf6_La".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd, D. MMMM YYYY [kl.] H:mm"},calendar:{sameDay:"[\xed dag kl.] LT",nextDay:"[\xe1 morgun kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[\xed g\xe6r kl.] LT",lastWeek:"[s\xed\xf0asta] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"eftir %s",past:"fyrir %s s\xed\xf0an",s:Vs,ss:Vs,m:Vs,mm:Vs,h:"klukkustund",hh:Vs,d:Vs,dd:Vs,M:Vs,MM:Vs,y:Vs,yy:Vs},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("it",{months:"gennaio_febbraio_marzo_aprile_maggio_giugno_luglio_agosto_settembre_ottobre_novembre_dicembre".split("_"),monthsShort:"gen_feb_mar_apr_mag_giu_lug_ago_set_ott_nov_dic".split("_"),weekdays:"domenica_luned\xec_marted\xec_mercoled\xec_gioved\xec_venerd\xec_sabato".split("_"),weekdaysShort:"dom_lun_mar_mer_gio_ven_sab".split("_"),weekdaysMin:"do_lu_ma_me_gi_ve_sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[Oggi alle] LT",nextDay:"[Domani alle] LT",nextWeek:"dddd [alle] LT",lastDay:"[Ieri alle] LT",lastWeek:function(){switch(this.day()){case 0:return"[la scorsa] dddd [alle] LT";default:return"[lo scorso] dddd [alle] LT"}},sameElse:"L"},relativeTime:{future:function(e){return(/^[0-9].+$/.test(e)?"tra":"in")+" "+e},past:"%s fa",s:"alcuni secondi",ss:"%d secondi",m:"un minuto",mm:"%d minuti",h:"un'ora",hh:"%d ore",d:"un giorno",dd:"%d giorni",M:"un mese",MM:"%d mesi",y:"un anno",yy:"%d anni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ja",{months:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u65e5\u66dc\u65e5_\u6708\u66dc\u65e5_\u706b\u66dc\u65e5_\u6c34\u66dc\u65e5_\u6728\u66dc\u65e5_\u91d1\u66dc\u65e5_\u571f\u66dc\u65e5".split("_"),weekdaysShort:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),weekdaysMin:"\u65e5_\u6708_\u706b_\u6c34_\u6728_\u91d1_\u571f".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5 dddd HH:mm",l:"YYYY/MM/DD",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5(ddd) HH:mm"},meridiemParse:/\u5348\u524d|\u5348\u5f8c/i,isPM:function(e){return"\u5348\u5f8c"===e},meridiem:function(e,a,t){return e<12?"\u5348\u524d":"\u5348\u5f8c"},calendar:{sameDay:"[\u4eca\u65e5] LT",nextDay:"[\u660e\u65e5] LT",nextWeek:function(e){return e.week()<this.week()?"[\u6765\u9031]dddd LT":"dddd LT"},lastDay:"[\u6628\u65e5] LT",lastWeek:function(e){return this.week()<e.week()?"[\u5148\u9031]dddd LT":"dddd LT"},sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}\u65e5/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";default:return e}},relativeTime:{future:"%s\u5f8c",past:"%s\u524d",s:"\u6570\u79d2",ss:"%d\u79d2",m:"1\u5206",mm:"%d\u5206",h:"1\u6642\u9593",hh:"%d\u6642\u9593",d:"1\u65e5",dd:"%d\u65e5",M:"1\u30f6\u6708",MM:"%d\u30f6\u6708",y:"1\u5e74",yy:"%d\u5e74"}}),l.defineLocale("jv",{months:"Januari_Februari_Maret_April_Mei_Juni_Juli_Agustus_September_Oktober_Nopember_Desember".split("_"),monthsShort:"Jan_Feb_Mar_Apr_Mei_Jun_Jul_Ags_Sep_Okt_Nop_Des".split("_"),weekdays:"Minggu_Senen_Seloso_Rebu_Kemis_Jemuwah_Septu".split("_"),weekdaysShort:"Min_Sen_Sel_Reb_Kem_Jem_Sep".split("_"),weekdaysMin:"Mg_Sn_Sl_Rb_Km_Jm_Sp".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/enjing|siyang|sonten|ndalu/,meridiemHour:function(e,a){return 12===e&&(e=0),"enjing"===a?e:"siyang"===a?11<=e?e:e+12:"sonten"===a||"ndalu"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"enjing":e<15?"siyang":e<19?"sonten":"ndalu"},calendar:{sameDay:"[Dinten puniko pukul] LT",nextDay:"[Mbenjang pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kala wingi pukul] LT",lastWeek:"dddd [kepengker pukul] LT",sameElse:"L"},relativeTime:{future:"wonten ing %s",past:"%s ingkang kepengker",s:"sawetawis detik",ss:"%d detik",m:"setunggal menit",mm:"%d menit",h:"setunggal jam",hh:"%d jam",d:"sedinten",dd:"%d dinten",M:"sewulan",MM:"%d wulan",y:"setaun",yy:"%d taun"},week:{dow:1,doy:7}}),l.defineLocale("ka",{months:{standalone:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10d8_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10d8_\u10db\u10d0\u10e0\u10e2\u10d8_\u10d0\u10de\u10e0\u10d8\u10da\u10d8_\u10db\u10d0\u10d8\u10e1\u10d8_\u10d8\u10d5\u10dc\u10d8\u10e1\u10d8_\u10d8\u10d5\u10da\u10d8\u10e1\u10d8_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10dd_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10d8_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10d8_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10d8".split("_"),format:"\u10d8\u10d0\u10dc\u10d5\u10d0\u10e0\u10e1_\u10d7\u10d4\u10d1\u10d4\u10e0\u10d5\u10d0\u10da\u10e1_\u10db\u10d0\u10e0\u10e2\u10e1_\u10d0\u10de\u10e0\u10d8\u10da\u10d8\u10e1_\u10db\u10d0\u10d8\u10e1\u10e1_\u10d8\u10d5\u10dc\u10d8\u10e1\u10e1_\u10d8\u10d5\u10da\u10d8\u10e1\u10e1_\u10d0\u10d2\u10d5\u10d8\u10e1\u10e2\u10e1_\u10e1\u10d4\u10e5\u10e2\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10dd\u10e5\u10e2\u10dd\u10db\u10d1\u10d4\u10e0\u10e1_\u10dc\u10dd\u10d4\u10db\u10d1\u10d4\u10e0\u10e1_\u10d3\u10d4\u10d9\u10d4\u10db\u10d1\u10d4\u10e0\u10e1".split("_")},monthsShort:"\u10d8\u10d0\u10dc_\u10d7\u10d4\u10d1_\u10db\u10d0\u10e0_\u10d0\u10de\u10e0_\u10db\u10d0\u10d8_\u10d8\u10d5\u10dc_\u10d8\u10d5\u10da_\u10d0\u10d2\u10d5_\u10e1\u10d4\u10e5_\u10dd\u10e5\u10e2_\u10dc\u10dd\u10d4_\u10d3\u10d4\u10d9".split("_"),weekdays:{standalone:"\u10d9\u10d5\u10d8\u10e0\u10d0_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10d8_\u10e8\u10d0\u10d1\u10d0\u10d7\u10d8".split("_"),format:"\u10d9\u10d5\u10d8\u10e0\u10d0\u10e1_\u10dd\u10e0\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10e1\u10d0\u10db\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10dd\u10d7\u10ee\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10ee\u10e3\u10d7\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1_\u10de\u10d0\u10e0\u10d0\u10e1\u10d9\u10d4\u10d5\u10e1_\u10e8\u10d0\u10d1\u10d0\u10d7\u10e1".split("_"),isFormat:/(\u10ec\u10d8\u10dc\u10d0|\u10e8\u10d4\u10db\u10d3\u10d4\u10d2)/},weekdaysShort:"\u10d9\u10d5\u10d8_\u10dd\u10e0\u10e8_\u10e1\u10d0\u10db_\u10dd\u10d7\u10ee_\u10ee\u10e3\u10d7_\u10de\u10d0\u10e0_\u10e8\u10d0\u10d1".split("_"),weekdaysMin:"\u10d9\u10d5_\u10dd\u10e0_\u10e1\u10d0_\u10dd\u10d7_\u10ee\u10e3_\u10de\u10d0_\u10e8\u10d0".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[\u10d3\u10e6\u10d4\u10e1] LT[-\u10d6\u10d4]",nextDay:"[\u10ee\u10d5\u10d0\u10da] LT[-\u10d6\u10d4]",lastDay:"[\u10d2\u10e3\u10e8\u10d8\u10dc] LT[-\u10d6\u10d4]",nextWeek:"[\u10e8\u10d4\u10db\u10d3\u10d4\u10d2] dddd LT[-\u10d6\u10d4]",lastWeek:"[\u10ec\u10d8\u10dc\u10d0] dddd LT-\u10d6\u10d4",sameElse:"L"},relativeTime:{future:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10ec\u10d4\u10da\u10d8)/.test(e)?e.replace(/\u10d8$/,"\u10e8\u10d8"):e+"\u10e8\u10d8"},past:function(e){return/(\u10ec\u10d0\u10db\u10d8|\u10ec\u10e3\u10d7\u10d8|\u10e1\u10d0\u10d0\u10d7\u10d8|\u10d3\u10e6\u10d4|\u10d7\u10d5\u10d4)/.test(e)?e.replace(/(\u10d8|\u10d4)$/,"\u10d8\u10e1 \u10ec\u10d8\u10dc"):/\u10ec\u10d4\u10da\u10d8/.test(e)?e.replace(/\u10ec\u10d4\u10da\u10d8$/,"\u10ec\u10da\u10d8\u10e1 \u10ec\u10d8\u10dc"):void 0},s:"\u10e0\u10d0\u10db\u10d3\u10d4\u10dc\u10d8\u10db\u10d4 \u10ec\u10d0\u10db\u10d8",ss:"%d \u10ec\u10d0\u10db\u10d8",m:"\u10ec\u10e3\u10d7\u10d8",mm:"%d \u10ec\u10e3\u10d7\u10d8",h:"\u10e1\u10d0\u10d0\u10d7\u10d8",hh:"%d \u10e1\u10d0\u10d0\u10d7\u10d8",d:"\u10d3\u10e6\u10d4",dd:"%d \u10d3\u10e6\u10d4",M:"\u10d7\u10d5\u10d4",MM:"%d \u10d7\u10d5\u10d4",y:"\u10ec\u10d4\u10da\u10d8",yy:"%d \u10ec\u10d4\u10da\u10d8"},dayOfMonthOrdinalParse:/0|1-\u10da\u10d8|\u10db\u10d4-\d{1,2}|\d{1,2}-\u10d4/,ordinal:function(e){return 0===e?e:1===e?e+"-\u10da\u10d8":e<20||e<=100&&e%20==0||e%100==0?"\u10db\u10d4-"+e:e+"-\u10d4"},week:{dow:1,doy:7}});var Ks={0:"-\u0448\u0456",1:"-\u0448\u0456",2:"-\u0448\u0456",3:"-\u0448\u0456",4:"-\u0448\u0456",5:"-\u0448\u0456",6:"-\u0448\u044b",7:"-\u0448\u0456",8:"-\u0448\u0456",9:"-\u0448\u044b",10:"-\u0448\u044b",20:"-\u0448\u044b",30:"-\u0448\u044b",40:"-\u0448\u044b",50:"-\u0448\u0456",60:"-\u0448\u044b",70:"-\u0448\u0456",80:"-\u0448\u0456",90:"-\u0448\u044b",100:"-\u0448\u0456"};l.defineLocale("kk",{months:"\u049b\u0430\u04a3\u0442\u0430\u0440_\u0430\u049b\u043f\u0430\u043d_\u043d\u0430\u0443\u0440\u044b\u0437_\u0441\u04d9\u0443\u0456\u0440_\u043c\u0430\u043c\u044b\u0440_\u043c\u0430\u0443\u0441\u044b\u043c_\u0448\u0456\u043b\u0434\u0435_\u0442\u0430\u043c\u044b\u0437_\u049b\u044b\u0440\u043a\u04af\u0439\u0435\u043a_\u049b\u0430\u0437\u0430\u043d_\u049b\u0430\u0440\u0430\u0448\u0430_\u0436\u0435\u043b\u0442\u043e\u049b\u0441\u0430\u043d".split("_"),monthsShort:"\u049b\u0430\u04a3_\u0430\u049b\u043f_\u043d\u0430\u0443_\u0441\u04d9\u0443_\u043c\u0430\u043c_\u043c\u0430\u0443_\u0448\u0456\u043b_\u0442\u0430\u043c_\u049b\u044b\u0440_\u049b\u0430\u0437_\u049b\u0430\u0440_\u0436\u0435\u043b".split("_"),weekdays:"\u0436\u0435\u043a\u0441\u0435\u043d\u0431\u0456_\u0434\u04af\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0441\u04d9\u0440\u0441\u0435\u043d\u0431\u0456_\u0431\u0435\u0439\u0441\u0435\u043d\u0431\u0456_\u0436\u04b1\u043c\u0430_\u0441\u0435\u043d\u0431\u0456".split("_"),weekdaysShort:"\u0436\u0435\u043a_\u0434\u04af\u0439_\u0441\u0435\u0439_\u0441\u04d9\u0440_\u0431\u0435\u0439_\u0436\u04b1\u043c_\u0441\u0435\u043d".split("_"),weekdaysMin:"\u0436\u043a_\u0434\u0439_\u0441\u0439_\u0441\u0440_\u0431\u0439_\u0436\u043c_\u0441\u043d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u0456\u043d \u0441\u0430\u0493\u0430\u0442] LT",nextDay:"[\u0415\u0440\u0442\u0435\u04a3 \u0441\u0430\u0493\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0493\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0448\u0435 \u0441\u0430\u0493\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u0435\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u04a3] dddd [\u0441\u0430\u0493\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0456\u0448\u0456\u043d\u0434\u0435",past:"%s \u0431\u04b1\u0440\u044b\u043d",s:"\u0431\u0456\u0440\u043d\u0435\u0448\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0456\u0440 \u043c\u0438\u043d\u0443\u0442",mm:"%d \u043c\u0438\u043d\u0443\u0442",h:"\u0431\u0456\u0440 \u0441\u0430\u0493\u0430\u0442",hh:"%d \u0441\u0430\u0493\u0430\u0442",d:"\u0431\u0456\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0456\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0456\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0448\u0456|\u0448\u044b)/,ordinal:function(e){return e+(Ks[e]||Ks[e%10]||Ks[100<=e?100:null])},week:{dow:1,doy:7}});var $s={1:"\u17e1",2:"\u17e2",3:"\u17e3",4:"\u17e4",5:"\u17e5",6:"\u17e6",7:"\u17e7",8:"\u17e8",9:"\u17e9",0:"\u17e0"},Zs={"\u17e1":"1","\u17e2":"2","\u17e3":"3","\u17e4":"4","\u17e5":"5","\u17e6":"6","\u17e7":"7","\u17e8":"8","\u17e9":"9","\u17e0":"0"};l.defineLocale("km",{months:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),monthsShort:"\u1798\u1780\u179a\u17b6_\u1780\u17bb\u1798\u17d2\u1797\u17c8_\u1798\u17b8\u1793\u17b6_\u1798\u17c1\u179f\u17b6_\u17a7\u179f\u1797\u17b6_\u1798\u17b7\u1790\u17bb\u1793\u17b6_\u1780\u1780\u17d2\u1780\u178a\u17b6_\u179f\u17b8\u17a0\u17b6_\u1780\u1789\u17d2\u1789\u17b6_\u178f\u17bb\u179b\u17b6_\u179c\u17b7\u1785\u17d2\u1786\u17b7\u1780\u17b6_\u1792\u17d2\u1793\u17bc".split("_"),weekdays:"\u17a2\u17b6\u1791\u17b7\u178f\u17d2\u1799_\u1785\u17d0\u1793\u17d2\u1791_\u17a2\u1784\u17d2\u1782\u17b6\u179a_\u1796\u17bb\u1792_\u1796\u17d2\u179a\u17a0\u179f\u17d2\u1794\u178f\u17b7\u17cd_\u179f\u17bb\u1780\u17d2\u179a_\u179f\u17c5\u179a\u17cd".split("_"),weekdaysShort:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysMin:"\u17a2\u17b6_\u1785_\u17a2_\u1796_\u1796\u17d2\u179a_\u179f\u17bb_\u179f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u1796\u17d2\u179a\u17b9\u1780|\u179b\u17d2\u1784\u17b6\u1785/,isPM:function(e){return"\u179b\u17d2\u1784\u17b6\u1785"===e},meridiem:function(e,a,t){return e<12?"\u1796\u17d2\u179a\u17b9\u1780":"\u179b\u17d2\u1784\u17b6\u1785"},calendar:{sameDay:"[\u1790\u17d2\u1784\u17c3\u1793\u17c1\u17c7 \u1798\u17c9\u17c4\u1784] LT",nextDay:"[\u179f\u17d2\u17a2\u17c2\u1780 \u1798\u17c9\u17c4\u1784] LT",nextWeek:"dddd [\u1798\u17c9\u17c4\u1784] LT",lastDay:"[\u1798\u17d2\u179f\u17b7\u179b\u1798\u17b7\u1789 \u1798\u17c9\u17c4\u1784] LT",lastWeek:"dddd [\u179f\u1794\u17d2\u178f\u17b6\u17a0\u17cd\u1798\u17bb\u1793] [\u1798\u17c9\u17c4\u1784] LT",sameElse:"L"},relativeTime:{future:"%s\u1791\u17c0\u178f",past:"%s\u1798\u17bb\u1793",s:"\u1794\u17c9\u17bb\u1793\u17d2\u1798\u17b6\u1793\u179c\u17b7\u1793\u17b6\u1791\u17b8",ss:"%d \u179c\u17b7\u1793\u17b6\u1791\u17b8",m:"\u1798\u17bd\u1799\u1793\u17b6\u1791\u17b8",mm:"%d \u1793\u17b6\u1791\u17b8",h:"\u1798\u17bd\u1799\u1798\u17c9\u17c4\u1784",hh:"%d \u1798\u17c9\u17c4\u1784",d:"\u1798\u17bd\u1799\u1790\u17d2\u1784\u17c3",dd:"%d \u1790\u17d2\u1784\u17c3",M:"\u1798\u17bd\u1799\u1781\u17c2",MM:"%d \u1781\u17c2",y:"\u1798\u17bd\u1799\u1786\u17d2\u1793\u17b6\u17c6",yy:"%d \u1786\u17d2\u1793\u17b6\u17c6"},dayOfMonthOrdinalParse:/\u1791\u17b8\d{1,2}/,ordinal:"\u1791\u17b8%d",preparse:function(e){return e.replace(/[\u17e1\u17e2\u17e3\u17e4\u17e5\u17e6\u17e7\u17e8\u17e9\u17e0]/g,function(e){return Zs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return $s[e]})},week:{dow:1,doy:4}});var Bs={1:"\u0ce7",2:"\u0ce8",3:"\u0ce9",4:"\u0cea",5:"\u0ceb",6:"\u0cec",7:"\u0ced",8:"\u0cee",9:"\u0cef",0:"\u0ce6"},qs={"\u0ce7":"1","\u0ce8":"2","\u0ce9":"3","\u0cea":"4","\u0ceb":"5","\u0cec":"6","\u0ced":"7","\u0cee":"8","\u0cef":"9","\u0ce6":"0"};l.defineLocale("kn",{months:"\u0c9c\u0ca8\u0cb5\u0cb0\u0cbf_\u0cab\u0cc6\u0cac\u0ccd\u0cb0\u0cb5\u0cb0\u0cbf_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5\u0cac\u0cb0\u0ccd_\u0ca8\u0cb5\u0cc6\u0c82\u0cac\u0cb0\u0ccd_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82\u0cac\u0cb0\u0ccd".split("_"),monthsShort:"\u0c9c\u0ca8_\u0cab\u0cc6\u0cac\u0ccd\u0cb0_\u0cae\u0cbe\u0cb0\u0ccd\u0c9a\u0ccd_\u0c8f\u0caa\u0ccd\u0cb0\u0cbf\u0cb2\u0ccd_\u0cae\u0cc6\u0cd5_\u0c9c\u0cc2\u0ca8\u0ccd_\u0c9c\u0cc1\u0cb2\u0cc6\u0cd6_\u0c86\u0c97\u0cb8\u0ccd\u0c9f\u0ccd_\u0cb8\u0cc6\u0caa\u0ccd\u0c9f\u0cc6\u0c82_\u0c85\u0c95\u0ccd\u0c9f\u0cc6\u0cc2\u0cd5_\u0ca8\u0cb5\u0cc6\u0c82_\u0ca1\u0cbf\u0cb8\u0cc6\u0c82".split("_"),monthsParseExact:!0,weekdays:"\u0cad\u0cbe\u0ca8\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae\u0cb5\u0cbe\u0cb0_\u0cae\u0c82\u0c97\u0cb3\u0cb5\u0cbe\u0cb0_\u0cac\u0cc1\u0ca7\u0cb5\u0cbe\u0cb0_\u0c97\u0cc1\u0cb0\u0cc1\u0cb5\u0cbe\u0cb0_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0\u0cb5\u0cbe\u0cb0_\u0cb6\u0ca8\u0cbf\u0cb5\u0cbe\u0cb0".split("_"),weekdaysShort:"\u0cad\u0cbe\u0ca8\u0cc1_\u0cb8\u0cc6\u0cc2\u0cd5\u0cae_\u0cae\u0c82\u0c97\u0cb3_\u0cac\u0cc1\u0ca7_\u0c97\u0cc1\u0cb0\u0cc1_\u0cb6\u0cc1\u0c95\u0ccd\u0cb0_\u0cb6\u0ca8\u0cbf".split("_"),weekdaysMin:"\u0cad\u0cbe_\u0cb8\u0cc6\u0cc2\u0cd5_\u0cae\u0c82_\u0cac\u0cc1_\u0c97\u0cc1_\u0cb6\u0cc1_\u0cb6".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c87\u0c82\u0ca6\u0cc1] LT",nextDay:"[\u0ca8\u0cbe\u0cb3\u0cc6] LT",nextWeek:"dddd, LT",lastDay:"[\u0ca8\u0cbf\u0ca8\u0ccd\u0ca8\u0cc6] LT",lastWeek:"[\u0c95\u0cc6\u0cc2\u0ca8\u0cc6\u0caf] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0ca8\u0c82\u0ca4\u0cb0",past:"%s \u0cb9\u0cbf\u0c82\u0ca6\u0cc6",s:"\u0c95\u0cc6\u0cb2\u0cb5\u0cc1 \u0c95\u0ccd\u0cb7\u0ca3\u0c97\u0cb3\u0cc1",ss:"%d \u0cb8\u0cc6\u0c95\u0cc6\u0c82\u0ca1\u0cc1\u0c97\u0cb3\u0cc1",m:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",mm:"%d \u0ca8\u0cbf\u0cae\u0cbf\u0cb7",h:"\u0c92\u0c82\u0ca6\u0cc1 \u0c97\u0c82\u0c9f\u0cc6",hh:"%d \u0c97\u0c82\u0c9f\u0cc6",d:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca6\u0cbf\u0ca8",dd:"%d \u0ca6\u0cbf\u0ca8",M:"\u0c92\u0c82\u0ca6\u0cc1 \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",MM:"%d \u0ca4\u0cbf\u0c82\u0c97\u0cb3\u0cc1",y:"\u0c92\u0c82\u0ca6\u0cc1 \u0cb5\u0cb0\u0ccd\u0cb7",yy:"%d \u0cb5\u0cb0\u0ccd\u0cb7"},preparse:function(e){return e.replace(/[\u0ce7\u0ce8\u0ce9\u0cea\u0ceb\u0cec\u0ced\u0cee\u0cef\u0ce6]/g,function(e){return qs[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Bs[e]})},meridiemParse:/\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf|\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6|\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8|\u0cb8\u0c82\u0c9c\u0cc6/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"===a?e<4?e:e+12:"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6"===a?e:"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8"===a?10<=e?e:e+12:"\u0cb8\u0c82\u0c9c\u0cc6"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf":e<10?"\u0cac\u0cc6\u0cb3\u0cbf\u0c97\u0ccd\u0c97\u0cc6":e<17?"\u0cae\u0ca7\u0ccd\u0caf\u0cbe\u0cb9\u0ccd\u0ca8":e<20?"\u0cb8\u0c82\u0c9c\u0cc6":"\u0cb0\u0cbe\u0ca4\u0ccd\u0cb0\u0cbf"},dayOfMonthOrdinalParse:/\d{1,2}(\u0ca8\u0cc6\u0cd5)/,ordinal:function(e){return e+"\u0ca8\u0cc6\u0cd5"},week:{dow:0,doy:6}}),l.defineLocale("ko",{months:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),monthsShort:"1\uc6d4_2\uc6d4_3\uc6d4_4\uc6d4_5\uc6d4_6\uc6d4_7\uc6d4_8\uc6d4_9\uc6d4_10\uc6d4_11\uc6d4_12\uc6d4".split("_"),weekdays:"\uc77c\uc694\uc77c_\uc6d4\uc694\uc77c_\ud654\uc694\uc77c_\uc218\uc694\uc77c_\ubaa9\uc694\uc77c_\uae08\uc694\uc77c_\ud1a0\uc694\uc77c".split("_"),weekdaysShort:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),weekdaysMin:"\uc77c_\uc6d4_\ud654_\uc218_\ubaa9_\uae08_\ud1a0".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"YYYY.MM.DD.",LL:"YYYY\ub144 MMMM D\uc77c",LLL:"YYYY\ub144 MMMM D\uc77c A h:mm",LLLL:"YYYY\ub144 MMMM D\uc77c dddd A h:mm",l:"YYYY.MM.DD.",ll:"YYYY\ub144 MMMM D\uc77c",lll:"YYYY\ub144 MMMM D\uc77c A h:mm",llll:"YYYY\ub144 MMMM D\uc77c dddd A h:mm"},calendar:{sameDay:"\uc624\ub298 LT",nextDay:"\ub0b4\uc77c LT",nextWeek:"dddd LT",lastDay:"\uc5b4\uc81c LT",lastWeek:"\uc9c0\ub09c\uc8fc dddd LT",sameElse:"L"},relativeTime:{future:"%s \ud6c4",past:"%s \uc804",s:"\uba87 \ucd08",ss:"%d\ucd08",m:"1\ubd84",mm:"%d\ubd84",h:"\ud55c \uc2dc\uac04",hh:"%d\uc2dc\uac04",d:"\ud558\ub8e8",dd:"%d\uc77c",M:"\ud55c \ub2ec",MM:"%d\ub2ec",y:"\uc77c \ub144",yy:"%d\ub144"},dayOfMonthOrdinalParse:/\d{1,2}(\uc77c|\uc6d4|\uc8fc)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\uc77c";case"M":return e+"\uc6d4";case"w":case"W":return e+"\uc8fc";default:return e}},meridiemParse:/\uc624\uc804|\uc624\ud6c4/,isPM:function(e){return"\uc624\ud6c4"===e},meridiem:function(e,a,t){return e<12?"\uc624\uc804":"\uc624\ud6c4"}});var Qs={1:"\u0661",2:"\u0662",3:"\u0663",4:"\u0664",5:"\u0665",6:"\u0666",7:"\u0667",8:"\u0668",9:"\u0669",0:"\u0660"},Xs={"\u0661":"1","\u0662":"2","\u0663":"3","\u0664":"4","\u0665":"5","\u0666":"6","\u0667":"7","\u0668":"8","\u0669":"9","\u0660":"0"},en=["\u06a9\u0627\u0646\u0648\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0634\u0648\u0628\u0627\u062a","\u0626\u0627\u0632\u0627\u0631","\u0646\u06cc\u0633\u0627\u0646","\u0626\u0627\u06cc\u0627\u0631","\u062d\u0648\u0632\u06d5\u06cc\u0631\u0627\u0646","\u062a\u06d5\u0645\u0645\u0648\u0632","\u0626\u0627\u0628","\u0626\u06d5\u06cc\u0644\u0648\u0648\u0644","\u062a\u0634\u0631\u06cc\u0646\u06cc \u06cc\u06d5\u0643\u06d5\u0645","\u062a\u0634\u0631\u06cc\u0646\u06cc \u062f\u0648\u0648\u06d5\u0645","\u0643\u0627\u0646\u0648\u0646\u06cc \u06cc\u06d5\u06a9\u06d5\u0645"];l.defineLocale("ku",{months:en,monthsShort:en,weekdays:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u062f\u0648\u0648\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0633\u06ce\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645\u0645\u0647\u200c_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysShort:"\u06cc\u0647\u200c\u0643\u0634\u0647\u200c\u0645_\u062f\u0648\u0648\u0634\u0647\u200c\u0645_\u0633\u06ce\u0634\u0647\u200c\u0645_\u0686\u0648\u0627\u0631\u0634\u0647\u200c\u0645_\u067e\u06ce\u0646\u062c\u0634\u0647\u200c\u0645_\u0647\u0647\u200c\u06cc\u0646\u06cc_\u0634\u0647\u200c\u0645\u0645\u0647\u200c".split("_"),weekdaysMin:"\u06cc_\u062f_\u0633_\u0686_\u067e_\u0647_\u0634".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},meridiemParse:/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c|\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc/,isPM:function(e){return/\u0626\u06ce\u0648\u0627\u0631\u0647\u200c/.test(e)},meridiem:function(e,a,t){return e<12?"\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc":"\u0626\u06ce\u0648\u0627\u0631\u0647\u200c"},calendar:{sameDay:"[\u0626\u0647\u200c\u0645\u0631\u06c6 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextDay:"[\u0628\u0647\u200c\u06cc\u0627\u0646\u06cc \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",nextWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastDay:"[\u062f\u0648\u06ce\u0646\u06ce \u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",lastWeek:"dddd [\u0643\u0627\u062a\u0698\u0645\u06ce\u0631] LT",sameElse:"L"},relativeTime:{future:"\u0644\u0647\u200c %s",past:"%s",s:"\u0686\u0647\u200c\u0646\u062f \u0686\u0631\u0643\u0647\u200c\u06cc\u0647\u200c\u0643",ss:"\u0686\u0631\u0643\u0647\u200c %d",m:"\u06cc\u0647\u200c\u0643 \u062e\u0648\u0644\u0647\u200c\u0643",mm:"%d \u062e\u0648\u0644\u0647\u200c\u0643",h:"\u06cc\u0647\u200c\u0643 \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",hh:"%d \u0643\u0627\u062a\u0698\u0645\u06ce\u0631",d:"\u06cc\u0647\u200c\u0643 \u0695\u06c6\u0698",dd:"%d \u0695\u06c6\u0698",M:"\u06cc\u0647\u200c\u0643 \u0645\u0627\u0646\u06af",MM:"%d \u0645\u0627\u0646\u06af",y:"\u06cc\u0647\u200c\u0643 \u0633\u0627\u06b5",yy:"%d \u0633\u0627\u06b5"},preparse:function(e){return e.replace(/[\u0661\u0662\u0663\u0664\u0665\u0666\u0667\u0668\u0669\u0660]/g,function(e){return Xs[e]}).replace(/\u060c/g,",")},postformat:function(e){return e.replace(/\d/g,function(e){return Qs[e]}).replace(/,/g,"\u060c")},week:{dow:6,doy:12}});var an={0:"-\u0447\u04af",1:"-\u0447\u0438",2:"-\u0447\u0438",3:"-\u0447\u04af",4:"-\u0447\u04af",5:"-\u0447\u0438",6:"-\u0447\u044b",7:"-\u0447\u0438",8:"-\u0447\u0438",9:"-\u0447\u0443",10:"-\u0447\u0443",20:"-\u0447\u044b",30:"-\u0447\u0443",40:"-\u0447\u044b",50:"-\u0447\u04af",60:"-\u0447\u044b",70:"-\u0447\u0438",80:"-\u0447\u0438",90:"-\u0447\u0443",100:"-\u0447\u04af"};function tn(e,a,t,s){var n={m:["eng Minutt","enger Minutt"],h:["eng Stonn","enger Stonn"],d:["een Dag","engem Dag"],M:["ee Mount","engem Mount"],y:["ee Joer","engem Joer"]};return a?n[t][0]:n[t][1]}function sn(e){if(e=parseInt(e,10),isNaN(e))return!1;if(e<0)return!0;if(e<10)return 4<=e&&e<=7;if(e<100){var a=e%10;return sn(0===a?e/10:a)}if(e<1e4){for(;10<=e;)e/=10;return sn(e)}return sn(e/=1e3)}l.defineLocale("ky",{months:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u0416\u0435\u043a\u0448\u0435\u043c\u0431\u0438_\u0414\u04af\u0439\u0448\u04e9\u043c\u0431\u04af_\u0428\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0428\u0430\u0440\u0448\u0435\u043c\u0431\u0438_\u0411\u0435\u0439\u0448\u0435\u043c\u0431\u0438_\u0416\u0443\u043c\u0430_\u0418\u0448\u0435\u043c\u0431\u0438".split("_"),weekdaysShort:"\u0416\u0435\u043a_\u0414\u04af\u0439_\u0428\u0435\u0439_\u0428\u0430\u0440_\u0411\u0435\u0439_\u0416\u0443\u043c_\u0418\u0448\u0435".split("_"),weekdaysMin:"\u0416\u043a_\u0414\u0439_\u0428\u0439_\u0428\u0440_\u0411\u0439_\u0416\u043c_\u0418\u0448".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0411\u04af\u0433\u04af\u043d \u0441\u0430\u0430\u0442] LT",nextDay:"[\u042d\u0440\u0442\u0435\u04a3 \u0441\u0430\u0430\u0442] LT",nextWeek:"dddd [\u0441\u0430\u0430\u0442] LT",lastDay:"[\u041a\u0435\u0447\u044d\u044d \u0441\u0430\u0430\u0442] LT",lastWeek:"[\u04e8\u0442\u043a\u04e9\u043d \u0430\u043f\u0442\u0430\u043d\u044b\u043d] dddd [\u043a\u04af\u043d\u04af] [\u0441\u0430\u0430\u0442] LT",sameElse:"L"},relativeTime:{future:"%s \u0438\u0447\u0438\u043d\u0434\u0435",past:"%s \u043c\u0443\u0440\u0443\u043d",s:"\u0431\u0438\u0440\u043d\u0435\u0447\u0435 \u0441\u0435\u043a\u0443\u043d\u0434",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434",m:"\u0431\u0438\u0440 \u043c\u04af\u043d\u04e9\u0442",mm:"%d \u043c\u04af\u043d\u04e9\u0442",h:"\u0431\u0438\u0440 \u0441\u0430\u0430\u0442",hh:"%d \u0441\u0430\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u04af\u043d",dd:"%d \u043a\u04af\u043d",M:"\u0431\u0438\u0440 \u0430\u0439",MM:"%d \u0430\u0439",y:"\u0431\u0438\u0440 \u0436\u044b\u043b",yy:"%d \u0436\u044b\u043b"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0447\u0438|\u0447\u044b|\u0447\u04af|\u0447\u0443)/,ordinal:function(e){return e+(an[e]||an[e%10]||an[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("lb",{months:"Januar_Februar_M\xe4erz_Abr\xebll_Mee_Juni_Juli_August_September_Oktober_November_Dezember".split("_"),monthsShort:"Jan._Febr._Mrz._Abr._Mee_Jun._Jul._Aug._Sept._Okt._Nov._Dez.".split("_"),monthsParseExact:!0,weekdays:"Sonndeg_M\xe9indeg_D\xebnschdeg_M\xebttwoch_Donneschdeg_Freideg_Samschdeg".split("_"),weekdaysShort:"So._M\xe9._D\xeb._M\xeb._Do._Fr._Sa.".split("_"),weekdaysMin:"So_M\xe9_D\xeb_M\xeb_Do_Fr_Sa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm [Auer]",LTS:"H:mm:ss [Auer]",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm [Auer]",LLLL:"dddd, D. MMMM YYYY H:mm [Auer]"},calendar:{sameDay:"[Haut um] LT",sameElse:"L",nextDay:"[Muer um] LT",nextWeek:"dddd [um] LT",lastDay:"[G\xebschter um] LT",lastWeek:function(){switch(this.day()){case 2:case 4:return"[Leschten] dddd [um] LT";default:return"[Leschte] dddd [um] LT"}}},relativeTime:{future:function(e){return sn(e.substr(0,e.indexOf(" ")))?"a "+e:"an "+e},past:function(e){return sn(e.substr(0,e.indexOf(" ")))?"viru "+e:"virun "+e},s:"e puer Sekonnen",ss:"%d Sekonnen",m:tn,mm:"%d Minutten",h:tn,hh:"%d Stonnen",d:tn,dd:"%d Deeg",M:tn,MM:"%d M\xe9int",y:tn,yy:"%d Joer"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("lo",{months:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),monthsShort:"\u0ea1\u0eb1\u0e87\u0e81\u0ead\u0e99_\u0e81\u0eb8\u0ea1\u0e9e\u0eb2_\u0ea1\u0eb5\u0e99\u0eb2_\u0ec0\u0ea1\u0eaa\u0eb2_\u0e9e\u0eb6\u0e94\u0eaa\u0eb0\u0e9e\u0eb2_\u0ea1\u0eb4\u0e96\u0eb8\u0e99\u0eb2_\u0e81\u0ecd\u0ea5\u0eb0\u0e81\u0ebb\u0e94_\u0eaa\u0eb4\u0e87\u0eab\u0eb2_\u0e81\u0eb1\u0e99\u0e8d\u0eb2_\u0e95\u0eb8\u0ea5\u0eb2_\u0e9e\u0eb0\u0e88\u0eb4\u0e81_\u0e97\u0eb1\u0e99\u0ea7\u0eb2".split("_"),weekdays:"\u0ead\u0eb2\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysShort:"\u0e97\u0eb4\u0e94_\u0e88\u0eb1\u0e99_\u0ead\u0eb1\u0e87\u0e84\u0eb2\u0e99_\u0e9e\u0eb8\u0e94_\u0e9e\u0eb0\u0eab\u0eb1\u0e94_\u0eaa\u0eb8\u0e81_\u0ec0\u0eaa\u0ebb\u0eb2".split("_"),weekdaysMin:"\u0e97_\u0e88_\u0ead\u0e84_\u0e9e_\u0e9e\u0eab_\u0eaa\u0e81_\u0eaa".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"\u0ea7\u0eb1\u0e99dddd D MMMM YYYY HH:mm"},meridiemParse:/\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2|\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87/,isPM:function(e){return"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"===e},meridiem:function(e,a,t){return e<12?"\u0e95\u0ead\u0e99\u0ec0\u0e8a\u0ebb\u0ec9\u0eb2":"\u0e95\u0ead\u0e99\u0ec1\u0ea5\u0e87"},calendar:{sameDay:"[\u0ea1\u0eb7\u0ec9\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextDay:"[\u0ea1\u0eb7\u0ec9\u0ead\u0eb7\u0ec8\u0e99\u0ec0\u0ea7\u0ea5\u0eb2] LT",nextWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0edc\u0ec9\u0eb2\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastDay:"[\u0ea1\u0eb7\u0ec9\u0ea7\u0eb2\u0e99\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",lastWeek:"[\u0ea7\u0eb1\u0e99]dddd[\u0ec1\u0ea5\u0ec9\u0ea7\u0e99\u0eb5\u0ec9\u0ec0\u0ea7\u0ea5\u0eb2] LT",sameElse:"L"},relativeTime:{future:"\u0ead\u0eb5\u0e81 %s",past:"%s\u0e9c\u0ec8\u0eb2\u0e99\u0ea1\u0eb2",s:"\u0e9a\u0ecd\u0ec8\u0ec0\u0e97\u0ebb\u0ec8\u0eb2\u0ec3\u0e94\u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",ss:"%d \u0ea7\u0eb4\u0e99\u0eb2\u0e97\u0eb5",m:"1 \u0e99\u0eb2\u0e97\u0eb5",mm:"%d \u0e99\u0eb2\u0e97\u0eb5",h:"1 \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",hh:"%d \u0e8a\u0ebb\u0ec8\u0ea7\u0ec2\u0ea1\u0e87",d:"1 \u0ea1\u0eb7\u0ec9",dd:"%d \u0ea1\u0eb7\u0ec9",M:"1 \u0ec0\u0e94\u0eb7\u0ead\u0e99",MM:"%d \u0ec0\u0e94\u0eb7\u0ead\u0e99",y:"1 \u0e9b\u0eb5",yy:"%d \u0e9b\u0eb5"},dayOfMonthOrdinalParse:/(\u0e97\u0eb5\u0ec8)\d{1,2}/,ordinal:function(e){return"\u0e97\u0eb5\u0ec8"+e}});var nn={ss:"sekund\u0117_sekund\u017ei\u0173_sekundes",m:"minut\u0117_minut\u0117s_minut\u0119",mm:"minut\u0117s_minu\u010di\u0173_minutes",h:"valanda_valandos_valand\u0105",hh:"valandos_valand\u0173_valandas",d:"diena_dienos_dien\u0105",dd:"dienos_dien\u0173_dienas",M:"m\u0117nuo_m\u0117nesio_m\u0117nes\u012f",MM:"m\u0117nesiai_m\u0117nesi\u0173_m\u0117nesius",y:"metai_met\u0173_metus",yy:"metai_met\u0173_metus"};function dn(e,a,t,s){return a?_n(t)[0]:s?_n(t)[1]:_n(t)[2]}function rn(e){return e%10==0||10<e&&e<20}function _n(e){return nn[e].split("_")}function on(e,a,t,s){var n=e+" ";return 1===e?n+dn(0,a,t[0],s):a?n+(rn(e)?_n(t)[1]:_n(t)[0]):s?n+_n(t)[1]:n+(rn(e)?_n(t)[1]:_n(t)[2])}l.defineLocale("lt",{months:{format:"sausio_vasario_kovo_baland\u017eio_gegu\u017e\u0117s_bir\u017eelio_liepos_rugpj\u016b\u010dio_rugs\u0117jo_spalio_lapkri\u010dio_gruod\u017eio".split("_"),standalone:"sausis_vasaris_kovas_balandis_gegu\u017e\u0117_bir\u017eelis_liepa_rugpj\u016btis_rugs\u0117jis_spalis_lapkritis_gruodis".split("_"),isFormat:/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?|MMMM?(\[[^\[\]]*\]|\s)+D[oD]?/},monthsShort:"sau_vas_kov_bal_geg_bir_lie_rgp_rgs_spa_lap_grd".split("_"),weekdays:{format:"sekmadien\u012f_pirmadien\u012f_antradien\u012f_tre\u010diadien\u012f_ketvirtadien\u012f_penktadien\u012f_\u0161e\u0161tadien\u012f".split("_"),standalone:"sekmadienis_pirmadienis_antradienis_tre\u010diadienis_ketvirtadienis_penktadienis_\u0161e\u0161tadienis".split("_"),isFormat:/dddd HH:mm/},weekdaysShort:"Sek_Pir_Ant_Tre_Ket_Pen_\u0160e\u0161".split("_"),weekdaysMin:"S_P_A_T_K_Pn_\u0160".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY [m.] MMMM D [d.]",LLL:"YYYY [m.] MMMM D [d.], HH:mm [val.]",LLLL:"YYYY [m.] MMMM D [d.], dddd, HH:mm [val.]",l:"YYYY-MM-DD",ll:"YYYY [m.] MMMM D [d.]",lll:"YYYY [m.] MMMM D [d.], HH:mm [val.]",llll:"YYYY [m.] MMMM D [d.], ddd, HH:mm [val.]"},calendar:{sameDay:"[\u0160iandien] LT",nextDay:"[Rytoj] LT",nextWeek:"dddd LT",lastDay:"[Vakar] LT",lastWeek:"[Pra\u0117jus\u012f] dddd LT",sameElse:"L"},relativeTime:{future:"po %s",past:"prie\u0161 %s",s:function(e,a,t,s){return a?"kelios sekund\u0117s":s?"keli\u0173 sekund\u017ei\u0173":"kelias sekundes"},ss:on,m:dn,mm:on,h:dn,hh:on,d:dn,dd:on,M:dn,MM:on,y:dn,yy:on},dayOfMonthOrdinalParse:/\d{1,2}-oji/,ordinal:function(e){return e+"-oji"},week:{dow:1,doy:4}});var mn={ss:"sekundes_sekund\u0113m_sekunde_sekundes".split("_"),m:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),mm:"min\u016btes_min\u016bt\u0113m_min\u016bte_min\u016btes".split("_"),h:"stundas_stund\u0101m_stunda_stundas".split("_"),hh:"stundas_stund\u0101m_stunda_stundas".split("_"),d:"dienas_dien\u0101m_diena_dienas".split("_"),dd:"dienas_dien\u0101m_diena_dienas".split("_"),M:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),MM:"m\u0113ne\u0161a_m\u0113ne\u0161iem_m\u0113nesis_m\u0113ne\u0161i".split("_"),y:"gada_gadiem_gads_gadi".split("_"),yy:"gada_gadiem_gads_gadi".split("_")};function un(e,a,t){return t?a%10==1&&a%100!=11?e[2]:e[3]:a%10==1&&a%100!=11?e[0]:e[1]}function ln(e,a,t){return e+" "+un(mn[t],e,a)}function Mn(e,a,t){return un(mn[t],e,a)}l.defineLocale("lv",{months:"janv\u0101ris_febru\u0101ris_marts_apr\u012blis_maijs_j\u016bnijs_j\u016blijs_augusts_septembris_oktobris_novembris_decembris".split("_"),monthsShort:"jan_feb_mar_apr_mai_j\u016bn_j\u016bl_aug_sep_okt_nov_dec".split("_"),weekdays:"sv\u0113tdiena_pirmdiena_otrdiena_tre\u0161diena_ceturtdiena_piektdiena_sestdiena".split("_"),weekdaysShort:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysMin:"Sv_P_O_T_C_Pk_S".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY.",LL:"YYYY. [gada] D. MMMM",LLL:"YYYY. [gada] D. MMMM, HH:mm",LLLL:"YYYY. [gada] D. MMMM, dddd, HH:mm"},calendar:{sameDay:"[\u0160odien pulksten] LT",nextDay:"[R\u012bt pulksten] LT",nextWeek:"dddd [pulksten] LT",lastDay:"[Vakar pulksten] LT",lastWeek:"[Pag\u0101ju\u0161\u0101] dddd [pulksten] LT",sameElse:"L"},relativeTime:{future:"p\u0113c %s",past:"pirms %s",s:function(e,a){return a?"da\u017eas sekundes":"da\u017e\u0101m sekund\u0113m"},ss:ln,m:Mn,mm:ln,h:Mn,hh:ln,d:Mn,dd:ln,M:Mn,MM:ln,y:Mn,yy:ln},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var hn={words:{ss:["sekund","sekunda","sekundi"],m:["jedan minut","jednog minuta"],mm:["minut","minuta","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mjesec","mjeseca","mjeseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=hn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+hn.correctGrammaticalCase(e,s)}};function Ln(e,a,t,s){switch(t){case"s":return a?"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434":"\u0445\u044d\u0434\u0445\u044d\u043d \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d";case"ss":return e+(a?" \u0441\u0435\u043a\u0443\u043d\u0434":" \u0441\u0435\u043a\u0443\u043d\u0434\u044b\u043d");case"m":case"mm":return e+(a?" \u043c\u0438\u043d\u0443\u0442":" \u043c\u0438\u043d\u0443\u0442\u044b\u043d");case"h":case"hh":return e+(a?" \u0446\u0430\u0433":" \u0446\u0430\u0433\u0438\u0439\u043d");case"d":case"dd":return e+(a?" \u04e9\u0434\u04e9\u0440":" \u04e9\u0434\u0440\u0438\u0439\u043d");case"M":case"MM":return e+(a?" \u0441\u0430\u0440":" \u0441\u0430\u0440\u044b\u043d");case"y":case"yy":return e+(a?" \u0436\u0438\u043b":" \u0436\u0438\u043b\u0438\u0439\u043d");default:return e}}l.defineLocale("me",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedjelja_ponedjeljak_utorak_srijeda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sri._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sjutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedjelju] [u] LT";case 3:return"[u] [srijedu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedjelje] [u] LT","[pro\u0161log] [ponedjeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srijede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"prije %s",s:"nekoliko sekundi",ss:hn.translate,m:hn.translate,mm:hn.translate,h:hn.translate,hh:hn.translate,d:"dan",dd:hn.translate,M:"mjesec",MM:hn.translate,y:"godinu",yy:hn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("mi",{months:"Kohi-t\u0101te_Hui-tanguru_Pout\u016b-te-rangi_Paenga-wh\u0101wh\u0101_Haratua_Pipiri_H\u014dngoingoi_Here-turi-k\u014dk\u0101_Mahuru_Whiringa-\u0101-nuku_Whiringa-\u0101-rangi_Hakihea".split("_"),monthsShort:"Kohi_Hui_Pou_Pae_Hara_Pipi_H\u014dngoi_Here_Mahu_Whi-nu_Whi-ra_Haki".split("_"),monthsRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,3}/i,monthsShortStrictRegex:/(?:['a-z\u0101\u014D\u016B]+\-?){1,2}/i,weekdays:"R\u0101tapu_Mane_T\u016brei_Wenerei_T\u0101ite_Paraire_H\u0101tarei".split("_"),weekdaysShort:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),weekdaysMin:"Ta_Ma_T\u016b_We_T\u0101i_Pa_H\u0101".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [i] HH:mm",LLLL:"dddd, D MMMM YYYY [i] HH:mm"},calendar:{sameDay:"[i teie mahana, i] LT",nextDay:"[apopo i] LT",nextWeek:"dddd [i] LT",lastDay:"[inanahi i] LT",lastWeek:"dddd [whakamutunga i] LT",sameElse:"L"},relativeTime:{future:"i roto i %s",past:"%s i mua",s:"te h\u0113kona ruarua",ss:"%d h\u0113kona",m:"he meneti",mm:"%d meneti",h:"te haora",hh:"%d haora",d:"he ra",dd:"%d ra",M:"he marama",MM:"%d marama",y:"he tau",yy:"%d tau"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("mk",{months:"\u0458\u0430\u043d\u0443\u0430\u0440\u0438_\u0444\u0435\u0432\u0440\u0443\u0430\u0440\u0438_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d\u0438_\u0458\u0443\u043b\u0438_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0432\u0440\u0438_\u043e\u043a\u0442\u043e\u043c\u0432\u0440\u0438_\u043d\u043e\u0435\u043c\u0432\u0440\u0438_\u0434\u0435\u043a\u0435\u043c\u0432\u0440\u0438".split("_"),monthsShort:"\u0458\u0430\u043d_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433_\u0441\u0435\u043f_\u043e\u043a\u0442_\u043d\u043e\u0435_\u0434\u0435\u043a".split("_"),weekdays:"\u043d\u0435\u0434\u0435\u043b\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u043e\u043a_\u043f\u0435\u0442\u043e\u043a_\u0441\u0430\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434_\u043f\u043e\u043d_\u0432\u0442\u043e_\u0441\u0440\u0435_\u0447\u0435\u0442_\u043f\u0435\u0442_\u0441\u0430\u0431".split("_"),weekdaysMin:"\u043de_\u043fo_\u0432\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441a".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"D.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[\u0414\u0435\u043d\u0435\u0441 \u0432\u043e] LT",nextDay:"[\u0423\u0442\u0440\u0435 \u0432\u043e] LT",nextWeek:"[\u0412\u043e] dddd [\u0432\u043e] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430 \u0432\u043e] LT",lastWeek:function(){switch(this.day()){case 0:case 3:case 6:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0430\u0442\u0430] dddd [\u0432\u043e] LT";case 1:case 2:case 4:case 5:return"[\u0418\u0437\u043c\u0438\u043d\u0430\u0442\u0438\u043e\u0442] dddd [\u0432\u043e] LT"}},sameElse:"L"},relativeTime:{future:"\u043f\u043e\u0441\u043b\u0435 %s",past:"\u043f\u0440\u0435\u0434 %s",s:"\u043d\u0435\u043a\u043e\u043b\u043a\u0443 \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:"%d \u0441\u0435\u043a\u0443\u043d\u0434\u0438",m:"\u043c\u0438\u043d\u0443\u0442\u0430",mm:"%d \u043c\u0438\u043d\u0443\u0442\u0438",h:"\u0447\u0430\u0441",hh:"%d \u0447\u0430\u0441\u0430",d:"\u0434\u0435\u043d",dd:"%d \u0434\u0435\u043d\u0430",M:"\u043c\u0435\u0441\u0435\u0446",MM:"%d \u043c\u0435\u0441\u0435\u0446\u0438",y:"\u0433\u043e\u0434\u0438\u043d\u0430",yy:"%d \u0433\u043e\u0434\u0438\u043d\u0438"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0435\u0432|\u0435\u043d|\u0442\u0438|\u0432\u0438|\u0440\u0438|\u043c\u0438)/,ordinal:function(e){var a=e%10,t=e%100;return 0===e?e+"-\u0435\u0432":0===t?e+"-\u0435\u043d":10<t&&t<20?e+"-\u0442\u0438":1===a?e+"-\u0432\u0438":2===a?e+"-\u0440\u0438":7===a||8===a?e+"-\u043c\u0438":e+"-\u0442\u0438"},week:{dow:1,doy:7}}),l.defineLocale("ml",{months:"\u0d1c\u0d28\u0d41\u0d35\u0d30\u0d3f_\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41\u0d35\u0d30\u0d3f_\u0d2e\u0d3e\u0d7c\u0d1a\u0d4d\u0d1a\u0d4d_\u0d0f\u0d2a\u0d4d\u0d30\u0d3f\u0d7d_\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48_\u0d13\u0d17\u0d38\u0d4d\u0d31\u0d4d\u0d31\u0d4d_\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31\u0d02\u0d2c\u0d7c_\u0d12\u0d15\u0d4d\u0d1f\u0d4b\u0d2c\u0d7c_\u0d28\u0d35\u0d02\u0d2c\u0d7c_\u0d21\u0d3f\u0d38\u0d02\u0d2c\u0d7c".split("_"),monthsShort:"\u0d1c\u0d28\u0d41._\u0d2b\u0d46\u0d2c\u0d4d\u0d30\u0d41._\u0d2e\u0d3e\u0d7c._\u0d0f\u0d2a\u0d4d\u0d30\u0d3f._\u0d2e\u0d47\u0d2f\u0d4d_\u0d1c\u0d42\u0d7a_\u0d1c\u0d42\u0d32\u0d48._\u0d13\u0d17._\u0d38\u0d46\u0d2a\u0d4d\u0d31\u0d4d\u0d31._\u0d12\u0d15\u0d4d\u0d1f\u0d4b._\u0d28\u0d35\u0d02._\u0d21\u0d3f\u0d38\u0d02.".split("_"),monthsParseExact:!0,weekdays:"\u0d1e\u0d3e\u0d2f\u0d31\u0d3e\u0d34\u0d4d\u0d1a_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d33\u0d3e\u0d34\u0d4d\u0d1a_\u0d1a\u0d4a\u0d35\u0d4d\u0d35\u0d3e\u0d34\u0d4d\u0d1a_\u0d2c\u0d41\u0d27\u0d28\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d3e\u0d34\u0d4d\u0d1a_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a_\u0d36\u0d28\u0d3f\u0d2f\u0d3e\u0d34\u0d4d\u0d1a".split("_"),weekdaysShort:"\u0d1e\u0d3e\u0d2f\u0d7c_\u0d24\u0d3f\u0d19\u0d4d\u0d15\u0d7e_\u0d1a\u0d4a\u0d35\u0d4d\u0d35_\u0d2c\u0d41\u0d27\u0d7b_\u0d35\u0d4d\u0d2f\u0d3e\u0d34\u0d02_\u0d35\u0d46\u0d33\u0d4d\u0d33\u0d3f_\u0d36\u0d28\u0d3f".split("_"),weekdaysMin:"\u0d1e\u0d3e_\u0d24\u0d3f_\u0d1a\u0d4a_\u0d2c\u0d41_\u0d35\u0d4d\u0d2f\u0d3e_\u0d35\u0d46_\u0d36".split("_"),longDateFormat:{LT:"A h:mm -\u0d28\u0d41",LTS:"A h:mm:ss -\u0d28\u0d41",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm -\u0d28\u0d41",LLLL:"dddd, D MMMM YYYY, A h:mm -\u0d28\u0d41"},calendar:{sameDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d4d] LT",nextDay:"[\u0d28\u0d3e\u0d33\u0d46] LT",nextWeek:"dddd, LT",lastDay:"[\u0d07\u0d28\u0d4d\u0d28\u0d32\u0d46] LT",lastWeek:"[\u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d",past:"%s \u0d2e\u0d41\u0d7b\u0d2a\u0d4d",s:"\u0d05\u0d7d\u0d2a \u0d28\u0d3f\u0d2e\u0d3f\u0d37\u0d19\u0d4d\u0d19\u0d7e",ss:"%d \u0d38\u0d46\u0d15\u0d4d\u0d15\u0d7b\u0d21\u0d4d",m:"\u0d12\u0d30\u0d41 \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",mm:"%d \u0d2e\u0d3f\u0d28\u0d3f\u0d31\u0d4d\u0d31\u0d4d",h:"\u0d12\u0d30\u0d41 \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",hh:"%d \u0d2e\u0d23\u0d3f\u0d15\u0d4d\u0d15\u0d42\u0d7c",d:"\u0d12\u0d30\u0d41 \u0d26\u0d3f\u0d35\u0d38\u0d02",dd:"%d \u0d26\u0d3f\u0d35\u0d38\u0d02",M:"\u0d12\u0d30\u0d41 \u0d2e\u0d3e\u0d38\u0d02",MM:"%d \u0d2e\u0d3e\u0d38\u0d02",y:"\u0d12\u0d30\u0d41 \u0d35\u0d7c\u0d37\u0d02",yy:"%d \u0d35\u0d7c\u0d37\u0d02"},meridiemParse:/\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f|\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46|\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d|\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02|\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f/i,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"===a&&4<=e||"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d"===a||"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02"===a?e+12:e},meridiem:function(e,a,t){return e<4?"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f":e<12?"\u0d30\u0d3e\u0d35\u0d3f\u0d32\u0d46":e<17?"\u0d09\u0d1a\u0d4d\u0d1a \u0d15\u0d34\u0d3f\u0d1e\u0d4d\u0d1e\u0d4d":e<20?"\u0d35\u0d48\u0d15\u0d41\u0d28\u0d4d\u0d28\u0d47\u0d30\u0d02":"\u0d30\u0d3e\u0d24\u0d4d\u0d30\u0d3f"}}),l.defineLocale("mn",{months:"\u041d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0425\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0413\u0443\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u04e9\u0440\u04e9\u0432\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0422\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0417\u0443\u0440\u0433\u0430\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0414\u043e\u043b\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u041d\u0430\u0439\u043c\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0415\u0441\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0430\u0432\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u043d\u044d\u0433\u0434\u04af\u0433\u044d\u044d\u0440 \u0441\u0430\u0440_\u0410\u0440\u0432\u0430\u043d \u0445\u043e\u0451\u0440\u0434\u0443\u0433\u0430\u0430\u0440 \u0441\u0430\u0440".split("_"),monthsShort:"1 \u0441\u0430\u0440_2 \u0441\u0430\u0440_3 \u0441\u0430\u0440_4 \u0441\u0430\u0440_5 \u0441\u0430\u0440_6 \u0441\u0430\u0440_7 \u0441\u0430\u0440_8 \u0441\u0430\u0440_9 \u0441\u0430\u0440_10 \u0441\u0430\u0440_11 \u0441\u0430\u0440_12 \u0441\u0430\u0440".split("_"),monthsParseExact:!0,weekdays:"\u041d\u044f\u043c_\u0414\u0430\u0432\u0430\u0430_\u041c\u044f\u0433\u043c\u0430\u0440_\u041b\u0445\u0430\u0433\u0432\u0430_\u041f\u04af\u0440\u044d\u0432_\u0411\u0430\u0430\u0441\u0430\u043d_\u0411\u044f\u043c\u0431\u0430".split("_"),weekdaysShort:"\u041d\u044f\u043c_\u0414\u0430\u0432_\u041c\u044f\u0433_\u041b\u0445\u0430_\u041f\u04af\u0440_\u0411\u0430\u0430_\u0411\u044f\u043c".split("_"),weekdaysMin:"\u041d\u044f_\u0414\u0430_\u041c\u044f_\u041b\u0445_\u041f\u04af_\u0411\u0430_\u0411\u044f".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D",LLL:"YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm",LLLL:"dddd, YYYY \u043e\u043d\u044b MMMM\u044b\u043d D HH:mm"},meridiemParse:/\u04ae\u04e8|\u04ae\u0425/i,isPM:function(e){return"\u04ae\u0425"===e},meridiem:function(e,a,t){return e<12?"\u04ae\u04e8":"\u04ae\u0425"},calendar:{sameDay:"[\u04e8\u043d\u04e9\u04e9\u0434\u04e9\u0440] LT",nextDay:"[\u041c\u0430\u0440\u0433\u0430\u0430\u0448] LT",nextWeek:"[\u0418\u0440\u044d\u0445] dddd LT",lastDay:"[\u04e8\u0447\u0438\u0433\u0434\u04e9\u0440] LT",lastWeek:"[\u04e8\u043d\u0433\u04e9\u0440\u0441\u04e9\u043d] dddd LT",sameElse:"L"},relativeTime:{future:"%s \u0434\u0430\u0440\u0430\u0430",past:"%s \u04e9\u043c\u043d\u04e9",s:Ln,ss:Ln,m:Ln,mm:Ln,h:Ln,hh:Ln,d:Ln,dd:Ln,M:Ln,MM:Ln,y:Ln,yy:Ln},dayOfMonthOrdinalParse:/\d{1,2} \u04e9\u0434\u04e9\u0440/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+" \u04e9\u0434\u04e9\u0440";default:return e}}});var cn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Yn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};function yn(e,a,t,s){var n="";if(a)switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926";break;case"m":n="\u090f\u0915 \u092e\u093f\u0928\u093f\u091f";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u0947";break;case"h":n="\u090f\u0915 \u0924\u093e\u0938";break;case"hh":n="%d \u0924\u093e\u0938";break;case"d":n="\u090f\u0915 \u0926\u093f\u0935\u0938";break;case"dd":n="%d \u0926\u093f\u0935\u0938";break;case"M":n="\u090f\u0915 \u092e\u0939\u093f\u0928\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u0947";break;case"y":n="\u090f\u0915 \u0935\u0930\u094d\u0937";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u0947";break}else switch(t){case"s":n="\u0915\u093e\u0939\u0940 \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"ss":n="%d \u0938\u0947\u0915\u0902\u0926\u093e\u0902";break;case"m":n="\u090f\u0915\u093e \u092e\u093f\u0928\u093f\u091f\u093e";break;case"mm":n="%d \u092e\u093f\u0928\u093f\u091f\u093e\u0902";break;case"h":n="\u090f\u0915\u093e \u0924\u093e\u0938\u093e";break;case"hh":n="%d \u0924\u093e\u0938\u093e\u0902";break;case"d":n="\u090f\u0915\u093e \u0926\u093f\u0935\u0938\u093e";break;case"dd":n="%d \u0926\u093f\u0935\u0938\u093e\u0902";break;case"M":n="\u090f\u0915\u093e \u092e\u0939\u093f\u0928\u094d\u092f\u093e";break;case"MM":n="%d \u092e\u0939\u093f\u0928\u094d\u092f\u093e\u0902";break;case"y":n="\u090f\u0915\u093e \u0935\u0930\u094d\u0937\u093e";break;case"yy":n="%d \u0935\u0930\u094d\u0937\u093e\u0902";break}return n.replace(/%d/i,e)}l.defineLocale("mr",{months:"\u091c\u093e\u0928\u0947\u0935\u093e\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u093e\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u090f\u092a\u094d\u0930\u093f\u0932_\u092e\u0947_\u091c\u0942\u0928_\u091c\u0941\u0932\u0948_\u0911\u0917\u0938\u094d\u091f_\u0938\u092a\u094d\u091f\u0947\u0902\u092c\u0930_\u0911\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u0935\u094d\u0939\u0947\u0902\u092c\u0930_\u0921\u093f\u0938\u0947\u0902\u092c\u0930".split("_"),monthsShort:"\u091c\u093e\u0928\u0947._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a._\u090f\u092a\u094d\u0930\u093f._\u092e\u0947._\u091c\u0942\u0928._\u091c\u0941\u0932\u0948._\u0911\u0917._\u0938\u092a\u094d\u091f\u0947\u0902._\u0911\u0915\u094d\u091f\u094b._\u0928\u094b\u0935\u094d\u0939\u0947\u0902._\u0921\u093f\u0938\u0947\u0902.".split("_"),monthsParseExact:!0,weekdays:"\u0930\u0935\u093f\u0935\u093e\u0930_\u0938\u094b\u092e\u0935\u093e\u0930_\u092e\u0902\u0917\u0933\u0935\u093e\u0930_\u092c\u0941\u0927\u0935\u093e\u0930_\u0917\u0941\u0930\u0942\u0935\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u0935\u093e\u0930_\u0936\u0928\u093f\u0935\u093e\u0930".split("_"),weekdaysShort:"\u0930\u0935\u093f_\u0938\u094b\u092e_\u092e\u0902\u0917\u0933_\u092c\u0941\u0927_\u0917\u0941\u0930\u0942_\u0936\u0941\u0915\u094d\u0930_\u0936\u0928\u093f".split("_"),weekdaysMin:"\u0930_\u0938\u094b_\u092e\u0902_\u092c\u0941_\u0917\u0941_\u0936\u0941_\u0936".split("_"),longDateFormat:{LT:"A h:mm \u0935\u093e\u091c\u0924\u093e",LTS:"A h:mm:ss \u0935\u093e\u091c\u0924\u093e",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e",LLLL:"dddd, D MMMM YYYY, A h:mm \u0935\u093e\u091c\u0924\u093e"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u0909\u0926\u094d\u092f\u093e] LT",nextWeek:"dddd, LT",lastDay:"[\u0915\u093e\u0932] LT",lastWeek:"[\u092e\u093e\u0917\u0940\u0932] dddd, LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u0927\u094d\u092f\u0947",past:"%s\u092a\u0942\u0930\u094d\u0935\u0940",s:yn,ss:yn,m:yn,mm:yn,h:yn,hh:yn,d:yn,dd:yn,M:yn,MM:yn,y:yn,yy:yn},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Yn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return cn[e]})},meridiemParse:/\u0930\u093e\u0924\u094d\u0930\u0940|\u0938\u0915\u093e\u0933\u0940|\u0926\u0941\u092a\u093e\u0930\u0940|\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u094d\u0930\u0940"===a?e<4?e:e+12:"\u0938\u0915\u093e\u0933\u0940"===a?e:"\u0926\u0941\u092a\u093e\u0930\u0940"===a?10<=e?e:e+12:"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0930\u093e\u0924\u094d\u0930\u0940":e<10?"\u0938\u0915\u093e\u0933\u0940":e<17?"\u0926\u0941\u092a\u093e\u0930\u0940":e<20?"\u0938\u093e\u092f\u0902\u0915\u093e\u0933\u0940":"\u0930\u093e\u0924\u094d\u0930\u0940"},week:{dow:0,doy:6}}),l.defineLocale("ms-my",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("ms",{months:"Januari_Februari_Mac_April_Mei_Jun_Julai_Ogos_September_Oktober_November_Disember".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ogs_Sep_Okt_Nov_Dis".split("_"),weekdays:"Ahad_Isnin_Selasa_Rabu_Khamis_Jumaat_Sabtu".split("_"),weekdaysShort:"Ahd_Isn_Sel_Rab_Kha_Jum_Sab".split("_"),weekdaysMin:"Ah_Is_Sl_Rb_Km_Jm_Sb".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [pukul] HH.mm",LLLL:"dddd, D MMMM YYYY [pukul] HH.mm"},meridiemParse:/pagi|tengahari|petang|malam/,meridiemHour:function(e,a){return 12===e&&(e=0),"pagi"===a?e:"tengahari"===a?11<=e?e:e+12:"petang"===a||"malam"===a?e+12:void 0},meridiem:function(e,a,t){return e<11?"pagi":e<15?"tengahari":e<19?"petang":"malam"},calendar:{sameDay:"[Hari ini pukul] LT",nextDay:"[Esok pukul] LT",nextWeek:"dddd [pukul] LT",lastDay:"[Kelmarin pukul] LT",lastWeek:"dddd [lepas pukul] LT",sameElse:"L"},relativeTime:{future:"dalam %s",past:"%s yang lepas",s:"beberapa saat",ss:"%d saat",m:"seminit",mm:"%d minit",h:"sejam",hh:"%d jam",d:"sehari",dd:"%d hari",M:"sebulan",MM:"%d bulan",y:"setahun",yy:"%d tahun"},week:{dow:1,doy:7}}),l.defineLocale("mt",{months:"Jannar_Frar_Marzu_April_Mejju_\u0120unju_Lulju_Awwissu_Settembru_Ottubru_Novembru_Di\u010bembru".split("_"),monthsShort:"Jan_Fra_Mar_Apr_Mej_\u0120un_Lul_Aww_Set_Ott_Nov_Di\u010b".split("_"),weekdays:"Il-\u0126add_It-Tnejn_It-Tlieta_L-Erbg\u0127a_Il-\u0126amis_Il-\u0120img\u0127a_Is-Sibt".split("_"),weekdaysShort:"\u0126ad_Tne_Tli_Erb_\u0126am_\u0120im_Sib".split("_"),weekdaysMin:"\u0126a_Tn_Tl_Er_\u0126a_\u0120i_Si".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Illum fil-]LT",nextDay:"[G\u0127ada fil-]LT",nextWeek:"dddd [fil-]LT",lastDay:"[Il-biera\u0127 fil-]LT",lastWeek:"dddd [li g\u0127adda] [fil-]LT",sameElse:"L"},relativeTime:{future:"f\u2019 %s",past:"%s ilu",s:"ftit sekondi",ss:"%d sekondi",m:"minuta",mm:"%d minuti",h:"sieg\u0127a",hh:"%d sieg\u0127at",d:"\u0121urnata",dd:"%d \u0121ranet",M:"xahar",MM:"%d xhur",y:"sena",yy:"%d sni"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}});var fn={1:"\u1041",2:"\u1042",3:"\u1043",4:"\u1044",5:"\u1045",6:"\u1046",7:"\u1047",8:"\u1048",9:"\u1049",0:"\u1040"},kn={"\u1041":"1","\u1042":"2","\u1043":"3","\u1044":"4","\u1045":"5","\u1046":"6","\u1047":"7","\u1048":"8","\u1049":"9","\u1040":"0"};l.defineLocale("my",{months:"\u1007\u1014\u103a\u1014\u101d\u102b\u101b\u102e_\u1016\u1031\u1016\u1031\u102c\u103a\u101d\u102b\u101b\u102e_\u1019\u1010\u103a_\u1027\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u1007\u1030\u101c\u102d\u102f\u1004\u103a_\u101e\u103c\u1002\u102f\u1010\u103a_\u1005\u1000\u103a\u1010\u1004\u103a\u1018\u102c_\u1021\u1031\u102c\u1000\u103a\u1010\u102d\u102f\u1018\u102c_\u1014\u102d\u102f\u101d\u1004\u103a\u1018\u102c_\u1012\u102e\u1007\u1004\u103a\u1018\u102c".split("_"),monthsShort:"\u1007\u1014\u103a_\u1016\u1031_\u1019\u1010\u103a_\u1015\u103c\u102e_\u1019\u1031_\u1007\u103d\u1014\u103a_\u101c\u102d\u102f\u1004\u103a_\u101e\u103c_\u1005\u1000\u103a_\u1021\u1031\u102c\u1000\u103a_\u1014\u102d\u102f_\u1012\u102e".split("_"),weekdays:"\u1010\u1014\u1004\u103a\u1039\u1002\u1014\u103d\u1031_\u1010\u1014\u1004\u103a\u1039\u101c\u102c_\u1021\u1004\u103a\u1039\u1002\u102b_\u1017\u102f\u1012\u1039\u1013\u101f\u1030\u1038_\u1000\u103c\u102c\u101e\u1015\u1010\u1031\u1038_\u101e\u1031\u102c\u1000\u103c\u102c_\u1005\u1014\u1031".split("_"),weekdaysShort:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),weekdaysMin:"\u1014\u103d\u1031_\u101c\u102c_\u1002\u102b_\u101f\u1030\u1038_\u1000\u103c\u102c_\u101e\u1031\u102c_\u1014\u1031".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u101a\u1014\u1031.] LT [\u1019\u103e\u102c]",nextDay:"[\u1019\u1014\u1000\u103a\u1016\u103c\u1014\u103a] LT [\u1019\u103e\u102c]",nextWeek:"dddd LT [\u1019\u103e\u102c]",lastDay:"[\u1019\u1014\u1031.\u1000] LT [\u1019\u103e\u102c]",lastWeek:"[\u1015\u103c\u102e\u1038\u1001\u1032\u1037\u101e\u1031\u102c] dddd LT [\u1019\u103e\u102c]",sameElse:"L"},relativeTime:{future:"\u101c\u102c\u1019\u100a\u103a\u1037 %s \u1019\u103e\u102c",past:"\u101c\u103d\u1014\u103a\u1001\u1032\u1037\u101e\u1031\u102c %s \u1000",s:"\u1005\u1000\u1039\u1000\u1014\u103a.\u1021\u1014\u100a\u103a\u1038\u1004\u101a\u103a",ss:"%d \u1005\u1000\u1039\u1000\u1014\u1037\u103a",m:"\u1010\u1005\u103a\u1019\u102d\u1014\u1005\u103a",mm:"%d \u1019\u102d\u1014\u1005\u103a",h:"\u1010\u1005\u103a\u1014\u102c\u101b\u102e",hh:"%d \u1014\u102c\u101b\u102e",d:"\u1010\u1005\u103a\u101b\u1000\u103a",dd:"%d \u101b\u1000\u103a",M:"\u1010\u1005\u103a\u101c",MM:"%d \u101c",y:"\u1010\u1005\u103a\u1014\u103e\u1005\u103a",yy:"%d \u1014\u103e\u1005\u103a"},preparse:function(e){return e.replace(/[\u1041\u1042\u1043\u1044\u1045\u1046\u1047\u1048\u1049\u1040]/g,function(e){return kn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return fn[e]})},week:{dow:1,doy:4}}),l.defineLocale("nb",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan._feb._mars_april_mai_juni_juli_aug._sep._okt._nov._des.".split("_"),monthsParseExact:!0,weekdays:"s\xf8ndag_mandag_tirsdag_onsdag_torsdag_fredag_l\xf8rdag".split("_"),weekdaysShort:"s\xf8._ma._ti._on._to._fr._l\xf8.".split("_"),weekdaysMin:"s\xf8_ma_ti_on_to_fr_l\xf8".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] HH:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[i dag kl.] LT",nextDay:"[i morgen kl.] LT",nextWeek:"dddd [kl.] LT",lastDay:"[i g\xe5r kl.] LT",lastWeek:"[forrige] dddd [kl.] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s siden",s:"noen sekunder",ss:"%d sekunder",m:"ett minutt",mm:"%d minutter",h:"en time",hh:"%d timer",d:"en dag",dd:"%d dager",M:"en m\xe5ned",MM:"%d m\xe5neder",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var pn={1:"\u0967",2:"\u0968",3:"\u0969",4:"\u096a",5:"\u096b",6:"\u096c",7:"\u096d",8:"\u096e",9:"\u096f",0:"\u0966"},Dn={"\u0967":"1","\u0968":"2","\u0969":"3","\u096a":"4","\u096b":"5","\u096c":"6","\u096d":"7","\u096e":"8","\u096f":"9","\u0966":"0"};l.defineLocale("ne",{months:"\u091c\u0928\u0935\u0930\u0940_\u092b\u0947\u092c\u094d\u0930\u0941\u0935\u0930\u0940_\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f\u0932_\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908_\u0905\u0917\u0937\u094d\u091f_\u0938\u0947\u092a\u094d\u091f\u0947\u092e\u094d\u092c\u0930_\u0905\u0915\u094d\u091f\u094b\u092c\u0930_\u0928\u094b\u092d\u0947\u092e\u094d\u092c\u0930_\u0921\u093f\u0938\u0947\u092e\u094d\u092c\u0930".split("_"),monthsShort:"\u091c\u0928._\u092b\u0947\u092c\u094d\u0930\u0941._\u092e\u093e\u0930\u094d\u091a_\u0905\u092a\u094d\u0930\u093f._\u092e\u0908_\u091c\u0941\u0928_\u091c\u0941\u0932\u093e\u0908._\u0905\u0917._\u0938\u0947\u092a\u094d\u091f._\u0905\u0915\u094d\u091f\u094b._\u0928\u094b\u092d\u0947._\u0921\u093f\u0938\u0947.".split("_"),monthsParseExact:!0,weekdays:"\u0906\u0907\u0924\u092c\u093e\u0930_\u0938\u094b\u092e\u092c\u093e\u0930_\u092e\u0919\u094d\u0917\u0932\u092c\u093e\u0930_\u092c\u0941\u0927\u092c\u093e\u0930_\u092c\u093f\u0939\u093f\u092c\u093e\u0930_\u0936\u0941\u0915\u094d\u0930\u092c\u093e\u0930_\u0936\u0928\u093f\u092c\u093e\u0930".split("_"),weekdaysShort:"\u0906\u0907\u0924._\u0938\u094b\u092e._\u092e\u0919\u094d\u0917\u0932._\u092c\u0941\u0927._\u092c\u093f\u0939\u093f._\u0936\u0941\u0915\u094d\u0930._\u0936\u0928\u093f.".split("_"),weekdaysMin:"\u0906._\u0938\u094b._\u092e\u0902._\u092c\u0941._\u092c\u093f._\u0936\u0941._\u0936.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"A\u0915\u094b h:mm \u092c\u091c\u0947",LTS:"A\u0915\u094b h:mm:ss \u092c\u091c\u0947",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947",LLLL:"dddd, D MMMM YYYY, A\u0915\u094b h:mm \u092c\u091c\u0947"},preparse:function(e){return e.replace(/[\u0967\u0968\u0969\u096a\u096b\u096c\u096d\u096e\u096f\u0966]/g,function(e){return Dn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return pn[e]})},meridiemParse:/\u0930\u093e\u0924\u093f|\u092c\u093f\u0939\u093e\u0928|\u0926\u093f\u0909\u0901\u0938\u094b|\u0938\u093e\u0901\u091d/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0930\u093e\u0924\u093f"===a?e<4?e:e+12:"\u092c\u093f\u0939\u093e\u0928"===a?e:"\u0926\u093f\u0909\u0901\u0938\u094b"===a?10<=e?e:e+12:"\u0938\u093e\u0901\u091d"===a?e+12:void 0},meridiem:function(e,a,t){return e<3?"\u0930\u093e\u0924\u093f":e<12?"\u092c\u093f\u0939\u093e\u0928":e<16?"\u0926\u093f\u0909\u0901\u0938\u094b":e<20?"\u0938\u093e\u0901\u091d":"\u0930\u093e\u0924\u093f"},calendar:{sameDay:"[\u0906\u091c] LT",nextDay:"[\u092d\u094b\u0932\u093f] LT",nextWeek:"[\u0906\u0909\u0901\u0926\u094b] dddd[,] LT",lastDay:"[\u0939\u093f\u091c\u094b] LT",lastWeek:"[\u0917\u090f\u0915\u094b] dddd[,] LT",sameElse:"L"},relativeTime:{future:"%s\u092e\u093e",past:"%s \u0905\u0917\u093e\u0921\u093f",s:"\u0915\u0947\u0939\u0940 \u0915\u094d\u0937\u0923",ss:"%d \u0938\u0947\u0915\u0947\u0923\u094d\u0921",m:"\u090f\u0915 \u092e\u093f\u0928\u0947\u091f",mm:"%d \u092e\u093f\u0928\u0947\u091f",h:"\u090f\u0915 \u0918\u0923\u094d\u091f\u093e",hh:"%d \u0918\u0923\u094d\u091f\u093e",d:"\u090f\u0915 \u0926\u093f\u0928",dd:"%d \u0926\u093f\u0928",M:"\u090f\u0915 \u092e\u0939\u093f\u0928\u093e",MM:"%d \u092e\u0939\u093f\u0928\u093e",y:"\u090f\u0915 \u092c\u0930\u094d\u0937",yy:"%d \u092c\u0930\u094d\u0937"},week:{dow:0,doy:6}});var Tn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),gn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),wn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],vn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl-be",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?gn[e.month()]:Tn[e.month()]:Tn},monthsRegex:vn,monthsShortRegex:vn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:wn,longMonthsParse:wn,shortMonthsParse:wn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}});var Hn="jan._feb._mrt._apr._mei_jun._jul._aug._sep._okt._nov._dec.".split("_"),Sn="jan_feb_mrt_apr_mei_jun_jul_aug_sep_okt_nov_dec".split("_"),bn=[/^jan/i,/^feb/i,/^maart|mrt.?$/i,/^apr/i,/^mei$/i,/^jun[i.]?$/i,/^jul[i.]?$/i,/^aug/i,/^sep/i,/^okt/i,/^nov/i,/^dec/i],jn=/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december|jan\.?|feb\.?|mrt\.?|apr\.?|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i;l.defineLocale("nl",{months:"januari_februari_maart_april_mei_juni_juli_augustus_september_oktober_november_december".split("_"),monthsShort:function(e,a){return e?/-MMM-/.test(a)?Sn[e.month()]:Hn[e.month()]:Hn},monthsRegex:jn,monthsShortRegex:jn,monthsStrictRegex:/^(januari|februari|maart|april|mei|ju[nl]i|augustus|september|oktober|november|december)/i,monthsShortStrictRegex:/^(jan\.?|feb\.?|mrt\.?|apr\.?|mei|ju[nl]\.?|aug\.?|sep\.?|okt\.?|nov\.?|dec\.?)/i,monthsParse:bn,longMonthsParse:bn,shortMonthsParse:bn,weekdays:"zondag_maandag_dinsdag_woensdag_donderdag_vrijdag_zaterdag".split("_"),weekdaysShort:"zo._ma._di._wo._do._vr._za.".split("_"),weekdaysMin:"zo_ma_di_wo_do_vr_za".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD-MM-YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[vandaag om] LT",nextDay:"[morgen om] LT",nextWeek:"dddd [om] LT",lastDay:"[gisteren om] LT",lastWeek:"[afgelopen] dddd [om] LT",sameElse:"L"},relativeTime:{future:"over %s",past:"%s geleden",s:"een paar seconden",ss:"%d seconden",m:"\xe9\xe9n minuut",mm:"%d minuten",h:"\xe9\xe9n uur",hh:"%d uur",d:"\xe9\xe9n dag",dd:"%d dagen",M:"\xe9\xe9n maand",MM:"%d maanden",y:"\xe9\xe9n jaar",yy:"%d jaar"},dayOfMonthOrdinalParse:/\d{1,2}(ste|de)/,ordinal:function(e){return e+(1===e||8===e||20<=e?"ste":"de")},week:{dow:1,doy:4}}),l.defineLocale("nn",{months:"januar_februar_mars_april_mai_juni_juli_august_september_oktober_november_desember".split("_"),monthsShort:"jan_feb_mar_apr_mai_jun_jul_aug_sep_okt_nov_des".split("_"),weekdays:"sundag_m\xe5ndag_tysdag_onsdag_torsdag_fredag_laurdag".split("_"),weekdaysShort:"sun_m\xe5n_tys_ons_tor_fre_lau".split("_"),weekdaysMin:"su_m\xe5_ty_on_to_fr_l\xf8".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY [kl.] H:mm",LLLL:"dddd D. MMMM YYYY [kl.] HH:mm"},calendar:{sameDay:"[I dag klokka] LT",nextDay:"[I morgon klokka] LT",nextWeek:"dddd [klokka] LT",lastDay:"[I g\xe5r klokka] LT",lastWeek:"[F\xf8reg\xe5ande] dddd [klokka] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"%s sidan",s:"nokre sekund",ss:"%d sekund",m:"eit minutt",mm:"%d minutt",h:"ein time",hh:"%d timar",d:"ein dag",dd:"%d dagar",M:"ein m\xe5nad",MM:"%d m\xe5nader",y:"eit \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var xn={1:"\u0a67",2:"\u0a68",3:"\u0a69",4:"\u0a6a",5:"\u0a6b",6:"\u0a6c",7:"\u0a6d",8:"\u0a6e",9:"\u0a6f",0:"\u0a66"},Pn={"\u0a67":"1","\u0a68":"2","\u0a69":"3","\u0a6a":"4","\u0a6b":"5","\u0a6c":"6","\u0a6d":"7","\u0a6e":"8","\u0a6f":"9","\u0a66":"0"};l.defineLocale("pa-in",{months:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),monthsShort:"\u0a1c\u0a28\u0a35\u0a30\u0a40_\u0a2b\u0a3c\u0a30\u0a35\u0a30\u0a40_\u0a2e\u0a3e\u0a30\u0a1a_\u0a05\u0a2a\u0a4d\u0a30\u0a48\u0a32_\u0a2e\u0a08_\u0a1c\u0a42\u0a28_\u0a1c\u0a41\u0a32\u0a3e\u0a08_\u0a05\u0a17\u0a38\u0a24_\u0a38\u0a24\u0a70\u0a2c\u0a30_\u0a05\u0a15\u0a24\u0a42\u0a2c\u0a30_\u0a28\u0a35\u0a70\u0a2c\u0a30_\u0a26\u0a38\u0a70\u0a2c\u0a30".split("_"),weekdays:"\u0a10\u0a24\u0a35\u0a3e\u0a30_\u0a38\u0a4b\u0a2e\u0a35\u0a3e\u0a30_\u0a2e\u0a70\u0a17\u0a32\u0a35\u0a3e\u0a30_\u0a2c\u0a41\u0a27\u0a35\u0a3e\u0a30_\u0a35\u0a40\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a41\u0a71\u0a15\u0a30\u0a35\u0a3e\u0a30_\u0a38\u0a3c\u0a28\u0a40\u0a1a\u0a30\u0a35\u0a3e\u0a30".split("_"),weekdaysShort:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),weekdaysMin:"\u0a10\u0a24_\u0a38\u0a4b\u0a2e_\u0a2e\u0a70\u0a17\u0a32_\u0a2c\u0a41\u0a27_\u0a35\u0a40\u0a30_\u0a38\u0a3c\u0a41\u0a15\u0a30_\u0a38\u0a3c\u0a28\u0a40".split("_"),longDateFormat:{LT:"A h:mm \u0a35\u0a1c\u0a47",LTS:"A h:mm:ss \u0a35\u0a1c\u0a47",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47",LLLL:"dddd, D MMMM YYYY, A h:mm \u0a35\u0a1c\u0a47"},calendar:{sameDay:"[\u0a05\u0a1c] LT",nextDay:"[\u0a15\u0a32] LT",nextWeek:"[\u0a05\u0a17\u0a32\u0a3e] dddd, LT",lastDay:"[\u0a15\u0a32] LT",lastWeek:"[\u0a2a\u0a3f\u0a1b\u0a32\u0a47] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0a35\u0a3f\u0a71\u0a1a",past:"%s \u0a2a\u0a3f\u0a1b\u0a32\u0a47",s:"\u0a15\u0a41\u0a1d \u0a38\u0a15\u0a3f\u0a70\u0a1f",ss:"%d \u0a38\u0a15\u0a3f\u0a70\u0a1f",m:"\u0a07\u0a15 \u0a2e\u0a3f\u0a70\u0a1f",mm:"%d \u0a2e\u0a3f\u0a70\u0a1f",h:"\u0a07\u0a71\u0a15 \u0a18\u0a70\u0a1f\u0a3e",hh:"%d \u0a18\u0a70\u0a1f\u0a47",d:"\u0a07\u0a71\u0a15 \u0a26\u0a3f\u0a28",dd:"%d \u0a26\u0a3f\u0a28",M:"\u0a07\u0a71\u0a15 \u0a2e\u0a39\u0a40\u0a28\u0a3e",MM:"%d \u0a2e\u0a39\u0a40\u0a28\u0a47",y:"\u0a07\u0a71\u0a15 \u0a38\u0a3e\u0a32",yy:"%d \u0a38\u0a3e\u0a32"},preparse:function(e){return e.replace(/[\u0a67\u0a68\u0a69\u0a6a\u0a6b\u0a6c\u0a6d\u0a6e\u0a6f\u0a66]/g,function(e){return Pn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return xn[e]})},meridiemParse:/\u0a30\u0a3e\u0a24|\u0a38\u0a35\u0a47\u0a30|\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30|\u0a38\u0a3c\u0a3e\u0a2e/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0a30\u0a3e\u0a24"===a?e<4?e:e+12:"\u0a38\u0a35\u0a47\u0a30"===a?e:"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30"===a?10<=e?e:e+12:"\u0a38\u0a3c\u0a3e\u0a2e"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0a30\u0a3e\u0a24":e<10?"\u0a38\u0a35\u0a47\u0a30":e<17?"\u0a26\u0a41\u0a2a\u0a39\u0a3f\u0a30":e<20?"\u0a38\u0a3c\u0a3e\u0a2e":"\u0a30\u0a3e\u0a24"},week:{dow:0,doy:6}});var On="stycze\u0144_luty_marzec_kwiecie\u0144_maj_czerwiec_lipiec_sierpie\u0144_wrzesie\u0144_pa\u017adziernik_listopad_grudzie\u0144".split("_"),Wn="stycznia_lutego_marca_kwietnia_maja_czerwca_lipca_sierpnia_wrze\u015bnia_pa\u017adziernika_listopada_grudnia".split("_");function En(e){return e%10<5&&1<e%10&&~~(e/10)%10!=1}function An(e,a,t){var s=e+" ";switch(t){case"ss":return s+(En(e)?"sekundy":"sekund");case"m":return a?"minuta":"minut\u0119";case"mm":return s+(En(e)?"minuty":"minut");case"h":return a?"godzina":"godzin\u0119";case"hh":return s+(En(e)?"godziny":"godzin");case"MM":return s+(En(e)?"miesi\u0105ce":"miesi\u0119cy");case"yy":return s+(En(e)?"lata":"lat")}}function Fn(e,a,t){var s=" ";return(20<=e%100||100<=e&&e%100==0)&&(s=" de "),e+s+{ss:"secunde",mm:"minute",hh:"ore",dd:"zile",MM:"luni",yy:"ani"}[t]}function zn(e,a,t){var s,n;return"m"===t?a?"\u043c\u0438\u043d\u0443\u0442\u0430":"\u043c\u0438\u043d\u0443\u0442\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u044b_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u043c\u0438\u043d\u0443\u0442\u0430_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442":"\u043c\u0438\u043d\u0443\u0442\u0443_\u043c\u0438\u043d\u0443\u0442\u044b_\u043c\u0438\u043d\u0443\u0442",hh:"\u0447\u0430\u0441_\u0447\u0430\u0441\u0430_\u0447\u0430\u0441\u043e\u0432",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u044f_\u0434\u043d\u0435\u0439",MM:"\u043c\u0435\u0441\u044f\u0446_\u043c\u0435\u0441\u044f\u0446\u0430_\u043c\u0435\u0441\u044f\u0446\u0435\u0432",yy:"\u0433\u043e\u0434_\u0433\u043e\u0434\u0430_\u043b\u0435\u0442"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}l.defineLocale("pl",{months:function(e,a){return e?""===a?"("+Wn[e.month()]+"|"+On[e.month()]+")":/D MMMM/.test(a)?Wn[e.month()]:On[e.month()]:On},monthsShort:"sty_lut_mar_kwi_maj_cze_lip_sie_wrz_pa\u017a_lis_gru".split("_"),weekdays:"niedziela_poniedzia\u0142ek_wtorek_\u015broda_czwartek_pi\u0105tek_sobota".split("_"),weekdaysShort:"ndz_pon_wt_\u015br_czw_pt_sob".split("_"),weekdaysMin:"Nd_Pn_Wt_\u015ar_Cz_Pt_So".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Dzi\u015b o] LT",nextDay:"[Jutro o] LT",nextWeek:function(){switch(this.day()){case 0:return"[W niedziel\u0119 o] LT";case 2:return"[We wtorek o] LT";case 3:return"[W \u015brod\u0119 o] LT";case 6:return"[W sobot\u0119 o] LT";default:return"[W] dddd [o] LT"}},lastDay:"[Wczoraj o] LT",lastWeek:function(){switch(this.day()){case 0:return"[W zesz\u0142\u0105 niedziel\u0119 o] LT";case 3:return"[W zesz\u0142\u0105 \u015brod\u0119 o] LT";case 6:return"[W zesz\u0142\u0105 sobot\u0119 o] LT";default:return"[W zesz\u0142y] dddd [o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"%s temu",s:"kilka sekund",ss:An,m:An,mm:An,h:An,hh:An,d:"1 dzie\u0144",dd:"%d dni",M:"miesi\u0105c",MM:An,y:"rok",yy:An},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("pt-br",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY [\xe0s] HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY [\xe0s] HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"poucos segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba"}),l.defineLocale("pt",{months:"janeiro_fevereiro_mar\xe7o_abril_maio_junho_julho_agosto_setembro_outubro_novembro_dezembro".split("_"),monthsShort:"jan_fev_mar_abr_mai_jun_jul_ago_set_out_nov_dez".split("_"),weekdays:"Domingo_Segunda-feira_Ter\xe7a-feira_Quarta-feira_Quinta-feira_Sexta-feira_S\xe1bado".split("_"),weekdaysShort:"Dom_Seg_Ter_Qua_Qui_Sex_S\xe1b".split("_"),weekdaysMin:"Do_2\xaa_3\xaa_4\xaa_5\xaa_6\xaa_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D [de] MMMM [de] YYYY",LLL:"D [de] MMMM [de] YYYY HH:mm",LLLL:"dddd, D [de] MMMM [de] YYYY HH:mm"},calendar:{sameDay:"[Hoje \xe0s] LT",nextDay:"[Amanh\xe3 \xe0s] LT",nextWeek:"dddd [\xe0s] LT",lastDay:"[Ontem \xe0s] LT",lastWeek:function(){return 0===this.day()||6===this.day()?"[\xdaltimo] dddd [\xe0s] LT":"[\xdaltima] dddd [\xe0s] LT"},sameElse:"L"},relativeTime:{future:"em %s",past:"h\xe1 %s",s:"segundos",ss:"%d segundos",m:"um minuto",mm:"%d minutos",h:"uma hora",hh:"%d horas",d:"um dia",dd:"%d dias",M:"um m\xeas",MM:"%d meses",y:"um ano",yy:"%d anos"},dayOfMonthOrdinalParse:/\d{1,2}\xba/,ordinal:"%d\xba",week:{dow:1,doy:4}}),l.defineLocale("ro",{months:"ianuarie_februarie_martie_aprilie_mai_iunie_iulie_august_septembrie_octombrie_noiembrie_decembrie".split("_"),monthsShort:"ian._febr._mart._apr._mai_iun._iul._aug._sept._oct._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"duminic\u0103_luni_mar\u021bi_miercuri_joi_vineri_s\xe2mb\u0103t\u0103".split("_"),weekdaysShort:"Dum_Lun_Mar_Mie_Joi_Vin_S\xe2m".split("_"),weekdaysMin:"Du_Lu_Ma_Mi_Jo_Vi_S\xe2".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY H:mm",LLLL:"dddd, D MMMM YYYY H:mm"},calendar:{sameDay:"[azi la] LT",nextDay:"[m\xe2ine la] LT",nextWeek:"dddd [la] LT",lastDay:"[ieri la] LT",lastWeek:"[fosta] dddd [la] LT",sameElse:"L"},relativeTime:{future:"peste %s",past:"%s \xeen urm\u0103",s:"c\xe2teva secunde",ss:Fn,m:"un minut",mm:Fn,h:"o or\u0103",hh:Fn,d:"o zi",dd:Fn,M:"o lun\u0103",MM:Fn,y:"un an",yy:Fn},week:{dow:1,doy:7}});var Jn=[/^\u044f\u043d\u0432/i,/^\u0444\u0435\u0432/i,/^\u043c\u0430\u0440/i,/^\u0430\u043f\u0440/i,/^\u043c\u0430[\u0439\u044f]/i,/^\u0438\u044e\u043d/i,/^\u0438\u044e\u043b/i,/^\u0430\u0432\u0433/i,/^\u0441\u0435\u043d/i,/^\u043e\u043a\u0442/i,/^\u043d\u043e\u044f/i,/^\u0434\u0435\u043a/i];l.defineLocale("ru",{months:{format:"\u044f\u043d\u0432\u0430\u0440\u044f_\u0444\u0435\u0432\u0440\u0430\u043b\u044f_\u043c\u0430\u0440\u0442\u0430_\u0430\u043f\u0440\u0435\u043b\u044f_\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433\u0443\u0441\u0442\u0430_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044f_\u043e\u043a\u0442\u044f\u0431\u0440\u044f_\u043d\u043e\u044f\u0431\u0440\u044f_\u0434\u0435\u043a\u0430\u0431\u0440\u044f".split("_"),standalone:"\u044f\u043d\u0432\u0430\u0440\u044c_\u0444\u0435\u0432\u0440\u0430\u043b\u044c_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b\u044c_\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440\u044c_\u043e\u043a\u0442\u044f\u0431\u0440\u044c_\u043d\u043e\u044f\u0431\u0440\u044c_\u0434\u0435\u043a\u0430\u0431\u0440\u044c".split("_")},monthsShort:{format:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u044f_\u0438\u044e\u043d\u044f_\u0438\u044e\u043b\u044f_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_"),standalone:"\u044f\u043d\u0432._\u0444\u0435\u0432\u0440._\u043c\u0430\u0440\u0442_\u0430\u043f\u0440._\u043c\u0430\u0439_\u0438\u044e\u043d\u044c_\u0438\u044e\u043b\u044c_\u0430\u0432\u0433._\u0441\u0435\u043d\u0442._\u043e\u043a\u0442._\u043d\u043e\u044f\u0431._\u0434\u0435\u043a.".split("_")},weekdays:{standalone:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0430_\u0441\u0443\u0431\u0431\u043e\u0442\u0430".split("_"),format:"\u0432\u043e\u0441\u043a\u0440\u0435\u0441\u0435\u043d\u044c\u0435_\u043f\u043e\u043d\u0435\u0434\u0435\u043b\u044c\u043d\u0438\u043a_\u0432\u0442\u043e\u0440\u043d\u0438\u043a_\u0441\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440\u0433_\u043f\u044f\u0442\u043d\u0438\u0446\u0443_\u0441\u0443\u0431\u0431\u043e\u0442\u0443".split("_"),isFormat:/\[ ?[\u0412\u0432] ?(?:\u043f\u0440\u043e\u0448\u043b\u0443\u044e|\u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e|\u044d\u0442\u0443)? ?\] ?dddd/},weekdaysShort:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u0432\u0441_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),monthsParse:Jn,longMonthsParse:Jn,shortMonthsParse:Jn,monthsRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsShortRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044c\u044f]|\u044f\u043d\u0432\.?|\u0444\u0435\u0432\u0440\u0430\u043b[\u044c\u044f]|\u0444\u0435\u0432\u0440?\.?|\u043c\u0430\u0440\u0442\u0430?|\u043c\u0430\u0440\.?|\u0430\u043f\u0440\u0435\u043b[\u044c\u044f]|\u0430\u043f\u0440\.?|\u043c\u0430[\u0439\u044f]|\u0438\u044e\u043d[\u044c\u044f]|\u0438\u044e\u043d\.?|\u0438\u044e\u043b[\u044c\u044f]|\u0438\u044e\u043b\.?|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0430\u0432\u0433\.?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044c\u044f]|\u0441\u0435\u043d\u0442?\.?|\u043e\u043a\u0442\u044f\u0431\u0440[\u044c\u044f]|\u043e\u043a\u0442\.?|\u043d\u043e\u044f\u0431\u0440[\u044c\u044f]|\u043d\u043e\u044f\u0431?\.?|\u0434\u0435\u043a\u0430\u0431\u0440[\u044c\u044f]|\u0434\u0435\u043a\.?)/i,monthsStrictRegex:/^(\u044f\u043d\u0432\u0430\u0440[\u044f\u044c]|\u0444\u0435\u0432\u0440\u0430\u043b[\u044f\u044c]|\u043c\u0430\u0440\u0442\u0430?|\u0430\u043f\u0440\u0435\u043b[\u044f\u044c]|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044f\u044c]|\u0438\u044e\u043b[\u044f\u044c]|\u0430\u0432\u0433\u0443\u0441\u0442\u0430?|\u0441\u0435\u043d\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043e\u043a\u0442\u044f\u0431\u0440[\u044f\u044c]|\u043d\u043e\u044f\u0431\u0440[\u044f\u044c]|\u0434\u0435\u043a\u0430\u0431\u0440[\u044f\u044c])/i,monthsShortStrictRegex:/^(\u044f\u043d\u0432\.|\u0444\u0435\u0432\u0440?\.|\u043c\u0430\u0440[\u0442.]|\u0430\u043f\u0440\.|\u043c\u0430[\u044f\u0439]|\u0438\u044e\u043d[\u044c\u044f.]|\u0438\u044e\u043b[\u044c\u044f.]|\u0430\u0432\u0433\.|\u0441\u0435\u043d\u0442?\.|\u043e\u043a\u0442\.|\u043d\u043e\u044f\u0431?\.|\u0434\u0435\u043a\.)/i,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0433.",LLL:"D MMMM YYYY \u0433., H:mm",LLLL:"dddd, D MMMM YYYY \u0433., H:mm"},calendar:{sameDay:"[\u0421\u0435\u0433\u043e\u0434\u043d\u044f, \u0432] LT",nextDay:"[\u0417\u0430\u0432\u0442\u0440\u0430, \u0432] LT",lastDay:"[\u0412\u0447\u0435\u0440\u0430, \u0432] LT",nextWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0435\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0443\u044e] dddd, [\u0432] LT"}},lastWeek:function(e){if(e.week()===this.week())return 2===this.day()?"[\u0412\u043e] dddd, [\u0432] LT":"[\u0412] dddd, [\u0432] LT";switch(this.day()){case 0:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u043e\u0435] dddd, [\u0432] LT";case 1:case 2:case 4:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u044b\u0439] dddd, [\u0432] LT";case 3:case 5:case 6:return"[\u0412 \u043f\u0440\u043e\u0448\u043b\u0443\u044e] dddd, [\u0432] LT"}},sameElse:"L"},relativeTime:{future:"\u0447\u0435\u0440\u0435\u0437 %s",past:"%s \u043d\u0430\u0437\u0430\u0434",s:"\u043d\u0435\u0441\u043a\u043e\u043b\u044c\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434",ss:zn,m:zn,mm:zn,h:"\u0447\u0430\u0441",hh:zn,d:"\u0434\u0435\u043d\u044c",dd:zn,M:"\u043c\u0435\u0441\u044f\u0446",MM:zn,y:"\u0433\u043e\u0434",yy:zn},meridiemParse:/\u043d\u043e\u0447\u0438|\u0443\u0442\u0440\u0430|\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430/i,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u0435\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0438":e<12?"\u0443\u0442\u0440\u0430":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u0435\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e|\u044f)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":return e+"-\u0439";case"D":return e+"-\u0433\u043e";case"w":case"W":return e+"-\u044f";default:return e}},week:{dow:1,doy:4}});var Nn=["\u062c\u0646\u0648\u0631\u064a","\u0641\u064a\u0628\u0631\u0648\u0631\u064a","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u064a\u0644","\u0645\u0626\u064a","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0621\u0650","\u0622\u06af\u0633\u067d","\u0633\u064a\u067e\u067d\u0645\u0628\u0631","\u0622\u06aa\u067d\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u068a\u0633\u0645\u0628\u0631"],Rn=["\u0622\u0686\u0631","\u0633\u0648\u0645\u0631","\u0627\u06b1\u0627\u0631\u0648","\u0627\u0631\u0628\u0639","\u062e\u0645\u064a\u0633","\u062c\u0645\u0639","\u0687\u0646\u0687\u0631"];l.defineLocale("sd",{months:Nn,monthsShort:Nn,weekdays:Rn,weekdaysShort:Rn,weekdaysMin:Rn,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0627\u0684] LT",nextDay:"[\u0633\u0680\u0627\u06bb\u064a] LT",nextWeek:"dddd [\u0627\u06b3\u064a\u0646 \u0647\u0641\u062a\u064a \u062a\u064a] LT",lastDay:"[\u06aa\u0627\u0644\u0647\u0647] LT",lastWeek:"[\u06af\u0632\u0631\u064a\u0644 \u0647\u0641\u062a\u064a] dddd [\u062a\u064a] LT",sameElse:"L"},relativeTime:{future:"%s \u067e\u0648\u0621",past:"%s \u0627\u06b3",s:"\u0686\u0646\u062f \u0633\u064a\u06aa\u0646\u068a",ss:"%d \u0633\u064a\u06aa\u0646\u068a",m:"\u0647\u06aa \u0645\u0646\u067d",mm:"%d \u0645\u0646\u067d",h:"\u0647\u06aa \u06aa\u0644\u0627\u06aa",hh:"%d \u06aa\u0644\u0627\u06aa",d:"\u0647\u06aa \u068f\u064a\u0646\u0647\u0646",dd:"%d \u068f\u064a\u0646\u0647\u0646",M:"\u0647\u06aa \u0645\u0647\u064a\u0646\u0648",MM:"%d \u0645\u0647\u064a\u0646\u0627",y:"\u0647\u06aa \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("se",{months:"o\u0111\u0111ajagem\xe1nnu_guovvam\xe1nnu_njuk\u010dam\xe1nnu_cuo\u014bom\xe1nnu_miessem\xe1nnu_geassem\xe1nnu_suoidnem\xe1nnu_borgem\xe1nnu_\u010dak\u010dam\xe1nnu_golggotm\xe1nnu_sk\xe1bmam\xe1nnu_juovlam\xe1nnu".split("_"),monthsShort:"o\u0111\u0111j_guov_njuk_cuo_mies_geas_suoi_borg_\u010dak\u010d_golg_sk\xe1b_juov".split("_"),weekdays:"sotnabeaivi_vuoss\xe1rga_ma\u014b\u014beb\xe1rga_gaskavahkku_duorastat_bearjadat_l\xe1vvardat".split("_"),weekdaysShort:"sotn_vuos_ma\u014b_gask_duor_bear_l\xe1v".split("_"),weekdaysMin:"s_v_m_g_d_b_L".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"MMMM D. [b.] YYYY",LLL:"MMMM D. [b.] YYYY [ti.] HH:mm",LLLL:"dddd, MMMM D. [b.] YYYY [ti.] HH:mm"},calendar:{sameDay:"[otne ti] LT",nextDay:"[ihttin ti] LT",nextWeek:"dddd [ti] LT",lastDay:"[ikte ti] LT",lastWeek:"[ovddit] dddd [ti] LT",sameElse:"L"},relativeTime:{future:"%s gea\u017ees",past:"ma\u014bit %s",s:"moadde sekunddat",ss:"%d sekunddat",m:"okta minuhta",mm:"%d minuhtat",h:"okta diimmu",hh:"%d diimmut",d:"okta beaivi",dd:"%d beaivvit",M:"okta m\xe1nnu",MM:"%d m\xe1nut",y:"okta jahki",yy:"%d jagit"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("si",{months:"\u0da2\u0db1\u0dc0\u0dcf\u0dbb\u0dd2_\u0db4\u0dd9\u0db6\u0dbb\u0dc0\u0dcf\u0dbb\u0dd2_\u0db8\u0dcf\u0dbb\u0dca\u0dad\u0dd4_\u0d85\u0db4\u0dca\u200d\u0dbb\u0dda\u0dbd\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd\u0dc3\u0dca\u0dad\u0dd4_\u0dc3\u0dd0\u0db4\u0dca\u0dad\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0d94\u0d9a\u0dca\u0dad\u0ddd\u0db6\u0dbb\u0dca_\u0db1\u0ddc\u0dc0\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca_\u0daf\u0dd9\u0dc3\u0dd0\u0db8\u0dca\u0db6\u0dbb\u0dca".split("_"),monthsShort:"\u0da2\u0db1_\u0db4\u0dd9\u0db6_\u0db8\u0dcf\u0dbb\u0dca_\u0d85\u0db4\u0dca_\u0db8\u0dd0\u0dba\u0dd2_\u0da2\u0dd6\u0db1\u0dd2_\u0da2\u0dd6\u0dbd\u0dd2_\u0d85\u0d9c\u0ddd_\u0dc3\u0dd0\u0db4\u0dca_\u0d94\u0d9a\u0dca_\u0db1\u0ddc\u0dc0\u0dd0_\u0daf\u0dd9\u0dc3\u0dd0".split("_"),weekdays:"\u0d89\u0dbb\u0dd2\u0daf\u0dcf_\u0dc3\u0db3\u0dd4\u0daf\u0dcf_\u0d85\u0d9f\u0dc4\u0dbb\u0dd4\u0dc0\u0dcf\u0daf\u0dcf_\u0db6\u0daf\u0dcf\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4\u0dc3\u0dca\u0db4\u0dad\u0dd2\u0db1\u0dca\u0daf\u0dcf_\u0dc3\u0dd2\u0d9a\u0dd4\u0dbb\u0dcf\u0daf\u0dcf_\u0dc3\u0dd9\u0db1\u0dc3\u0dd4\u0dbb\u0dcf\u0daf\u0dcf".split("_"),weekdaysShort:"\u0d89\u0dbb\u0dd2_\u0dc3\u0db3\u0dd4_\u0d85\u0d9f_\u0db6\u0daf\u0dcf_\u0db6\u0dca\u200d\u0dbb\u0dc4_\u0dc3\u0dd2\u0d9a\u0dd4_\u0dc3\u0dd9\u0db1".split("_"),weekdaysMin:"\u0d89_\u0dc3_\u0d85_\u0db6_\u0db6\u0dca\u200d\u0dbb_\u0dc3\u0dd2_\u0dc3\u0dd9".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"a h:mm",LTS:"a h:mm:ss",L:"YYYY/MM/DD",LL:"YYYY MMMM D",LLL:"YYYY MMMM D, a h:mm",LLLL:"YYYY MMMM D [\u0dc0\u0dd0\u0db1\u0dd2] dddd, a h:mm:ss"},calendar:{sameDay:"[\u0d85\u0daf] LT[\u0da7]",nextDay:"[\u0dc4\u0dd9\u0da7] LT[\u0da7]",nextWeek:"dddd LT[\u0da7]",lastDay:"[\u0d8a\u0dba\u0dda] LT[\u0da7]",lastWeek:"[\u0db4\u0dc3\u0dd4\u0d9c\u0dd2\u0dba] dddd LT[\u0da7]",sameElse:"L"},relativeTime:{future:"%s\u0d9a\u0dd2\u0db1\u0dca",past:"%s\u0d9a\u0da7 \u0db4\u0dd9\u0dbb",s:"\u0dad\u0dad\u0dca\u0db4\u0dbb \u0d9a\u0dd2\u0dc4\u0dd2\u0db4\u0dba",ss:"\u0dad\u0dad\u0dca\u0db4\u0dbb %d",m:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4\u0dc0",mm:"\u0db8\u0dd2\u0db1\u0dd2\u0dad\u0dca\u0dad\u0dd4 %d",h:"\u0db4\u0dd0\u0dba",hh:"\u0db4\u0dd0\u0dba %d",d:"\u0daf\u0dd2\u0db1\u0dba",dd:"\u0daf\u0dd2\u0db1 %d",M:"\u0db8\u0dcf\u0dc3\u0dba",MM:"\u0db8\u0dcf\u0dc3 %d",y:"\u0dc0\u0dc3\u0dbb",yy:"\u0dc0\u0dc3\u0dbb %d"},dayOfMonthOrdinalParse:/\d{1,2} \u0dc0\u0dd0\u0db1\u0dd2/,ordinal:function(e){return e+" \u0dc0\u0dd0\u0db1\u0dd2"},meridiemParse:/\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4|\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4|\u0db4\u0dd9.\u0dc0|\u0db4.\u0dc0./,isPM:function(e){return"\u0db4.\u0dc0."===e||"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4"===e},meridiem:function(e,a,t){return 11<e?t?"\u0db4.\u0dc0.":"\u0db4\u0dc3\u0dca \u0dc0\u0dbb\u0dd4":t?"\u0db4\u0dd9.\u0dc0.":"\u0db4\u0dd9\u0dbb \u0dc0\u0dbb\u0dd4"}});var In="janu\xe1r_febru\xe1r_marec_apr\xedl_m\xe1j_j\xfan_j\xfal_august_september_okt\xf3ber_november_december".split("_"),Cn="jan_feb_mar_apr_m\xe1j_j\xfan_j\xfal_aug_sep_okt_nov_dec".split("_");function Gn(e){return 1<e&&e<5}function Un(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"p\xe1r sek\xfand":"p\xe1r sekundami";case"ss":return a||s?n+(Gn(e)?"sekundy":"sek\xfand"):n+"sekundami";break;case"m":return a?"min\xfata":s?"min\xfatu":"min\xfatou";case"mm":return a||s?n+(Gn(e)?"min\xfaty":"min\xfat"):n+"min\xfatami";break;case"h":return a?"hodina":s?"hodinu":"hodinou";case"hh":return a||s?n+(Gn(e)?"hodiny":"hod\xedn"):n+"hodinami";break;case"d":return a||s?"de\u0148":"d\u0148om";case"dd":return a||s?n+(Gn(e)?"dni":"dn\xed"):n+"d\u0148ami";break;case"M":return a||s?"mesiac":"mesiacom";case"MM":return a||s?n+(Gn(e)?"mesiace":"mesiacov"):n+"mesiacmi";break;case"y":return a||s?"rok":"rokom";case"yy":return a||s?n+(Gn(e)?"roky":"rokov"):n+"rokmi";break}}function Vn(e,a,t,s){var n=e+" ";switch(t){case"s":return a||s?"nekaj sekund":"nekaj sekundami";case"ss":return n+=1===e?a?"sekundo":"sekundi":2===e?a||s?"sekundi":"sekundah":e<5?a||s?"sekunde":"sekundah":"sekund";case"m":return a?"ena minuta":"eno minuto";case"mm":return n+=1===e?a?"minuta":"minuto":2===e?a||s?"minuti":"minutama":e<5?a||s?"minute":"minutami":a||s?"minut":"minutami";case"h":return a?"ena ura":"eno uro";case"hh":return n+=1===e?a?"ura":"uro":2===e?a||s?"uri":"urama":e<5?a||s?"ure":"urami":a||s?"ur":"urami";case"d":return a||s?"en dan":"enim dnem";case"dd":return n+=1===e?a||s?"dan":"dnem":2===e?a||s?"dni":"dnevoma":a||s?"dni":"dnevi";case"M":return a||s?"en mesec":"enim mesecem";case"MM":return n+=1===e?a||s?"mesec":"mesecem":2===e?a||s?"meseca":"mesecema":e<5?a||s?"mesece":"meseci":a||s?"mesecev":"meseci";case"y":return a||s?"eno leto":"enim letom";case"yy":return n+=1===e?a||s?"leto":"letom":2===e?a||s?"leti":"letoma":e<5?a||s?"leta":"leti":a||s?"let":"leti"}}l.defineLocale("sk",{months:In,monthsShort:Cn,weekdays:"nede\u013ea_pondelok_utorok_streda_\u0161tvrtok_piatok_sobota".split("_"),weekdaysShort:"ne_po_ut_st_\u0161t_pi_so".split("_"),weekdaysMin:"ne_po_ut_st_\u0161t_pi_so".split("_"),longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd D. MMMM YYYY H:mm"},calendar:{sameDay:"[dnes o] LT",nextDay:"[zajtra o] LT",nextWeek:function(){switch(this.day()){case 0:return"[v nede\u013eu o] LT";case 1:case 2:return"[v] dddd [o] LT";case 3:return"[v stredu o] LT";case 4:return"[vo \u0161tvrtok o] LT";case 5:return"[v piatok o] LT";case 6:return"[v sobotu o] LT"}},lastDay:"[v\u010dera o] LT",lastWeek:function(){switch(this.day()){case 0:return"[minul\xfa nede\u013eu o] LT";case 1:case 2:return"[minul\xfd] dddd [o] LT";case 3:return"[minul\xfa stredu o] LT";case 4:case 5:return"[minul\xfd] dddd [o] LT";case 6:return"[minul\xfa sobotu o] LT"}},sameElse:"L"},relativeTime:{future:"za %s",past:"pred %s",s:Un,ss:Un,m:Un,mm:Un,h:Un,hh:Un,d:Un,dd:Un,M:Un,MM:Un,y:Un,yy:Un},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("sl",{months:"januar_februar_marec_april_maj_junij_julij_avgust_september_oktober_november_december".split("_"),monthsShort:"jan._feb._mar._apr._maj._jun._jul._avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljek_torek_sreda_\u010detrtek_petek_sobota".split("_"),weekdaysShort:"ned._pon._tor._sre._\u010det._pet._sob.".split("_"),weekdaysMin:"ne_po_to_sr_\u010de_pe_so".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danes ob] LT",nextDay:"[jutri ob] LT",nextWeek:function(){switch(this.day()){case 0:return"[v] [nedeljo] [ob] LT";case 3:return"[v] [sredo] [ob] LT";case 6:return"[v] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[v] dddd [ob] LT"}},lastDay:"[v\u010deraj ob] LT",lastWeek:function(){switch(this.day()){case 0:return"[prej\u0161njo] [nedeljo] [ob] LT";case 3:return"[prej\u0161njo] [sredo] [ob] LT";case 6:return"[prej\u0161njo] [soboto] [ob] LT";case 1:case 2:case 4:case 5:return"[prej\u0161nji] dddd [ob] LT"}},sameElse:"L"},relativeTime:{future:"\u010dez %s",past:"pred %s",s:Vn,ss:Vn,m:Vn,mm:Vn,h:Vn,hh:Vn,d:Vn,dd:Vn,M:Vn,MM:Vn,y:Vn,yy:Vn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("sq",{months:"Janar_Shkurt_Mars_Prill_Maj_Qershor_Korrik_Gusht_Shtator_Tetor_N\xebntor_Dhjetor".split("_"),monthsShort:"Jan_Shk_Mar_Pri_Maj_Qer_Kor_Gus_Sht_Tet_N\xebn_Dhj".split("_"),weekdays:"E Diel_E H\xebn\xeb_E Mart\xeb_E M\xebrkur\xeb_E Enjte_E Premte_E Shtun\xeb".split("_"),weekdaysShort:"Die_H\xebn_Mar_M\xebr_Enj_Pre_Sht".split("_"),weekdaysMin:"D_H_Ma_M\xeb_E_P_Sh".split("_"),weekdaysParseExact:!0,meridiemParse:/PD|MD/,isPM:function(e){return"M"===e.charAt(0)},meridiem:function(e,a,t){return e<12?"PD":"MD"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Sot n\xeb] LT",nextDay:"[Nes\xebr n\xeb] LT",nextWeek:"dddd [n\xeb] LT",lastDay:"[Dje n\xeb] LT",lastWeek:"dddd [e kaluar n\xeb] LT",sameElse:"L"},relativeTime:{future:"n\xeb %s",past:"%s m\xeb par\xeb",s:"disa sekonda",ss:"%d sekonda",m:"nj\xeb minut\xeb",mm:"%d minuta",h:"nj\xeb or\xeb",hh:"%d or\xeb",d:"nj\xeb dit\xeb",dd:"%d dit\xeb",M:"nj\xeb muaj",MM:"%d muaj",y:"nj\xeb vit",yy:"%d vite"},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var Kn={words:{ss:["\u0441\u0435\u043a\u0443\u043d\u0434\u0430","\u0441\u0435\u043a\u0443\u043d\u0434\u0435","\u0441\u0435\u043a\u0443\u043d\u0434\u0438"],m:["\u0458\u0435\u0434\u0430\u043d \u043c\u0438\u043d\u0443\u0442","\u0458\u0435\u0434\u043d\u0435 \u043c\u0438\u043d\u0443\u0442\u0435"],mm:["\u043c\u0438\u043d\u0443\u0442","\u043c\u0438\u043d\u0443\u0442\u0435","\u043c\u0438\u043d\u0443\u0442\u0430"],h:["\u0458\u0435\u0434\u0430\u043d \u0441\u0430\u0442","\u0458\u0435\u0434\u043d\u043e\u0433 \u0441\u0430\u0442\u0430"],hh:["\u0441\u0430\u0442","\u0441\u0430\u0442\u0430","\u0441\u0430\u0442\u0438"],dd:["\u0434\u0430\u043d","\u0434\u0430\u043d\u0430","\u0434\u0430\u043d\u0430"],MM:["\u043c\u0435\u0441\u0435\u0446","\u043c\u0435\u0441\u0435\u0446\u0430","\u043c\u0435\u0441\u0435\u0446\u0438"],yy:["\u0433\u043e\u0434\u0438\u043d\u0430","\u0433\u043e\u0434\u0438\u043d\u0435","\u0433\u043e\u0434\u0438\u043d\u0430"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=Kn.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+Kn.correctGrammaticalCase(e,s)}};l.defineLocale("sr-cyrl",{months:"\u0458\u0430\u043d\u0443\u0430\u0440_\u0444\u0435\u0431\u0440\u0443\u0430\u0440_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0438\u043b_\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043f\u0442\u0435\u043c\u0431\u0430\u0440_\u043e\u043a\u0442\u043e\u0431\u0430\u0440_\u043d\u043e\u0432\u0435\u043c\u0431\u0430\u0440_\u0434\u0435\u0446\u0435\u043c\u0431\u0430\u0440".split("_"),monthsShort:"\u0458\u0430\u043d._\u0444\u0435\u0431._\u043c\u0430\u0440._\u0430\u043f\u0440._\u043c\u0430\u0458_\u0458\u0443\u043d_\u0458\u0443\u043b_\u0430\u0432\u0433._\u0441\u0435\u043f._\u043e\u043a\u0442._\u043d\u043e\u0432._\u0434\u0435\u0446.".split("_"),monthsParseExact:!0,weekdays:"\u043d\u0435\u0434\u0435\u0459\u0430_\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u0430\u043a_\u0443\u0442\u043e\u0440\u0430\u043a_\u0441\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0440\u0442\u0430\u043a_\u043f\u0435\u0442\u0430\u043a_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),weekdaysShort:"\u043d\u0435\u0434._\u043f\u043e\u043d._\u0443\u0442\u043e._\u0441\u0440\u0435._\u0447\u0435\u0442._\u043f\u0435\u0442._\u0441\u0443\u0431.".split("_"),weekdaysMin:"\u043d\u0435_\u043f\u043e_\u0443\u0442_\u0441\u0440_\u0447\u0435_\u043f\u0435_\u0441\u0443".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[\u0434\u0430\u043d\u0430\u0441 \u0443] LT",nextDay:"[\u0441\u0443\u0442\u0440\u0430 \u0443] LT",nextWeek:function(){switch(this.day()){case 0:return"[\u0443] [\u043d\u0435\u0434\u0435\u0459\u0443] [\u0443] LT";case 3:return"[\u0443] [\u0441\u0440\u0435\u0434\u0443] [\u0443] LT";case 6:return"[\u0443] [\u0441\u0443\u0431\u043e\u0442\u0443] [\u0443] LT";case 1:case 2:case 4:case 5:return"[\u0443] dddd [\u0443] LT"}},lastDay:"[\u0458\u0443\u0447\u0435 \u0443] LT",lastWeek:function(){return["[\u043f\u0440\u043e\u0448\u043b\u0435] [\u043d\u0435\u0434\u0435\u0459\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u043e\u043d\u0435\u0434\u0435\u0459\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0443\u0442\u043e\u0440\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0440\u0435\u0434\u0435] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u0447\u0435\u0442\u0432\u0440\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u043e\u0433] [\u043f\u0435\u0442\u043a\u0430] [\u0443] LT","[\u043f\u0440\u043e\u0448\u043b\u0435] [\u0441\u0443\u0431\u043e\u0442\u0435] [\u0443] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"\u043f\u0440\u0435 %s",s:"\u043d\u0435\u043a\u043e\u043b\u0438\u043a\u043e \u0441\u0435\u043a\u0443\u043d\u0434\u0438",ss:Kn.translate,m:Kn.translate,mm:Kn.translate,h:Kn.translate,hh:Kn.translate,d:"\u0434\u0430\u043d",dd:Kn.translate,M:"\u043c\u0435\u0441\u0435\u0446",MM:Kn.translate,y:"\u0433\u043e\u0434\u0438\u043d\u0443",yy:Kn.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}});var $n={words:{ss:["sekunda","sekunde","sekundi"],m:["jedan minut","jedne minute"],mm:["minut","minute","minuta"],h:["jedan sat","jednog sata"],hh:["sat","sata","sati"],dd:["dan","dana","dana"],MM:["mesec","meseca","meseci"],yy:["godina","godine","godina"]},correctGrammaticalCase:function(e,a){return 1===e?a[0]:2<=e&&e<=4?a[1]:a[2]},translate:function(e,a,t){var s=$n.words[t];return 1===t.length?a?s[0]:s[1]:e+" "+$n.correctGrammaticalCase(e,s)}};l.defineLocale("sr",{months:"januar_februar_mart_april_maj_jun_jul_avgust_septembar_oktobar_novembar_decembar".split("_"),monthsShort:"jan._feb._mar._apr._maj_jun_jul_avg._sep._okt._nov._dec.".split("_"),monthsParseExact:!0,weekdays:"nedelja_ponedeljak_utorak_sreda_\u010detvrtak_petak_subota".split("_"),weekdaysShort:"ned._pon._uto._sre._\u010det._pet._sub.".split("_"),weekdaysMin:"ne_po_ut_sr_\u010de_pe_su".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD.MM.YYYY",LL:"D. MMMM YYYY",LLL:"D. MMMM YYYY H:mm",LLLL:"dddd, D. MMMM YYYY H:mm"},calendar:{sameDay:"[danas u] LT",nextDay:"[sutra u] LT",nextWeek:function(){switch(this.day()){case 0:return"[u] [nedelju] [u] LT";case 3:return"[u] [sredu] [u] LT";case 6:return"[u] [subotu] [u] LT";case 1:case 2:case 4:case 5:return"[u] dddd [u] LT"}},lastDay:"[ju\u010de u] LT",lastWeek:function(){return["[pro\u0161le] [nedelje] [u] LT","[pro\u0161log] [ponedeljka] [u] LT","[pro\u0161log] [utorka] [u] LT","[pro\u0161le] [srede] [u] LT","[pro\u0161log] [\u010detvrtka] [u] LT","[pro\u0161log] [petka] [u] LT","[pro\u0161le] [subote] [u] LT"][this.day()]},sameElse:"L"},relativeTime:{future:"za %s",past:"pre %s",s:"nekoliko sekundi",ss:$n.translate,m:$n.translate,mm:$n.translate,h:$n.translate,hh:$n.translate,d:"dan",dd:$n.translate,M:"mesec",MM:$n.translate,y:"godinu",yy:$n.translate},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:7}}),l.defineLocale("ss",{months:"Bhimbidvwane_Indlovana_Indlov'lenkhulu_Mabasa_Inkhwekhweti_Inhlaba_Kholwane_Ingci_Inyoni_Imphala_Lweti_Ingongoni".split("_"),monthsShort:"Bhi_Ina_Inu_Mab_Ink_Inh_Kho_Igc_Iny_Imp_Lwe_Igo".split("_"),weekdays:"Lisontfo_Umsombuluko_Lesibili_Lesitsatfu_Lesine_Lesihlanu_Umgcibelo".split("_"),weekdaysShort:"Lis_Umb_Lsb_Les_Lsi_Lsh_Umg".split("_"),weekdaysMin:"Li_Us_Lb_Lt_Ls_Lh_Ug".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[Namuhla nga] LT",nextDay:"[Kusasa nga] LT",nextWeek:"dddd [nga] LT",lastDay:"[Itolo nga] LT",lastWeek:"dddd [leliphelile] [nga] LT",sameElse:"L"},relativeTime:{future:"nga %s",past:"wenteka nga %s",s:"emizuzwana lomcane",ss:"%d mzuzwana",m:"umzuzu",mm:"%d emizuzu",h:"lihora",hh:"%d emahora",d:"lilanga",dd:"%d emalanga",M:"inyanga",MM:"%d tinyanga",y:"umnyaka",yy:"%d iminyaka"},meridiemParse:/ekuseni|emini|entsambama|ebusuku/,meridiem:function(e,a,t){return e<11?"ekuseni":e<15?"emini":e<19?"entsambama":"ebusuku"},meridiemHour:function(e,a){return 12===e&&(e=0),"ekuseni"===a?e:"emini"===a?11<=e?e:e+12:"entsambama"===a||"ebusuku"===a?0===e?0:e+12:void 0},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:"%d",week:{dow:1,doy:4}}),l.defineLocale("sv",{months:"januari_februari_mars_april_maj_juni_juli_augusti_september_oktober_november_december".split("_"),monthsShort:"jan_feb_mar_apr_maj_jun_jul_aug_sep_okt_nov_dec".split("_"),weekdays:"s\xf6ndag_m\xe5ndag_tisdag_onsdag_torsdag_fredag_l\xf6rdag".split("_"),weekdaysShort:"s\xf6n_m\xe5n_tis_ons_tor_fre_l\xf6r".split("_"),weekdaysMin:"s\xf6_m\xe5_ti_on_to_fr_l\xf6".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"D MMMM YYYY",LLL:"D MMMM YYYY [kl.] HH:mm",LLLL:"dddd D MMMM YYYY [kl.] HH:mm",lll:"D MMM YYYY HH:mm",llll:"ddd D MMM YYYY HH:mm"},calendar:{sameDay:"[Idag] LT",nextDay:"[Imorgon] LT",lastDay:"[Ig\xe5r] LT",nextWeek:"[P\xe5] dddd LT",lastWeek:"[I] dddd[s] LT",sameElse:"L"},relativeTime:{future:"om %s",past:"f\xf6r %s sedan",s:"n\xe5gra sekunder",ss:"%d sekunder",m:"en minut",mm:"%d minuter",h:"en timme",hh:"%d timmar",d:"en dag",dd:"%d dagar",M:"en m\xe5nad",MM:"%d m\xe5nader",y:"ett \xe5r",yy:"%d \xe5r"},dayOfMonthOrdinalParse:/\d{1,2}(e|a)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"e":1===a?"a":2===a?"a":"e")},week:{dow:1,doy:4}}),l.defineLocale("sw",{months:"Januari_Februari_Machi_Aprili_Mei_Juni_Julai_Agosti_Septemba_Oktoba_Novemba_Desemba".split("_"),monthsShort:"Jan_Feb_Mac_Apr_Mei_Jun_Jul_Ago_Sep_Okt_Nov_Des".split("_"),weekdays:"Jumapili_Jumatatu_Jumanne_Jumatano_Alhamisi_Ijumaa_Jumamosi".split("_"),weekdaysShort:"Jpl_Jtat_Jnne_Jtan_Alh_Ijm_Jmos".split("_"),weekdaysMin:"J2_J3_J4_J5_Al_Ij_J1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[leo saa] LT",nextDay:"[kesho saa] LT",nextWeek:"[wiki ijayo] dddd [saat] LT",lastDay:"[jana] LT",lastWeek:"[wiki iliyopita] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s baadaye",past:"tokea %s",s:"hivi punde",ss:"sekunde %d",m:"dakika moja",mm:"dakika %d",h:"saa limoja",hh:"masaa %d",d:"siku moja",dd:"masiku %d",M:"mwezi mmoja",MM:"miezi %d",y:"mwaka mmoja",yy:"miaka %d"},week:{dow:1,doy:7}});var Zn={1:"\u0be7",2:"\u0be8",3:"\u0be9",4:"\u0bea",5:"\u0beb",6:"\u0bec",7:"\u0bed",8:"\u0bee",9:"\u0bef",0:"\u0be6"},Bn={"\u0be7":"1","\u0be8":"2","\u0be9":"3","\u0bea":"4","\u0beb":"5","\u0bec":"6","\u0bed":"7","\u0bee":"8","\u0bef":"9","\u0be6":"0"};l.defineLocale("ta",{months:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),monthsShort:"\u0b9c\u0ba9\u0bb5\u0bb0\u0bbf_\u0baa\u0bbf\u0baa\u0bcd\u0bb0\u0bb5\u0bb0\u0bbf_\u0bae\u0bbe\u0bb0\u0bcd\u0b9a\u0bcd_\u0b8f\u0baa\u0bcd\u0bb0\u0bb2\u0bcd_\u0bae\u0bc7_\u0b9c\u0bc2\u0ba9\u0bcd_\u0b9c\u0bc2\u0bb2\u0bc8_\u0b86\u0b95\u0bb8\u0bcd\u0b9f\u0bcd_\u0b9a\u0bc6\u0baa\u0bcd\u0b9f\u0bc6\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b85\u0b95\u0bcd\u0b9f\u0bc7\u0bbe\u0baa\u0bb0\u0bcd_\u0ba8\u0bb5\u0bae\u0bcd\u0baa\u0bb0\u0bcd_\u0b9f\u0bbf\u0b9a\u0bae\u0bcd\u0baa\u0bb0\u0bcd".split("_"),weekdays:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bcd\u0bb1\u0bc1\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0b9f\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8_\u0b9a\u0ba9\u0bbf\u0b95\u0bcd\u0b95\u0bbf\u0bb4\u0bae\u0bc8".split("_"),weekdaysShort:"\u0b9e\u0bbe\u0baf\u0bbf\u0bb1\u0bc1_\u0ba4\u0bbf\u0b99\u0bcd\u0b95\u0bb3\u0bcd_\u0b9a\u0bc6\u0bb5\u0bcd\u0bb5\u0bbe\u0baf\u0bcd_\u0baa\u0bc1\u0ba4\u0ba9\u0bcd_\u0bb5\u0bbf\u0baf\u0bbe\u0bb4\u0ba9\u0bcd_\u0bb5\u0bc6\u0bb3\u0bcd\u0bb3\u0bbf_\u0b9a\u0ba9\u0bbf".split("_"),weekdaysMin:"\u0b9e\u0bbe_\u0ba4\u0bbf_\u0b9a\u0bc6_\u0baa\u0bc1_\u0bb5\u0bbf_\u0bb5\u0bc6_\u0b9a".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, HH:mm",LLLL:"dddd, D MMMM YYYY, HH:mm"},calendar:{sameDay:"[\u0b87\u0ba9\u0bcd\u0bb1\u0bc1] LT",nextDay:"[\u0ba8\u0bbe\u0bb3\u0bc8] LT",nextWeek:"dddd, LT",lastDay:"[\u0ba8\u0bc7\u0bb1\u0bcd\u0bb1\u0bc1] LT",lastWeek:"[\u0b95\u0b9f\u0ba8\u0bcd\u0ba4 \u0bb5\u0bbe\u0bb0\u0bae\u0bcd] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0b87\u0bb2\u0bcd",past:"%s \u0bae\u0bc1\u0ba9\u0bcd",s:"\u0b92\u0bb0\u0bc1 \u0b9a\u0bbf\u0bb2 \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",ss:"%d \u0bb5\u0bbf\u0ba8\u0bbe\u0b9f\u0bbf\u0b95\u0bb3\u0bcd",m:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0bae\u0bcd",mm:"%d \u0ba8\u0bbf\u0bae\u0bbf\u0b9f\u0b99\u0bcd\u0b95\u0bb3\u0bcd",h:"\u0b92\u0bb0\u0bc1 \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",hh:"%d \u0bae\u0ba3\u0bbf \u0ba8\u0bc7\u0bb0\u0bae\u0bcd",d:"\u0b92\u0bb0\u0bc1 \u0ba8\u0bbe\u0bb3\u0bcd",dd:"%d \u0ba8\u0bbe\u0b9f\u0bcd\u0b95\u0bb3\u0bcd",M:"\u0b92\u0bb0\u0bc1 \u0bae\u0bbe\u0ba4\u0bae\u0bcd",MM:"%d \u0bae\u0bbe\u0ba4\u0b99\u0bcd\u0b95\u0bb3\u0bcd",y:"\u0b92\u0bb0\u0bc1 \u0bb5\u0bb0\u0bc1\u0b9f\u0bae\u0bcd",yy:"%d \u0b86\u0ba3\u0bcd\u0b9f\u0bc1\u0b95\u0bb3\u0bcd"},dayOfMonthOrdinalParse:/\d{1,2}\u0bb5\u0ba4\u0bc1/,ordinal:function(e){return e+"\u0bb5\u0ba4\u0bc1"},preparse:function(e){return e.replace(/[\u0be7\u0be8\u0be9\u0bea\u0beb\u0bec\u0bed\u0bee\u0bef\u0be6]/g,function(e){return Bn[e]})},postformat:function(e){return e.replace(/\d/g,function(e){return Zn[e]})},meridiemParse:/\u0baf\u0bbe\u0bae\u0bae\u0bcd|\u0bb5\u0bc8\u0b95\u0bb1\u0bc8|\u0b95\u0bbe\u0bb2\u0bc8|\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd|\u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1|\u0bae\u0bbe\u0bb2\u0bc8/,meridiem:function(e,a,t){return e<2?" \u0baf\u0bbe\u0bae\u0bae\u0bcd":e<6?" \u0bb5\u0bc8\u0b95\u0bb1\u0bc8":e<10?" \u0b95\u0bbe\u0bb2\u0bc8":e<14?" \u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd":e<18?" \u0b8e\u0bb1\u0bcd\u0baa\u0bbe\u0b9f\u0bc1":e<22?" \u0bae\u0bbe\u0bb2\u0bc8":" \u0baf\u0bbe\u0bae\u0bae\u0bcd"},meridiemHour:function(e,a){return 12===e&&(e=0),"\u0baf\u0bbe\u0bae\u0bae\u0bcd"===a?e<2?e:e+12:"\u0bb5\u0bc8\u0b95\u0bb1\u0bc8"===a||"\u0b95\u0bbe\u0bb2\u0bc8"===a?e:"\u0ba8\u0ba3\u0bcd\u0baa\u0b95\u0bb2\u0bcd"===a&&10<=e?e:e+12},week:{dow:0,doy:6}}),l.defineLocale("te",{months:"\u0c1c\u0c28\u0c35\u0c30\u0c3f_\u0c2b\u0c3f\u0c2c\u0c4d\u0c30\u0c35\u0c30\u0c3f_\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f\u0c32\u0c4d_\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17\u0c38\u0c4d\u0c1f\u0c41_\u0c38\u0c46\u0c2a\u0c4d\u0c1f\u0c46\u0c02\u0c2c\u0c30\u0c4d_\u0c05\u0c15\u0c4d\u0c1f\u0c4b\u0c2c\u0c30\u0c4d_\u0c28\u0c35\u0c02\u0c2c\u0c30\u0c4d_\u0c21\u0c3f\u0c38\u0c46\u0c02\u0c2c\u0c30\u0c4d".split("_"),monthsShort:"\u0c1c\u0c28._\u0c2b\u0c3f\u0c2c\u0c4d\u0c30._\u0c2e\u0c3e\u0c30\u0c4d\u0c1a\u0c3f_\u0c0f\u0c2a\u0c4d\u0c30\u0c3f._\u0c2e\u0c47_\u0c1c\u0c42\u0c28\u0c4d_\u0c1c\u0c42\u0c32\u0c46\u0c56_\u0c06\u0c17._\u0c38\u0c46\u0c2a\u0c4d._\u0c05\u0c15\u0c4d\u0c1f\u0c4b._\u0c28\u0c35._\u0c21\u0c3f\u0c38\u0c46.".split("_"),monthsParseExact:!0,weekdays:"\u0c06\u0c26\u0c3f\u0c35\u0c3e\u0c30\u0c02_\u0c38\u0c4b\u0c2e\u0c35\u0c3e\u0c30\u0c02_\u0c2e\u0c02\u0c17\u0c33\u0c35\u0c3e\u0c30\u0c02_\u0c2c\u0c41\u0c27\u0c35\u0c3e\u0c30\u0c02_\u0c17\u0c41\u0c30\u0c41\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c41\u0c15\u0c4d\u0c30\u0c35\u0c3e\u0c30\u0c02_\u0c36\u0c28\u0c3f\u0c35\u0c3e\u0c30\u0c02".split("_"),weekdaysShort:"\u0c06\u0c26\u0c3f_\u0c38\u0c4b\u0c2e_\u0c2e\u0c02\u0c17\u0c33_\u0c2c\u0c41\u0c27_\u0c17\u0c41\u0c30\u0c41_\u0c36\u0c41\u0c15\u0c4d\u0c30_\u0c36\u0c28\u0c3f".split("_"),weekdaysMin:"\u0c06_\u0c38\u0c4b_\u0c2e\u0c02_\u0c2c\u0c41_\u0c17\u0c41_\u0c36\u0c41_\u0c36".split("_"),longDateFormat:{LT:"A h:mm",LTS:"A h:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY, A h:mm",LLLL:"dddd, D MMMM YYYY, A h:mm"},calendar:{sameDay:"[\u0c28\u0c47\u0c21\u0c41] LT",nextDay:"[\u0c30\u0c47\u0c2a\u0c41] LT",nextWeek:"dddd, LT",lastDay:"[\u0c28\u0c3f\u0c28\u0c4d\u0c28] LT",lastWeek:"[\u0c17\u0c24] dddd, LT",sameElse:"L"},relativeTime:{future:"%s \u0c32\u0c4b",past:"%s \u0c15\u0c4d\u0c30\u0c3f\u0c24\u0c02",s:"\u0c15\u0c4a\u0c28\u0c4d\u0c28\u0c3f \u0c15\u0c4d\u0c37\u0c23\u0c3e\u0c32\u0c41",ss:"%d \u0c38\u0c46\u0c15\u0c28\u0c4d\u0c32\u0c41",m:"\u0c12\u0c15 \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c02",mm:"%d \u0c28\u0c3f\u0c2e\u0c3f\u0c37\u0c3e\u0c32\u0c41",h:"\u0c12\u0c15 \u0c17\u0c02\u0c1f",hh:"%d \u0c17\u0c02\u0c1f\u0c32\u0c41",d:"\u0c12\u0c15 \u0c30\u0c4b\u0c1c\u0c41",dd:"%d \u0c30\u0c4b\u0c1c\u0c41\u0c32\u0c41",M:"\u0c12\u0c15 \u0c28\u0c46\u0c32",MM:"%d \u0c28\u0c46\u0c32\u0c32\u0c41",y:"\u0c12\u0c15 \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c02",yy:"%d \u0c38\u0c02\u0c35\u0c24\u0c4d\u0c38\u0c30\u0c3e\u0c32\u0c41"},dayOfMonthOrdinalParse:/\d{1,2}\u0c35/,ordinal:"%d\u0c35",meridiemParse:/\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f|\u0c09\u0c26\u0c2f\u0c02|\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02|\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"===a?e<4?e:e+12:"\u0c09\u0c26\u0c2f\u0c02"===a?e:"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02"===a?10<=e?e:e+12:"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f":e<10?"\u0c09\u0c26\u0c2f\u0c02":e<17?"\u0c2e\u0c27\u0c4d\u0c2f\u0c3e\u0c39\u0c4d\u0c28\u0c02":e<20?"\u0c38\u0c3e\u0c2f\u0c02\u0c24\u0c4d\u0c30\u0c02":"\u0c30\u0c3e\u0c24\u0c4d\u0c30\u0c3f"},week:{dow:0,doy:6}}),l.defineLocale("tet",{months:"Janeiru_Fevereiru_Marsu_Abril_Maiu_Ju\xf1u_Jullu_Agustu_Setembru_Outubru_Novembru_Dezembru".split("_"),monthsShort:"Jan_Fev_Mar_Abr_Mai_Jun_Jul_Ago_Set_Out_Nov_Dez".split("_"),weekdays:"Domingu_Segunda_Tersa_Kuarta_Kinta_Sesta_Sabadu".split("_"),weekdaysShort:"Dom_Seg_Ters_Kua_Kint_Sest_Sab".split("_"),weekdaysMin:"Do_Seg_Te_Ku_Ki_Ses_Sa".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[Ohin iha] LT",nextDay:"[Aban iha] LT",nextWeek:"dddd [iha] LT",lastDay:"[Horiseik iha] LT",lastWeek:"dddd [semana kotuk] [iha] LT",sameElse:"L"},relativeTime:{future:"iha %s",past:"%s liuba",s:"minutu balun",ss:"minutu %d",m:"minutu ida",mm:"minutu %d",h:"oras ida",hh:"oras %d",d:"loron ida",dd:"loron %d",M:"fulan ida",MM:"fulan %d",y:"tinan ida",yy:"tinan %d"},dayOfMonthOrdinalParse:/\d{1,2}(st|nd|rd|th)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}});var qn={0:"-\u0443\u043c",1:"-\u0443\u043c",2:"-\u044e\u043c",3:"-\u044e\u043c",4:"-\u0443\u043c",5:"-\u0443\u043c",6:"-\u0443\u043c",7:"-\u0443\u043c",8:"-\u0443\u043c",9:"-\u0443\u043c",10:"-\u0443\u043c",12:"-\u0443\u043c",13:"-\u0443\u043c",20:"-\u0443\u043c",30:"-\u044e\u043c",40:"-\u0443\u043c",50:"-\u0443\u043c",60:"-\u0443\u043c",70:"-\u0443\u043c",80:"-\u0443\u043c",90:"-\u0443\u043c",100:"-\u0443\u043c"};l.defineLocale("tg",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u044f\u043a\u0448\u0430\u043d\u0431\u0435_\u0434\u0443\u0448\u0430\u043d\u0431\u0435_\u0441\u0435\u0448\u0430\u043d\u0431\u0435_\u0447\u043e\u0440\u0448\u0430\u043d\u0431\u0435_\u043f\u0430\u043d\u04b7\u0448\u0430\u043d\u0431\u0435_\u04b7\u0443\u043c\u044a\u0430_\u0448\u0430\u043d\u0431\u0435".split("_"),weekdaysShort:"\u044f\u0448\u0431_\u0434\u0448\u0431_\u0441\u0448\u0431_\u0447\u0448\u0431_\u043f\u0448\u0431_\u04b7\u0443\u043c_\u0448\u043d\u0431".split("_"),weekdaysMin:"\u044f\u0448_\u0434\u0448_\u0441\u0448_\u0447\u0448_\u043f\u0448_\u04b7\u043c_\u0448\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u0418\u043c\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextDay:"[\u041f\u0430\u0433\u043e\u04b3 \u0441\u043e\u0430\u0442\u0438] LT",lastDay:"[\u0414\u0438\u0440\u04ef\u0437 \u0441\u043e\u0430\u0442\u0438] LT",nextWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u043e\u044f\u043d\u0434\u0430 \u0441\u043e\u0430\u0442\u0438] LT",lastWeek:"dddd[\u0438] [\u04b3\u0430\u0444\u0442\u0430\u0438 \u0433\u0443\u0437\u0430\u0448\u0442\u0430 \u0441\u043e\u0430\u0442\u0438] LT",sameElse:"L"},relativeTime:{future:"\u0431\u0430\u044a\u0434\u0438 %s",past:"%s \u043f\u0435\u0448",s:"\u044f\u043a\u0447\u0430\u043d\u0434 \u0441\u043e\u043d\u0438\u044f",m:"\u044f\u043a \u0434\u0430\u049b\u0438\u049b\u0430",mm:"%d \u0434\u0430\u049b\u0438\u049b\u0430",h:"\u044f\u043a \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u044f\u043a \u0440\u04ef\u0437",dd:"%d \u0440\u04ef\u0437",M:"\u044f\u043a \u043c\u043e\u04b3",MM:"%d \u043c\u043e\u04b3",y:"\u044f\u043a \u0441\u043e\u043b",yy:"%d \u0441\u043e\u043b"},meridiemParse:/\u0448\u0430\u0431|\u0441\u0443\u0431\u04b3|\u0440\u04ef\u0437|\u0431\u0435\u0433\u043e\u04b3/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u0448\u0430\u0431"===a?e<4?e:e+12:"\u0441\u0443\u0431\u04b3"===a?e:"\u0440\u04ef\u0437"===a?11<=e?e:e+12:"\u0431\u0435\u0433\u043e\u04b3"===a?e+12:void 0},meridiem:function(e,a,t){return e<4?"\u0448\u0430\u0431":e<11?"\u0441\u0443\u0431\u04b3":e<16?"\u0440\u04ef\u0437":e<19?"\u0431\u0435\u0433\u043e\u04b3":"\u0448\u0430\u0431"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0443\u043c|\u044e\u043c)/,ordinal:function(e){return e+(qn[e]||qn[e%10]||qn[100<=e?100:null])},week:{dow:1,doy:7}}),l.defineLocale("th",{months:"\u0e21\u0e01\u0e23\u0e32\u0e04\u0e21_\u0e01\u0e38\u0e21\u0e20\u0e32\u0e1e\u0e31\u0e19\u0e18\u0e4c_\u0e21\u0e35\u0e19\u0e32\u0e04\u0e21_\u0e40\u0e21\u0e29\u0e32\u0e22\u0e19_\u0e1e\u0e24\u0e29\u0e20\u0e32\u0e04\u0e21_\u0e21\u0e34\u0e16\u0e38\u0e19\u0e32\u0e22\u0e19_\u0e01\u0e23\u0e01\u0e0e\u0e32\u0e04\u0e21_\u0e2a\u0e34\u0e07\u0e2b\u0e32\u0e04\u0e21_\u0e01\u0e31\u0e19\u0e22\u0e32\u0e22\u0e19_\u0e15\u0e38\u0e25\u0e32\u0e04\u0e21_\u0e1e\u0e24\u0e28\u0e08\u0e34\u0e01\u0e32\u0e22\u0e19_\u0e18\u0e31\u0e19\u0e27\u0e32\u0e04\u0e21".split("_"),monthsShort:"\u0e21.\u0e04._\u0e01.\u0e1e._\u0e21\u0e35.\u0e04._\u0e40\u0e21.\u0e22._\u0e1e.\u0e04._\u0e21\u0e34.\u0e22._\u0e01.\u0e04._\u0e2a.\u0e04._\u0e01.\u0e22._\u0e15.\u0e04._\u0e1e.\u0e22._\u0e18.\u0e04.".split("_"),monthsParseExact:!0,weekdays:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a\u0e1a\u0e14\u0e35_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysShort:"\u0e2d\u0e32\u0e17\u0e34\u0e15\u0e22\u0e4c_\u0e08\u0e31\u0e19\u0e17\u0e23\u0e4c_\u0e2d\u0e31\u0e07\u0e04\u0e32\u0e23_\u0e1e\u0e38\u0e18_\u0e1e\u0e24\u0e2b\u0e31\u0e2a_\u0e28\u0e38\u0e01\u0e23\u0e4c_\u0e40\u0e2a\u0e32\u0e23\u0e4c".split("_"),weekdaysMin:"\u0e2d\u0e32._\u0e08._\u0e2d._\u0e1e._\u0e1e\u0e24._\u0e28._\u0e2a.".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"H:mm",LTS:"H:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm",LLLL:"\u0e27\u0e31\u0e19dddd\u0e17\u0e35\u0e48 D MMMM YYYY \u0e40\u0e27\u0e25\u0e32 H:mm"},meridiemParse:/\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07|\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07/,isPM:function(e){return"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"===e},meridiem:function(e,a,t){return e<12?"\u0e01\u0e48\u0e2d\u0e19\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07":"\u0e2b\u0e25\u0e31\u0e07\u0e40\u0e17\u0e35\u0e48\u0e22\u0e07"},calendar:{sameDay:"[\u0e27\u0e31\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextDay:"[\u0e1e\u0e23\u0e38\u0e48\u0e07\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",nextWeek:"dddd[\u0e2b\u0e19\u0e49\u0e32 \u0e40\u0e27\u0e25\u0e32] LT",lastDay:"[\u0e40\u0e21\u0e37\u0e48\u0e2d\u0e27\u0e32\u0e19\u0e19\u0e35\u0e49 \u0e40\u0e27\u0e25\u0e32] LT",lastWeek:"[\u0e27\u0e31\u0e19]dddd[\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27 \u0e40\u0e27\u0e25\u0e32] LT",sameElse:"L"},relativeTime:{future:"\u0e2d\u0e35\u0e01 %s",past:"%s\u0e17\u0e35\u0e48\u0e41\u0e25\u0e49\u0e27",s:"\u0e44\u0e21\u0e48\u0e01\u0e35\u0e48\u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",ss:"%d \u0e27\u0e34\u0e19\u0e32\u0e17\u0e35",m:"1 \u0e19\u0e32\u0e17\u0e35",mm:"%d \u0e19\u0e32\u0e17\u0e35",h:"1 \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",hh:"%d \u0e0a\u0e31\u0e48\u0e27\u0e42\u0e21\u0e07",d:"1 \u0e27\u0e31\u0e19",dd:"%d \u0e27\u0e31\u0e19",M:"1 \u0e40\u0e14\u0e37\u0e2d\u0e19",MM:"%d \u0e40\u0e14\u0e37\u0e2d\u0e19",y:"1 \u0e1b\u0e35",yy:"%d \u0e1b\u0e35"}}),l.defineLocale("tl-ph",{months:"Enero_Pebrero_Marso_Abril_Mayo_Hunyo_Hulyo_Agosto_Setyembre_Oktubre_Nobyembre_Disyembre".split("_"),monthsShort:"Ene_Peb_Mar_Abr_May_Hun_Hul_Ago_Set_Okt_Nob_Dis".split("_"),weekdays:"Linggo_Lunes_Martes_Miyerkules_Huwebes_Biyernes_Sabado".split("_"),weekdaysShort:"Lin_Lun_Mar_Miy_Huw_Biy_Sab".split("_"),weekdaysMin:"Li_Lu_Ma_Mi_Hu_Bi_Sab".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"MM/D/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY HH:mm",LLLL:"dddd, MMMM DD, YYYY HH:mm"},calendar:{sameDay:"LT [ngayong araw]",nextDay:"[Bukas ng] LT",nextWeek:"LT [sa susunod na] dddd",lastDay:"LT [kahapon]",lastWeek:"LT [noong nakaraang] dddd",sameElse:"L"},relativeTime:{future:"sa loob ng %s",past:"%s ang nakalipas",s:"ilang segundo",ss:"%d segundo",m:"isang minuto",mm:"%d minuto",h:"isang oras",hh:"%d oras",d:"isang araw",dd:"%d araw",M:"isang buwan",MM:"%d buwan",y:"isang taon",yy:"%d taon"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}});var Qn="pagh_wa\u2019_cha\u2019_wej_loS_vagh_jav_Soch_chorgh_Hut".split("_");function Xn(e,a,t,s){var n=function(e){var a=Math.floor(e%1e3/100),t=Math.floor(e%100/10),s=e%10,n="";0<a&&(n+=Qn[a]+"vatlh");0<t&&(n+=(""!==n?" ":"")+Qn[t]+"maH");0<s&&(n+=(""!==n?" ":"")+Qn[s]);return""===n?"pagh":n}(e);switch(t){case"ss":return n+" lup";case"mm":return n+" tup";case"hh":return n+" rep";case"dd":return n+" jaj";case"MM":return n+" jar";case"yy":return n+" DIS"}}l.defineLocale("tlh",{months:"tera\u2019 jar wa\u2019_tera\u2019 jar cha\u2019_tera\u2019 jar wej_tera\u2019 jar loS_tera\u2019 jar vagh_tera\u2019 jar jav_tera\u2019 jar Soch_tera\u2019 jar chorgh_tera\u2019 jar Hut_tera\u2019 jar wa\u2019maH_tera\u2019 jar wa\u2019maH wa\u2019_tera\u2019 jar wa\u2019maH cha\u2019".split("_"),monthsShort:"jar wa\u2019_jar cha\u2019_jar wej_jar loS_jar vagh_jar jav_jar Soch_jar chorgh_jar Hut_jar wa\u2019maH_jar wa\u2019maH wa\u2019_jar wa\u2019maH cha\u2019".split("_"),monthsParseExact:!0,weekdays:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysShort:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),weekdaysMin:"lojmItjaj_DaSjaj_povjaj_ghItlhjaj_loghjaj_buqjaj_ghInjaj".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[DaHjaj] LT",nextDay:"[wa\u2019leS] LT",nextWeek:"LLL",lastDay:"[wa\u2019Hu\u2019] LT",lastWeek:"LLL",sameElse:"L"},relativeTime:{future:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"leS":-1!==e.indexOf("jar")?a.slice(0,-3)+"waQ":-1!==e.indexOf("DIS")?a.slice(0,-3)+"nem":a+" pIq"},past:function(e){var a=e;return a=-1!==e.indexOf("jaj")?a.slice(0,-3)+"Hu\u2019":-1!==e.indexOf("jar")?a.slice(0,-3)+"wen":-1!==e.indexOf("DIS")?a.slice(0,-3)+"ben":a+" ret"},s:"puS lup",ss:Xn,m:"wa\u2019 tup",mm:Xn,h:"wa\u2019 rep",hh:Xn,d:"wa\u2019 jaj",dd:Xn,M:"wa\u2019 jar",MM:Xn,y:"wa\u2019 DIS",yy:Xn},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}});var ed={1:"'inci",5:"'inci",8:"'inci",70:"'inci",80:"'inci",2:"'nci",7:"'nci",20:"'nci",50:"'nci",3:"'\xfcnc\xfc",4:"'\xfcnc\xfc",100:"'\xfcnc\xfc",6:"'nc\u0131",9:"'uncu",10:"'uncu",30:"'uncu",60:"'\u0131nc\u0131",90:"'\u0131nc\u0131"};function ad(e,a,t,s){var n={s:["viensas secunds","'iensas secunds"],ss:[e+" secunds",e+" secunds"],m:["'n m\xedut","'iens m\xedut"],mm:[e+" m\xeduts",e+" m\xeduts"],h:["'n \xfeora","'iensa \xfeora"],hh:[e+" \xfeoras",e+" \xfeoras"],d:["'n ziua","'iensa ziua"],dd:[e+" ziuas",e+" ziuas"],M:["'n mes","'iens mes"],MM:[e+" mesen",e+" mesen"],y:["'n ar","'iens ar"],yy:[e+" ars",e+" ars"]};return s?n[t][0]:a?n[t][0]:n[t][1]}function td(e,a,t){var s,n;return"m"===t?a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443":"h"===t?a?"\u0433\u043e\u0434\u0438\u043d\u0430":"\u0433\u043e\u0434\u0438\u043d\u0443":e+" "+(s=+e,n={ss:a?"\u0441\u0435\u043a\u0443\u043d\u0434\u0430_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434":"\u0441\u0435\u043a\u0443\u043d\u0434\u0443_\u0441\u0435\u043a\u0443\u043d\u0434\u0438_\u0441\u0435\u043a\u0443\u043d\u0434",mm:a?"\u0445\u0432\u0438\u043b\u0438\u043d\u0430_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d":"\u0445\u0432\u0438\u043b\u0438\u043d\u0443_\u0445\u0432\u0438\u043b\u0438\u043d\u0438_\u0445\u0432\u0438\u043b\u0438\u043d",hh:a?"\u0433\u043e\u0434\u0438\u043d\u0430_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d":"\u0433\u043e\u0434\u0438\u043d\u0443_\u0433\u043e\u0434\u0438\u043d\u0438_\u0433\u043e\u0434\u0438\u043d",dd:"\u0434\u0435\u043d\u044c_\u0434\u043d\u0456_\u0434\u043d\u0456\u0432",MM:"\u043c\u0456\u0441\u044f\u0446\u044c_\u043c\u0456\u0441\u044f\u0446\u0456_\u043c\u0456\u0441\u044f\u0446\u0456\u0432",yy:"\u0440\u0456\u043a_\u0440\u043e\u043a\u0438_\u0440\u043e\u043a\u0456\u0432"}[t].split("_"),s%10==1&&s%100!=11?n[0]:2<=s%10&&s%10<=4&&(s%100<10||20<=s%100)?n[1]:n[2])}function sd(e){return function(){return e+"\u043e"+(11===this.hours()?"\u0431":"")+"] LT"}}l.defineLocale("tr",{months:"Ocak_\u015eubat_Mart_Nisan_May\u0131s_Haziran_Temmuz_A\u011fustos_Eyl\xfcl_Ekim_Kas\u0131m_Aral\u0131k".split("_"),monthsShort:"Oca_\u015eub_Mar_Nis_May_Haz_Tem_A\u011fu_Eyl_Eki_Kas_Ara".split("_"),weekdays:"Pazar_Pazartesi_Sal\u0131_\xc7ar\u015famba_Per\u015fembe_Cuma_Cumartesi".split("_"),weekdaysShort:"Paz_Pts_Sal_\xc7ar_Per_Cum_Cts".split("_"),weekdaysMin:"Pz_Pt_Sa_\xc7a_Pe_Cu_Ct".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[bug\xfcn saat] LT",nextDay:"[yar\u0131n saat] LT",nextWeek:"[gelecek] dddd [saat] LT",lastDay:"[d\xfcn] LT",lastWeek:"[ge\xe7en] dddd [saat] LT",sameElse:"L"},relativeTime:{future:"%s sonra",past:"%s \xf6nce",s:"birka\xe7 saniye",ss:"%d saniye",m:"bir dakika",mm:"%d dakika",h:"bir saat",hh:"%d saat",d:"bir g\xfcn",dd:"%d g\xfcn",M:"bir ay",MM:"%d ay",y:"bir y\u0131l",yy:"%d y\u0131l"},ordinal:function(e,a){switch(a){case"d":case"D":case"Do":case"DD":return e;default:if(0===e)return e+"'\u0131nc\u0131";var t=e%10;return e+(ed[t]||ed[e%100-t]||ed[100<=e?100:null])}},week:{dow:1,doy:7}}),l.defineLocale("tzl",{months:"Januar_Fevraglh_Mar\xe7_Avr\xefu_Mai_G\xfcn_Julia_Guscht_Setemvar_Listop\xe4ts_Noemvar_Zecemvar".split("_"),monthsShort:"Jan_Fev_Mar_Avr_Mai_G\xfcn_Jul_Gus_Set_Lis_Noe_Zec".split("_"),weekdays:"S\xfaladi_L\xfane\xe7i_Maitzi_M\xe1rcuri_Xh\xfaadi_Vi\xe9ner\xe7i_S\xe1turi".split("_"),weekdaysShort:"S\xfal_L\xfan_Mai_M\xe1r_Xh\xfa_Vi\xe9_S\xe1t".split("_"),weekdaysMin:"S\xfa_L\xfa_Ma_M\xe1_Xh_Vi_S\xe1".split("_"),longDateFormat:{LT:"HH.mm",LTS:"HH.mm.ss",L:"DD.MM.YYYY",LL:"D. MMMM [dallas] YYYY",LLL:"D. MMMM [dallas] YYYY HH.mm",LLLL:"dddd, [li] D. MMMM [dallas] YYYY HH.mm"},meridiemParse:/d\'o|d\'a/i,isPM:function(e){return"d'o"===e.toLowerCase()},meridiem:function(e,a,t){return 11<e?t?"d'o":"D'O":t?"d'a":"D'A"},calendar:{sameDay:"[oxhi \xe0] LT",nextDay:"[dem\xe0 \xe0] LT",nextWeek:"dddd [\xe0] LT",lastDay:"[ieiri \xe0] LT",lastWeek:"[s\xfcr el] dddd [lasteu \xe0] LT",sameElse:"L"},relativeTime:{future:"osprei %s",past:"ja%s",s:ad,ss:ad,m:ad,mm:ad,h:ad,hh:ad,d:ad,dd:ad,M:ad,MM:ad,y:ad,yy:ad},dayOfMonthOrdinalParse:/\d{1,2}\./,ordinal:"%d.",week:{dow:1,doy:4}}),l.defineLocale("tzm-latn",{months:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),monthsShort:"innayr_br\u02e4ayr\u02e4_mar\u02e4s\u02e4_ibrir_mayyw_ywnyw_ywlywz_\u0263w\u0161t_\u0161wtanbir_kt\u02e4wbr\u02e4_nwwanbir_dwjnbir".split("_"),weekdays:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysShort:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),weekdaysMin:"asamas_aynas_asinas_akras_akwas_asimwas_asi\u1e0dyas".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[asdkh g] LT",nextDay:"[aska g] LT",nextWeek:"dddd [g] LT",lastDay:"[assant g] LT",lastWeek:"dddd [g] LT",sameElse:"L"},relativeTime:{future:"dadkh s yan %s",past:"yan %s",s:"imik",ss:"%d imik",m:"minu\u1e0d",mm:"%d minu\u1e0d",h:"sa\u025ba",hh:"%d tassa\u025bin",d:"ass",dd:"%d ossan",M:"ayowr",MM:"%d iyyirn",y:"asgas",yy:"%d isgasn"},week:{dow:6,doy:12}}),l.defineLocale("tzm",{months:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),monthsShort:"\u2d49\u2d4f\u2d4f\u2d30\u2d62\u2d54_\u2d31\u2d55\u2d30\u2d62\u2d55_\u2d4e\u2d30\u2d55\u2d5a_\u2d49\u2d31\u2d54\u2d49\u2d54_\u2d4e\u2d30\u2d62\u2d62\u2d53_\u2d62\u2d53\u2d4f\u2d62\u2d53_\u2d62\u2d53\u2d4d\u2d62\u2d53\u2d63_\u2d56\u2d53\u2d5b\u2d5c_\u2d5b\u2d53\u2d5c\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d3d\u2d5f\u2d53\u2d31\u2d55_\u2d4f\u2d53\u2d61\u2d30\u2d4f\u2d31\u2d49\u2d54_\u2d37\u2d53\u2d4a\u2d4f\u2d31\u2d49\u2d54".split("_"),weekdays:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysShort:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),weekdaysMin:"\u2d30\u2d59\u2d30\u2d4e\u2d30\u2d59_\u2d30\u2d62\u2d4f\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4f\u2d30\u2d59_\u2d30\u2d3d\u2d54\u2d30\u2d59_\u2d30\u2d3d\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d4e\u2d61\u2d30\u2d59_\u2d30\u2d59\u2d49\u2d39\u2d62\u2d30\u2d59".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd D MMMM YYYY HH:mm"},calendar:{sameDay:"[\u2d30\u2d59\u2d37\u2d45 \u2d34] LT",nextDay:"[\u2d30\u2d59\u2d3d\u2d30 \u2d34] LT",nextWeek:"dddd [\u2d34] LT",lastDay:"[\u2d30\u2d5a\u2d30\u2d4f\u2d5c \u2d34] LT",lastWeek:"dddd [\u2d34] LT",sameElse:"L"},relativeTime:{future:"\u2d37\u2d30\u2d37\u2d45 \u2d59 \u2d62\u2d30\u2d4f %s",past:"\u2d62\u2d30\u2d4f %s",s:"\u2d49\u2d4e\u2d49\u2d3d",ss:"%d \u2d49\u2d4e\u2d49\u2d3d",m:"\u2d4e\u2d49\u2d4f\u2d53\u2d3a",mm:"%d \u2d4e\u2d49\u2d4f\u2d53\u2d3a",h:"\u2d59\u2d30\u2d44\u2d30",hh:"%d \u2d5c\u2d30\u2d59\u2d59\u2d30\u2d44\u2d49\u2d4f",d:"\u2d30\u2d59\u2d59",dd:"%d o\u2d59\u2d59\u2d30\u2d4f",M:"\u2d30\u2d62o\u2d53\u2d54",MM:"%d \u2d49\u2d62\u2d62\u2d49\u2d54\u2d4f",y:"\u2d30\u2d59\u2d33\u2d30\u2d59",yy:"%d \u2d49\u2d59\u2d33\u2d30\u2d59\u2d4f"},week:{dow:6,doy:12}}),l.defineLocale("ug-cn",{months:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),monthsShort:"\u064a\u0627\u0646\u06cb\u0627\u0631_\u0641\u06d0\u06cb\u0631\u0627\u0644_\u0645\u0627\u0631\u062a_\u0626\u0627\u067e\u0631\u06d0\u0644_\u0645\u0627\u064a_\u0626\u0649\u064a\u06c7\u0646_\u0626\u0649\u064a\u06c7\u0644_\u0626\u0627\u06cb\u063a\u06c7\u0633\u062a_\u0633\u06d0\u0646\u062a\u06d5\u0628\u0649\u0631_\u0626\u06c6\u0643\u062a\u06d5\u0628\u0649\u0631_\u0646\u0648\u064a\u0627\u0628\u0649\u0631_\u062f\u06d0\u0643\u0627\u0628\u0649\u0631".split("_"),weekdays:"\u064a\u06d5\u0643\u0634\u06d5\u0646\u0628\u06d5_\u062f\u06c8\u0634\u06d5\u0646\u0628\u06d5_\u0633\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u0686\u0627\u0631\u0634\u06d5\u0646\u0628\u06d5_\u067e\u06d5\u064a\u0634\u06d5\u0646\u0628\u06d5_\u062c\u06c8\u0645\u06d5_\u0634\u06d5\u0646\u0628\u06d5".split("_"),weekdaysShort:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),weekdaysMin:"\u064a\u06d5_\u062f\u06c8_\u0633\u06d5_\u0686\u0627_\u067e\u06d5_\u062c\u06c8_\u0634\u06d5".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY-MM-DD",LL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649",LLL:"YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm",LLLL:"dddd\u060c YYYY-\u064a\u0649\u0644\u0649M-\u0626\u0627\u064a\u0646\u0649\u06adD-\u0643\u06c8\u0646\u0649\u060c HH:mm"},meridiemParse:/\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5|\u0633\u06d5\u06be\u06d5\u0631|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646|\u0686\u06c8\u0634|\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646|\u0643\u06d5\u0686/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5"===a||"\u0633\u06d5\u06be\u06d5\u0631"===a||"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646"===a?e:"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646"===a||"\u0643\u06d5\u0686"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u064a\u06d0\u0631\u0649\u0645 \u0643\u06d0\u0686\u06d5":s<900?"\u0633\u06d5\u06be\u06d5\u0631":s<1130?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0628\u06c7\u0631\u06c7\u0646":s<1230?"\u0686\u06c8\u0634":s<1800?"\u0686\u06c8\u0634\u062a\u0649\u0646 \u0643\u06d0\u064a\u0649\u0646":"\u0643\u06d5\u0686"},calendar:{sameDay:"[\u0628\u06c8\u06af\u06c8\u0646 \u0633\u0627\u0626\u06d5\u062a] LT",nextDay:"[\u0626\u06d5\u062a\u06d5 \u0633\u0627\u0626\u06d5\u062a] LT",nextWeek:"[\u0643\u06d0\u0644\u06d5\u0631\u0643\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",lastDay:"[\u062a\u06c6\u0646\u06c8\u06af\u06c8\u0646] LT",lastWeek:"[\u0626\u0627\u0644\u062f\u0649\u0646\u0642\u0649] dddd [\u0633\u0627\u0626\u06d5\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0643\u06d0\u064a\u0649\u0646",past:"%s \u0628\u06c7\u0631\u06c7\u0646",s:"\u0646\u06d5\u0686\u0686\u06d5 \u0633\u06d0\u0643\u0648\u0646\u062a",ss:"%d \u0633\u06d0\u0643\u0648\u0646\u062a",m:"\u0628\u0649\u0631 \u0645\u0649\u0646\u06c7\u062a",mm:"%d \u0645\u0649\u0646\u06c7\u062a",h:"\u0628\u0649\u0631 \u0633\u0627\u0626\u06d5\u062a",hh:"%d \u0633\u0627\u0626\u06d5\u062a",d:"\u0628\u0649\u0631 \u0643\u06c8\u0646",dd:"%d \u0643\u06c8\u0646",M:"\u0628\u0649\u0631 \u0626\u0627\u064a",MM:"%d \u0626\u0627\u064a",y:"\u0628\u0649\u0631 \u064a\u0649\u0644",yy:"%d \u064a\u0649\u0644"},dayOfMonthOrdinalParse:/\d{1,2}(-\u0643\u06c8\u0646\u0649|-\u0626\u0627\u064a|-\u06be\u06d5\u067e\u062a\u06d5)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"-\u0643\u06c8\u0646\u0649";case"w":case"W":return e+"-\u06be\u06d5\u067e\u062a\u06d5";default:return e}},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:7}}),l.defineLocale("uk",{months:{format:"\u0441\u0456\u0447\u043d\u044f_\u043b\u044e\u0442\u043e\u0433\u043e_\u0431\u0435\u0440\u0435\u0437\u043d\u044f_\u043a\u0432\u0456\u0442\u043d\u044f_\u0442\u0440\u0430\u0432\u043d\u044f_\u0447\u0435\u0440\u0432\u043d\u044f_\u043b\u0438\u043f\u043d\u044f_\u0441\u0435\u0440\u043f\u043d\u044f_\u0432\u0435\u0440\u0435\u0441\u043d\u044f_\u0436\u043e\u0432\u0442\u043d\u044f_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434\u0430_\u0433\u0440\u0443\u0434\u043d\u044f".split("_"),standalone:"\u0441\u0456\u0447\u0435\u043d\u044c_\u043b\u044e\u0442\u0438\u0439_\u0431\u0435\u0440\u0435\u0437\u0435\u043d\u044c_\u043a\u0432\u0456\u0442\u0435\u043d\u044c_\u0442\u0440\u0430\u0432\u0435\u043d\u044c_\u0447\u0435\u0440\u0432\u0435\u043d\u044c_\u043b\u0438\u043f\u0435\u043d\u044c_\u0441\u0435\u0440\u043f\u0435\u043d\u044c_\u0432\u0435\u0440\u0435\u0441\u0435\u043d\u044c_\u0436\u043e\u0432\u0442\u0435\u043d\u044c_\u043b\u0438\u0441\u0442\u043e\u043f\u0430\u0434_\u0433\u0440\u0443\u0434\u0435\u043d\u044c".split("_")},monthsShort:"\u0441\u0456\u0447_\u043b\u044e\u0442_\u0431\u0435\u0440_\u043a\u0432\u0456\u0442_\u0442\u0440\u0430\u0432_\u0447\u0435\u0440\u0432_\u043b\u0438\u043f_\u0441\u0435\u0440\u043f_\u0432\u0435\u0440_\u0436\u043e\u0432\u0442_\u043b\u0438\u0441\u0442_\u0433\u0440\u0443\u0434".split("_"),weekdays:function(e,a){var t={nominative:"\u043d\u0435\u0434\u0456\u043b\u044f_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0430_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044f_\u0441\u0443\u0431\u043e\u0442\u0430".split("_"),accusative:"\u043d\u0435\u0434\u0456\u043b\u044e_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043e\u043a_\u0432\u0456\u0432\u0442\u043e\u0440\u043e\u043a_\u0441\u0435\u0440\u0435\u0434\u0443_\u0447\u0435\u0442\u0432\u0435\u0440_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u044e_\u0441\u0443\u0431\u043e\u0442\u0443".split("_"),genitive:"\u043d\u0435\u0434\u0456\u043b\u0456_\u043f\u043e\u043d\u0435\u0434\u0456\u043b\u043a\u0430_\u0432\u0456\u0432\u0442\u043e\u0440\u043a\u0430_\u0441\u0435\u0440\u0435\u0434\u0438_\u0447\u0435\u0442\u0432\u0435\u0440\u0433\u0430_\u043f\u2019\u044f\u0442\u043d\u0438\u0446\u0456_\u0441\u0443\u0431\u043e\u0442\u0438".split("_")};return e?t[/(\[[\u0412\u0432\u0423\u0443]\]) ?dddd/.test(a)?"accusative":/\[?(?:\u043c\u0438\u043d\u0443\u043b\u043e\u0457|\u043d\u0430\u0441\u0442\u0443\u043f\u043d\u043e\u0457)? ?\] ?dddd/.test(a)?"genitive":"nominative"][e.day()]:t.nominative},weekdaysShort:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),weekdaysMin:"\u043d\u0434_\u043f\u043d_\u0432\u0442_\u0441\u0440_\u0447\u0442_\u043f\u0442_\u0441\u0431".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD.MM.YYYY",LL:"D MMMM YYYY \u0440.",LLL:"D MMMM YYYY \u0440., HH:mm",LLLL:"dddd, D MMMM YYYY \u0440., HH:mm"},calendar:{sameDay:sd("[\u0421\u044c\u043e\u0433\u043e\u0434\u043d\u0456 "),nextDay:sd("[\u0417\u0430\u0432\u0442\u0440\u0430 "),lastDay:sd("[\u0412\u0447\u043e\u0440\u0430 "),nextWeek:sd("[\u0423] dddd ["),lastWeek:function(){switch(this.day()){case 0:case 3:case 5:case 6:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0457] dddd [").call(this);case 1:case 2:case 4:return sd("[\u041c\u0438\u043d\u0443\u043b\u043e\u0433\u043e] dddd [").call(this)}},sameElse:"L"},relativeTime:{future:"\u0437\u0430 %s",past:"%s \u0442\u043e\u043c\u0443",s:"\u0434\u0435\u043a\u0456\u043b\u044c\u043a\u0430 \u0441\u0435\u043a\u0443\u043d\u0434",ss:td,m:td,mm:td,h:"\u0433\u043e\u0434\u0438\u043d\u0443",hh:td,d:"\u0434\u0435\u043d\u044c",dd:td,M:"\u043c\u0456\u0441\u044f\u0446\u044c",MM:td,y:"\u0440\u0456\u043a",yy:td},meridiemParse:/\u043d\u043e\u0447\u0456|\u0440\u0430\u043d\u043a\u0443|\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430/,isPM:function(e){return/^(\u0434\u043d\u044f|\u0432\u0435\u0447\u043e\u0440\u0430)$/.test(e)},meridiem:function(e,a,t){return e<4?"\u043d\u043e\u0447\u0456":e<12?"\u0440\u0430\u043d\u043a\u0443":e<17?"\u0434\u043d\u044f":"\u0432\u0435\u0447\u043e\u0440\u0430"},dayOfMonthOrdinalParse:/\d{1,2}-(\u0439|\u0433\u043e)/,ordinal:function(e,a){switch(a){case"M":case"d":case"DDD":case"w":case"W":return e+"-\u0439";case"D":return e+"-\u0433\u043e";default:return e}},week:{dow:1,doy:7}});var nd=["\u062c\u0646\u0648\u0631\u06cc","\u0641\u0631\u0648\u0631\u06cc","\u0645\u0627\u0631\u0686","\u0627\u067e\u0631\u06cc\u0644","\u0645\u0626\u06cc","\u062c\u0648\u0646","\u062c\u0648\u0644\u0627\u0626\u06cc","\u0627\u06af\u0633\u062a","\u0633\u062a\u0645\u0628\u0631","\u0627\u06a9\u062a\u0648\u0628\u0631","\u0646\u0648\u0645\u0628\u0631","\u062f\u0633\u0645\u0628\u0631"],dd=["\u0627\u062a\u0648\u0627\u0631","\u067e\u06cc\u0631","\u0645\u0646\u06af\u0644","\u0628\u062f\u06be","\u062c\u0645\u0639\u0631\u0627\u062a","\u062c\u0645\u0639\u06c1","\u06c1\u0641\u062a\u06c1"];return l.defineLocale("ur",{months:nd,monthsShort:nd,weekdays:dd,weekdaysShort:dd,weekdaysMin:dd,longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd\u060c D MMMM YYYY HH:mm"},meridiemParse:/\u0635\u0628\u062d|\u0634\u0627\u0645/,isPM:function(e){return"\u0634\u0627\u0645"===e},meridiem:function(e,a,t){return e<12?"\u0635\u0628\u062d":"\u0634\u0627\u0645"},calendar:{sameDay:"[\u0622\u062c \u0628\u0648\u0642\u062a] LT",nextDay:"[\u06a9\u0644 \u0628\u0648\u0642\u062a] LT",nextWeek:"dddd [\u0628\u0648\u0642\u062a] LT",lastDay:"[\u06af\u0630\u0634\u062a\u06c1 \u0631\u0648\u0632 \u0628\u0648\u0642\u062a] LT",lastWeek:"[\u06af\u0630\u0634\u062a\u06c1] dddd [\u0628\u0648\u0642\u062a] LT",sameElse:"L"},relativeTime:{future:"%s \u0628\u0639\u062f",past:"%s \u0642\u0628\u0644",s:"\u0686\u0646\u062f \u0633\u06cc\u06a9\u0646\u0688",ss:"%d \u0633\u06cc\u06a9\u0646\u0688",m:"\u0627\u06cc\u06a9 \u0645\u0646\u0679",mm:"%d \u0645\u0646\u0679",h:"\u0627\u06cc\u06a9 \u06af\u06be\u0646\u0679\u06c1",hh:"%d \u06af\u06be\u0646\u0679\u06d2",d:"\u0627\u06cc\u06a9 \u062f\u0646",dd:"%d \u062f\u0646",M:"\u0627\u06cc\u06a9 \u0645\u0627\u06c1",MM:"%d \u0645\u0627\u06c1",y:"\u0627\u06cc\u06a9 \u0633\u0627\u0644",yy:"%d \u0633\u0627\u0644"},preparse:function(e){return e.replace(/\u060c/g,",")},postformat:function(e){return e.replace(/,/g,"\u060c")},week:{dow:1,doy:4}}),l.defineLocale("uz-latn",{months:"Yanvar_Fevral_Mart_Aprel_May_Iyun_Iyul_Avgust_Sentabr_Oktabr_Noyabr_Dekabr".split("_"),monthsShort:"Yan_Fev_Mar_Apr_May_Iyun_Iyul_Avg_Sen_Okt_Noy_Dek".split("_"),weekdays:"Yakshanba_Dushanba_Seshanba_Chorshanba_Payshanba_Juma_Shanba".split("_"),weekdaysShort:"Yak_Dush_Sesh_Chor_Pay_Jum_Shan".split("_"),weekdaysMin:"Ya_Du_Se_Cho_Pa_Ju_Sha".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[Bugun soat] LT [da]",nextDay:"[Ertaga] LT [da]",nextWeek:"dddd [kuni soat] LT [da]",lastDay:"[Kecha soat] LT [da]",lastWeek:"[O'tgan] dddd [kuni soat] LT [da]",sameElse:"L"},relativeTime:{future:"Yaqin %s ichida",past:"Bir necha %s oldin",s:"soniya",ss:"%d soniya",m:"bir daqiqa",mm:"%d daqiqa",h:"bir soat",hh:"%d soat",d:"bir kun",dd:"%d kun",M:"bir oy",MM:"%d oy",y:"bir yil",yy:"%d yil"},week:{dow:1,doy:7}}),l.defineLocale("uz",{months:"\u044f\u043d\u0432\u0430\u0440_\u0444\u0435\u0432\u0440\u0430\u043b_\u043c\u0430\u0440\u0442_\u0430\u043f\u0440\u0435\u043b_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433\u0443\u0441\u0442_\u0441\u0435\u043d\u0442\u044f\u0431\u0440_\u043e\u043a\u0442\u044f\u0431\u0440_\u043d\u043e\u044f\u0431\u0440_\u0434\u0435\u043a\u0430\u0431\u0440".split("_"),monthsShort:"\u044f\u043d\u0432_\u0444\u0435\u0432_\u043c\u0430\u0440_\u0430\u043f\u0440_\u043c\u0430\u0439_\u0438\u044e\u043d_\u0438\u044e\u043b_\u0430\u0432\u0433_\u0441\u0435\u043d_\u043e\u043a\u0442_\u043d\u043e\u044f_\u0434\u0435\u043a".split("_"),weekdays:"\u042f\u043a\u0448\u0430\u043d\u0431\u0430_\u0414\u0443\u0448\u0430\u043d\u0431\u0430_\u0421\u0435\u0448\u0430\u043d\u0431\u0430_\u0427\u043e\u0440\u0448\u0430\u043d\u0431\u0430_\u041f\u0430\u0439\u0448\u0430\u043d\u0431\u0430_\u0416\u0443\u043c\u0430_\u0428\u0430\u043d\u0431\u0430".split("_"),weekdaysShort:"\u042f\u043a\u0448_\u0414\u0443\u0448_\u0421\u0435\u0448_\u0427\u043e\u0440_\u041f\u0430\u0439_\u0416\u0443\u043c_\u0428\u0430\u043d".split("_"),weekdaysMin:"\u042f\u043a_\u0414\u0443_\u0421\u0435_\u0427\u043e_\u041f\u0430_\u0416\u0443_\u0428\u0430".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"D MMMM YYYY, dddd HH:mm"},calendar:{sameDay:"[\u0411\u0443\u0433\u0443\u043d \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",nextDay:"[\u042d\u0440\u0442\u0430\u0433\u0430] LT [\u0434\u0430]",nextWeek:"dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastDay:"[\u041a\u0435\u0447\u0430 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",lastWeek:"[\u0423\u0442\u0433\u0430\u043d] dddd [\u043a\u0443\u043d\u0438 \u0441\u043e\u0430\u0442] LT [\u0434\u0430]",sameElse:"L"},relativeTime:{future:"\u042f\u043a\u0438\u043d %s \u0438\u0447\u0438\u0434\u0430",past:"\u0411\u0438\u0440 \u043d\u0435\u0447\u0430 %s \u043e\u043b\u0434\u0438\u043d",s:"\u0444\u0443\u0440\u0441\u0430\u0442",ss:"%d \u0444\u0443\u0440\u0441\u0430\u0442",m:"\u0431\u0438\u0440 \u0434\u0430\u043a\u0438\u043a\u0430",mm:"%d \u0434\u0430\u043a\u0438\u043a\u0430",h:"\u0431\u0438\u0440 \u0441\u043e\u0430\u0442",hh:"%d \u0441\u043e\u0430\u0442",d:"\u0431\u0438\u0440 \u043a\u0443\u043d",dd:"%d \u043a\u0443\u043d",M:"\u0431\u0438\u0440 \u043e\u0439",MM:"%d \u043e\u0439",y:"\u0431\u0438\u0440 \u0439\u0438\u043b",yy:"%d \u0439\u0438\u043b"},week:{dow:1,doy:7}}),l.defineLocale("vi",{months:"th\xe1ng 1_th\xe1ng 2_th\xe1ng 3_th\xe1ng 4_th\xe1ng 5_th\xe1ng 6_th\xe1ng 7_th\xe1ng 8_th\xe1ng 9_th\xe1ng 10_th\xe1ng 11_th\xe1ng 12".split("_"),monthsShort:"Th01_Th02_Th03_Th04_Th05_Th06_Th07_Th08_Th09_Th10_Th11_Th12".split("_"),monthsParseExact:!0,weekdays:"ch\u1ee7 nh\u1eadt_th\u1ee9 hai_th\u1ee9 ba_th\u1ee9 t\u01b0_th\u1ee9 n\u0103m_th\u1ee9 s\xe1u_th\u1ee9 b\u1ea3y".split("_"),weekdaysShort:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysMin:"CN_T2_T3_T4_T5_T6_T7".split("_"),weekdaysParseExact:!0,meridiemParse:/sa|ch/i,isPM:function(e){return/^ch$/i.test(e)},meridiem:function(e,a,t){return e<12?t?"sa":"SA":t?"ch":"CH"},longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"DD/MM/YYYY",LL:"D MMMM [n\u0103m] YYYY",LLL:"D MMMM [n\u0103m] YYYY HH:mm",LLLL:"dddd, D MMMM [n\u0103m] YYYY HH:mm",l:"DD/M/YYYY",ll:"D MMM YYYY",lll:"D MMM YYYY HH:mm",llll:"ddd, D MMM YYYY HH:mm"},calendar:{sameDay:"[H\xf4m nay l\xfac] LT",nextDay:"[Ng\xe0y mai l\xfac] LT",nextWeek:"dddd [tu\u1ea7n t\u1edbi l\xfac] LT",lastDay:"[H\xf4m qua l\xfac] LT",lastWeek:"dddd [tu\u1ea7n r\u1ed3i l\xfac] LT",sameElse:"L"},relativeTime:{future:"%s t\u1edbi",past:"%s tr\u01b0\u1edbc",s:"v\xe0i gi\xe2y",ss:"%d gi\xe2y",m:"m\u1ed9t ph\xfat",mm:"%d ph\xfat",h:"m\u1ed9t gi\u1edd",hh:"%d gi\u1edd",d:"m\u1ed9t ng\xe0y",dd:"%d ng\xe0y",M:"m\u1ed9t th\xe1ng",MM:"%d th\xe1ng",y:"m\u1ed9t n\u0103m",yy:"%d n\u0103m"},dayOfMonthOrdinalParse:/\d{1,2}/,ordinal:function(e){return e},week:{dow:1,doy:4}}),l.defineLocale("x-pseudo",{months:"J~\xe1\xf1\xfa\xe1~r\xfd_F~\xe9br\xfa~\xe1r\xfd_~M\xe1rc~h_\xc1p~r\xedl_~M\xe1\xfd_~J\xfa\xf1\xe9~_J\xfal~\xfd_\xc1\xfa~g\xfast~_S\xe9p~t\xe9mb~\xe9r_\xd3~ct\xf3b~\xe9r_\xd1~\xf3v\xe9m~b\xe9r_~D\xe9c\xe9~mb\xe9r".split("_"),monthsShort:"J~\xe1\xf1_~F\xe9b_~M\xe1r_~\xc1pr_~M\xe1\xfd_~J\xfa\xf1_~J\xfal_~\xc1\xfag_~S\xe9p_~\xd3ct_~\xd1\xf3v_~D\xe9c".split("_"),monthsParseExact:!0,weekdays:"S~\xfa\xf1d\xe1~\xfd_M\xf3~\xf1d\xe1\xfd~_T\xfa\xe9~sd\xe1\xfd~_W\xe9d~\xf1\xe9sd~\xe1\xfd_T~h\xfars~d\xe1\xfd_~Fr\xedd~\xe1\xfd_S~\xe1t\xfar~d\xe1\xfd".split("_"),weekdaysShort:"S~\xfa\xf1_~M\xf3\xf1_~T\xfa\xe9_~W\xe9d_~Th\xfa_~Fr\xed_~S\xe1t".split("_"),weekdaysMin:"S~\xfa_M\xf3~_T\xfa_~W\xe9_T~h_Fr~_S\xe1".split("_"),weekdaysParseExact:!0,longDateFormat:{LT:"HH:mm",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY HH:mm",LLLL:"dddd, D MMMM YYYY HH:mm"},calendar:{sameDay:"[T~\xf3d\xe1~\xfd \xe1t] LT",nextDay:"[T~\xf3m\xf3~rr\xf3~w \xe1t] LT",nextWeek:"dddd [\xe1t] LT",lastDay:"[\xdd~\xe9st~\xe9rd\xe1~\xfd \xe1t] LT",lastWeek:"[L~\xe1st] dddd [\xe1t] LT",sameElse:"L"},relativeTime:{future:"\xed~\xf1 %s",past:"%s \xe1~g\xf3",s:"\xe1 ~f\xe9w ~s\xe9c\xf3~\xf1ds",ss:"%d s~\xe9c\xf3\xf1~ds",m:"\xe1 ~m\xed\xf1~\xfat\xe9",mm:"%d m~\xed\xf1\xfa~t\xe9s",h:"\xe1~\xf1 h\xf3~\xfar",hh:"%d h~\xf3\xfars",d:"\xe1 ~d\xe1\xfd",dd:"%d d~\xe1\xfds",M:"\xe1 ~m\xf3\xf1~th",MM:"%d m~\xf3\xf1t~hs",y:"\xe1 ~\xfd\xe9\xe1r",yy:"%d \xfd~\xe9\xe1rs"},dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var a=e%10;return e+(1==~~(e%100/10)?"th":1===a?"st":2===a?"nd":3===a?"rd":"th")},week:{dow:1,doy:4}}),l.defineLocale("yo",{months:"S\u1eb9\u0301r\u1eb9\u0301_E\u0300re\u0300le\u0300_\u1eb8r\u1eb9\u0300na\u0300_I\u0300gbe\u0301_E\u0300bibi_O\u0300ku\u0300du_Ag\u1eb9mo_O\u0300gu\u0301n_Owewe_\u1ecc\u0300wa\u0300ra\u0300_Be\u0301lu\u0301_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),monthsShort:"S\u1eb9\u0301r_E\u0300rl_\u1eb8rn_I\u0300gb_E\u0300bi_O\u0300ku\u0300_Ag\u1eb9_O\u0300gu\u0301_Owe_\u1ecc\u0300wa\u0300_Be\u0301l_\u1ecc\u0300p\u1eb9\u0300\u0300".split("_"),weekdays:"A\u0300i\u0300ku\u0301_Aje\u0301_I\u0300s\u1eb9\u0301gun_\u1eccj\u1ecd\u0301ru\u0301_\u1eccj\u1ecd\u0301b\u1ecd_\u1eb8ti\u0300_A\u0300ba\u0301m\u1eb9\u0301ta".split("_"),weekdaysShort:"A\u0300i\u0300k_Aje\u0301_I\u0300s\u1eb9\u0301_\u1eccjr_\u1eccjb_\u1eb8ti\u0300_A\u0300ba\u0301".split("_"),weekdaysMin:"A\u0300i\u0300_Aj_I\u0300s_\u1eccr_\u1eccb_\u1eb8t_A\u0300b".split("_"),longDateFormat:{LT:"h:mm A",LTS:"h:mm:ss A",L:"DD/MM/YYYY",LL:"D MMMM YYYY",LLL:"D MMMM YYYY h:mm A",LLLL:"dddd, D MMMM YYYY h:mm A"},calendar:{sameDay:"[O\u0300ni\u0300 ni] LT",nextDay:"[\u1ecc\u0300la ni] LT",nextWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301n'b\u1ecd] [ni] LT",lastDay:"[A\u0300na ni] LT",lastWeek:"dddd [\u1eccs\u1eb9\u0300 to\u0301l\u1ecd\u0301] [ni] LT",sameElse:"L"},relativeTime:{future:"ni\u0301 %s",past:"%s k\u1ecdja\u0301",s:"i\u0300s\u1eb9ju\u0301 aaya\u0301 die",ss:"aaya\u0301 %d",m:"i\u0300s\u1eb9ju\u0301 kan",mm:"i\u0300s\u1eb9ju\u0301 %d",h:"wa\u0301kati kan",hh:"wa\u0301kati %d",d:"\u1ecdj\u1ecd\u0301 kan",dd:"\u1ecdj\u1ecd\u0301 %d",M:"osu\u0300 kan",MM:"osu\u0300 %d",y:"\u1ecddu\u0301n kan",yy:"\u1ecddu\u0301n %d"},dayOfMonthOrdinalParse:/\u1ecdj\u1ecd\u0301\s\d{1,2}/,ordinal:"\u1ecdj\u1ecd\u0301 %d",week:{dow:1,doy:4}}),l.defineLocale("zh-cn",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u5468\u65e5_\u5468\u4e00_\u5468\u4e8c_\u5468\u4e09_\u5468\u56db_\u5468\u4e94_\u5468\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5Ah\u70b9mm\u5206",LLLL:"YYYY\u5e74M\u6708D\u65e5ddddAh\u70b9mm\u5206",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:11<=e?e:e+12},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u5468)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u5468";default:return e}},relativeTime:{future:"%s\u5185",past:"%s\u524d",s:"\u51e0\u79d2",ss:"%d \u79d2",m:"1 \u5206\u949f",mm:"%d \u5206\u949f",h:"1 \u5c0f\u65f6",hh:"%d \u5c0f\u65f6",d:"1 \u5929",dd:"%d \u5929",M:"1 \u4e2a\u6708",MM:"%d \u4e2a\u6708",y:"1 \u5e74",yy:"%d \u5e74"},week:{dow:1,doy:4}}),l.defineLocale("zh-hk",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929]LT",nextDay:"[\u660e\u5929]LT",nextWeek:"[\u4e0b]ddddLT",lastDay:"[\u6628\u5929]LT",lastWeek:"[\u4e0a]ddddLT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.defineLocale("zh-tw",{months:"\u4e00\u6708_\u4e8c\u6708_\u4e09\u6708_\u56db\u6708_\u4e94\u6708_\u516d\u6708_\u4e03\u6708_\u516b\u6708_\u4e5d\u6708_\u5341\u6708_\u5341\u4e00\u6708_\u5341\u4e8c\u6708".split("_"),monthsShort:"1\u6708_2\u6708_3\u6708_4\u6708_5\u6708_6\u6708_7\u6708_8\u6708_9\u6708_10\u6708_11\u6708_12\u6708".split("_"),weekdays:"\u661f\u671f\u65e5_\u661f\u671f\u4e00_\u661f\u671f\u4e8c_\u661f\u671f\u4e09_\u661f\u671f\u56db_\u661f\u671f\u4e94_\u661f\u671f\u516d".split("_"),weekdaysShort:"\u9031\u65e5_\u9031\u4e00_\u9031\u4e8c_\u9031\u4e09_\u9031\u56db_\u9031\u4e94_\u9031\u516d".split("_"),weekdaysMin:"\u65e5_\u4e00_\u4e8c_\u4e09_\u56db_\u4e94_\u516d".split("_"),longDateFormat:{LT:"HH:mm",LTS:"HH:mm:ss",L:"YYYY/MM/DD",LL:"YYYY\u5e74M\u6708D\u65e5",LLL:"YYYY\u5e74M\u6708D\u65e5 HH:mm",LLLL:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm",l:"YYYY/M/D",ll:"YYYY\u5e74M\u6708D\u65e5",lll:"YYYY\u5e74M\u6708D\u65e5 HH:mm",llll:"YYYY\u5e74M\u6708D\u65e5dddd HH:mm"},meridiemParse:/\u51cc\u6668|\u65e9\u4e0a|\u4e0a\u5348|\u4e2d\u5348|\u4e0b\u5348|\u665a\u4e0a/,meridiemHour:function(e,a){return 12===e&&(e=0),"\u51cc\u6668"===a||"\u65e9\u4e0a"===a||"\u4e0a\u5348"===a?e:"\u4e2d\u5348"===a?11<=e?e:e+12:"\u4e0b\u5348"===a||"\u665a\u4e0a"===a?e+12:void 0},meridiem:function(e,a,t){var s=100*e+a;return s<600?"\u51cc\u6668":s<900?"\u65e9\u4e0a":s<1130?"\u4e0a\u5348":s<1230?"\u4e2d\u5348":s<1800?"\u4e0b\u5348":"\u665a\u4e0a"},calendar:{sameDay:"[\u4eca\u5929] LT",nextDay:"[\u660e\u5929] LT",nextWeek:"[\u4e0b]dddd LT",lastDay:"[\u6628\u5929] LT",lastWeek:"[\u4e0a]dddd LT",sameElse:"L"},dayOfMonthOrdinalParse:/\d{1,2}(\u65e5|\u6708|\u9031)/,ordinal:function(e,a){switch(a){case"d":case"D":case"DDD":return e+"\u65e5";case"M":return e+"\u6708";case"w":case"W":return e+"\u9031";default:return e}},relativeTime:{future:"%s\u5167",past:"%s\u524d",s:"\u5e7e\u79d2",ss:"%d \u79d2",m:"1 \u5206\u9418",mm:"%d \u5206\u9418",h:"1 \u5c0f\u6642",hh:"%d \u5c0f\u6642",d:"1 \u5929",dd:"%d \u5929",M:"1 \u500b\u6708",MM:"%d \u500b\u6708",y:"1 \u5e74",yy:"%d \u5e74"}}),l.locale("en"),l});
\ No newline at end of file
--- /dev/null
+!function(e,t){"object"==typeof exports&&"undefined"!=typeof module?module.exports=t():"function"==typeof define&&define.amd?define(t):e.moment=t()}(this,function(){"use strict";var e,i;function c(){return e.apply(null,arguments)}function o(e){return e instanceof Array||"[object Array]"===Object.prototype.toString.call(e)}function u(e){return null!=e&&"[object Object]"===Object.prototype.toString.call(e)}function l(e){return void 0===e}function d(e){return"number"==typeof e||"[object Number]"===Object.prototype.toString.call(e)}function h(e){return e instanceof Date||"[object Date]"===Object.prototype.toString.call(e)}function f(e,t){var n,s=[];for(n=0;n<e.length;++n)s.push(t(e[n],n));return s}function m(e,t){return Object.prototype.hasOwnProperty.call(e,t)}function _(e,t){for(var n in t)m(t,n)&&(e[n]=t[n]);return m(t,"toString")&&(e.toString=t.toString),m(t,"valueOf")&&(e.valueOf=t.valueOf),e}function y(e,t,n,s){return Ot(e,t,n,s,!0).utc()}function g(e){return null==e._pf&&(e._pf={empty:!1,unusedTokens:[],unusedInput:[],overflow:-2,charsLeftOver:0,nullInput:!1,invalidMonth:null,invalidFormat:!1,userInvalidated:!1,iso:!1,parsedDateParts:[],meridiem:null,rfc2822:!1,weekdayMismatch:!1}),e._pf}function p(e){if(null==e._isValid){var t=g(e),n=i.call(t.parsedDateParts,function(e){return null!=e}),s=!isNaN(e._d.getTime())&&t.overflow<0&&!t.empty&&!t.invalidMonth&&!t.invalidWeekday&&!t.weekdayMismatch&&!t.nullInput&&!t.invalidFormat&&!t.userInvalidated&&(!t.meridiem||t.meridiem&&n);if(e._strict&&(s=s&&0===t.charsLeftOver&&0===t.unusedTokens.length&&void 0===t.bigHour),null!=Object.isFrozen&&Object.isFrozen(e))return s;e._isValid=s}return e._isValid}function v(e){var t=y(NaN);return null!=e?_(g(t),e):g(t).userInvalidated=!0,t}i=Array.prototype.some?Array.prototype.some:function(e){for(var t=Object(this),n=t.length>>>0,s=0;s<n;s++)if(s in t&&e.call(this,t[s],s,t))return!0;return!1};var r=c.momentProperties=[];function w(e,t){var n,s,i;if(l(t._isAMomentObject)||(e._isAMomentObject=t._isAMomentObject),l(t._i)||(e._i=t._i),l(t._f)||(e._f=t._f),l(t._l)||(e._l=t._l),l(t._strict)||(e._strict=t._strict),l(t._tzm)||(e._tzm=t._tzm),l(t._isUTC)||(e._isUTC=t._isUTC),l(t._offset)||(e._offset=t._offset),l(t._pf)||(e._pf=g(t)),l(t._locale)||(e._locale=t._locale),0<r.length)for(n=0;n<r.length;n++)l(i=t[s=r[n]])||(e[s]=i);return e}var t=!1;function M(e){w(this,e),this._d=new Date(null!=e._d?e._d.getTime():NaN),this.isValid()||(this._d=new Date(NaN)),!1===t&&(t=!0,c.updateOffset(this),t=!1)}function S(e){return e instanceof M||null!=e&&null!=e._isAMomentObject}function D(e){return e<0?Math.ceil(e)||0:Math.floor(e)}function k(e){var t=+e,n=0;return 0!==t&&isFinite(t)&&(n=D(t)),n}function a(e,t,n){var s,i=Math.min(e.length,t.length),r=Math.abs(e.length-t.length),a=0;for(s=0;s<i;s++)(n&&e[s]!==t[s]||!n&&k(e[s])!==k(t[s]))&&a++;return a+r}function Y(e){!1===c.suppressDeprecationWarnings&&"undefined"!=typeof console&&console.warn&&console.warn("Deprecation warning: "+e)}function n(i,r){var a=!0;return _(function(){if(null!=c.deprecationHandler&&c.deprecationHandler(null,i),a){for(var e,t=[],n=0;n<arguments.length;n++){if(e="","object"==typeof arguments[n]){for(var s in e+="\n["+n+"] ",arguments[0])e+=s+": "+arguments[0][s]+", ";e=e.slice(0,-2)}else e=arguments[n];t.push(e)}Y(i+"\nArguments: "+Array.prototype.slice.call(t).join("")+"\n"+(new Error).stack),a=!1}return r.apply(this,arguments)},r)}var s,O={};function T(e,t){null!=c.deprecationHandler&&c.deprecationHandler(e,t),O[e]||(Y(t),O[e]=!0)}function x(e){return e instanceof Function||"[object Function]"===Object.prototype.toString.call(e)}function b(e,t){var n,s=_({},e);for(n in t)m(t,n)&&(u(e[n])&&u(t[n])?(s[n]={},_(s[n],e[n]),_(s[n],t[n])):null!=t[n]?s[n]=t[n]:delete s[n]);for(n in e)m(e,n)&&!m(t,n)&&u(e[n])&&(s[n]=_({},s[n]));return s}function P(e){null!=e&&this.set(e)}c.suppressDeprecationWarnings=!1,c.deprecationHandler=null,s=Object.keys?Object.keys:function(e){var t,n=[];for(t in e)m(e,t)&&n.push(t);return n};var W={};function H(e,t){var n=e.toLowerCase();W[n]=W[n+"s"]=W[t]=e}function R(e){return"string"==typeof e?W[e]||W[e.toLowerCase()]:void 0}function C(e){var t,n,s={};for(n in e)m(e,n)&&(t=R(n))&&(s[t]=e[n]);return s}var F={};function L(e,t){F[e]=t}function U(e,t,n){var s=""+Math.abs(e),i=t-s.length;return(0<=e?n?"+":"":"-")+Math.pow(10,Math.max(0,i)).toString().substr(1)+s}var N=/(\[[^\[]*\])|(\\)?([Hh]mm(ss)?|Mo|MM?M?M?|Do|DDDo|DD?D?D?|ddd?d?|do?|w[o|w]?|W[o|W]?|Qo?|YYYYYY|YYYYY|YYYY|YY|gg(ggg?)?|GG(GGG?)?|e|E|a|A|hh?|HH?|kk?|mm?|ss?|S{1,9}|x|X|zz?|ZZ?|.)/g,G=/(\[[^\[]*\])|(\\)?(LTS|LT|LL?L?L?|l{1,4})/g,V={},E={};function I(e,t,n,s){var i=s;"string"==typeof s&&(i=function(){return this[s]()}),e&&(E[e]=i),t&&(E[t[0]]=function(){return U(i.apply(this,arguments),t[1],t[2])}),n&&(E[n]=function(){return this.localeData().ordinal(i.apply(this,arguments),e)})}function A(e,t){return e.isValid()?(t=j(t,e.localeData()),V[t]=V[t]||function(s){var e,i,t,r=s.match(N);for(e=0,i=r.length;e<i;e++)E[r[e]]?r[e]=E[r[e]]:r[e]=(t=r[e]).match(/\[[\s\S]/)?t.replace(/^\[|\]$/g,""):t.replace(/\\/g,"");return function(e){var t,n="";for(t=0;t<i;t++)n+=x(r[t])?r[t].call(e,s):r[t];return n}}(t),V[t](e)):e.localeData().invalidDate()}function j(e,t){var n=5;function s(e){return t.longDateFormat(e)||e}for(G.lastIndex=0;0<=n&&G.test(e);)e=e.replace(G,s),G.lastIndex=0,n-=1;return e}var Z=/\d/,z=/\d\d/,$=/\d{3}/,q=/\d{4}/,J=/[+-]?\d{6}/,B=/\d\d?/,Q=/\d\d\d\d?/,X=/\d\d\d\d\d\d?/,K=/\d{1,3}/,ee=/\d{1,4}/,te=/[+-]?\d{1,6}/,ne=/\d+/,se=/[+-]?\d+/,ie=/Z|[+-]\d\d:?\d\d/gi,re=/Z|[+-]\d\d(?::?\d\d)?/gi,ae=/[0-9]{0,256}['a-z\u00A0-\u05FF\u0700-\uD7FF\uF900-\uFDCF\uFDF0-\uFF07\uFF10-\uFFEF]{1,256}|[\u0600-\u06FF\/]{1,256}(\s*?[\u0600-\u06FF]{1,256}){1,2}/i,oe={};function ue(e,n,s){oe[e]=x(n)?n:function(e,t){return e&&s?s:n}}function le(e,t){return m(oe,e)?oe[e](t._strict,t._locale):new RegExp(de(e.replace("\\","").replace(/\\(\[)|\\(\])|\[([^\]\[]*)\]|\\(.)/g,function(e,t,n,s,i){return t||n||s||i})))}function de(e){return e.replace(/[-\/\\^$*+?.()|[\]{}]/g,"\\$&")}var he={};function ce(e,n){var t,s=n;for("string"==typeof e&&(e=[e]),d(n)&&(s=function(e,t){t[n]=k(e)}),t=0;t<e.length;t++)he[e[t]]=s}function fe(e,i){ce(e,function(e,t,n,s){n._w=n._w||{},i(e,n._w,n,s)})}var me=0,_e=1,ye=2,ge=3,pe=4,ve=5,we=6,Me=7,Se=8;function De(e){return ke(e)?366:365}function ke(e){return e%4==0&&e%100!=0||e%400==0}I("Y",0,0,function(){var e=this.year();return e<=9999?""+e:"+"+e}),I(0,["YY",2],0,function(){return this.year()%100}),I(0,["YYYY",4],0,"year"),I(0,["YYYYY",5],0,"year"),I(0,["YYYYYY",6,!0],0,"year"),H("year","y"),L("year",1),ue("Y",se),ue("YY",B,z),ue("YYYY",ee,q),ue("YYYYY",te,J),ue("YYYYYY",te,J),ce(["YYYYY","YYYYYY"],me),ce("YYYY",function(e,t){t[me]=2===e.length?c.parseTwoDigitYear(e):k(e)}),ce("YY",function(e,t){t[me]=c.parseTwoDigitYear(e)}),ce("Y",function(e,t){t[me]=parseInt(e,10)}),c.parseTwoDigitYear=function(e){return k(e)+(68<k(e)?1900:2e3)};var Ye,Oe=Te("FullYear",!0);function Te(t,n){return function(e){return null!=e?(be(this,t,e),c.updateOffset(this,n),this):xe(this,t)}}function xe(e,t){return e.isValid()?e._d["get"+(e._isUTC?"UTC":"")+t]():NaN}function be(e,t,n){e.isValid()&&!isNaN(n)&&("FullYear"===t&&ke(e.year())&&1===e.month()&&29===e.date()?e._d["set"+(e._isUTC?"UTC":"")+t](n,e.month(),Pe(n,e.month())):e._d["set"+(e._isUTC?"UTC":"")+t](n))}function Pe(e,t){if(isNaN(e)||isNaN(t))return NaN;var n,s=(t%(n=12)+n)%n;return e+=(t-s)/12,1===s?ke(e)?29:28:31-s%7%2}Ye=Array.prototype.indexOf?Array.prototype.indexOf:function(e){var t;for(t=0;t<this.length;++t)if(this[t]===e)return t;return-1},I("M",["MM",2],"Mo",function(){return this.month()+1}),I("MMM",0,0,function(e){return this.localeData().monthsShort(this,e)}),I("MMMM",0,0,function(e){return this.localeData().months(this,e)}),H("month","M"),L("month",8),ue("M",B),ue("MM",B,z),ue("MMM",function(e,t){return t.monthsShortRegex(e)}),ue("MMMM",function(e,t){return t.monthsRegex(e)}),ce(["M","MM"],function(e,t){t[_e]=k(e)-1}),ce(["MMM","MMMM"],function(e,t,n,s){var i=n._locale.monthsParse(e,s,n._strict);null!=i?t[_e]=i:g(n).invalidMonth=e});var We=/D[oD]?(\[[^\[\]]*\]|\s)+MMMM?/,He="January_February_March_April_May_June_July_August_September_October_November_December".split("_");var Re="Jan_Feb_Mar_Apr_May_Jun_Jul_Aug_Sep_Oct_Nov_Dec".split("_");function Ce(e,t){var n;if(!e.isValid())return e;if("string"==typeof t)if(/^\d+$/.test(t))t=k(t);else if(!d(t=e.localeData().monthsParse(t)))return e;return n=Math.min(e.date(),Pe(e.year(),t)),e._d["set"+(e._isUTC?"UTC":"")+"Month"](t,n),e}function Fe(e){return null!=e?(Ce(this,e),c.updateOffset(this,!0),this):xe(this,"Month")}var Le=ae;var Ue=ae;function Ne(){function e(e,t){return t.length-e.length}var t,n,s=[],i=[],r=[];for(t=0;t<12;t++)n=y([2e3,t]),s.push(this.monthsShort(n,"")),i.push(this.months(n,"")),r.push(this.months(n,"")),r.push(this.monthsShort(n,""));for(s.sort(e),i.sort(e),r.sort(e),t=0;t<12;t++)s[t]=de(s[t]),i[t]=de(i[t]);for(t=0;t<24;t++)r[t]=de(r[t]);this._monthsRegex=new RegExp("^("+r.join("|")+")","i"),this._monthsShortRegex=this._monthsRegex,this._monthsStrictRegex=new RegExp("^("+i.join("|")+")","i"),this._monthsShortStrictRegex=new RegExp("^("+s.join("|")+")","i")}function Ge(e){var t=new Date(Date.UTC.apply(null,arguments));return e<100&&0<=e&&isFinite(t.getUTCFullYear())&&t.setUTCFullYear(e),t}function Ve(e,t,n){var s=7+t-n;return-((7+Ge(e,0,s).getUTCDay()-t)%7)+s-1}function Ee(e,t,n,s,i){var r,a,o=1+7*(t-1)+(7+n-s)%7+Ve(e,s,i);return a=o<=0?De(r=e-1)+o:o>De(e)?(r=e+1,o-De(e)):(r=e,o),{year:r,dayOfYear:a}}function Ie(e,t,n){var s,i,r=Ve(e.year(),t,n),a=Math.floor((e.dayOfYear()-r-1)/7)+1;return a<1?s=a+Ae(i=e.year()-1,t,n):a>Ae(e.year(),t,n)?(s=a-Ae(e.year(),t,n),i=e.year()+1):(i=e.year(),s=a),{week:s,year:i}}function Ae(e,t,n){var s=Ve(e,t,n),i=Ve(e+1,t,n);return(De(e)-s+i)/7}I("w",["ww",2],"wo","week"),I("W",["WW",2],"Wo","isoWeek"),H("week","w"),H("isoWeek","W"),L("week",5),L("isoWeek",5),ue("w",B),ue("ww",B,z),ue("W",B),ue("WW",B,z),fe(["w","ww","W","WW"],function(e,t,n,s){t[s.substr(0,1)]=k(e)});I("d",0,"do","day"),I("dd",0,0,function(e){return this.localeData().weekdaysMin(this,e)}),I("ddd",0,0,function(e){return this.localeData().weekdaysShort(this,e)}),I("dddd",0,0,function(e){return this.localeData().weekdays(this,e)}),I("e",0,0,"weekday"),I("E",0,0,"isoWeekday"),H("day","d"),H("weekday","e"),H("isoWeekday","E"),L("day",11),L("weekday",11),L("isoWeekday",11),ue("d",B),ue("e",B),ue("E",B),ue("dd",function(e,t){return t.weekdaysMinRegex(e)}),ue("ddd",function(e,t){return t.weekdaysShortRegex(e)}),ue("dddd",function(e,t){return t.weekdaysRegex(e)}),fe(["dd","ddd","dddd"],function(e,t,n,s){var i=n._locale.weekdaysParse(e,s,n._strict);null!=i?t.d=i:g(n).invalidWeekday=e}),fe(["d","e","E"],function(e,t,n,s){t[s]=k(e)});var je="Sunday_Monday_Tuesday_Wednesday_Thursday_Friday_Saturday".split("_");var Ze="Sun_Mon_Tue_Wed_Thu_Fri_Sat".split("_");var ze="Su_Mo_Tu_We_Th_Fr_Sa".split("_");var $e=ae;var qe=ae;var Je=ae;function Be(){function e(e,t){return t.length-e.length}var t,n,s,i,r,a=[],o=[],u=[],l=[];for(t=0;t<7;t++)n=y([2e3,1]).day(t),s=this.weekdaysMin(n,""),i=this.weekdaysShort(n,""),r=this.weekdays(n,""),a.push(s),o.push(i),u.push(r),l.push(s),l.push(i),l.push(r);for(a.sort(e),o.sort(e),u.sort(e),l.sort(e),t=0;t<7;t++)o[t]=de(o[t]),u[t]=de(u[t]),l[t]=de(l[t]);this._weekdaysRegex=new RegExp("^("+l.join("|")+")","i"),this._weekdaysShortRegex=this._weekdaysRegex,this._weekdaysMinRegex=this._weekdaysRegex,this._weekdaysStrictRegex=new RegExp("^("+u.join("|")+")","i"),this._weekdaysShortStrictRegex=new RegExp("^("+o.join("|")+")","i"),this._weekdaysMinStrictRegex=new RegExp("^("+a.join("|")+")","i")}function Qe(){return this.hours()%12||12}function Xe(e,t){I(e,0,0,function(){return this.localeData().meridiem(this.hours(),this.minutes(),t)})}function Ke(e,t){return t._meridiemParse}I("H",["HH",2],0,"hour"),I("h",["hh",2],0,Qe),I("k",["kk",2],0,function(){return this.hours()||24}),I("hmm",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)}),I("hmmss",0,0,function(){return""+Qe.apply(this)+U(this.minutes(),2)+U(this.seconds(),2)}),I("Hmm",0,0,function(){return""+this.hours()+U(this.minutes(),2)}),I("Hmmss",0,0,function(){return""+this.hours()+U(this.minutes(),2)+U(this.seconds(),2)}),Xe("a",!0),Xe("A",!1),H("hour","h"),L("hour",13),ue("a",Ke),ue("A",Ke),ue("H",B),ue("h",B),ue("k",B),ue("HH",B,z),ue("hh",B,z),ue("kk",B,z),ue("hmm",Q),ue("hmmss",X),ue("Hmm",Q),ue("Hmmss",X),ce(["H","HH"],ge),ce(["k","kk"],function(e,t,n){var s=k(e);t[ge]=24===s?0:s}),ce(["a","A"],function(e,t,n){n._isPm=n._locale.isPM(e),n._meridiem=e}),ce(["h","hh"],function(e,t,n){t[ge]=k(e),g(n).bigHour=!0}),ce("hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s)),g(n).bigHour=!0}),ce("hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i)),g(n).bigHour=!0}),ce("Hmm",function(e,t,n){var s=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s))}),ce("Hmmss",function(e,t,n){var s=e.length-4,i=e.length-2;t[ge]=k(e.substr(0,s)),t[pe]=k(e.substr(s,2)),t[ve]=k(e.substr(i))});var et,tt=Te("Hours",!0),nt={calendar:{sameDay:"[Today at] LT",nextDay:"[Tomorrow at] LT",nextWeek:"dddd [at] LT",lastDay:"[Yesterday at] LT",lastWeek:"[Last] dddd [at] LT",sameElse:"L"},longDateFormat:{LTS:"h:mm:ss A",LT:"h:mm A",L:"MM/DD/YYYY",LL:"MMMM D, YYYY",LLL:"MMMM D, YYYY h:mm A",LLLL:"dddd, MMMM D, YYYY h:mm A"},invalidDate:"Invalid date",ordinal:"%d",dayOfMonthOrdinalParse:/\d{1,2}/,relativeTime:{future:"in %s",past:"%s ago",s:"a few seconds",ss:"%d seconds",m:"a minute",mm:"%d minutes",h:"an hour",hh:"%d hours",d:"a day",dd:"%d days",M:"a month",MM:"%d months",y:"a year",yy:"%d years"},months:He,monthsShort:Re,week:{dow:0,doy:6},weekdays:je,weekdaysMin:ze,weekdaysShort:Ze,meridiemParse:/[ap]\.?m?\.?/i},st={},it={};function rt(e){return e?e.toLowerCase().replace("_","-"):e}function at(e){var t=null;if(!st[e]&&"undefined"!=typeof module&&module&&module.exports)try{t=et._abbr,require("./locale/"+e),ot(t)}catch(e){}return st[e]}function ot(e,t){var n;return e&&((n=l(t)?lt(e):ut(e,t))?et=n:"undefined"!=typeof console&&console.warn&&console.warn("Locale "+e+" not found. Did you forget to load it?")),et._abbr}function ut(e,t){if(null===t)return delete st[e],null;var n,s=nt;if(t.abbr=e,null!=st[e])T("defineLocaleOverride","use moment.updateLocale(localeName, config) to change an existing locale. moment.defineLocale(localeName, config) should only be used for creating a new locale See http://momentjs.com/guides/#/warnings/define-locale/ for more info."),s=st[e]._config;else if(null!=t.parentLocale)if(null!=st[t.parentLocale])s=st[t.parentLocale]._config;else{if(null==(n=at(t.parentLocale)))return it[t.parentLocale]||(it[t.parentLocale]=[]),it[t.parentLocale].push({name:e,config:t}),null;s=n._config}return st[e]=new P(b(s,t)),it[e]&&it[e].forEach(function(e){ut(e.name,e.config)}),ot(e),st[e]}function lt(e){var t;if(e&&e._locale&&e._locale._abbr&&(e=e._locale._abbr),!e)return et;if(!o(e)){if(t=at(e))return t;e=[e]}return function(e){for(var t,n,s,i,r=0;r<e.length;){for(t=(i=rt(e[r]).split("-")).length,n=(n=rt(e[r+1]))?n.split("-"):null;0<t;){if(s=at(i.slice(0,t).join("-")))return s;if(n&&n.length>=t&&a(i,n,!0)>=t-1)break;t--}r++}return et}(e)}function dt(e){var t,n=e._a;return n&&-2===g(e).overflow&&(t=n[_e]<0||11<n[_e]?_e:n[ye]<1||n[ye]>Pe(n[me],n[_e])?ye:n[ge]<0||24<n[ge]||24===n[ge]&&(0!==n[pe]||0!==n[ve]||0!==n[we])?ge:n[pe]<0||59<n[pe]?pe:n[ve]<0||59<n[ve]?ve:n[we]<0||999<n[we]?we:-1,g(e)._overflowDayOfYear&&(t<me||ye<t)&&(t=ye),g(e)._overflowWeeks&&-1===t&&(t=Me),g(e)._overflowWeekday&&-1===t&&(t=Se),g(e).overflow=t),e}function ht(e,t,n){return null!=e?e:null!=t?t:n}function ct(e){var t,n,s,i,r,a=[];if(!e._d){var o,u;for(o=e,u=new Date(c.now()),s=o._useUTC?[u.getUTCFullYear(),u.getUTCMonth(),u.getUTCDate()]:[u.getFullYear(),u.getMonth(),u.getDate()],e._w&&null==e._a[ye]&&null==e._a[_e]&&function(e){var t,n,s,i,r,a,o,u;if(null!=(t=e._w).GG||null!=t.W||null!=t.E)r=1,a=4,n=ht(t.GG,e._a[me],Ie(Tt(),1,4).year),s=ht(t.W,1),((i=ht(t.E,1))<1||7<i)&&(u=!0);else{r=e._locale._week.dow,a=e._locale._week.doy;var l=Ie(Tt(),r,a);n=ht(t.gg,e._a[me],l.year),s=ht(t.w,l.week),null!=t.d?((i=t.d)<0||6<i)&&(u=!0):null!=t.e?(i=t.e+r,(t.e<0||6<t.e)&&(u=!0)):i=r}s<1||s>Ae(n,r,a)?g(e)._overflowWeeks=!0:null!=u?g(e)._overflowWeekday=!0:(o=Ee(n,s,i,r,a),e._a[me]=o.year,e._dayOfYear=o.dayOfYear)}(e),null!=e._dayOfYear&&(r=ht(e._a[me],s[me]),(e._dayOfYear>De(r)||0===e._dayOfYear)&&(g(e)._overflowDayOfYear=!0),n=Ge(r,0,e._dayOfYear),e._a[_e]=n.getUTCMonth(),e._a[ye]=n.getUTCDate()),t=0;t<3&&null==e._a[t];++t)e._a[t]=a[t]=s[t];for(;t<7;t++)e._a[t]=a[t]=null==e._a[t]?2===t?1:0:e._a[t];24===e._a[ge]&&0===e._a[pe]&&0===e._a[ve]&&0===e._a[we]&&(e._nextDay=!0,e._a[ge]=0),e._d=(e._useUTC?Ge:function(e,t,n,s,i,r,a){var o=new Date(e,t,n,s,i,r,a);return e<100&&0<=e&&isFinite(o.getFullYear())&&o.setFullYear(e),o}).apply(null,a),i=e._useUTC?e._d.getUTCDay():e._d.getDay(),null!=e._tzm&&e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),e._nextDay&&(e._a[ge]=24),e._w&&void 0!==e._w.d&&e._w.d!==i&&(g(e).weekdayMismatch=!0)}}var ft=/^\s*((?:[+-]\d{6}|\d{4})-(?:\d\d-\d\d|W\d\d-\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?::\d\d(?::\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,mt=/^\s*((?:[+-]\d{6}|\d{4})(?:\d\d\d\d|W\d\d\d|W\d\d|\d\d\d|\d\d))(?:(T| )(\d\d(?:\d\d(?:\d\d(?:[.,]\d+)?)?)?)([\+\-]\d\d(?::?\d\d)?|\s*Z)?)?$/,_t=/Z|[+-]\d\d(?::?\d\d)?/,yt=[["YYYYYY-MM-DD",/[+-]\d{6}-\d\d-\d\d/],["YYYY-MM-DD",/\d{4}-\d\d-\d\d/],["GGGG-[W]WW-E",/\d{4}-W\d\d-\d/],["GGGG-[W]WW",/\d{4}-W\d\d/,!1],["YYYY-DDD",/\d{4}-\d{3}/],["YYYY-MM",/\d{4}-\d\d/,!1],["YYYYYYMMDD",/[+-]\d{10}/],["YYYYMMDD",/\d{8}/],["GGGG[W]WWE",/\d{4}W\d{3}/],["GGGG[W]WW",/\d{4}W\d{2}/,!1],["YYYYDDD",/\d{7}/]],gt=[["HH:mm:ss.SSSS",/\d\d:\d\d:\d\d\.\d+/],["HH:mm:ss,SSSS",/\d\d:\d\d:\d\d,\d+/],["HH:mm:ss",/\d\d:\d\d:\d\d/],["HH:mm",/\d\d:\d\d/],["HHmmss.SSSS",/\d\d\d\d\d\d\.\d+/],["HHmmss,SSSS",/\d\d\d\d\d\d,\d+/],["HHmmss",/\d\d\d\d\d\d/],["HHmm",/\d\d\d\d/],["HH",/\d\d/]],pt=/^\/?Date\((\-?\d+)/i;function vt(e){var t,n,s,i,r,a,o=e._i,u=ft.exec(o)||mt.exec(o);if(u){for(g(e).iso=!0,t=0,n=yt.length;t<n;t++)if(yt[t][1].exec(u[1])){i=yt[t][0],s=!1!==yt[t][2];break}if(null==i)return void(e._isValid=!1);if(u[3]){for(t=0,n=gt.length;t<n;t++)if(gt[t][1].exec(u[3])){r=(u[2]||" ")+gt[t][0];break}if(null==r)return void(e._isValid=!1)}if(!s&&null!=r)return void(e._isValid=!1);if(u[4]){if(!_t.exec(u[4]))return void(e._isValid=!1);a="Z"}e._f=i+(r||"")+(a||""),kt(e)}else e._isValid=!1}var wt=/^(?:(Mon|Tue|Wed|Thu|Fri|Sat|Sun),?\s)?(\d{1,2})\s(Jan|Feb|Mar|Apr|May|Jun|Jul|Aug|Sep|Oct|Nov|Dec)\s(\d{2,4})\s(\d\d):(\d\d)(?::(\d\d))?\s(?:(UT|GMT|[ECMP][SD]T)|([Zz])|([+-]\d{4}))$/;function Mt(e,t,n,s,i,r){var a=[function(e){var t=parseInt(e,10);{if(t<=49)return 2e3+t;if(t<=999)return 1900+t}return t}(e),Re.indexOf(t),parseInt(n,10),parseInt(s,10),parseInt(i,10)];return r&&a.push(parseInt(r,10)),a}var St={UT:0,GMT:0,EDT:-240,EST:-300,CDT:-300,CST:-360,MDT:-360,MST:-420,PDT:-420,PST:-480};function Dt(e){var t,n,s,i=wt.exec(e._i.replace(/\([^)]*\)|[\n\t]/g," ").replace(/(\s\s+)/g," ").replace(/^\s\s*/,"").replace(/\s\s*$/,""));if(i){var r=Mt(i[4],i[3],i[2],i[5],i[6],i[7]);if(t=i[1],n=r,s=e,t&&Ze.indexOf(t)!==new Date(n[0],n[1],n[2]).getDay()&&(g(s).weekdayMismatch=!0,!(s._isValid=!1)))return;e._a=r,e._tzm=function(e,t,n){if(e)return St[e];if(t)return 0;var s=parseInt(n,10),i=s%100;return(s-i)/100*60+i}(i[8],i[9],i[10]),e._d=Ge.apply(null,e._a),e._d.setUTCMinutes(e._d.getUTCMinutes()-e._tzm),g(e).rfc2822=!0}else e._isValid=!1}function kt(e){if(e._f!==c.ISO_8601)if(e._f!==c.RFC_2822){e._a=[],g(e).empty=!0;var t,n,s,i,r,a,o,u,l=""+e._i,d=l.length,h=0;for(s=j(e._f,e._locale).match(N)||[],t=0;t<s.length;t++)i=s[t],(n=(l.match(le(i,e))||[])[0])&&(0<(r=l.substr(0,l.indexOf(n))).length&&g(e).unusedInput.push(r),l=l.slice(l.indexOf(n)+n.length),h+=n.length),E[i]?(n?g(e).empty=!1:g(e).unusedTokens.push(i),a=i,u=e,null!=(o=n)&&m(he,a)&&he[a](o,u._a,u,a)):e._strict&&!n&&g(e).unusedTokens.push(i);g(e).charsLeftOver=d-h,0<l.length&&g(e).unusedInput.push(l),e._a[ge]<=12&&!0===g(e).bigHour&&0<e._a[ge]&&(g(e).bigHour=void 0),g(e).parsedDateParts=e._a.slice(0),g(e).meridiem=e._meridiem,e._a[ge]=function(e,t,n){var s;if(null==n)return t;return null!=e.meridiemHour?e.meridiemHour(t,n):(null!=e.isPM&&((s=e.isPM(n))&&t<12&&(t+=12),s||12!==t||(t=0)),t)}(e._locale,e._a[ge],e._meridiem),ct(e),dt(e)}else Dt(e);else vt(e)}function Yt(e){var t,n,s,i,r=e._i,a=e._f;return e._locale=e._locale||lt(e._l),null===r||void 0===a&&""===r?v({nullInput:!0}):("string"==typeof r&&(e._i=r=e._locale.preparse(r)),S(r)?new M(dt(r)):(h(r)?e._d=r:o(a)?function(e){var t,n,s,i,r;if(0===e._f.length)return g(e).invalidFormat=!0,e._d=new Date(NaN);for(i=0;i<e._f.length;i++)r=0,t=w({},e),null!=e._useUTC&&(t._useUTC=e._useUTC),t._f=e._f[i],kt(t),p(t)&&(r+=g(t).charsLeftOver,r+=10*g(t).unusedTokens.length,g(t).score=r,(null==s||r<s)&&(s=r,n=t));_(e,n||t)}(e):a?kt(e):l(n=(t=e)._i)?t._d=new Date(c.now()):h(n)?t._d=new Date(n.valueOf()):"string"==typeof n?(s=t,null===(i=pt.exec(s._i))?(vt(s),!1===s._isValid&&(delete s._isValid,Dt(s),!1===s._isValid&&(delete s._isValid,c.createFromInputFallback(s)))):s._d=new Date(+i[1])):o(n)?(t._a=f(n.slice(0),function(e){return parseInt(e,10)}),ct(t)):u(n)?function(e){if(!e._d){var t=C(e._i);e._a=f([t.year,t.month,t.day||t.date,t.hour,t.minute,t.second,t.millisecond],function(e){return e&&parseInt(e,10)}),ct(e)}}(t):d(n)?t._d=new Date(n):c.createFromInputFallback(t),p(e)||(e._d=null),e))}function Ot(e,t,n,s,i){var r,a={};return!0!==n&&!1!==n||(s=n,n=void 0),(u(e)&&function(e){if(Object.getOwnPropertyNames)return 0===Object.getOwnPropertyNames(e).length;var t;for(t in e)if(e.hasOwnProperty(t))return!1;return!0}(e)||o(e)&&0===e.length)&&(e=void 0),a._isAMomentObject=!0,a._useUTC=a._isUTC=i,a._l=n,a._i=e,a._f=t,a._strict=s,(r=new M(dt(Yt(a))))._nextDay&&(r.add(1,"d"),r._nextDay=void 0),r}function Tt(e,t,n,s){return Ot(e,t,n,s,!1)}c.createFromInputFallback=n("value provided is not in a recognized RFC2822 or ISO format. moment construction falls back to js Date(), which is not reliable across all browsers and versions. Non RFC2822/ISO date formats are discouraged and will be removed in an upcoming major release. Please refer to http://momentjs.com/guides/#/warnings/js-date/ for more info.",function(e){e._d=new Date(e._i+(e._useUTC?" UTC":""))}),c.ISO_8601=function(){},c.RFC_2822=function(){};var xt=n("moment().min is deprecated, use moment.max instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?e<this?this:e:v()}),bt=n("moment().max is deprecated, use moment.min instead. http://momentjs.com/guides/#/warnings/min-max/",function(){var e=Tt.apply(null,arguments);return this.isValid()&&e.isValid()?this<e?this:e:v()});function Pt(e,t){var n,s;if(1===t.length&&o(t[0])&&(t=t[0]),!t.length)return Tt();for(n=t[0],s=1;s<t.length;++s)t[s].isValid()&&!t[s][e](n)||(n=t[s]);return n}var Wt=["year","quarter","month","week","day","hour","minute","second","millisecond"];function Ht(e){var t=C(e),n=t.year||0,s=t.quarter||0,i=t.month||0,r=t.week||t.isoWeek||0,a=t.day||0,o=t.hour||0,u=t.minute||0,l=t.second||0,d=t.millisecond||0;this._isValid=function(e){for(var t in e)if(-1===Ye.call(Wt,t)||null!=e[t]&&isNaN(e[t]))return!1;for(var n=!1,s=0;s<Wt.length;++s)if(e[Wt[s]]){if(n)return!1;parseFloat(e[Wt[s]])!==k(e[Wt[s]])&&(n=!0)}return!0}(t),this._milliseconds=+d+1e3*l+6e4*u+1e3*o*60*60,this._days=+a+7*r,this._months=+i+3*s+12*n,this._data={},this._locale=lt(),this._bubble()}function Rt(e){return e instanceof Ht}function Ct(e){return e<0?-1*Math.round(-1*e):Math.round(e)}function Ft(e,n){I(e,0,0,function(){var e=this.utcOffset(),t="+";return e<0&&(e=-e,t="-"),t+U(~~(e/60),2)+n+U(~~e%60,2)})}Ft("Z",":"),Ft("ZZ",""),ue("Z",re),ue("ZZ",re),ce(["Z","ZZ"],function(e,t,n){n._useUTC=!0,n._tzm=Ut(re,e)});var Lt=/([\+\-]|\d\d)/gi;function Ut(e,t){var n=(t||"").match(e);if(null===n)return null;var s=((n[n.length-1]||[])+"").match(Lt)||["-",0,0],i=60*s[1]+k(s[2]);return 0===i?0:"+"===s[0]?i:-i}function Nt(e,t){var n,s;return t._isUTC?(n=t.clone(),s=(S(e)||h(e)?e.valueOf():Tt(e).valueOf())-n.valueOf(),n._d.setTime(n._d.valueOf()+s),c.updateOffset(n,!1),n):Tt(e).local()}function Gt(e){return 15*-Math.round(e._d.getTimezoneOffset()/15)}function Vt(){return!!this.isValid()&&(this._isUTC&&0===this._offset)}c.updateOffset=function(){};var Et=/^(\-|\+)?(?:(\d*)[. ])?(\d+)\:(\d+)(?:\:(\d+)(\.\d*)?)?$/,It=/^(-|\+)?P(?:([-+]?[0-9,.]*)Y)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)W)?(?:([-+]?[0-9,.]*)D)?(?:T(?:([-+]?[0-9,.]*)H)?(?:([-+]?[0-9,.]*)M)?(?:([-+]?[0-9,.]*)S)?)?$/;function At(e,t){var n,s,i,r=e,a=null;return Rt(e)?r={ms:e._milliseconds,d:e._days,M:e._months}:d(e)?(r={},t?r[t]=e:r.milliseconds=e):(a=Et.exec(e))?(n="-"===a[1]?-1:1,r={y:0,d:k(a[ye])*n,h:k(a[ge])*n,m:k(a[pe])*n,s:k(a[ve])*n,ms:k(Ct(1e3*a[we]))*n}):(a=It.exec(e))?(n="-"===a[1]?-1:1,r={y:jt(a[2],n),M:jt(a[3],n),w:jt(a[4],n),d:jt(a[5],n),h:jt(a[6],n),m:jt(a[7],n),s:jt(a[8],n)}):null==r?r={}:"object"==typeof r&&("from"in r||"to"in r)&&(i=function(e,t){var n;if(!e.isValid()||!t.isValid())return{milliseconds:0,months:0};t=Nt(t,e),e.isBefore(t)?n=Zt(e,t):((n=Zt(t,e)).milliseconds=-n.milliseconds,n.months=-n.months);return n}(Tt(r.from),Tt(r.to)),(r={}).ms=i.milliseconds,r.M=i.months),s=new Ht(r),Rt(e)&&m(e,"_locale")&&(s._locale=e._locale),s}function jt(e,t){var n=e&&parseFloat(e.replace(",","."));return(isNaN(n)?0:n)*t}function Zt(e,t){var n={milliseconds:0,months:0};return n.months=t.month()-e.month()+12*(t.year()-e.year()),e.clone().add(n.months,"M").isAfter(t)&&--n.months,n.milliseconds=+t-+e.clone().add(n.months,"M"),n}function zt(s,i){return function(e,t){var n;return null===t||isNaN(+t)||(T(i,"moment()."+i+"(period, number) is deprecated. Please use moment()."+i+"(number, period). See http://momentjs.com/guides/#/warnings/add-inverted-param/ for more info."),n=e,e=t,t=n),$t(this,At(e="string"==typeof e?+e:e,t),s),this}}function $t(e,t,n,s){var i=t._milliseconds,r=Ct(t._days),a=Ct(t._months);e.isValid()&&(s=null==s||s,a&&Ce(e,xe(e,"Month")+a*n),r&&be(e,"Date",xe(e,"Date")+r*n),i&&e._d.setTime(e._d.valueOf()+i*n),s&&c.updateOffset(e,r||a))}At.fn=Ht.prototype,At.invalid=function(){return At(NaN)};var qt=zt(1,"add"),Jt=zt(-1,"subtract");function Bt(e,t){var n=12*(t.year()-e.year())+(t.month()-e.month()),s=e.clone().add(n,"months");return-(n+(t-s<0?(t-s)/(s-e.clone().add(n-1,"months")):(t-s)/(e.clone().add(n+1,"months")-s)))||0}function Qt(e){var t;return void 0===e?this._locale._abbr:(null!=(t=lt(e))&&(this._locale=t),this)}c.defaultFormat="YYYY-MM-DDTHH:mm:ssZ",c.defaultFormatUtc="YYYY-MM-DDTHH:mm:ss[Z]";var Xt=n("moment().lang() is deprecated. Instead, use moment().localeData() to get the language configuration. Use moment().locale() to change languages.",function(e){return void 0===e?this.localeData():this.locale(e)});function Kt(){return this._locale}function en(e,t){I(0,[e,e.length],0,t)}function tn(e,t,n,s,i){var r;return null==e?Ie(this,s,i).year:((r=Ae(e,s,i))<t&&(t=r),function(e,t,n,s,i){var r=Ee(e,t,n,s,i),a=Ge(r.year,0,r.dayOfYear);return this.year(a.getUTCFullYear()),this.month(a.getUTCMonth()),this.date(a.getUTCDate()),this}.call(this,e,t,n,s,i))}I(0,["gg",2],0,function(){return this.weekYear()%100}),I(0,["GG",2],0,function(){return this.isoWeekYear()%100}),en("gggg","weekYear"),en("ggggg","weekYear"),en("GGGG","isoWeekYear"),en("GGGGG","isoWeekYear"),H("weekYear","gg"),H("isoWeekYear","GG"),L("weekYear",1),L("isoWeekYear",1),ue("G",se),ue("g",se),ue("GG",B,z),ue("gg",B,z),ue("GGGG",ee,q),ue("gggg",ee,q),ue("GGGGG",te,J),ue("ggggg",te,J),fe(["gggg","ggggg","GGGG","GGGGG"],function(e,t,n,s){t[s.substr(0,2)]=k(e)}),fe(["gg","GG"],function(e,t,n,s){t[s]=c.parseTwoDigitYear(e)}),I("Q",0,"Qo","quarter"),H("quarter","Q"),L("quarter",7),ue("Q",Z),ce("Q",function(e,t){t[_e]=3*(k(e)-1)}),I("D",["DD",2],"Do","date"),H("date","D"),L("date",9),ue("D",B),ue("DD",B,z),ue("Do",function(e,t){return e?t._dayOfMonthOrdinalParse||t._ordinalParse:t._dayOfMonthOrdinalParseLenient}),ce(["D","DD"],ye),ce("Do",function(e,t){t[ye]=k(e.match(B)[0])});var nn=Te("Date",!0);I("DDD",["DDDD",3],"DDDo","dayOfYear"),H("dayOfYear","DDD"),L("dayOfYear",4),ue("DDD",K),ue("DDDD",$),ce(["DDD","DDDD"],function(e,t,n){n._dayOfYear=k(e)}),I("m",["mm",2],0,"minute"),H("minute","m"),L("minute",14),ue("m",B),ue("mm",B,z),ce(["m","mm"],pe);var sn=Te("Minutes",!1);I("s",["ss",2],0,"second"),H("second","s"),L("second",15),ue("s",B),ue("ss",B,z),ce(["s","ss"],ve);var rn,an=Te("Seconds",!1);for(I("S",0,0,function(){return~~(this.millisecond()/100)}),I(0,["SS",2],0,function(){return~~(this.millisecond()/10)}),I(0,["SSS",3],0,"millisecond"),I(0,["SSSS",4],0,function(){return 10*this.millisecond()}),I(0,["SSSSS",5],0,function(){return 100*this.millisecond()}),I(0,["SSSSSS",6],0,function(){return 1e3*this.millisecond()}),I(0,["SSSSSSS",7],0,function(){return 1e4*this.millisecond()}),I(0,["SSSSSSSS",8],0,function(){return 1e5*this.millisecond()}),I(0,["SSSSSSSSS",9],0,function(){return 1e6*this.millisecond()}),H("millisecond","ms"),L("millisecond",16),ue("S",K,Z),ue("SS",K,z),ue("SSS",K,$),rn="SSSS";rn.length<=9;rn+="S")ue(rn,ne);function on(e,t){t[we]=k(1e3*("0."+e))}for(rn="S";rn.length<=9;rn+="S")ce(rn,on);var un=Te("Milliseconds",!1);I("z",0,0,"zoneAbbr"),I("zz",0,0,"zoneName");var ln=M.prototype;function dn(e){return e}ln.add=qt,ln.calendar=function(e,t){var n=e||Tt(),s=Nt(n,this).startOf("day"),i=c.calendarFormat(this,s)||"sameElse",r=t&&(x(t[i])?t[i].call(this,n):t[i]);return this.format(r||this.localeData().calendar(i,this,Tt(n)))},ln.clone=function(){return new M(this)},ln.diff=function(e,t,n){var s,i,r;if(!this.isValid())return NaN;if(!(s=Nt(e,this)).isValid())return NaN;switch(i=6e4*(s.utcOffset()-this.utcOffset()),t=R(t)){case"year":r=Bt(this,s)/12;break;case"month":r=Bt(this,s);break;case"quarter":r=Bt(this,s)/3;break;case"second":r=(this-s)/1e3;break;case"minute":r=(this-s)/6e4;break;case"hour":r=(this-s)/36e5;break;case"day":r=(this-s-i)/864e5;break;case"week":r=(this-s-i)/6048e5;break;default:r=this-s}return n?r:D(r)},ln.endOf=function(e){return void 0===(e=R(e))||"millisecond"===e?this:("date"===e&&(e="day"),this.startOf(e).add(1,"isoWeek"===e?"week":e).subtract(1,"ms"))},ln.format=function(e){e||(e=this.isUtc()?c.defaultFormatUtc:c.defaultFormat);var t=A(this,e);return this.localeData().postformat(t)},ln.from=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({to:this,from:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.fromNow=function(e){return this.from(Tt(),e)},ln.to=function(e,t){return this.isValid()&&(S(e)&&e.isValid()||Tt(e).isValid())?At({from:this,to:e}).locale(this.locale()).humanize(!t):this.localeData().invalidDate()},ln.toNow=function(e){return this.to(Tt(),e)},ln.get=function(e){return x(this[e=R(e)])?this[e]():this},ln.invalidAt=function(){return g(this).overflow},ln.isAfter=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()>n.valueOf():n.valueOf()<this.clone().startOf(t).valueOf())},ln.isBefore=function(e,t){var n=S(e)?e:Tt(e);return!(!this.isValid()||!n.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()<n.valueOf():this.clone().endOf(t).valueOf()<n.valueOf())},ln.isBetween=function(e,t,n,s){var i=S(e)?e:Tt(e),r=S(t)?t:Tt(t);return!!(this.isValid()&&i.isValid()&&r.isValid())&&("("===(s=s||"()")[0]?this.isAfter(i,n):!this.isBefore(i,n))&&(")"===s[1]?this.isBefore(r,n):!this.isAfter(r,n))},ln.isSame=function(e,t){var n,s=S(e)?e:Tt(e);return!(!this.isValid()||!s.isValid())&&("millisecond"===(t=R(t)||"millisecond")?this.valueOf()===s.valueOf():(n=s.valueOf(),this.clone().startOf(t).valueOf()<=n&&n<=this.clone().endOf(t).valueOf()))},ln.isSameOrAfter=function(e,t){return this.isSame(e,t)||this.isAfter(e,t)},ln.isSameOrBefore=function(e,t){return this.isSame(e,t)||this.isBefore(e,t)},ln.isValid=function(){return p(this)},ln.lang=Xt,ln.locale=Qt,ln.localeData=Kt,ln.max=bt,ln.min=xt,ln.parsingFlags=function(){return _({},g(this))},ln.set=function(e,t){if("object"==typeof e)for(var n=function(e){var t=[];for(var n in e)t.push({unit:n,priority:F[n]});return t.sort(function(e,t){return e.priority-t.priority}),t}(e=C(e)),s=0;s<n.length;s++)this[n[s].unit](e[n[s].unit]);else if(x(this[e=R(e)]))return this[e](t);return this},ln.startOf=function(e){switch(e=R(e)){case"year":this.month(0);case"quarter":case"month":this.date(1);case"week":case"isoWeek":case"day":case"date":this.hours(0);case"hour":this.minutes(0);case"minute":this.seconds(0);case"second":this.milliseconds(0)}return"week"===e&&this.weekday(0),"isoWeek"===e&&this.isoWeekday(1),"quarter"===e&&this.month(3*Math.floor(this.month()/3)),this},ln.subtract=Jt,ln.toArray=function(){var e=this;return[e.year(),e.month(),e.date(),e.hour(),e.minute(),e.second(),e.millisecond()]},ln.toObject=function(){var e=this;return{years:e.year(),months:e.month(),date:e.date(),hours:e.hours(),minutes:e.minutes(),seconds:e.seconds(),milliseconds:e.milliseconds()}},ln.toDate=function(){return new Date(this.valueOf())},ln.toISOString=function(e){if(!this.isValid())return null;var t=!0!==e,n=t?this.clone().utc():this;return n.year()<0||9999<n.year()?A(n,t?"YYYYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYYYY-MM-DD[T]HH:mm:ss.SSSZ"):x(Date.prototype.toISOString)?t?this.toDate().toISOString():new Date(this.valueOf()+60*this.utcOffset()*1e3).toISOString().replace("Z",A(n,"Z")):A(n,t?"YYYY-MM-DD[T]HH:mm:ss.SSS[Z]":"YYYY-MM-DD[T]HH:mm:ss.SSSZ")},ln.inspect=function(){if(!this.isValid())return"moment.invalid(/* "+this._i+" */)";var e="moment",t="";this.isLocal()||(e=0===this.utcOffset()?"moment.utc":"moment.parseZone",t="Z");var n="["+e+'("]',s=0<=this.year()&&this.year()<=9999?"YYYY":"YYYYYY",i=t+'[")]';return this.format(n+s+"-MM-DD[T]HH:mm:ss.SSS"+i)},ln.toJSON=function(){return this.isValid()?this.toISOString():null},ln.toString=function(){return this.clone().locale("en").format("ddd MMM DD YYYY HH:mm:ss [GMT]ZZ")},ln.unix=function(){return Math.floor(this.valueOf()/1e3)},ln.valueOf=function(){return this._d.valueOf()-6e4*(this._offset||0)},ln.creationData=function(){return{input:this._i,format:this._f,locale:this._locale,isUTC:this._isUTC,strict:this._strict}},ln.year=Oe,ln.isLeapYear=function(){return ke(this.year())},ln.weekYear=function(e){return tn.call(this,e,this.week(),this.weekday(),this.localeData()._week.dow,this.localeData()._week.doy)},ln.isoWeekYear=function(e){return tn.call(this,e,this.isoWeek(),this.isoWeekday(),1,4)},ln.quarter=ln.quarters=function(e){return null==e?Math.ceil((this.month()+1)/3):this.month(3*(e-1)+this.month()%3)},ln.month=Fe,ln.daysInMonth=function(){return Pe(this.year(),this.month())},ln.week=ln.weeks=function(e){var t=this.localeData().week(this);return null==e?t:this.add(7*(e-t),"d")},ln.isoWeek=ln.isoWeeks=function(e){var t=Ie(this,1,4).week;return null==e?t:this.add(7*(e-t),"d")},ln.weeksInYear=function(){var e=this.localeData()._week;return Ae(this.year(),e.dow,e.doy)},ln.isoWeeksInYear=function(){return Ae(this.year(),1,4)},ln.date=nn,ln.day=ln.days=function(e){if(!this.isValid())return null!=e?this:NaN;var t,n,s=this._isUTC?this._d.getUTCDay():this._d.getDay();return null!=e?(t=e,n=this.localeData(),e="string"!=typeof t?t:isNaN(t)?"number"==typeof(t=n.weekdaysParse(t))?t:null:parseInt(t,10),this.add(e-s,"d")):s},ln.weekday=function(e){if(!this.isValid())return null!=e?this:NaN;var t=(this.day()+7-this.localeData()._week.dow)%7;return null==e?t:this.add(e-t,"d")},ln.isoWeekday=function(e){if(!this.isValid())return null!=e?this:NaN;if(null==e)return this.day()||7;var t,n,s=(t=e,n=this.localeData(),"string"==typeof t?n.weekdaysParse(t)%7||7:isNaN(t)?null:t);return this.day(this.day()%7?s:s-7)},ln.dayOfYear=function(e){var t=Math.round((this.clone().startOf("day")-this.clone().startOf("year"))/864e5)+1;return null==e?t:this.add(e-t,"d")},ln.hour=ln.hours=tt,ln.minute=ln.minutes=sn,ln.second=ln.seconds=an,ln.millisecond=ln.milliseconds=un,ln.utcOffset=function(e,t,n){var s,i=this._offset||0;if(!this.isValid())return null!=e?this:NaN;if(null==e)return this._isUTC?i:Gt(this);if("string"==typeof e){if(null===(e=Ut(re,e)))return this}else Math.abs(e)<16&&!n&&(e*=60);return!this._isUTC&&t&&(s=Gt(this)),this._offset=e,this._isUTC=!0,null!=s&&this.add(s,"m"),i!==e&&(!t||this._changeInProgress?$t(this,At(e-i,"m"),1,!1):this._changeInProgress||(this._changeInProgress=!0,c.updateOffset(this,!0),this._changeInProgress=null)),this},ln.utc=function(e){return this.utcOffset(0,e)},ln.local=function(e){return this._isUTC&&(this.utcOffset(0,e),this._isUTC=!1,e&&this.subtract(Gt(this),"m")),this},ln.parseZone=function(){if(null!=this._tzm)this.utcOffset(this._tzm,!1,!0);else if("string"==typeof this._i){var e=Ut(ie,this._i);null!=e?this.utcOffset(e):this.utcOffset(0,!0)}return this},ln.hasAlignedHourOffset=function(e){return!!this.isValid()&&(e=e?Tt(e).utcOffset():0,(this.utcOffset()-e)%60==0)},ln.isDST=function(){return this.utcOffset()>this.clone().month(0).utcOffset()||this.utcOffset()>this.clone().month(5).utcOffset()},ln.isLocal=function(){return!!this.isValid()&&!this._isUTC},ln.isUtcOffset=function(){return!!this.isValid()&&this._isUTC},ln.isUtc=Vt,ln.isUTC=Vt,ln.zoneAbbr=function(){return this._isUTC?"UTC":""},ln.zoneName=function(){return this._isUTC?"Coordinated Universal Time":""},ln.dates=n("dates accessor is deprecated. Use date instead.",nn),ln.months=n("months accessor is deprecated. Use month instead",Fe),ln.years=n("years accessor is deprecated. Use year instead",Oe),ln.zone=n("moment().zone is deprecated, use moment().utcOffset instead. http://momentjs.com/guides/#/warnings/zone/",function(e,t){return null!=e?("string"!=typeof e&&(e=-e),this.utcOffset(e,t),this):-this.utcOffset()}),ln.isDSTShifted=n("isDSTShifted is deprecated. See http://momentjs.com/guides/#/warnings/dst-shifted/ for more information",function(){if(!l(this._isDSTShifted))return this._isDSTShifted;var e={};if(w(e,this),(e=Yt(e))._a){var t=e._isUTC?y(e._a):Tt(e._a);this._isDSTShifted=this.isValid()&&0<a(e._a,t.toArray())}else this._isDSTShifted=!1;return this._isDSTShifted});var hn=P.prototype;function cn(e,t,n,s){var i=lt(),r=y().set(s,t);return i[n](r,e)}function fn(e,t,n){if(d(e)&&(t=e,e=void 0),e=e||"",null!=t)return cn(e,t,n,"month");var s,i=[];for(s=0;s<12;s++)i[s]=cn(e,s,n,"month");return i}function mn(e,t,n,s){t=("boolean"==typeof e?d(t)&&(n=t,t=void 0):(t=e,e=!1,d(n=t)&&(n=t,t=void 0)),t||"");var i,r=lt(),a=e?r._week.dow:0;if(null!=n)return cn(t,(n+a)%7,s,"day");var o=[];for(i=0;i<7;i++)o[i]=cn(t,(i+a)%7,s,"day");return o}hn.calendar=function(e,t,n){var s=this._calendar[e]||this._calendar.sameElse;return x(s)?s.call(t,n):s},hn.longDateFormat=function(e){var t=this._longDateFormat[e],n=this._longDateFormat[e.toUpperCase()];return t||!n?t:(this._longDateFormat[e]=n.replace(/MMMM|MM|DD|dddd/g,function(e){return e.slice(1)}),this._longDateFormat[e])},hn.invalidDate=function(){return this._invalidDate},hn.ordinal=function(e){return this._ordinal.replace("%d",e)},hn.preparse=dn,hn.postformat=dn,hn.relativeTime=function(e,t,n,s){var i=this._relativeTime[n];return x(i)?i(e,t,n,s):i.replace(/%d/i,e)},hn.pastFuture=function(e,t){var n=this._relativeTime[0<e?"future":"past"];return x(n)?n(t):n.replace(/%s/i,t)},hn.set=function(e){var t,n;for(n in e)x(t=e[n])?this[n]=t:this["_"+n]=t;this._config=e,this._dayOfMonthOrdinalParseLenient=new RegExp((this._dayOfMonthOrdinalParse.source||this._ordinalParse.source)+"|"+/\d{1,2}/.source)},hn.months=function(e,t){return e?o(this._months)?this._months[e.month()]:this._months[(this._months.isFormat||We).test(t)?"format":"standalone"][e.month()]:o(this._months)?this._months:this._months.standalone},hn.monthsShort=function(e,t){return e?o(this._monthsShort)?this._monthsShort[e.month()]:this._monthsShort[We.test(t)?"format":"standalone"][e.month()]:o(this._monthsShort)?this._monthsShort:this._monthsShort.standalone},hn.monthsParse=function(e,t,n){var s,i,r;if(this._monthsParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._monthsParse)for(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[],s=0;s<12;++s)r=y([2e3,s]),this._shortMonthsParse[s]=this.monthsShort(r,"").toLocaleLowerCase(),this._longMonthsParse[s]=this.months(r,"").toLocaleLowerCase();return n?"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:"MMM"===t?-1!==(i=Ye.call(this._shortMonthsParse,a))?i:-1!==(i=Ye.call(this._longMonthsParse,a))?i:null:-1!==(i=Ye.call(this._longMonthsParse,a))?i:-1!==(i=Ye.call(this._shortMonthsParse,a))?i:null}.call(this,e,t,n);for(this._monthsParse||(this._monthsParse=[],this._longMonthsParse=[],this._shortMonthsParse=[]),s=0;s<12;s++){if(i=y([2e3,s]),n&&!this._longMonthsParse[s]&&(this._longMonthsParse[s]=new RegExp("^"+this.months(i,"").replace(".","")+"$","i"),this._shortMonthsParse[s]=new RegExp("^"+this.monthsShort(i,"").replace(".","")+"$","i")),n||this._monthsParse[s]||(r="^"+this.months(i,"")+"|^"+this.monthsShort(i,""),this._monthsParse[s]=new RegExp(r.replace(".",""),"i")),n&&"MMMM"===t&&this._longMonthsParse[s].test(e))return s;if(n&&"MMM"===t&&this._shortMonthsParse[s].test(e))return s;if(!n&&this._monthsParse[s].test(e))return s}},hn.monthsRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsStrictRegex:this._monthsRegex):(m(this,"_monthsRegex")||(this._monthsRegex=Ue),this._monthsStrictRegex&&e?this._monthsStrictRegex:this._monthsRegex)},hn.monthsShortRegex=function(e){return this._monthsParseExact?(m(this,"_monthsRegex")||Ne.call(this),e?this._monthsShortStrictRegex:this._monthsShortRegex):(m(this,"_monthsShortRegex")||(this._monthsShortRegex=Le),this._monthsShortStrictRegex&&e?this._monthsShortStrictRegex:this._monthsShortRegex)},hn.week=function(e){return Ie(e,this._week.dow,this._week.doy).week},hn.firstDayOfYear=function(){return this._week.doy},hn.firstDayOfWeek=function(){return this._week.dow},hn.weekdays=function(e,t){return e?o(this._weekdays)?this._weekdays[e.day()]:this._weekdays[this._weekdays.isFormat.test(t)?"format":"standalone"][e.day()]:o(this._weekdays)?this._weekdays:this._weekdays.standalone},hn.weekdaysMin=function(e){return e?this._weekdaysMin[e.day()]:this._weekdaysMin},hn.weekdaysShort=function(e){return e?this._weekdaysShort[e.day()]:this._weekdaysShort},hn.weekdaysParse=function(e,t,n){var s,i,r;if(this._weekdaysParseExact)return function(e,t,n){var s,i,r,a=e.toLocaleLowerCase();if(!this._weekdaysParse)for(this._weekdaysParse=[],this._shortWeekdaysParse=[],this._minWeekdaysParse=[],s=0;s<7;++s)r=y([2e3,1]).day(s),this._minWeekdaysParse[s]=this.weekdaysMin(r,"").toLocaleLowerCase(),this._shortWeekdaysParse[s]=this.weekdaysShort(r,"").toLocaleLowerCase(),this._weekdaysParse[s]=this.weekdays(r,"").toLocaleLowerCase();return n?"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"dddd"===t?-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:"ddd"===t?-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:null:-1!==(i=Ye.call(this._minWeekdaysParse,a))?i:-1!==(i=Ye.call(this._weekdaysParse,a))?i:-1!==(i=Ye.call(this._shortWeekdaysParse,a))?i:null}.call(this,e,t,n);for(this._weekdaysParse||(this._weekdaysParse=[],this._minWeekdaysParse=[],this._shortWeekdaysParse=[],this._fullWeekdaysParse=[]),s=0;s<7;s++){if(i=y([2e3,1]).day(s),n&&!this._fullWeekdaysParse[s]&&(this._fullWeekdaysParse[s]=new RegExp("^"+this.weekdays(i,"").replace(".","\\.?")+"$","i"),this._shortWeekdaysParse[s]=new RegExp("^"+this.weekdaysShort(i,"").replace(".","\\.?")+"$","i"),this._minWeekdaysParse[s]=new RegExp("^"+this.weekdaysMin(i,"").replace(".","\\.?")+"$","i")),this._weekdaysParse[s]||(r="^"+this.weekdays(i,"")+"|^"+this.weekdaysShort(i,"")+"|^"+this.weekdaysMin(i,""),this._weekdaysParse[s]=new RegExp(r.replace(".",""),"i")),n&&"dddd"===t&&this._fullWeekdaysParse[s].test(e))return s;if(n&&"ddd"===t&&this._shortWeekdaysParse[s].test(e))return s;if(n&&"dd"===t&&this._minWeekdaysParse[s].test(e))return s;if(!n&&this._weekdaysParse[s].test(e))return s}},hn.weekdaysRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysStrictRegex:this._weekdaysRegex):(m(this,"_weekdaysRegex")||(this._weekdaysRegex=$e),this._weekdaysStrictRegex&&e?this._weekdaysStrictRegex:this._weekdaysRegex)},hn.weekdaysShortRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex):(m(this,"_weekdaysShortRegex")||(this._weekdaysShortRegex=qe),this._weekdaysShortStrictRegex&&e?this._weekdaysShortStrictRegex:this._weekdaysShortRegex)},hn.weekdaysMinRegex=function(e){return this._weekdaysParseExact?(m(this,"_weekdaysRegex")||Be.call(this),e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex):(m(this,"_weekdaysMinRegex")||(this._weekdaysMinRegex=Je),this._weekdaysMinStrictRegex&&e?this._weekdaysMinStrictRegex:this._weekdaysMinRegex)},hn.isPM=function(e){return"p"===(e+"").toLowerCase().charAt(0)},hn.meridiem=function(e,t,n){return 11<e?n?"pm":"PM":n?"am":"AM"},ot("en",{dayOfMonthOrdinalParse:/\d{1,2}(th|st|nd|rd)/,ordinal:function(e){var t=e%10;return e+(1===k(e%100/10)?"th":1===t?"st":2===t?"nd":3===t?"rd":"th")}}),c.lang=n("moment.lang is deprecated. Use moment.locale instead.",ot),c.langData=n("moment.langData is deprecated. Use moment.localeData instead.",lt);var _n=Math.abs;function yn(e,t,n,s){var i=At(t,n);return e._milliseconds+=s*i._milliseconds,e._days+=s*i._days,e._months+=s*i._months,e._bubble()}function gn(e){return e<0?Math.floor(e):Math.ceil(e)}function pn(e){return 4800*e/146097}function vn(e){return 146097*e/4800}function wn(e){return function(){return this.as(e)}}var Mn=wn("ms"),Sn=wn("s"),Dn=wn("m"),kn=wn("h"),Yn=wn("d"),On=wn("w"),Tn=wn("M"),xn=wn("y");function bn(e){return function(){return this.isValid()?this._data[e]:NaN}}var Pn=bn("milliseconds"),Wn=bn("seconds"),Hn=bn("minutes"),Rn=bn("hours"),Cn=bn("days"),Fn=bn("months"),Ln=bn("years");var Un=Math.round,Nn={ss:44,s:45,m:45,h:22,d:26,M:11};var Gn=Math.abs;function Vn(e){return(0<e)-(e<0)||+e}function En(){if(!this.isValid())return this.localeData().invalidDate();var e,t,n=Gn(this._milliseconds)/1e3,s=Gn(this._days),i=Gn(this._months);t=D((e=D(n/60))/60),n%=60,e%=60;var r=D(i/12),a=i%=12,o=s,u=t,l=e,d=n?n.toFixed(3).replace(/\.?0+$/,""):"",h=this.asSeconds();if(!h)return"P0D";var c=h<0?"-":"",f=Vn(this._months)!==Vn(h)?"-":"",m=Vn(this._days)!==Vn(h)?"-":"",_=Vn(this._milliseconds)!==Vn(h)?"-":"";return c+"P"+(r?f+r+"Y":"")+(a?f+a+"M":"")+(o?m+o+"D":"")+(u||l||d?"T":"")+(u?_+u+"H":"")+(l?_+l+"M":"")+(d?_+d+"S":"")}var In=Ht.prototype;return In.isValid=function(){return this._isValid},In.abs=function(){var e=this._data;return this._milliseconds=_n(this._milliseconds),this._days=_n(this._days),this._months=_n(this._months),e.milliseconds=_n(e.milliseconds),e.seconds=_n(e.seconds),e.minutes=_n(e.minutes),e.hours=_n(e.hours),e.months=_n(e.months),e.years=_n(e.years),this},In.add=function(e,t){return yn(this,e,t,1)},In.subtract=function(e,t){return yn(this,e,t,-1)},In.as=function(e){if(!this.isValid())return NaN;var t,n,s=this._milliseconds;if("month"===(e=R(e))||"year"===e)return t=this._days+s/864e5,n=this._months+pn(t),"month"===e?n:n/12;switch(t=this._days+Math.round(vn(this._months)),e){case"week":return t/7+s/6048e5;case"day":return t+s/864e5;case"hour":return 24*t+s/36e5;case"minute":return 1440*t+s/6e4;case"second":return 86400*t+s/1e3;case"millisecond":return Math.floor(864e5*t)+s;default:throw new Error("Unknown unit "+e)}},In.asMilliseconds=Mn,In.asSeconds=Sn,In.asMinutes=Dn,In.asHours=kn,In.asDays=Yn,In.asWeeks=On,In.asMonths=Tn,In.asYears=xn,In.valueOf=function(){return this.isValid()?this._milliseconds+864e5*this._days+this._months%12*2592e6+31536e6*k(this._months/12):NaN},In._bubble=function(){var e,t,n,s,i,r=this._milliseconds,a=this._days,o=this._months,u=this._data;return 0<=r&&0<=a&&0<=o||r<=0&&a<=0&&o<=0||(r+=864e5*gn(vn(o)+a),o=a=0),u.milliseconds=r%1e3,e=D(r/1e3),u.seconds=e%60,t=D(e/60),u.minutes=t%60,n=D(t/60),u.hours=n%24,o+=i=D(pn(a+=D(n/24))),a-=gn(vn(i)),s=D(o/12),o%=12,u.days=a,u.months=o,u.years=s,this},In.clone=function(){return At(this)},In.get=function(e){return e=R(e),this.isValid()?this[e+"s"]():NaN},In.milliseconds=Pn,In.seconds=Wn,In.minutes=Hn,In.hours=Rn,In.days=Cn,In.weeks=function(){return D(this.days()/7)},In.months=Fn,In.years=Ln,In.humanize=function(e){if(!this.isValid())return this.localeData().invalidDate();var t,n,s,i,r,a,o,u,l,d,h,c=this.localeData(),f=(n=!e,s=c,i=At(t=this).abs(),r=Un(i.as("s")),a=Un(i.as("m")),o=Un(i.as("h")),u=Un(i.as("d")),l=Un(i.as("M")),d=Un(i.as("y")),(h=r<=Nn.ss&&["s",r]||r<Nn.s&&["ss",r]||a<=1&&["m"]||a<Nn.m&&["mm",a]||o<=1&&["h"]||o<Nn.h&&["hh",o]||u<=1&&["d"]||u<Nn.d&&["dd",u]||l<=1&&["M"]||l<Nn.M&&["MM",l]||d<=1&&["y"]||["yy",d])[2]=n,h[3]=0<+t,h[4]=s,function(e,t,n,s,i){return i.relativeTime(t||1,!!n,e,s)}.apply(null,h));return e&&(f=c.pastFuture(+this,f)),c.postformat(f)},In.toISOString=En,In.toString=En,In.toJSON=En,In.locale=Qt,In.localeData=Kt,In.toIsoString=n("toIsoString() is deprecated. Please use toISOString() instead (notice the capitals)",En),In.lang=Xt,I("X",0,0,"unix"),I("x",0,0,"valueOf"),ue("x",se),ue("X",/[+-]?\d+(\.\d{1,3})?/),ce("X",function(e,t,n){n._d=new Date(1e3*parseFloat(e,10))}),ce("x",function(e,t,n){n._d=new Date(k(e))}),c.version="2.23.0",e=Tt,c.fn=ln,c.min=function(){return Pt("isBefore",[].slice.call(arguments,0))},c.max=function(){return Pt("isAfter",[].slice.call(arguments,0))},c.now=function(){return Date.now?Date.now():+new Date},c.utc=y,c.unix=function(e){return Tt(1e3*e)},c.months=function(e,t){return fn(e,t,"months")},c.isDate=h,c.locale=ot,c.invalid=v,c.duration=At,c.isMoment=S,c.weekdays=function(e,t,n){return mn(e,t,n,"weekdays")},c.parseZone=function(){return Tt.apply(null,arguments).parseZone()},c.localeData=lt,c.isDuration=Rt,c.monthsShort=function(e,t){return fn(e,t,"monthsShort")},c.weekdaysMin=function(e,t,n){return mn(e,t,n,"weekdaysMin")},c.defineLocale=ut,c.updateLocale=function(e,t){if(null!=t){var n,s,i=nt;null!=(s=at(e))&&(i=s._config),(n=new P(t=b(i,t))).parentLocale=st[e],st[e]=n,ot(e)}else null!=st[e]&&(null!=st[e].parentLocale?st[e]=st[e].parentLocale:null!=st[e]&&delete st[e]);return st[e]},c.locales=function(){return s(st)},c.weekdaysShort=function(e,t,n){return mn(e,t,n,"weekdaysShort")},c.normalizeUnits=R,c.relativeTimeRounding=function(e){return void 0===e?Un:"function"==typeof e&&(Un=e,!0)},c.relativeTimeThreshold=function(e,t){return void 0!==Nn[e]&&(void 0===t?Nn[e]:(Nn[e]=t,"s"===e&&(Nn.ss=t-1),!0))},c.calendarFormat=function(e,t){var n=e.diff(t,"days",!0);return n<-6?"sameElse":n<-1?"lastWeek":n<0?"lastDay":n<1?"sameDay":n<2?"nextDay":n<7?"nextWeek":"sameElse"},c.prototype=ln,c.HTML5_FMT={DATETIME_LOCAL:"YYYY-MM-DDTHH:mm",DATETIME_LOCAL_SECONDS:"YYYY-MM-DDTHH:mm:ss",DATETIME_LOCAL_MS:"YYYY-MM-DDTHH:mm:ss.SSS",DATE:"YYYY-MM-DD",TIME:"HH:mm",TIME_SECONDS:"HH:mm:ss",TIME_MS:"HH:mm:ss.SSS",WEEK:"GGGG-[W]WW",MONTH:"YYYY-MM"},c});
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ background-color: #fff;
+ overflow: hidden;
+ font-size: 14px;
+ text-align: left;
+ width: 100%;
+ max-width: 100%;
+ margin-bottom: 20px;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 2px solid #ddd;
+ background-color: #fff;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ background-color: #fff;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #ddd;
+ background: #e6e6e6;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 8px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 14px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #e6e6e6 !important;
+ border: 1px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #e6e6e6;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: 100%;
+ background: white !important;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #000;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ white-space: nowrap;
+ overflow: visible;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #ececec !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #ddd;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 2px solid #ddd;
+ text-align: right;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: white !important;
+ border-bottom: 1px solid #ddd;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #ddd;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #d00;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator.table-striped .tabulator-row:nth-child(even) {
+ background-color: #f9f9f9;
+}
+
+.tabulator.table-bordered {
+ border: 1px solid #ddd;
+}
+
+.tabulator.table-bordered .tabulator-header .tabulator-col {
+ border-right: 1px solid #ddd;
+}
+
+.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-right: 1px solid #ddd;
+}
+
+.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 5px;
+}
+
+.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row {
+ min-height: 24px;
+}
+
+.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 5px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active {
+ background: #f5f5f5 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.success {
+ background: #dff0d8 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.info {
+ background: #d9edf7 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning {
+ background: #fcf8e3 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.danger {
+ background: #f2dede !important;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 30px;
+ background-color: #fff;
+ border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #f5f5f5 !important;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 8px;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell:last-of-type {
+ border-right: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #ddd;
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #ddd;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #fafafa;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #666;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #ddd;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #ddd;
+ padding: 4px;
+ padding-top: 6px;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;width:100%;max-width:100%;margin-bottom:20px;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:2px solid #ddd;background-color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #ddd;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;width:100%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:2px solid #ddd;text-align:right;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #ddd;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #ddd;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#f9f9f9}.tabulator.table-bordered{border:1px solid #ddd}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #ddd}.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content{padding:5px}.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row{min-height:24px}.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:5px}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.success{background:#dff0d8!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.info{background:#d9edf7!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning{background:#fcf8e3!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.danger{background:#f2dede!important}.tabulator-row{position:relative;box-sizing:border-box;min-height:30px;background-color:#fff;border-bottom:1px solid #ddd}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5!important;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:8px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_bootstrap.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_bootstrap.min.css"],"names":[],"mappings":"AACA,WACE,kBAAmB,AACnB,sBAAuB,AACvB,gBAAiB,AACjB,eAAgB,AAChB,gBAAiB,AACjB,WAAY,AACZ,eAAgB,AAChB,mBAAoB,AAEpB,uBAAyB,CAC1B,AAED,iFACE,cAAgB,CACjB,AAED,kCACE,yBAA0B,AACvB,sBAAuB,AACtB,qBAAsB,AAClB,gBAAkB,CAC3B,AAED,6BACE,kBAAmB,AACnB,sBAAuB,AACvB,WAAY,AACZ,6BAA8B,AAC9B,sBAAuB,AACvB,gBAAkB,AAClB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,YAAc,CACf,AAED,4CACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,sBAAuB,AACvB,gBAAiB,AACjB,sBAAuB,AACvB,eAAiB,CAClB,AAED,6DACE,kBAAmB,AACnB,sBAAuB,AACvB,mBAAoB,AACpB,mBAAqB,CACtB,AAED,mEACE,sBAAuB,AACvB,kBAAmB,AACnB,WAAa,CACd,AAED,wFACE,sBAAuB,AACvB,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,uBAAwB,AACxB,qBAAuB,CACxB,AAED,gHACE,sBAAuB,AACvB,WAAY,AACZ,sBAAuB,AACvB,YAAa,AACb,eAAiB,CAClB,AAED,oFACE,qBAAsB,AACtB,kBAAmB,AACnB,SAAU,AACV,UAAW,AACX,QAAS,AACT,SAAU,AACV,kCAAmC,AACnC,mCAAoC,AACpC,4BAA8B,CAC/B,AAED,0FACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,0BAA2B,AAC3B,eAAiB,CAClB,AAED,oHACE,iBAAmB,CACpB,AAED,0FACE,YAAc,CACf,AAED,+DACE,kBAAmB,AACnB,mCAAqC,AACrC,qBAAuB,CACxB,AAED,qEACE,kBAAmB,AACnB,sBAAuB,AACvB,eAAgB,AAChB,WAAY,AACZ,iBAAmB,CACpB,AAED,8EACE,qBAAwB,CACzB,AAED,yEACE,cAAgB,CACjB,AAED,sFACE,QAAS,AACT,QAAU,CACX,AAED,oFACE,kBAAoB,CACrB,AAED,qEACE,eAAgB,AAChB,wBAA0B,CAC3B,AAED,uHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,sHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,uHACE,0BAA2B,AAC3B,kBAAoB,CACrB,AAED,+GACE,uBAAwB,AACpB,yBAA0B,AAC9B,uBAAwB,AACxB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,sBAAwB,CAC7B,AAED,oHAEM,wBAA0B,CAC/B,AAED,2GACE,gBAAiB,AACjB,gBAAkB,CACnB,AAED,uIACE,gBAAiB,AACjB,mBAAqB,CACtB,AAED,uGACE,qBAAuB,CACxB,AAED,+CACE,qBAAsB,AACtB,kBAAmB,AACnB,UAAY,CACb,AAED,qEACE,2BAA6B,CAC9B,AAED,sEACE,0BAA4B,CAC7B,AAED,qDACE,sBAAuB,AACvB,WAAY,AACZ,0BAA6B,AAC7B,0BAA2B,AAC3B,6BAA8B,AAC9B,eAAiB,CAClB,AAED,oEACE,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,2DACE,cAAgB,CACjB,AAED,iEACE,YAAc,CACf,AAED,kCACE,kBAAmB,AACnB,WAAY,AACZ,mBAAoB,AACpB,cAAe,AACf,gCAAkC,CACnC,AAED,wCACE,YAAc,CACf,AAED,yDACE,sBAAuB,AACvB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,UAAY,CACb,AAED,wFACE,kBAAmB,AACnB,MAAO,AACP,OAAQ,AACR,WAAa,CACd,AAED,8DACE,qBAAsB,AACtB,cAAe,AACf,aAAc,AACd,WAAY,AACZ,gBAAkB,AAClB,cAAgB,CACjB,AAED,mDACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,mBAAoB,AACpB,gBAAkB,CACnB,AAED,kFACE,gBAAkB,AAClB,4BAA+B,CAChC,AAED,sGACE,4BAA8B,CAC/B,AAED,yGACE,yBAA2B,CAC5B,AAED,wCACE,kBAAmB,AACnB,QAAS,AACT,MAAO,AACP,SAAU,AACV,SAAW,CACZ,AAED,6CACE,OAAQ,AACR,UAAY,CACb,AAED,8CACE,gBAAkB,CACnB,AAED,6BACE,iBAAkB,AAClB,0BAA2B,AAC3B,iBAAkB,AAClB,gBAAkB,AAClB,mBAAoB,AACpB,qBAAsB,AAClB,iBAAkB,AACtB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,sBAAuB,AACvB,wBAAyB,AACzB,sBAA6B,AAC7B,gBAAiB,AACjB,0BAA6B,AAC7B,6BAA8B,AAC9B,0BAA2B,AAC3B,eAAiB,CAClB,AAED,oEACE,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,gEACE,mBAAoB,AACpB,kBAAoB,CACrB,AAED,kDACE,oBAAqB,AACrB,oBAAqB,AACrB,iBAAmB,CACpB,AAED,kDACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,sBAAuB,AACvB,iBAAmB,CACpB,AAED,8CACE,YAAc,CACf,AAED,6CACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,sBAAuB,AACvB,kBAAmB,AACnB,6BAAqC,CACtC,AAED,oDACE,UAAY,CACb,AAED,sDACE,UAAY,CACb,AAED,kEACE,eAAgB,AAChB,0BAA+B,AAC/B,UAAY,CACb,AAED,6BACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,MAAO,AACP,OAAQ,AACR,YAAa,AACb,YAAa,AACb,WAAY,AACZ,0BAA+B,AAC/B,iBAAmB,CACpB,AAED,mDACE,qBAAsB,AACtB,cAAe,AACf,kBAAmB,AACnB,mBAAoB,AACpB,gBAAiB,AACjB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qEACE,sBAAuB,AACvB,UAAY,CACb,AAED,mEACE,sBAAuB,AACvB,aAAe,CAChB,AAED,sDACE,wBAA0B,CAC3B,AAED,0BACE,qBAAuB,CACxB,AAMD,4JACE,2BAA6B,CAC9B,AAED,mFACE,WAAa,CACd,AAED,kFACE,eAAiB,CAClB,AAED,kGACE,WAAa,CACd,AAED,yEACE,4BAA+B,CAChC,AAED,0EACE,4BAA+B,CAChC,AAED,uEACE,4BAA+B,CAChC,AAED,0EACE,4BAA+B,CAChC,AAED,yEACE,4BAA+B,CAChC,AAED,eACE,kBAAmB,AACnB,sBAAuB,AACvB,gBAAiB,AACjB,sBAAuB,AACvB,4BAA8B,CAC/B,AAED,0CACE,mCAAqC,AACrC,cAAgB,CACjB,AAED,kCACE,wBAA0B,CAC3B,AAED,wCACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,gCACE,kBAAmB,AACnB,0BAA2B,AAC3B,6BAA8B,AAC9B,8BAAgC,AAChC,UAAY,CACb,AAED,4CACE,kBAAmB,AACnB,QAAS,AACT,SAAU,AACV,OAAQ,AACR,UAAY,CACb,AAED,iDACE,MAAO,AACP,WAAa,CACd,AAED,kDACE,gBAAkB,CACnB,AAED,iCACE,qBAAsB,AACtB,kBAAmB,AACnB,yBAA0B,AAC1B,UAAY,CACb,AAED,uDACE,2BAA6B,CAC9B,AAED,wDACE,0BAA4B,CAC7B,AAED,8CACE,sBAAuB,AACvB,YAAa,AACb,0BAA2B,AAC3B,4BAA8B,CAC/B,AAED,oDACE,YAAc,CACf,AAED,oDACE,cAAgB,CACjB,AAED,0DACE,iBAAmB,CACpB,AAED,wEACE,kBAAoB,CACrB,AAED,+BACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,YAAa,AACb,sBAAuB,AACvB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAwB,CACzB,AAED,4CACE,iBAAmB,CACpB,AAED,iDACE,yBAA0B,AAC1B,SAAW,CACZ,AAED,+GACE,WAAY,AACZ,sBAAwB,CACzB,AAED,yDACE,qBAA0B,CAC3B,AAED,+HACE,WAAY,AACZ,uBAAwB,AACxB,UAAe,CAChB,AAED,6EACE,YAAc,CACf,AAED,oDACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,8EACE,SAAW,CACZ,AAED,wGACE,WAAY,AACZ,WAAY,AACZ,eAAgB,AAChB,eAAiB,CAClB,AAED,2DACE,qBAAsB,AACtB,sBAAuB,AACvB,WAAY,AACZ,UAAW,AACX,gBAAiB,AACjB,iBAAkB,AAClB,8BAA+B,AAC/B,2BAA4B,AAC5B,4BAA8B,CAC/B,AAED,4DACE,2BAA4B,AAC5B,oBAAqB,AACrB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,YAAa,AACb,WAAY,AACZ,iBAAkB,AAClB,sBAAuB,AACvB,kBAAmB,AACnB,0BAA+B,AAC/B,eAAiB,CAClB,AAED,kEACE,eAAgB,AAChB,yBAA+B,CAChC,AAED,kGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,sBAAwB,CACzB,AAED,wGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,gGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,sGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,qEACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,oBAAqB,AACrB,YAAa,AACb,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,WAAY,AACZ,gBAAkB,AAClB,eAAiB,CAClB,AAED,2EACE,UAAY,CACb,AAED,sHACE,eAAiB,CAClB,AAMD,sOACE,YAAc,CACf,AAED,wDACE,qBAAsB,AACtB,YAAa,AACb,WAAY,AACZ,kBAAoB,CACrB,AAED,+BACE,sBAAuB,AACvB,6BAA8B,AAC9B,4BAA6B,AAC7B,0BAA2B,AAC3B,YAAa,AACb,kBAAmB,AACnB,mBAAoB,AACpB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qCACE,eAAgB,AAChB,+BAAqC,CACtC,AAED,wEACE,kBAAmB,AACnB,kCAAmC,AACnC,mCAAoC,AACpC,0BAA2B,AAC3B,eAAiB,CAClB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,kBAAoB,CACrB,AAED,gDACE,qBAAsB,AACtB,QAAS,AACT,SAAU,AACV,kBAAmB,AACnB,iCAAkC,AAClC,oCAAqC,AACrC,eAAgB,AAChB,2BAA4B,AAC5B,qBAAuB,CACxB,AAED,oCACE,iBAAkB,AAClB,UAAY,CACb,AAED,4BACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,iBAAkB,AAClB,gBAAiB,AACjB,sBAAuB,AACvB,eAAgB,AAChB,gBAAiB,AACjB,iCAAkC,AAClC,aAAe,CAChB,AAED,6DACE,WAAa,CACd,AAED,oEACE,WAAY,AACZ,kBAAoB,CACrB,AAED,mEACE,eAAgB,AAChB,WAAY,AACZ,kBAAoB,CACrB,AAED,8DACE,6BAA8B,AAC9B,YAAa,AACb,gBAAiB,AACjB,eAAkB,CACnB,AAED,4BACE,kBAAmB,AACnB,MAAO,AACP,SAAU,AACV,OAAQ,AACR,QAAS,AACT,aAAe,CAChB,AAED,uEACE,sBAAyB,CAC1B,AAED,uBACE,wBAA0B,CAC3B","file":"tabulator_bootstrap.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n.tabulator {\n position: relative;\n background-color: #fff;\n overflow: hidden;\n font-size: 14px;\n text-align: left;\n width: 100%;\n max-width: 100%;\n margin-bottom: 20px;\n -ms-transform: translatez(0);\n transform: translatez(0);\n}\n\n.tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableHolder .tabulator-table {\n min-width: 100%;\n}\n\n.tabulator.tabulator-block-select {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 2px solid #ddd;\n background-color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-header.tabulator-header-hidden {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n background-color: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #ddd;\n background: #e6e6e6;\n pointer-events: none;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 8px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n display: inline-block;\n position: absolute;\n top: 14px;\n right: 8px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {\n margin-right: -1px;\n}\n\n.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {\n position: absolute;\n background-color: #e6e6e6 !important;\n border: 1px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #e6e6e6;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-arrow {\n border-top: 6px solid #666;\n border-bottom: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n -ms-writing-mode: tb-rl;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {\n right: calc(50% - 6px);\n}\n\n.tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 400%;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none;\n}\n\n.tabulator .tabulator-tableHolder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.tabulator .tabulator-tableHolder:focus {\n outline: none;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder {\n box-sizing: border-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #000;\n font-weight: bold;\n font-size: 20px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd;\n}\n\n.tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px;\n}\n\n.tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto;\n}\n\n.tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize;\n}\n\n.tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 2px solid #ddd;\n text-align: right;\n font-weight: bold;\n white-space: nowrap;\n -ms-user-select: none;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none;\n}\n\n.tabulator .tabulator-footer .tabulator-paginator {\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n}\n\n.tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n}\n\n.tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px;\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #ddd;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2);\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n color: #d00;\n}\n\n.tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5;\n}\n\n.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff;\n}\n\n.tabulator .tabulator-loader {\n position: absolute;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000;\n}\n\n.tabulator.table-striped .tabulator-row:nth-child(even) {\n background-color: #f9f9f9;\n}\n\n.tabulator.table-bordered {\n border: 1px solid #ddd;\n}\n\n.tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #ddd;\n}\n\n.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #ddd;\n}\n\n.tabulator.table-condensed .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 5px;\n}\n\n.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row {\n min-height: 24px;\n}\n\n.tabulator.table-condensed .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 5px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active {\n background: #f5f5f5 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.success {\n background: #dff0d8 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.info {\n background: #d9edf7 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning {\n background: #fcf8e3 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.danger {\n background: #f2dede !important;\n}\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 30px;\n background-color: #fff;\n border-bottom: 1px solid #ddd;\n}\n\n.tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5 !important;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-selected {\n background-color: #9ABCEA;\n}\n\n.tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none !important;\n z-index: 15;\n}\n\n.tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px;\n}\n\n.tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto;\n}\n\n.tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize;\n}\n\n.tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n}\n\n.tabulator-row .tabulator-responsive-collapse:empty {\n display: none;\n}\n\n.tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px;\n}\n\n.tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 8px;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tabulator-row .tabulator-cell:last-of-type {\n border-right: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n padding: 0;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000;\n}\n\n.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px;\n}\n\n.tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #fafafa;\n font-weight: bold;\n min-width: 100%;\n}\n\n.tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px;\n}\n\n.tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle;\n}\n\n.tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666;\n}\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n font-weight: bold;\n}\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n}\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important;\n}\n\n.tabulator-print-table {\n border-collapse: collapse;\n}\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ background-color: #fff;
+ overflow: hidden;
+ font-size: 1rem;
+ text-align: left;
+ width: 100%;
+ max-width: 100%;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-top: 1px solid #dee2e6;
+ border-bottom: 2px solid #dee2e6;
+ background-color: #fff;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ background-color: #fff;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #dee2e6;
+ background: #e6e6e6;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 0.75rem;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 14px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #dee2e6;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #e6e6e6 !important;
+ border: 1px solid #dee2e6;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #e6e6e6;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #dee2e6;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #dee2e6;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: 100%;
+ background: white !important;
+ border-top: 1px solid #dee2e6;
+ border-bottom: 1px solid #dee2e6;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #000;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ white-space: nowrap;
+ overflow: visible;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #ececec !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #dee2e6;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #dee2e6;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 2px solid #dee2e6;
+ text-align: right;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: white !important;
+ border-bottom: 1px solid #dee2e6;
+ border-top: 1px solid #dee2e6;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #dee2e6;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0;
+ margin-top: 5px;
+ padding: 8px 12px;
+ border: 1px solid #dee2e6;
+ border-right: none;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page[data-page="first"] {
+ border-top-left-radius: 4px;
+ border-bottom-left-radius: 4px;
+}
+
+.tabulator .tabulator-footer .tabulator-page[data-page="last"] {
+ border: 1px solid #dee2e6;
+ border-top-right-radius: 4px;
+ border-bottom-right-radius: 4px;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ border-color: #007bff;
+ background-color: #007bff;
+ color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ border-color: #dee2e6;
+ background: #fff;
+ color: #6c757d;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ border-color: #dee2e6;
+ background: #e9ecef;
+ color: #0056b3;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator.thead-dark .tabulator-header {
+ border-color: #32383e;
+ background-color: #212529;
+ color: #fff;
+}
+
+.tabulator.thead-dark .tabulator-header .tabulator-col {
+ border-color: #32383e;
+ background-color: #212529;
+ color: #fff;
+}
+
+.tabulator.table-dark {
+ background-color: #212529;
+}
+
+.tabulator.table-dark:not(.thead-light) .tabulator-header {
+ border-color: #32383e;
+ background-color: #212529;
+ color: #fff;
+}
+
+.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {
+ border-color: #32383e;
+ background-color: #212529;
+ color: #fff;
+}
+
+.tabulator.table-dark .tabulator-tableHolder {
+ color: #fff;
+}
+
+.tabulator.table-dark .tabulator-row {
+ border-color: #32383e;
+}
+
+.tabulator.table-dark .tabulator-row:hover {
+ background-color: rgba(255, 255, 255, 0.075) !important;
+}
+
+.tabulator.table-striped .tabulator-row:nth-child(even) {
+ background-color: #f9f9f9;
+}
+
+.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selectable:hover {
+ background-color: #f5f5f5;
+ cursor: pointer;
+}
+
+.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator.table-striped.table-dark .tabulator-row:nth-child(even) {
+ background-color: rgba(255, 255, 255, 0.05);
+}
+
+.tabulator.table-bordered {
+ border: 1px solid #dee2e6;
+}
+
+.tabulator.table-bordered .tabulator-header .tabulator-col {
+ border-right: 1px solid #dee2e6;
+}
+
+.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-right: 1px solid #dee2e6;
+}
+
+.tabulator.table-borderless .tabulator-header {
+ border: none;
+}
+
+.tabulator.table-borderless .tabulator-row {
+ border: none;
+}
+
+.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 0.3rem !important;
+}
+
+.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row {
+ min-height: 1.6rem;
+}
+
+.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 0.3rem !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-primary {
+ background: #b8daff !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-secondary {
+ background: #d6d8db !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-success {
+ background: #c3e6cb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-info {
+ background: #bee5eb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-warning {
+ background: #ffeeba !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-danger {
+ background: #f5c6cb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-light {
+ background: #fdfdfe !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-dark {
+ background: #c6c8ca !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-active {
+ background: #f5f5f5 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-primary {
+ background: #007bff !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-secondary {
+ background: #6c757d !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-success {
+ background: #28a745 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-info {
+ background: #17a2b8 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-warning {
+ background: #ffc107 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-danger {
+ background: #dc3545 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-light {
+ background: #f8f9fa !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-dark {
+ background: #343a40 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-active {
+ background: #f5f5f5 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-primary {
+ background: #b8daff !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {
+ background: #d6d8db !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-success {
+ background: #c3e6cb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-info {
+ background: #bee5eb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-warning {
+ background: #ffeeba !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-danger {
+ background: #f5c6cb !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-light {
+ background: #fdfdfe !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-dark {
+ background: #c6c8ca !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-active {
+ background: #f5f5f5 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {
+ background: #007bff !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {
+ background: #6c757d !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-success {
+ background: #28a745 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-info {
+ background: #17a2b8 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {
+ background: #ffc107 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {
+ background: #dc3545 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-light {
+ background: #f8f9fa !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {
+ background: #343a40 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-active {
+ background: #f5f5f5 !important;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 2.5rem;
+ background-color: #fff;
+ border-bottom: 1px solid #dee2e6;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #f5f5f5;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #dee2e6;
+ border-bottom: 1px solid #dee2e6;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #dee2e6;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #dee2e6;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #dee2e6;
+ border-bottom: 1px solid #dee2e6;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 1rem;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 0.75rem;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell:last-of-type {
+ border-right: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #dee2e6;
+ border-bottom: 2px solid #dee2e6;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #ccc;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #ccc;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #ccc;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #ccc;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #dee2e6;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #fafafa;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #666;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #dee2e6;
+ font-size: 1rem;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #dee2e6;
+ padding: 4px;
+ padding-top: 6px;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:1rem;text-align:left;width:100%;max-width:100%;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-top:1px solid #dee2e6;border-bottom:2px solid #dee2e6;background-color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #dee2e6;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:.75rem}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #dee2e6}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;width:100%;background:#fff!important;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ececec!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #dee2e6}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #dee2e6}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:2px solid #dee2e6;text-align:right;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-bottom:1px solid #dee2e6;border-top:1px solid #dee2e6;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dee2e6;border-radius:3px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0;margin-top:5px;padding:8px 12px;border:1px solid #dee2e6;border-right:none;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page[data-page=first]{border-top-left-radius:4px;border-bottom-left-radius:4px}.tabulator .tabulator-footer .tabulator-page[data-page=last]{border:1px solid #dee2e6;border-top-right-radius:4px;border-bottom-right-radius:4px}.tabulator .tabulator-footer .tabulator-page.active{border-color:#007bff;background-color:#007bff;color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{border-color:#dee2e6;background:#fff;color:#6c757d}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#dee2e6;background:#e9ecef;color:#0056b3}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator.thead-dark .tabulator-header,.tabulator.thead-dark .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark{background-color:#212529}.tabulator.table-dark:not(.thead-light) .tabulator-header,.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col{border-color:#32383e;background-color:#212529;color:#fff}.tabulator.table-dark .tabulator-tableHolder{color:#fff}.tabulator.table-dark .tabulator-row{border-color:#32383e}.tabulator.table-dark .tabulator-row:hover{background-color:hsla(0,0%,100%,.075)!important}.tabulator.table-striped .tabulator-row:nth-child(2n){background-color:#f9f9f9}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selected{background-color:#9abcea}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator.table-striped .tabulator-row:nth-child(2n).tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator.table-striped.table-dark .tabulator-row:nth-child(2n){background-color:hsla(0,0%,100%,.05)}.tabulator.table-bordered{border:1px solid #dee2e6}.tabulator.table-bordered .tabulator-header .tabulator-col,.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dee2e6}.tabulator.table-borderless .tabulator-header,.tabulator.table-borderless .tabulator-row{border:none}.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content{padding:.3rem!important}.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row{min-height:1.6rem}.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:.3rem!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-primary{background:#b8daff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-info{background:#bee5eb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-primary{background:#007bff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-success{background:#28a745!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-dark{background:#343a40!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-primary{background:#b8daff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-secondary{background:#d6d8db!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-success{background:#c3e6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-info{background:#bee5eb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-warning{background:#ffeeba!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-danger{background:#f5c6cb!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-light{background:#fdfdfe!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-dark{background:#c6c8ca!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-active{background:#f5f5f5!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-primary{background:#007bff!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary{background:#6c757d!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-success{background:#28a745!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-info{background:#17a2b8!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-warning{background:#ffc107!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-danger{background:#dc3545!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-light{background:#f8f9fa!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-dark{background:#343a40!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-active{background:#f5f5f5!important}.tabulator-row{position:relative;box-sizing:border-box;min-height:2.5rem;background-color:#fff;border-bottom:1px solid #dee2e6}.tabulator-row.tabulator-selectable:hover{background-color:#f5f5f5;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #dee2e6}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #dee2e6;border-bottom:1px solid #dee2e6}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:1rem}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:.75rem;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #dee2e6;border-bottom:2px solid #dee2e6}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #ccc;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#ccc}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #dee2e6;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #dee2e6;font-size:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #dee2e6;padding:4px;padding-top:6px;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_bootstrap4.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_bootstrap4.min.css"],"names":[],"mappings":"AACA,WACE,kBAAmB,AACnB,sBAAuB,AACvB,gBAAiB,AACjB,eAAgB,AAChB,gBAAiB,AACjB,WAAY,AACZ,eAAgB,AAEhB,uBAAyB,CAC1B,AAED,iFACE,cAAgB,CACjB,AAED,kCACE,yBAA0B,AACvB,sBAAuB,AACtB,qBAAsB,AAClB,gBAAkB,CAC3B,AAED,6BACE,kBAAmB,AACnB,sBAAuB,AACvB,WAAY,AACZ,6BAA8B,AAC9B,gCAAiC,AACjC,sBAAuB,AACvB,gBAAkB,AAClB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,YAAc,CACf,AAED,4CACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,sBAAuB,AACvB,gBAAiB,AACjB,sBAAuB,AACvB,eAAiB,CAClB,AAED,6DACE,kBAAmB,AACnB,yBAA0B,AAC1B,mBAAoB,AACpB,mBAAqB,CACtB,AAED,mEACE,sBAAuB,AACvB,kBAAmB,AACnB,cAAiB,CAClB,AAED,wFACE,sBAAuB,AACvB,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,uBAAwB,AACxB,qBAAuB,CACxB,AAED,gHACE,sBAAuB,AACvB,WAAY,AACZ,sBAAuB,AACvB,YAAa,AACb,eAAiB,CAClB,AAED,oFACE,qBAAsB,AACtB,kBAAmB,AACnB,SAAU,AACV,UAAW,AACX,QAAS,AACT,SAAU,AACV,kCAAmC,AACnC,mCAAoC,AACpC,4BAA8B,CAC/B,AAED,0FACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,6BAA8B,AAC9B,eAAiB,CAClB,AAED,oHACE,iBAAmB,CACpB,AAED,0FACE,YAAc,CACf,AAED,+DACE,kBAAmB,AACnB,mCAAqC,AACrC,wBAA0B,CAC3B,AAED,qEACE,kBAAmB,AACnB,sBAAuB,AACvB,eAAgB,AAChB,WAAY,AACZ,iBAAmB,CACpB,AAED,8EACE,qBAAwB,CACzB,AAED,yEACE,cAAgB,CACjB,AAED,sFACE,QAAS,AACT,QAAU,CACX,AAED,oFACE,kBAAoB,CACrB,AAED,qEACE,eAAgB,AAChB,wBAA0B,CAC3B,AAED,uHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,sHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,uHACE,0BAA2B,AAC3B,kBAAoB,CACrB,AAED,+GACE,uBAAwB,AACpB,yBAA0B,AAC9B,uBAAwB,AACxB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,sBAAwB,CAC7B,AAED,oHAEM,wBAA0B,CAC/B,AAED,2GACE,gBAAiB,AACjB,gBAAkB,CACnB,AAED,uIACE,gBAAiB,AACjB,mBAAqB,CACtB,AAED,uGACE,qBAAuB,CACxB,AAED,+CACE,qBAAsB,AACtB,kBAAmB,AACnB,UAAY,CACb,AAED,qEACE,8BAAgC,CACjC,AAED,sEACE,6BAA+B,CAChC,AAED,qDACE,sBAAuB,AACvB,WAAY,AACZ,0BAA6B,AAC7B,6BAA8B,AAC9B,gCAAiC,AACjC,eAAiB,CAClB,AAED,oEACE,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,2DACE,cAAgB,CACjB,AAED,iEACE,YAAc,CACf,AAED,kCACE,kBAAmB,AACnB,WAAY,AACZ,mBAAoB,AACpB,cAAe,AACf,gCAAkC,CACnC,AAED,wCACE,YAAc,CACf,AAED,yDACE,sBAAuB,AACvB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,UAAY,CACb,AAED,wFACE,kBAAmB,AACnB,MAAO,AACP,OAAQ,AACR,WAAa,CACd,AAED,8DACE,qBAAsB,AACtB,cAAe,AACf,aAAc,AACd,WAAY,AACZ,gBAAkB,AAClB,cAAgB,CACjB,AAED,mDACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,mBAAoB,AACpB,gBAAkB,CACnB,AAED,kFACE,gBAAkB,AAClB,4BAA+B,CAChC,AAED,sGACE,+BAAiC,CAClC,AAED,yGACE,4BAA8B,CAC/B,AAED,wCACE,kBAAmB,AACnB,QAAS,AACT,MAAO,AACP,SAAU,AACV,SAAW,CACZ,AAED,6CACE,OAAQ,AACR,UAAY,CACb,AAED,8CACE,gBAAkB,CACnB,AAED,6BACE,iBAAkB,AAClB,6BAA8B,AAC9B,iBAAkB,AAClB,gBAAkB,AAClB,mBAAoB,AACpB,qBAAsB,AAClB,iBAAkB,AACtB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,sBAAuB,AACvB,wBAAyB,AACzB,sBAA6B,AAC7B,gBAAiB,AACjB,0BAA6B,AAC7B,gCAAiC,AACjC,6BAA8B,AAC9B,eAAiB,CAClB,AAED,oEACE,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,gEACE,mBAAoB,AACpB,kBAAoB,CACrB,AAED,kDACE,oBAAqB,AACrB,oBAAqB,AACrB,iBAAmB,CACpB,AAED,kDACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,yBAA0B,AAC1B,iBAAmB,CACpB,AAED,6CACE,qBAAsB,AACtB,SAAU,AACV,eAAgB,AAChB,iBAAkB,AAClB,yBAA0B,AAC1B,kBAAmB,AACnB,6BAAqC,CACtC,AAED,8DACE,2BAA4B,AAC5B,6BAA+B,CAChC,AAED,6DACE,yBAA0B,AAC1B,4BAA6B,AAC7B,8BAAgC,CACjC,AAED,oDACE,qBAAsB,AACtB,yBAA0B,AAC1B,UAAY,CACb,AAED,sDACE,qBAAsB,AACtB,gBAAiB,AACjB,aAAe,CAChB,AAED,kEACE,eAAgB,AAChB,qBAAsB,AACtB,mBAAoB,AACpB,aAAe,CAChB,AAED,6BACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,MAAO,AACP,OAAQ,AACR,YAAa,AACb,YAAa,AACb,WAAY,AACZ,0BAA+B,AAC/B,iBAAmB,CACpB,AAED,mDACE,qBAAsB,AACtB,cAAe,AACf,kBAAmB,AACnB,mBAAoB,AACpB,gBAAiB,AACjB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qEACE,sBAAuB,AACvB,UAAY,CACb,AAED,mEACE,sBAAuB,AACvB,aAAe,CAChB,AAQD,+FACE,qBAAsB,AACtB,yBAA0B,AAC1B,UAAY,CACb,AAED,sBACE,wBAA0B,CAC3B,AAQD,mIALE,qBAAsB,AACtB,yBAA0B,AAC1B,UAAY,CAOb,AAED,6CACE,UAAY,CACb,AAED,qCACE,oBAAsB,CACvB,AAED,2CACE,+CAAwD,CACzD,AAED,sDACE,wBAA0B,CAC3B,AAED,yEACE,wBAA0B,CAC3B,AAED,iFACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,+EACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,iEACE,oCAA4C,CAC7C,AAED,0BACE,wBAA0B,CAC3B,AAMD,4JACE,8BAAgC,CACjC,AAMD,yFACE,WAAa,CACd,AAED,4EACE,uBAA2B,CAC5B,AAED,2EACE,iBAAmB,CACpB,AAED,2FACE,uBAA2B,CAC5B,AAED,gFACE,4BAA+B,CAChC,AAED,kFACE,4BAA+B,CAChC,AAED,gFACE,4BAA+B,CAChC,AAED,6EACE,4BAA+B,CAChC,AAED,gFACE,4BAA+B,CAChC,AAED,+EACE,4BAA+B,CAChC,AAED,8EACE,4BAA+B,CAChC,AAED,6EACE,4BAA+B,CAChC,AAED,+EACE,4BAA+B,CAChC,AAED,6EACE,4BAA+B,CAChC,AAED,+EACE,4BAA+B,CAChC,AAED,6EACE,4BAA+B,CAChC,AAED,0EACE,4BAA+B,CAChC,AAED,6EACE,4BAA+B,CAChC,AAED,4EACE,4BAA+B,CAChC,AAED,2EACE,4BAA+B,CAChC,AAED,0EACE,4BAA+B,CAChC,AAED,4EACE,4BAA+B,CAChC,AAED,gGACE,4BAA+B,CAChC,AAED,kGACE,4BAA+B,CAChC,AAED,gGACE,4BAA+B,CAChC,AAED,6FACE,4BAA+B,CAChC,AAED,gGACE,4BAA+B,CAChC,AAED,+FACE,4BAA+B,CAChC,AAED,8FACE,4BAA+B,CAChC,AAED,6FACE,4BAA+B,CAChC,AAED,+FACE,4BAA+B,CAChC,AAED,6FACE,4BAA+B,CAChC,AAED,+FACE,4BAA+B,CAChC,AAED,6FACE,4BAA+B,CAChC,AAED,0FACE,4BAA+B,CAChC,AAED,6FACE,4BAA+B,CAChC,AAED,4FACE,4BAA+B,CAChC,AAED,2FACE,4BAA+B,CAChC,AAED,0FACE,4BAA+B,CAChC,AAED,4FACE,4BAA+B,CAChC,AAED,eACE,kBAAmB,AACnB,sBAAuB,AACvB,kBAAmB,AACnB,sBAAuB,AACvB,+BAAiC,CAClC,AAED,0CACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,kCACE,wBAA0B,CAC3B,AAED,wCACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,gCACE,kBAAmB,AACnB,6BAA8B,AAC9B,gCAAiC,AACjC,8BAAgC,AAChC,UAAY,CACb,AAED,4CACE,kBAAmB,AACnB,QAAS,AACT,SAAU,AACV,OAAQ,AACR,UAAY,CACb,AAED,iDACE,MAAO,AACP,WAAa,CACd,AAED,kDACE,gBAAkB,CACnB,AAED,iCACE,qBAAsB,AACtB,kBAAmB,AACnB,yBAA0B,AAC1B,UAAY,CACb,AAED,uDACE,8BAAgC,CACjC,AAED,wDACE,6BAA+B,CAChC,AAED,8CACE,sBAAuB,AACvB,YAAa,AACb,6BAA8B,AAC9B,+BAAiC,CAClC,AAED,oDACE,YAAc,CACf,AAED,oDACE,cAAgB,CACjB,AAED,0DACE,iBAAmB,CACpB,AAED,wEACE,kBAAoB,CACrB,AAED,+BACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,eAAiB,AACjB,sBAAuB,AACvB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAwB,CACzB,AAED,4CACE,iBAAmB,CACpB,AAED,iDACE,yBAA0B,AAC1B,SAAW,CACZ,AAED,+GACE,WAAY,AACZ,sBAAwB,CACzB,AAED,yDACE,qBAA0B,CAC3B,AAED,+HACE,WAAY,AACZ,uBAAwB,AACxB,UAAe,CAChB,AAED,6EACE,YAAc,CACf,AAED,oDACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,8EACE,SAAW,CACZ,AAED,wGACE,WAAY,AACZ,WAAY,AACZ,eAAgB,AAChB,eAAiB,CAClB,AAED,2DACE,qBAAsB,AACtB,sBAAuB,AACvB,WAAY,AACZ,UAAW,AACX,gBAAiB,AACjB,iBAAkB,AAClB,8BAA+B,AAC/B,8BAA+B,AAC/B,+BAAiC,CAClC,AAED,4DACE,2BAA4B,AAC5B,oBAAqB,AACrB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,YAAa,AACb,WAAY,AACZ,iBAAkB,AAClB,sBAAuB,AACvB,kBAAmB,AACnB,0BAA+B,AAC/B,eAAiB,CAClB,AAED,kEACE,eAAgB,AAChB,yBAA+B,CAChC,AAED,kGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,sBAAwB,CACzB,AAED,wGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,gGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,sGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,qEACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,oBAAqB,AACrB,YAAa,AACb,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,WAAY,AACZ,gBAAkB,AAClB,eAAiB,CAClB,AAED,2EACE,UAAY,CACb,AAED,sHACE,eAAiB,CAClB,AAMD,sOACE,YAAc,CACf,AAED,wDACE,qBAAsB,AACtB,YAAa,AACb,WAAY,AACZ,kBAAoB,CACrB,AAED,+BACE,sBAAuB,AACvB,6BAA8B,AAC9B,+BAAgC,AAChC,0BAA2B,AAC3B,YAAa,AACb,kBAAmB,AACnB,mBAAoB,AACpB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qCACE,eAAgB,AAChB,+BAAqC,CACtC,AAED,wEACE,kBAAmB,AACnB,kCAAmC,AACnC,mCAAoC,AACpC,0BAA2B,AAC3B,eAAiB,CAClB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,kBAAoB,CACrB,AAED,gDACE,qBAAsB,AACtB,QAAS,AACT,SAAU,AACV,kBAAmB,AACnB,iCAAkC,AAClC,oCAAqC,AACrC,eAAgB,AAChB,2BAA4B,AAC5B,qBAAuB,CACxB,AAED,oCACE,iBAAkB,AAClB,UAAY,CACb,AAED,4BACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,iBAAkB,AAClB,gBAAiB,AACjB,yBAA0B,AAC1B,eAAgB,AAChB,gBAAiB,AACjB,iCAAkC,AAClC,aAAe,CAChB,AAED,6DACE,WAAa,CACd,AAED,oEACE,WAAY,AACZ,kBAAoB,CACrB,AAED,mEACE,eAAgB,AAChB,WAAY,AACZ,kBAAoB,CACrB,AAED,8DACE,gCAAiC,AACjC,YAAa,AACb,gBAAiB,AACjB,eAAkB,CACnB,AAED,4BACE,kBAAmB,AACnB,MAAO,AACP,SAAU,AACV,OAAQ,AACR,QAAS,AACT,aAAe,CAChB,AAED,uEACE,sBAAyB,CAC1B,AAED,uBACE,wBAA0B,CAC3B","file":"tabulator_bootstrap4.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n.tabulator {\n position: relative;\n background-color: #fff;\n overflow: hidden;\n font-size: 1rem;\n text-align: left;\n width: 100%;\n max-width: 100%;\n -ms-transform: translatez(0);\n transform: translatez(0);\n}\n\n.tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableHolder .tabulator-table {\n min-width: 100%;\n}\n\n.tabulator.tabulator-block-select {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-top: 1px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n background-color: #fff;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-header.tabulator-header-hidden {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n background-color: #fff;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #dee2e6;\n background: #e6e6e6;\n pointer-events: none;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 0.75rem;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n display: inline-block;\n position: absolute;\n top: 14px;\n right: 8px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n border-top: 1px solid #dee2e6;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {\n margin-right: -1px;\n}\n\n.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {\n position: absolute;\n background-color: #e6e6e6 !important;\n border: 1px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #e6e6e6;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-arrow {\n border-top: 6px solid #666;\n border-bottom: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n -ms-writing-mode: tb-rl;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {\n right: calc(50% - 6px);\n}\n\n.tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n width: 100%;\n background: white !important;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 400%;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none;\n}\n\n.tabulator .tabulator-tableHolder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.tabulator .tabulator-tableHolder:focus {\n outline: none;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder {\n box-sizing: border-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #000;\n font-weight: bold;\n font-size: 20px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: #fff;\n white-space: nowrap;\n overflow: visible;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ececec !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #dee2e6;\n}\n\n.tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px;\n}\n\n.tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto;\n}\n\n.tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize;\n}\n\n.tabulator .tabulator-footer {\n padding: 5px 10px;\n border-top: 2px solid #dee2e6;\n text-align: right;\n font-weight: bold;\n white-space: nowrap;\n -ms-user-select: none;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 5px -10px;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #dee2e6;\n border-top: 1px solid #dee2e6;\n overflow: hidden;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: white !important;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none;\n}\n\n.tabulator .tabulator-footer .tabulator-paginator {\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n}\n\n.tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dee2e6;\n border-radius: 3px;\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0;\n margin-top: 5px;\n padding: 8px 12px;\n border: 1px solid #dee2e6;\n border-right: none;\n background: rgba(255, 255, 255, 0.2);\n}\n\n.tabulator .tabulator-footer .tabulator-page[data-page=\"first\"] {\n border-top-left-radius: 4px;\n border-bottom-left-radius: 4px;\n}\n\n.tabulator .tabulator-footer .tabulator-page[data-page=\"last\"] {\n border: 1px solid #dee2e6;\n border-top-right-radius: 4px;\n border-bottom-right-radius: 4px;\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n border-color: #007bff;\n background-color: #007bff;\n color: #fff;\n}\n\n.tabulator .tabulator-footer .tabulator-page:disabled {\n border-color: #dee2e6;\n background: #fff;\n color: #6c757d;\n}\n\n.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #dee2e6;\n background: #e9ecef;\n color: #0056b3;\n}\n\n.tabulator .tabulator-loader {\n position: absolute;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000;\n}\n\n.tabulator.thead-dark .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff;\n}\n\n.tabulator.thead-dark .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff;\n}\n\n.tabulator.table-dark {\n background-color: #212529;\n}\n\n.tabulator.table-dark:not(.thead-light) .tabulator-header {\n border-color: #32383e;\n background-color: #212529;\n color: #fff;\n}\n\n.tabulator.table-dark:not(.thead-light) .tabulator-header .tabulator-col {\n border-color: #32383e;\n background-color: #212529;\n color: #fff;\n}\n\n.tabulator.table-dark .tabulator-tableHolder {\n color: #fff;\n}\n\n.tabulator.table-dark .tabulator-row {\n border-color: #32383e;\n}\n\n.tabulator.table-dark .tabulator-row:hover {\n background-color: rgba(255, 255, 255, 0.075) !important;\n}\n\n.tabulator.table-striped .tabulator-row:nth-child(even) {\n background-color: #f9f9f9;\n}\n\n.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selected {\n background-color: #9ABCEA;\n}\n\n.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer;\n}\n\n.tabulator.table-striped .tabulator-row:nth-child(even).tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer;\n}\n\n.tabulator.table-striped.table-dark .tabulator-row:nth-child(even) {\n background-color: rgba(255, 255, 255, 0.05);\n}\n\n.tabulator.table-bordered {\n border: 1px solid #dee2e6;\n}\n\n.tabulator.table-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dee2e6;\n}\n\n.tabulator.table-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dee2e6;\n}\n\n.tabulator.table-borderless .tabulator-header {\n border: none;\n}\n\n.tabulator.table-borderless .tabulator-row {\n border: none;\n}\n\n.tabulator.table-sm .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.3rem !important;\n}\n\n.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row {\n min-height: 1.6rem;\n}\n\n.tabulator.table-sm .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.3rem !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-primary {\n background: #b8daff !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-secondary {\n background: #d6d8db !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-success {\n background: #c3e6cb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-info {\n background: #bee5eb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-warning {\n background: #ffeeba !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-danger {\n background: #f5c6cb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-light {\n background: #fdfdfe !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-dark {\n background: #c6c8ca !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.table-active {\n background: #f5f5f5 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-primary {\n background: #007bff !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-secondary {\n background: #6c757d !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-success {\n background: #28a745 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-info {\n background: #17a2b8 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-warning {\n background: #ffc107 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-danger {\n background: #dc3545 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-light {\n background: #f8f9fa !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-dark {\n background: #343a40 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.bg-active {\n background: #f5f5f5 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-primary {\n background: #b8daff !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-secondary {\n background: #d6d8db !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-success {\n background: #c3e6cb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-info {\n background: #bee5eb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-warning {\n background: #ffeeba !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-danger {\n background: #f5c6cb !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-light {\n background: #fdfdfe !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-dark {\n background: #c6c8ca !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.table-active {\n background: #f5f5f5 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-primary {\n background: #007bff !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-secondary {\n background: #6c757d !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-success {\n background: #28a745 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-info {\n background: #17a2b8 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-warning {\n background: #ffc107 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-danger {\n background: #dc3545 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-light {\n background: #f8f9fa !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-dark {\n background: #343a40 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.bg-active {\n background: #f5f5f5 !important;\n}\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 2.5rem;\n background-color: #fff;\n border-bottom: 1px solid #dee2e6;\n}\n\n.tabulator-row.tabulator-selectable:hover {\n background-color: #f5f5f5;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-selected {\n background-color: #9ABCEA;\n}\n\n.tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n pointer-events: none !important;\n z-index: 15;\n}\n\n.tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px;\n}\n\n.tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto;\n}\n\n.tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize;\n}\n\n.tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #dee2e6;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #dee2e6;\n}\n\n.tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #dee2e6;\n border-bottom: 1px solid #dee2e6;\n}\n\n.tabulator-row .tabulator-responsive-collapse:empty {\n display: none;\n}\n\n.tabulator-row .tabulator-responsive-collapse table {\n font-size: 1rem;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px;\n}\n\n.tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 0.75rem;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tabulator-row .tabulator-cell:last-of-type {\n border-right: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n padding: 0;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000;\n}\n\n.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #dee2e6;\n border-bottom: 2px solid #dee2e6;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #ccc;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #ccc;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #ccc;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #ccc;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px;\n}\n\n.tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #dee2e6;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #fafafa;\n font-weight: bold;\n min-width: 100%;\n}\n\n.tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px;\n}\n\n.tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle;\n}\n\n.tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666;\n}\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #fff;\n border: 1px solid #dee2e6;\n font-size: 1rem;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #fff;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #fff;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #dee2e6;\n padding: 4px;\n padding-top: 6px;\n font-weight: bold;\n}\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n}\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important;\n}\n\n.tabulator-print-table {\n border-collapse: collapse;\n}\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ background-color: white;
+ font-size: 1rem;
+ text-align: left;
+ overflow: hidden;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 2px;
+ background-color: transparent;
+ color: #363636;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ background: transparent;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ background: rgba(0, 0, 0, 0);
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 0.5em 0.75em;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 15px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: transparent !important;
+ border: 1px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {
+ border: 1px solid #dbdbdb;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #363636;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #363636;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: rgba(13, 13, 13, 0) !important;
+ border: 1px solid #dbdbdb;
+ border-width: 2px 0 0;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: rgba(13, 13, 13, 0) !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+ border-bottom-width: 0;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #ccc;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: transparent;
+ white-space: nowrap;
+ overflow: visible;
+ color: #363636;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #ededed !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 2px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border: 1px solid #dbdbdb;
+ border-width: 2px 0 0;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {
+ border-bottom-width: 0;
+}
+
+.tabulator .tabulator-footer {
+ padding: 0.5em 0.75em;
+ border: 1px solid #dbdbdb;
+ border-width: 2px 0 0;
+ background-color: transparent;
+ text-align: right;
+ color: #363636;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 10px -10px;
+ background: rgba(13, 13, 13, 0) !important;
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 2px;
+ text-align: left;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: rgba(13, 13, 13, 0) !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+ border-bottom-width: 0;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ color: #363636;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #dbdbdb;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 0.1875em;
+ padding: calc(0.375em - 1px) 0.75em;
+ border: 1px solid #dbdbdb;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+ font-size: 1rem;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ border-color: #4a4a4a;
+ color: #363636;
+ font-weight: bold;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ border-color: #b5b5b5;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator.is-striped .tabulator-row:nth-child(even) {
+ background-color: #fafafa;
+}
+
+.tabulator.is-bordered {
+ border: 1px solid #dbdbdb;
+}
+
+.tabulator.is-bordered .tabulator-header .tabulator-col {
+ border-right: 1px solid #dbdbdb;
+}
+
+.tabulator.is-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-right: 1px solid #dbdbdb;
+}
+
+.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 0.25em 0.5em;
+}
+
+.tabulator.is-narrow .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 0.25em 0.5em;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ background-color: transparent;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #fafafa;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #00d1b2;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #009e86;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-row-moving {
+ border: 1px solid #000;
+ background: #fff;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ pointer-events: none;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 1rem;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 0.5em 0.75em;
+ border: 1px solid #dbdbdb;
+ border-width: 0 0 1px;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #aaa;
+ border-bottom: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #363636;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #363636;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #363636;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #363636;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: transparent;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #ccc;
+ font-weight: bold;
+ color: #363636;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #363636;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #363636;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #d00;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: transparent;
+ border: 1px solid #aaa;
+ font-size: 1rem;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #363636;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: transparent;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: transparent;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #aaa;
+ padding: 4px;
+ padding-top: 6px;
+ color: #363636;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;font-size:1rem;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border:1px solid #dbdbdb;border-width:0 0 2px;background-color:transparent;color:#363636;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;background:transparent;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;background:transparent;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:.5em .75em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:15px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:transparent!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input{border:1px solid #dbdbdb}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:transparent}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #363636}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #363636;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:hsla(0,0%,5%,0)!important;border:1px solid #dbdbdb;border-width:2px 0 0;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:hsla(0,0%,5%,0)!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:transparent;white-space:nowrap;overflow:visible;color:#363636}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#ededed!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border:1px solid #dbdbdb;border-width:0 0 2px}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border:1px solid #dbdbdb;border-width:2px 0 0}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer{padding:.5em .75em;border:1px solid #dbdbdb;border-width:2px 0 0;background-color:transparent;text-align:right;color:#363636;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 10px;background:hsla(0,0%,5%,0)!important;border:1px solid #dbdbdb;border-width:0 0 2px;text-align:left;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:hsla(0,0%,5%,0)!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{border-bottom-width:0}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#363636;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #dbdbdb;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 .1875em;padding:calc(.375em - 1px) .75em;border:1px solid #dbdbdb;border-radius:3px;background:hsla(0,0%,100%,.2);font-size:1rem}.tabulator .tabulator-footer .tabulator-page.active{border-color:#4a4a4a;color:#363636;font-weight:700}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;border-color:#b5b5b5}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator.is-striped .tabulator-row:nth-child(2n){background-color:#fafafa}.tabulator.is-bordered{border:1px solid #dbdbdb}.tabulator.is-bordered .tabulator-header .tabulator-col,.tabulator.is-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid #dbdbdb}.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content,.tabulator.is-narrow .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:.25em .5em}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:transparent}.tabulator-row.tabulator-selectable:hover{background-color:#fafafa;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#00d1b2}.tabulator-row.tabulator-selected:hover{background-color:#009e86;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:1rem}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:.5em .75em;border:1px solid #dbdbdb;border-width:0 0 1px;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #363636;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#363636}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#363636}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:transparent;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#363636;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #363636;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #363636;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:transparent;border:1px solid #aaa;font-size:1rem;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#363636}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:transparent;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#363636;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_bulma.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_bulma.min.css"],"names":[],"mappings":"AACA,WACE,kBAAmB,AACnB,sBAAwB,AACxB,eAAgB,AAChB,gBAAiB,AACjB,gBAAiB,AAEjB,uBAAyB,CAC1B,AAED,iFACE,cAAgB,CACjB,AAED,kCACE,yBAA0B,AACvB,sBAAuB,AACtB,qBAAsB,AAClB,gBAAkB,CAC3B,AAED,6BACE,kBAAmB,AACnB,sBAAuB,AACvB,WAAY,AACZ,yBAA0B,AAC1B,qBAAsB,AACtB,6BAA8B,AAC9B,cAAe,AACf,gBAAkB,AAClB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,YAAc,CACf,AAED,4CACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,uBAAwB,AACxB,gBAAiB,AACjB,sBAAuB,AACvB,eAAiB,CAClB,AAED,6DACE,kBAAmB,AACnB,uBAA6B,AAC7B,mBAAqB,CACtB,AAED,mEACE,sBAAuB,AACvB,kBAAmB,AACnB,kBAAsB,CACvB,AAED,wFACE,sBAAuB,AACvB,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,uBAAwB,AACxB,qBAAuB,CACxB,AAED,gHACE,sBAAuB,AACvB,WAAY,AACZ,sBAAuB,AACvB,YAAa,AACb,eAAiB,CAClB,AAED,oFACE,qBAAsB,AACtB,kBAAmB,AACnB,SAAU,AACV,UAAW,AACX,QAAS,AACT,SAAU,AACV,kCAAmC,AACnC,mCAAoC,AACpC,4BAA8B,CAC/B,AAED,0FACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,0BAA2B,AAC3B,eAAiB,CAClB,AAED,oHACE,iBAAmB,CACpB,AAED,0FACE,YAAc,CACf,AAED,+DACE,kBAAmB,AACnB,uCAAyC,AACzC,qBAAuB,CACxB,AAED,qEACE,kBAAmB,AACnB,sBAAuB,AACvB,eAAgB,AAChB,WAAY,AACZ,iBAAmB,CACpB,AAED,8EACE,qBAAwB,CACzB,AAED,yEACE,cAAgB,CACjB,AAED,2EACE,wBAA0B,CAC3B,AAED,sFACE,QAAS,AACT,QAAU,CACX,AAED,oFACE,kBAAoB,CACrB,AAED,qEACE,eAAgB,AAChB,4BAAmC,CACpC,AAED,uHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,sHACE,gBAAiB,AACjB,+BAAiC,CAClC,AAED,uHACE,6BAA8B,AAC9B,kBAAoB,CACrB,AAED,+GACE,uBAAwB,AACpB,yBAA0B,AAC9B,uBAAwB,AACxB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,sBAAwB,CAC7B,AAED,oHAEM,wBAA0B,CAC/B,AAED,2GACE,gBAAiB,AACjB,gBAAkB,CACnB,AAED,uIACE,gBAAiB,AACjB,mBAAqB,CACtB,AAED,uGACE,qBAAuB,CACxB,AAED,+CACE,qBAAsB,AACtB,kBAAmB,AACnB,UAAY,CACb,AAED,qEACE,2BAA6B,CAC9B,AAED,sEACE,0BAA4B,CAC7B,AAED,qDACE,sBAAuB,AACvB,eAAgB,AAChB,qCAA2C,AAC3C,yBAA0B,AAC1B,qBAAsB,AACtB,eAAiB,CAClB,AAED,oEACE,oCAA2C,CAC5C,AAED,iGACE,YAAc,CACf,AAED,oFACE,qBAAuB,CACxB,AAED,2DACE,cAAgB,CACjB,AAED,iEACE,YAAc,CACf,AAED,kCACE,kBAAmB,AACnB,WAAY,AACZ,mBAAoB,AACpB,cAAe,AACf,gCAAkC,CACnC,AAED,wCACE,YAAc,CACf,AAED,yDACE,sBAAuB,AACvB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,UAAY,CACb,AAED,wFACE,kBAAmB,AACnB,MAAO,AACP,OAAQ,AACR,WAAa,CACd,AAED,8DACE,qBAAsB,AACtB,cAAe,AACf,aAAc,AACd,WAAY,AACZ,gBAAkB,AAClB,cAAgB,CACjB,AAED,mDACE,kBAAmB,AACnB,qBAAsB,AACtB,6BAA8B,AAC9B,mBAAoB,AACpB,iBAAkB,AAClB,aAAe,CAChB,AAED,kFACE,gBAAkB,AAClB,4BAA+B,CAChC,AAED,sGACE,yBAA0B,AAC1B,oBAAsB,CACvB,AAED,yGACE,yBAA0B,AAC1B,oBAAsB,CACvB,AAED,kGACE,qBAAuB,CACxB,AAED,6BACE,mBAAsB,AACtB,yBAA0B,AAC1B,qBAAsB,AACtB,6BAA8B,AAC9B,iBAAkB,AAClB,cAAe,AACf,gBAAkB,AAClB,mBAAoB,AACpB,qBAAsB,AAClB,iBAAkB,AACtB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,sBAAuB,AACvB,wBAAyB,AACzB,uBAA8B,AAC9B,qCAA2C,AAC3C,yBAA0B,AAC1B,qBAAsB,AACtB,gBAAiB,AACjB,eAAiB,CAClB,AAED,oEACE,oCAA2C,CAC5C,AAED,iGACE,YAAc,CACf,AAED,oFACE,qBAAuB,CACxB,AAED,gEACE,mBAAoB,AACpB,kBAAoB,CACrB,AAED,kDACE,cAAe,AACf,oBAAqB,AACrB,oBAAqB,AACrB,iBAAmB,CACpB,AAED,kDACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,yBAA0B,AAC1B,iBAAmB,CACpB,AAED,8CACE,YAAc,CACf,AAED,6CACE,qBAAsB,AACtB,iBAAmB,AACnB,iCAAoC,AACpC,yBAA0B,AAC1B,kBAAmB,AACnB,8BAAqC,AACrC,cAAgB,CACjB,AAED,oDACE,qBAAsB,AACtB,cAAe,AACf,eAAkB,CACnB,AAED,sDACE,UAAY,CACb,AAED,kEACE,eAAgB,AAChB,oBAAsB,CACvB,AAED,wCACE,kBAAmB,AACnB,QAAS,AACT,MAAO,AACP,SAAU,AACV,SAAW,CACZ,AAED,6CACE,OAAQ,AACR,UAAY,CACb,AAED,8CACE,gBAAkB,CACnB,AAED,6BACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,MAAO,AACP,OAAQ,AACR,YAAa,AACb,YAAa,AACb,WAAY,AACZ,0BAA+B,AAC/B,iBAAmB,CACpB,AAED,mDACE,qBAAsB,AACtB,cAAe,AACf,kBAAmB,AACnB,mBAAoB,AACpB,gBAAiB,AACjB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qEACE,sBAAuB,AACvB,UAAY,CACb,AAED,mEACE,sBAAuB,AACvB,aAAe,CAChB,AAED,mDACE,wBAA0B,CAC3B,AAED,uBACE,wBAA0B,CAC3B,AAMD,sJACE,8BAAgC,CACjC,AAMD,yKACE,kBAAsB,CACvB,AAED,eACE,kBAAmB,AACnB,sBAAuB,AACvB,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,0CACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,kCACE,wBAA0B,CAC3B,AAED,wCACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,oCACE,sBAAuB,AACvB,eAAiB,CAClB,AAED,gCACE,kBAAmB,AACnB,0BAA2B,AAC3B,6BAA8B,AAC9B,oBAAqB,AACrB,UAAY,CACb,AAED,4CACE,kBAAmB,AACnB,QAAS,AACT,SAAU,AACV,OAAQ,AACR,UAAY,CACb,AAED,iDACE,MAAO,AACP,WAAa,CACd,AAED,kDACE,gBAAkB,CACnB,AAED,iCACE,qBAAsB,AACtB,kBAAmB,AACnB,yBAA0B,AAC1B,UAAY,CACb,AAED,uDACE,2BAA6B,CAC9B,AAED,wDACE,0BAA4B,CAC7B,AAED,8CACE,sBAAuB,AACvB,YAAa,AACb,0BAA2B,AAC3B,4BAA8B,CAC/B,AAED,oDACE,YAAc,CACf,AAED,oDACE,cAAgB,CACjB,AAED,0DACE,iBAAmB,CACpB,AAED,wEACE,kBAAoB,CACrB,AAED,+BACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,mBAAsB,AACtB,yBAA0B,AAC1B,qBAAsB,AACtB,sBAAuB,AACvB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAwB,CACzB,AAED,iDACE,yBAA0B,AAC1B,SAAW,CACZ,AAED,+GACE,WAAY,AACZ,sBAAwB,CACzB,AAED,yDACE,qBAA0B,CAC3B,AAED,+HACE,WAAY,AACZ,uBAAwB,AACxB,UAAe,CAChB,AAED,6EACE,YAAc,CACf,AAED,oDACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,8EACE,SAAW,CACZ,AAED,wGACE,WAAY,AACZ,WAAY,AACZ,eAAgB,AAChB,eAAiB,CAClB,AAED,2DACE,qBAAsB,AACtB,sBAAuB,AACvB,WAAY,AACZ,UAAW,AACX,gBAAiB,AACjB,iBAAkB,AAClB,8BAA+B,AAC/B,2BAA4B,AAC5B,4BAA8B,CAC/B,AAED,4DACE,2BAA4B,AAC5B,oBAAqB,AACrB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,YAAa,AACb,WAAY,AACZ,iBAAkB,AAClB,yBAA0B,AAC1B,kBAAmB,AACnB,0BAA+B,AAC/B,eAAiB,CAClB,AAED,kEACE,eAAgB,AAChB,yBAA+B,CAChC,AAED,kGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,sBAAwB,CACzB,AAED,wGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,kBAAoB,CACrB,AAED,gGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,kBAAoB,CACrB,AAED,sGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,kBAAoB,CACrB,AAED,qEACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,oBAAqB,AACrB,YAAa,AACb,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,kBAAmB,AACnB,gBAAkB,AAClB,eAAiB,CAClB,AAED,2EACE,UAAY,CACb,AAED,sHACE,eAAiB,CAClB,AAMD,sOACE,YAAc,CACf,AAED,wDACE,qBAAsB,AACtB,YAAa,AACb,WAAY,AACZ,kBAAoB,CACrB,AAED,+BACE,sBAAuB,AACvB,6BAA8B,AAC9B,0BAA2B,AAC3B,YAAa,AACb,kBAAmB,AACnB,gBAAiB,AACjB,gBAAkB,AAClB,cAAe,AACf,cAAgB,CACjB,AAED,qCACE,eAAgB,AAChB,+BAAqC,CACtC,AAED,wEACE,kBAAmB,AACnB,kCAAmC,AACnC,mCAAoC,AACpC,6BAA8B,AAC9B,eAAiB,CAClB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,kBAAoB,CACrB,AAED,gDACE,qBAAsB,AACtB,QAAS,AACT,SAAU,AACV,kBAAmB,AACnB,iCAAkC,AAClC,oCAAqC,AACrC,eAAgB,AAChB,8BAA+B,AAC/B,qBAAuB,CACxB,AAED,oCACE,iBAAkB,AAClB,UAAY,CACb,AAED,4BACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,iBAAkB,AAClB,uBAAwB,AACxB,sBAAuB,AACvB,eAAgB,AAChB,gBAAiB,AACjB,iCAAkC,AAClC,aAAe,CAChB,AAED,6DACE,YAAa,AACb,aAAe,CAChB,AAED,oEACE,kBAAmB,AACnB,kBAAoB,CACrB,AAED,mEACE,eAAgB,AAChB,kBAAmB,AACnB,kBAAoB,CACrB,AAED,8DACE,6BAA8B,AAC9B,YAAa,AACb,gBAAiB,AACjB,cAAe,AACf,eAAkB,CACnB,AAED,4BACE,kBAAmB,AACnB,MAAO,AACP,SAAU,AACV,OAAQ,AACR,QAAS,AACT,aAAe,CAChB,AAED,uEACE,sBAAyB,CAC1B,AAED,uBACE,wBAA0B,CAC3B","file":"tabulator_bulma.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n.tabulator {\n position: relative;\n background-color: white;\n font-size: 1rem;\n text-align: left;\n overflow: hidden;\n -ms-transform: translatez(0);\n transform: translatez(0);\n}\n\n.tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableHolder .tabulator-table {\n min-width: 100%;\n}\n\n.tabulator.tabulator-block-select {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px;\n background-color: transparent;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-header.tabulator-header-hidden {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n background: transparent;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n background: rgba(0, 0, 0, 0);\n pointer-events: none;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 0.5em 0.75em;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n display: inline-block;\n position: absolute;\n top: 15px;\n right: 8px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n border-top: 1px solid #aaa;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {\n margin-right: -1px;\n}\n\n.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {\n position: absolute;\n background-color: transparent !important;\n border: 1px solid #aaa;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input {\n border: 1px solid #dbdbdb;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0);\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #363636;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-arrow {\n border-top: 6px solid #363636;\n border-bottom: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n -ms-writing-mode: tb-rl;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {\n right: calc(50% - 6px);\n}\n\n.tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 400%;\n background: rgba(13, 13, 13, 0) !important;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 400%;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none;\n}\n\n.tabulator .tabulator-tableHolder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.tabulator .tabulator-tableHolder:focus {\n outline: none;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder {\n box-sizing: border-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #ccc;\n font-weight: bold;\n font-size: 20px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table {\n position: relative;\n display: inline-block;\n background-color: transparent;\n white-space: nowrap;\n overflow: visible;\n color: #363636;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #ededed !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs .tabulator-cell {\n border-bottom-width: 0;\n}\n\n.tabulator .tabulator-footer {\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 2px 0 0;\n background-color: transparent;\n text-align: right;\n color: #363636;\n font-weight: bold;\n white-space: nowrap;\n -ms-user-select: none;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -5px -10px 10px -10px;\n background: rgba(13, 13, 13, 0) !important;\n border: 1px solid #dbdbdb;\n border-width: 0 0 2px;\n text-align: left;\n overflow: hidden;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n background: rgba(13, 13, 13, 0) !important;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {\n border-bottom-width: 0;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -5px;\n border-bottom: none;\n}\n\n.tabulator .tabulator-footer .tabulator-paginator {\n color: #363636;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n}\n\n.tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n}\n\n.tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px;\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 0.1875em;\n padding: calc(0.375em - 1px) 0.75em;\n border: 1px solid #dbdbdb;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2);\n font-size: 1rem;\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n border-color: #4a4a4a;\n color: #363636;\n font-weight: bold;\n}\n\n.tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5;\n}\n\n.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n border-color: #b5b5b5;\n}\n\n.tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px;\n}\n\n.tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto;\n}\n\n.tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize;\n}\n\n.tabulator .tabulator-loader {\n position: absolute;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000;\n}\n\n.tabulator.is-striped .tabulator-row:nth-child(even) {\n background-color: #fafafa;\n}\n\n.tabulator.is-bordered {\n border: 1px solid #dbdbdb;\n}\n\n.tabulator.is-bordered .tabulator-header .tabulator-col {\n border-right: 1px solid #dbdbdb;\n}\n\n.tabulator.is-bordered .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid #dbdbdb;\n}\n\n.tabulator.is-narrow .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.25em 0.5em;\n}\n\n.tabulator.is-narrow .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.25em 0.5em;\n}\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n background-color: transparent;\n}\n\n.tabulator-row.tabulator-selectable:hover {\n background-color: #fafafa;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-selected {\n background-color: #00d1b2;\n}\n\n.tabulator-row.tabulator-selected:hover {\n background-color: #009e86;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-row-moving {\n border: 1px solid #000;\n background: #fff;\n}\n\n.tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n pointer-events: none;\n z-index: 15;\n}\n\n.tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px;\n}\n\n.tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto;\n}\n\n.tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize;\n}\n\n.tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #aaa;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #aaa;\n}\n\n.tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #aaa;\n border-bottom: 1px solid #aaa;\n}\n\n.tabulator-row .tabulator-responsive-collapse:empty {\n display: none;\n}\n\n.tabulator-row .tabulator-responsive-collapse table {\n font-size: 1rem;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px;\n}\n\n.tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 0.5em 0.75em;\n border: 1px solid #dbdbdb;\n border-width: 0 0 1px;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n padding: 0;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #dd0000;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #dd0000;\n}\n\n.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #aaa;\n border-bottom: 2px solid #aaa;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #363636;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #363636;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #363636;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: transparent;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px;\n}\n\n.tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #ccc;\n font-weight: bold;\n color: #363636;\n min-width: 100%;\n}\n\n.tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #363636;\n border-bottom: 0;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px;\n}\n\n.tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #363636;\n vertical-align: middle;\n}\n\n.tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #d00;\n}\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: transparent;\n border: 1px solid #aaa;\n font-size: 1rem;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #363636;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: transparent;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: transparent;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #aaa;\n padding: 4px;\n padding-top: 6px;\n color: #363636;\n font-weight: bold;\n}\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n}\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important;\n}\n\n.tabulator-print-table {\n border-collapse: collapse;\n}\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+/*******************************
+ Site Settings
+*******************************/
+/*-------------------
+ Fonts
+--------------------*/
+/*-------------------
+ Base Sizes
+--------------------*/
+/* This is the single variable that controls them all */
+/* The size of page text */
+/*-------------------
+ Exact Pixel Values
+--------------------*/
+/*
+ These are used to specify exact pixel values in em
+ for things like borders that remain constantly
+ sized as emSize adjusts
+
+ Since there are many more sizes than names for sizes,
+ these are named by their original pixel values.
+
+*/
+/*-------------------
+ Border Radius
+--------------------*/
+/* See Power-user section below
+ for explanation of $px variables
+*/
+/*-------------------
+ Site Colors
+--------------------*/
+/*--- Colors ---*/
+/*--- Light Colors ---*/
+/*--- Neutrals ---*/
+/*--- Colored Backgrounds ---*/
+/*--- Colored Text ---*/
+/*--- Colored Headers ---*/
+/*--- Colored Border ---*/
+/*-------------------
+ Alpha Colors
+--------------------*/
+/*-------------------
+ Brand Colors
+--------------------*/
+/*--------------
+ Page Heading
+---------------*/
+/*-------------------
+ Page
+--------------------*/
+/*--------------
+ Form Input
+---------------*/
+/* This adjusts the default form input across all elements */
+/* Input Text Color */
+/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */
+/*-------------------
+ Focused Input
+--------------------*/
+/* Used on inputs, textarea etc */
+/* Used on dropdowns, other larger blocks */
+/*-------------------
+ Sizes
+--------------------*/
+/*
+ Sizes are all expressed in terms of 14px/em (default em)
+ This ensures these "ratios" remain constant despite changes in EM
+*/
+/*-------------------
+ Paragraph
+--------------------*/
+/*-------------------
+ Links
+--------------------*/
+/*-------------------
+ Highlighted Text
+--------------------*/
+/*-------------------
+ Em Sizes
+--------------------*/
+/*
+ This rounds $size values to the closest pixel then expresses that value in (r)em.
+ This ensures all size values round to exact pixels
+*/
+/* em */
+/* rem */
+/*-------------------
+ Loader
+--------------------*/
+/*-------------------
+ Grid
+--------------------*/
+/*-------------------
+ Transitions
+--------------------*/
+/*-------------------
+ Breakpoints
+--------------------*/
+/* Columns */
+/*******************************
+ Power-User
+*******************************/
+/*-------------------
+ Emotive Colors
+--------------------*/
+/* Positive */
+/* Negative */
+/* Info */
+/* Warning */
+/*-------------------
+ Paths
+--------------------*/
+/* For source only. Modified in gulp for dist */
+/*-------------------
+ Icons
+--------------------*/
+/* Maximum Glyph Width of Icon */
+/*-------------------
+ Neutral Text
+--------------------*/
+/*-------------------
+ Brand Colors
+--------------------*/
+/*-------------------
+ Borders
+--------------------*/
+/*-------------------
+ Accents
+--------------------*/
+/* Differentiating Neutrals */
+/* Differentiating Layers */
+/*-------------------
+ Derived Values
+--------------------*/
+/* Loaders Position Offset */
+/* Rendered Scrollbar Width */
+/* Maximum Single Character Glyph Width, aka Capital "W" */
+/* Used to match floats with text */
+/* Header Spacing */
+/* Minimum Mobile Width */
+/* Positive / Negative Dupes */
+/* Responsive */
+/*******************************
+ States
+*******************************/
+/*-------------------
+ Disabled
+--------------------*/
+/*-------------------
+ Hover
+--------------------*/
+/*--- Shadows ---*/
+/*--- Colors ---*/
+/*--- Emotive ---*/
+/*--- Brand ---*/
+/*--- Dark Tones ---*/
+/*--- Light Tones ---*/
+/*-------------------
+ Focus
+--------------------*/
+/*--- Colors ---*/
+/*--- Emotive ---*/
+/*--- Brand ---*/
+/*--- Dark Tones ---*/
+/*--- Light Tones ---*/
+/*-------------------
+ Down (:active)
+--------------------*/
+/*--- Colors ---*/
+/*--- Emotive ---*/
+/*--- Brand ---*/
+/*--- Dark Tones ---*/
+/*--- Light Tones ---*/
+/*-------------------
+ Active
+--------------------*/
+/*--- Colors ---*/
+/*--- Emotive ---*/
+/*--- Brand ---*/
+/*--- Dark Tones ---*/
+/*--- Light Tones ---*/
+/*******************************
+ Table
+*******************************/
+/*-------------------
+ Element
+--------------------*/
+/*--------------
+ Parts
+---------------*/
+/* Table Row */
+/* Table Cell */
+/* Table Header */
+/* Table Footer */
+/* Responsive Size */
+/*-------------------
+ Types
+--------------------*/
+/* Definition */
+/*--------------
+ Couplings
+---------------*/
+/*--------------
+ States
+---------------*/
+/* Positive */
+/* Negative */
+/* Error */
+/* Warning */
+/* Active */
+/*--------------
+ Types
+---------------*/
+/* Attached */
+/* Striped */
+/* Selectable */
+/* Sortable */
+/* Colors */
+/* Inverted */
+/* Basic */
+/* Padded */
+/* Compact */
+/* Sizes */
+.tabulator {
+ position: relative;
+ background-color: #FFFFFF;
+ overflow: hidden;
+ font-size: 14px;
+ text-align: left;
+ width: 100%;
+ margin: 1em 0em;
+ border: 1px solid rgba(34, 36, 38, 0.15);
+ box-shadow: none;
+ border-radius: 0.28571rem;
+ color: rgba(0, 0, 0, 0.87);
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+ /* Red */
+ /* Orange */
+ /* Yellow */
+ /* Olive */
+ /* Green */
+ /* Teal */
+ /* Blue */
+ /* Violet */
+ /* Purple */
+ /* Pink */
+ /* Brown */
+ /* Grey */
+ /* Black */
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 1px solid rgba(34, 36, 38, 0.1);
+ background-color: #F9FAFB;
+ box-shadow: none;
+ color: rgba(0, 0, 0, 0.87);
+ font-style: none;
+ font-weight: bold;
+ text-transform: none;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ background-color: #F9FAFB;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #999;
+ background: #dae1e7;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 0.92857em 0.78571em;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 18px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #dae1e7 !important;
+ border: 1px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #dae1e7;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: white !important;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #000;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ white-space: nowrap;
+ overflow: visible;
+ color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #ddd;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 0.78571em 0.78571em;
+ border-top: 1px solid rgba(34, 36, 38, 0.15);
+ box-shadow: none;
+ background: #F9FAFB;
+ text-align: right;
+ color: rgba(0, 0, 0, 0.87);
+ font-style: normal;
+ font-weight: normal;
+ text-transform: none;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -0.78571em -0.78571em 0.78571em -0.78571em;
+ text-align: left;
+ background: white !important;
+ border-bottom: 1px solid #ddd;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ font-weight: bold;
+ background: white !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -0.78571em;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ color: #555;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #d00;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive {
+ box-shadow: 0px 0px 0px #A3C293 inset;
+ background: #FCFFF5 !important;
+ color: #21BA45 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {
+ background: #f7ffe6 !important;
+ color: #13ae38 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative {
+ box-shadow: 0px 0px 0px #E0B4B4 inset;
+ background: #FFF6F6 !important;
+ color: #DB2828 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {
+ background: #ffe7e7 !important;
+ color: #d41616 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error {
+ box-shadow: 0px 0px 0px #E0B4B4 inset;
+ background: #FFF6F6 !important;
+ color: #DB2828 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error:hover {
+ background: #ffe7e7 !important;
+ color: #d12323 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning {
+ box-shadow: 0px 0px 0px #C9BA9B inset;
+ background: #FFFAF3 !important;
+ color: #F2C037 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {
+ background: #fff4e4 !important;
+ color: #f1bb29 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active {
+ box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;
+ background: #E0E0E0 !important;
+ color: rgba(0, 0, 0, 0.87) !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active:hover {
+ background: #f7ffe6 !important;
+ color: #13ae38 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.disabled:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active {
+ pointer-events: none;
+ color: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator.inverted {
+ background: #333333;
+ color: rgba(255, 255, 255, 0.9);
+ border: none;
+}
+
+.tabulator.inverted .tabulator-header {
+ background-color: rgba(0, 0, 0, 0.15);
+ border-color: rgba(255, 255, 255, 0.1) !important;
+ color: rgba(255, 255, 255, 0.9);
+}
+
+.tabulator.inverted .tabulator-header .tabulator-col {
+ border-color: rgba(255, 255, 255, 0.1) !important;
+}
+
+.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row {
+ color: rgba(255, 255, 255, 0.9);
+ border: none;
+}
+
+.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-color: rgba(255, 255, 255, 0.1) !important;
+}
+
+.tabulator.inverted .tabulator-footer {
+ background: #FFFFFF;
+}
+
+.tabulator.striped .tabulator-tableHolder .tabulator-table .tabulator-row:nth-child(even) {
+ background-color: rgba(0, 0, 0, 0.05) !important;
+}
+
+.tabulator.celled {
+ border: 1px solid rgba(34, 36, 38, 0.15);
+}
+
+.tabulator.celled .tabulator-header .tabulator-col {
+ border-right: 1px solid rgba(34, 36, 38, 0.1);
+}
+
+.tabulator.celled .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-right: 1px solid rgba(34, 36, 38, 0.1);
+}
+
+.tabulator[class*="single line"] .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ border-right: none;
+}
+
+.tabulator.red {
+ border-top: 0.2em solid #DB2828;
+}
+
+.tabulator.inverted.red {
+ background-color: #DB2828 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.orange {
+ border-top: 0.2em solid #F2711C;
+}
+
+.tabulator.inverted.orange {
+ background-color: #F2711C !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.yellow {
+ border-top: 0.2em solid #FBBD08;
+}
+
+.tabulator.inverted.yellow {
+ background-color: #FBBD08 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.olive {
+ border-top: 0.2em solid #B5CC18;
+}
+
+.tabulator.inverted.olive {
+ background-color: #B5CC18 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.green {
+ border-top: 0.2em solid #21BA45;
+}
+
+.tabulator.inverted.green {
+ background-color: #21BA45 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.teal {
+ border-top: 0.2em solid #00B5AD;
+}
+
+.tabulator.inverted.teal {
+ background-color: #00B5AD !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.blue {
+ border-top: 0.2em solid #2185D0;
+}
+
+.tabulator.inverted.blue {
+ background-color: #2185D0 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.violet {
+ border-top: 0.2em solid #6435C9;
+}
+
+.tabulator.inverted.violet {
+ background-color: #6435C9 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.purple {
+ border-top: 0.2em solid #A333C8;
+}
+
+.tabulator.inverted.purple {
+ background-color: #A333C8 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.pink {
+ border-top: 0.2em solid #E03997;
+}
+
+.tabulator.inverted.pink {
+ background-color: #E03997 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.brown {
+ border-top: 0.2em solid #A5673F;
+}
+
+.tabulator.inverted.brown {
+ background-color: #A5673F !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.grey {
+ border-top: 0.2em solid #767676;
+}
+
+.tabulator.inverted.grey {
+ background-color: #767676 !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.black {
+ border-top: 0.2em solid #1B1C1D;
+}
+
+.tabulator.inverted.black {
+ background-color: #1B1C1D !important;
+ color: #FFFFFF !important;
+}
+
+.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 1em 1em;
+}
+
+.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ top: 20px;
+}
+
+.tabulator.padded .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 1em 1em;
+}
+
+.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 1.5em 1.5em;
+}
+
+.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ top: 26px;
+}
+
+.tabulator.padded.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 1.5em 1.5em;
+}
+
+.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 0.5em 0.7em;
+}
+
+.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ top: 12px;
+}
+
+.tabulator.compact .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 0.5em 0.7em;
+}
+
+.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {
+ padding: 0.4em 0.6em;
+}
+
+.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ top: 10px;
+}
+
+.tabulator.compact.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {
+ padding: 0.4em 0.6em;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ border-bottom: 1px solid rgba(34, 36, 38, 0.1);
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;
+ background: #E0E0E0 !important;
+ color: rgba(0, 0, 0, 0.87) !important;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 0.78571em 0.78571em;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell:last-of-type {
+ border-right: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #DB2828;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #DB2828;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #ddd;
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #ddd;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #fafafa;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #666;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #FFFFFF;
+ border: 1px solid #ddd;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #FFFFFF;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #FFFFFF;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #ddd;
+ padding: 4px;
+ padding-top: 6px;
+ color: #333;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;width:100%;margin:1em 0;border:1px solid rgba(34,36,38,.15);box-shadow:none;border-radius:.28571rem;color:rgba(0,0,0,.87);transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid rgba(34,36,38,.1);background-color:#f9fafb;box-shadow:none;color:rgba(0,0,0,.87);font-style:none;font-weight:700;text-transform:none;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;background-color:#f9fafb;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#dae1e7;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:.92857em .78571em}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:18px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#dae1e7!important;border:1px solid #ddd}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#dae1e7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:#fff!important;border-top:1px solid #ddd;border-bottom:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:.78571em;border-top:1px solid rgba(34,36,38,.15);box-shadow:none;background:#f9fafb;text-align:right;color:rgba(0,0,0,.87);font-style:normal;font-weight:400;text-transform:none;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-.78571em -.78571em .78571em;text-align:left;background:#fff!important;border-bottom:1px solid #ddd;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{font-weight:700;background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-.78571em;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive{box-shadow:inset 0 0 0 #a3c293;background:#fcfff5!important;color:#21ba45!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative:hover{background:#ffe7e7!important;color:#d41616!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error{box-shadow:inset 0 0 0 #e0b4b4;background:#fff6f6!important;color:#db2828!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error:hover{background:#ffe7e7!important;color:#d12323!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning{box-shadow:inset 0 0 0 #c9ba9b;background:#fffaf3!important;color:#f2c037!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning:hover{background:#fff4e4!important;color:#f1bb29!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active:hover{background:#f7ffe6!important;color:#13ae38!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.disabled:hover,.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active{pointer-events:none;color:rgba(0,0,0,.2)}.tabulator.inverted{background:#333;color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-header{background-color:rgba(0,0,0,.15);color:hsla(0,0%,100%,.9)}.tabulator.inverted .tabulator-header,.tabulator.inverted .tabulator-header .tabulator-col{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row{color:hsla(0,0%,100%,.9);border:none}.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-color:hsla(0,0%,100%,.1)!important}.tabulator.inverted .tabulator-footer{background:#fff}.tabulator.striped .tabulator-tableHolder .tabulator-table .tabulator-row:nth-child(2n){background-color:rgba(0,0,0,.05)!important}.tabulator.celled{border:1px solid rgba(34,36,38,.15)}.tabulator.celled .tabulator-header .tabulator-col,.tabulator.celled .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:1px solid rgba(34,36,38,.1)}.tabulator[class*="single line"] .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{border-right:none}.tabulator.red{border-top:.2em solid #db2828}.tabulator.inverted.red{background-color:#db2828!important;color:#fff!important}.tabulator.orange{border-top:.2em solid #f2711c}.tabulator.inverted.orange{background-color:#f2711c!important;color:#fff!important}.tabulator.yellow{border-top:.2em solid #fbbd08}.tabulator.inverted.yellow{background-color:#fbbd08!important;color:#fff!important}.tabulator.olive{border-top:.2em solid #b5cc18}.tabulator.inverted.olive{background-color:#b5cc18!important;color:#fff!important}.tabulator.green{border-top:.2em solid #21ba45}.tabulator.inverted.green{background-color:#21ba45!important;color:#fff!important}.tabulator.teal{border-top:.2em solid #00b5ad}.tabulator.inverted.teal{background-color:#00b5ad!important;color:#fff!important}.tabulator.blue{border-top:.2em solid #2185d0}.tabulator.inverted.blue{background-color:#2185d0!important;color:#fff!important}.tabulator.violet{border-top:.2em solid #6435c9}.tabulator.inverted.violet{background-color:#6435c9!important;color:#fff!important}.tabulator.purple{border-top:.2em solid #a333c8}.tabulator.inverted.purple{background-color:#a333c8!important;color:#fff!important}.tabulator.pink{border-top:.2em solid #e03997}.tabulator.inverted.pink{background-color:#e03997!important;color:#fff!important}.tabulator.brown{border-top:.2em solid #a5673f}.tabulator.inverted.brown{background-color:#a5673f!important;color:#fff!important}.tabulator.grey{border-top:.2em solid #767676}.tabulator.inverted.grey{background-color:#767676!important;color:#fff!important}.tabulator.black{border-top:.2em solid #1b1c1d}.tabulator.inverted.black{background-color:#1b1c1d!important;color:#fff!important}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content{padding:1em}.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:20px}.tabulator.padded .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:1em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content{padding:1.5em}.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:26px}.tabulator.padded.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:1.5em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content{padding:.5em .7em}.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:12px}.tabulator.compact .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:.5em .7em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content{padding:.4em .6em}.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{top:10px}.tabulator.compact.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell{padding:.4em .6em}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;border-bottom:1px solid rgba(34,36,38,.1)}.tabulator-row.tabulator-selectable:hover{box-shadow:inset 0 0 0 rgba(0,0,0,.87);background:#e0e0e0!important;color:rgba(0,0,0,.87)!important;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:.78571em;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #db2828}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#db2828}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_semantic-ui.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_semantic-ui.min.css"],"names":[],"mappings":"AAiOA,WACE,kBAAmB,AACnB,sBAA0B,AAC1B,gBAAiB,AACjB,eAAgB,AAChB,gBAAiB,AACjB,WAAY,AACZ,aAAgB,AAChB,oCAAyC,AACzC,gBAAiB,AACjB,wBAA0B,AAC1B,sBAA2B,AAE3B,uBAAyB,CAc1B,AAED,iFACE,cAAgB,CACjB,AAED,kCACE,yBAA0B,AACvB,sBAAuB,AACtB,qBAAsB,AAClB,gBAAkB,CAC3B,AAED,6BACE,kBAAmB,AACnB,sBAAuB,AACvB,WAAY,AACZ,0CAA+C,AAC/C,yBAA0B,AAC1B,gBAAiB,AACjB,sBAA2B,AAC3B,gBAAiB,AACjB,gBAAkB,AAClB,oBAAqB,AACrB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,YAAc,CACf,AAED,4CACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,yBAA0B,AAC1B,gBAAiB,AACjB,sBAAuB,AACvB,eAAiB,CAClB,AAED,6DACE,kBAAmB,AACnB,sBAAuB,AACvB,mBAAoB,AACpB,mBAAqB,CACtB,AAED,mEACE,sBAAuB,AACvB,kBAAmB,AACnB,yBAA6B,CAC9B,AAED,wFACE,sBAAuB,AACvB,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,uBAAwB,AACxB,qBAAuB,CACxB,AAED,gHACE,sBAAuB,AACvB,WAAY,AACZ,sBAAuB,AACvB,YAAa,AACb,eAAiB,CAClB,AAED,oFACE,qBAAsB,AACtB,kBAAmB,AACnB,SAAU,AACV,UAAW,AACX,QAAS,AACT,SAAU,AACV,kCAAmC,AACnC,mCAAoC,AACpC,4BAA8B,CAC/B,AAED,0FACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,0BAA2B,AAC3B,eAAiB,CAClB,AAED,oHACE,iBAAmB,CACpB,AAED,0FACE,YAAc,CACf,AAED,+DACE,kBAAmB,AACnB,mCAAqC,AACrC,qBAAuB,CACxB,AAED,qEACE,kBAAmB,AACnB,sBAAuB,AACvB,eAAgB,AAChB,WAAY,AACZ,iBAAmB,CACpB,AAED,8EACE,qBAAwB,CACzB,AAED,yEACE,cAAgB,CACjB,AAED,sFACE,QAAS,AACT,QAAU,CACX,AAED,oFACE,kBAAoB,CACrB,AAED,qEACE,eAAgB,AAChB,wBAA0B,CAC3B,AAED,uHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,sHACE,gBAAiB,AACjB,4BAA8B,CAC/B,AAED,uHACE,0BAA2B,AAC3B,kBAAoB,CACrB,AAED,+GACE,uBAAwB,AACpB,yBAA0B,AAC9B,uBAAwB,AACxB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,sBAAwB,CAC7B,AAED,oHAEM,wBAA0B,CAC/B,AAED,2GACE,gBAAiB,AACjB,gBAAkB,CACnB,AAED,uIACE,gBAAiB,AACjB,mBAAqB,CACtB,AAED,uGACE,qBAAuB,CACxB,AAED,+CACE,qBAAsB,AACtB,kBAAmB,AACnB,UAAY,CACb,AAED,qEACE,2BAA6B,CAC9B,AAED,sEACE,0BAA4B,CAC7B,AAED,qDACE,sBAAuB,AACvB,eAAgB,AAChB,0BAA6B,AAC7B,0BAA2B,AAC3B,6BAA8B,AAC9B,eAAiB,CAClB,AAED,oEACE,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,2DACE,cAAgB,CACjB,AAED,iEACE,YAAc,CACf,AAED,kCACE,kBAAmB,AACnB,WAAY,AACZ,mBAAoB,AACpB,cAAe,AACf,gCAAkC,CACnC,AAED,wCACE,YAAc,CACf,AAED,yDACE,sBAAuB,AACvB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,UAAY,CACb,AAED,wFACE,kBAAmB,AACnB,MAAO,AACP,OAAQ,AACR,WAAa,CACd,AAED,8DACE,qBAAsB,AACtB,cAAe,AACf,aAAc,AACd,WAAY,AACZ,gBAAkB,AAClB,cAAgB,CACjB,AAED,mDACE,kBAAmB,AACnB,qBAAsB,AACtB,mBAAoB,AACpB,iBAAkB,AAClB,UAAY,CACb,AAED,kFACE,gBAAkB,AAClB,4BAA+B,CAChC,AAED,sGACE,4BAA8B,CAC/B,AAED,yGACE,yBAA2B,CAC5B,AAED,wCACE,kBAAmB,AACnB,QAAS,AACT,MAAO,AACP,SAAU,AACV,SAAW,CACZ,AAED,6CACE,OAAQ,AACR,UAAY,CACb,AAED,8CACE,gBAAkB,CACnB,AAED,6BACE,iBAA6B,AAC7B,wCAA6C,AAC7C,gBAAiB,AACjB,mBAAoB,AACpB,iBAAkB,AAClB,sBAA2B,AAC3B,kBAAmB,AACnB,gBAAoB,AACpB,oBAAqB,AACrB,mBAAoB,AACpB,qBAAsB,AAClB,iBAAkB,AACtB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,qDACE,sBAAuB,AACvB,wBAAyB,AACzB,oCAAmD,AACnD,gBAAiB,AACjB,0BAA6B,AAC7B,6BAA8B,AAC9B,0BAA2B,AAC3B,eAAiB,CAClB,AAED,oEACE,gBAAkB,AAClB,yBAA6B,CAC9B,AAED,iGACE,YAAc,CACf,AAED,gEACE,wBAA0B,AAC1B,kBAAoB,CACrB,AAED,kDACE,WAAY,AACZ,oBAAqB,AACrB,oBAAqB,AACrB,iBAAmB,CACpB,AAED,kDACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,sBAAuB,AACvB,iBAAmB,CACpB,AAED,8CACE,YAAc,CACf,AAED,6CACE,qBAAsB,AACtB,aAAc,AACd,gBAAiB,AACjB,sBAAuB,AACvB,kBAAmB,AACnB,6BAAqC,CACtC,AAED,oDACE,UAAY,CACb,AAED,sDACE,UAAY,CACb,AAED,kEACE,eAAgB,AAChB,0BAA+B,AAC/B,UAAY,CACb,AAED,6BACE,kBAAmB,AACnB,oBAAqB,AACrB,aAAc,AACd,sBAAuB,AACnB,mBAAoB,AACxB,MAAO,AACP,OAAQ,AACR,YAAa,AACb,YAAa,AACb,WAAY,AACZ,0BAA+B,AAC/B,iBAAmB,CACpB,AAED,mDACE,qBAAsB,AACtB,cAAe,AACf,kBAAmB,AACnB,mBAAoB,AACpB,gBAAiB,AACjB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qEACE,sBAAuB,AACvB,UAAY,CACb,AAED,mEACE,sBAAuB,AACvB,aAAe,CAChB,AAED,sKACE,+BAAsC,AACtC,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,kLACE,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,sKACE,+BAAsC,AACtC,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,kLACE,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,gKACE,+BAAsC,AACtC,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,4KACE,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,oKACE,+BAAsC,AACtC,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,gLACE,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,kKACE,uCAAkD,AAClD,6BAA+B,AAC/B,+BAAsC,CACvC,AAED,8KACE,6BAA+B,AAC/B,uBAA0B,CAC3B,AAED,mPACE,oBAAqB,AACrB,oBAA0B,CAC3B,AAED,oBACE,gBAAoB,AACpB,yBAAgC,AAChC,WAAa,CACd,AAED,sCACE,iCAAsC,AAEtC,wBAAgC,CACjC,AAED,2FAJE,yCAAkD,CAMnD,AAED,2EACE,yBAAgC,AAChC,WAAa,CACd,AAED,2FACE,yCAAkD,CACnD,AAED,sCACE,eAAoB,CACrB,AAED,wFACE,0CAAiD,CAClD,AAED,kBACE,mCAAyC,CAC1C,AAMD,4IACE,wCAA8C,CAC/C,AAED,wGACE,iBAAmB,CACpB,AAED,eACE,6BAAgC,CACjC,AAED,wBACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,kBACE,6BAAgC,CACjC,AAED,2BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,kBACE,6BAAgC,CACjC,AAED,2BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,iBACE,6BAAgC,CACjC,AAED,0BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,iBACE,6BAAgC,CACjC,AAED,0BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,gBACE,6BAAgC,CACjC,AAED,yBACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,gBACE,6BAAgC,CACjC,AAED,yBACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,kBACE,6BAAgC,CACjC,AAED,2BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,kBACE,6BAAgC,CACjC,AAED,2BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,gBACE,6BAAgC,CACjC,AAED,yBACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,iBACE,6BAAgC,CACjC,AAED,0BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,gBACE,6BAAgC,CACjC,AAED,yBACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,iBACE,6BAAgC,CACjC,AAED,0BACE,mCAAqC,AACrC,oBAA0B,CAC3B,AAED,0EACE,WAAiB,CAClB,AAED,2FACE,QAAU,CACX,AAED,yFACE,WAAiB,CAClB,AAED,+EACE,aAAqB,CACtB,AAED,gGACE,QAAU,CACX,AAED,8FACE,aAAqB,CACtB,AAED,2EACE,iBAAqB,CACtB,AAED,4FACE,QAAU,CACX,AAED,0FACE,iBAAqB,CACtB,AAED,gFACE,iBAAqB,CACtB,AAED,iGACE,QAAU,CACX,AAED,+FACE,iBAAqB,CACtB,AAED,eACE,kBAAmB,AACnB,sBAAuB,AACvB,gBAAiB,AACjB,yCAA+C,CAChD,AAED,0CACE,uCAAkD,AAClD,6BAA+B,AAC/B,gCAAsC,AACtC,cAAgB,CACjB,AAED,kCACE,wBAA0B,CAC3B,AAED,wCACE,yBAA0B,AAC1B,cAAgB,CACjB,AAED,gCACE,kBAAmB,AACnB,0BAA2B,AAC3B,6BAA8B,AAC9B,8BAAgC,AAChC,UAAY,CACb,AAED,4CACE,kBAAmB,AACnB,QAAS,AACT,SAAU,AACV,OAAQ,AACR,UAAY,CACb,AAED,iDACE,MAAO,AACP,WAAa,CACd,AAED,kDACE,gBAAkB,CACnB,AAED,iCACE,qBAAsB,AACtB,kBAAmB,AACnB,yBAA0B,AAC1B,UAAY,CACb,AAED,uDACE,2BAA6B,CAC9B,AAED,wDACE,0BAA4B,CAC7B,AAED,8CACE,sBAAuB,AACvB,YAAa,AACb,0BAA2B,AAC3B,4BAA8B,CAC/B,AAED,oDACE,YAAc,CACf,AAED,oDACE,cAAgB,CACjB,AAED,0DACE,iBAAmB,CACpB,AAED,wEACE,kBAAoB,CACrB,AAED,+BACE,qBAAsB,AACtB,kBAAmB,AACnB,sBAAuB,AACvB,iBAA6B,AAC7B,sBAAuB,AACvB,mBAAoB,AACpB,gBAAiB,AACjB,sBAAwB,CACzB,AAED,4CACE,iBAAmB,CACpB,AAED,iDACE,yBAA0B,AAC1B,SAAW,CACZ,AAED,+GACE,WAAY,AACZ,sBAAwB,CACzB,AAED,yDACE,wBAA0B,CAC3B,AAED,+HACE,WAAY,AACZ,uBAAwB,AACxB,aAAe,CAChB,AAED,6EACE,YAAc,CACf,AAED,oDACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,mBAAqB,CACtB,AAED,8EACE,SAAW,CACZ,AAED,wGACE,WAAY,AACZ,WAAY,AACZ,eAAgB,AAChB,eAAiB,CAClB,AAED,2DACE,qBAAsB,AACtB,sBAAuB,AACvB,WAAY,AACZ,UAAW,AACX,gBAAiB,AACjB,iBAAkB,AAClB,8BAA+B,AAC/B,2BAA4B,AAC5B,4BAA8B,CAC/B,AAED,4DACE,2BAA4B,AAC5B,oBAAqB,AACrB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACnB,mBAAoB,AACxB,sBAAuB,AACvB,YAAa,AACb,WAAY,AACZ,iBAAkB,AAClB,sBAAuB,AACvB,kBAAmB,AACnB,0BAA+B,AAC/B,eAAiB,CAClB,AAED,kEACE,eAAgB,AAChB,yBAA+B,CAChC,AAED,kGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,sBAAwB,CACzB,AAED,wGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,gGACE,qBAAsB,AACtB,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,sGACE,kBAAmB,AACnB,WAAY,AACZ,UAAW,AACX,QAAS,AACT,WAAY,AACZ,UAAW,AACX,eAAiB,CAClB,AAED,qEACE,2BAA4B,AAC5B,oBAAqB,AACrB,sBAAuB,AACnB,mBAAoB,AACxB,qBAAsB,AAClB,uBAAwB,AAC5B,sBAAuB,AACvB,wBAAyB,AACzB,yBAA0B,AAC1B,oBAAqB,AACrB,YAAa,AACb,WAAY,AACZ,mBAAoB,AACpB,gBAAiB,AACjB,WAAY,AACZ,gBAAkB,AAClB,eAAiB,CAClB,AAED,2EACE,UAAY,CACb,AAED,sHACE,eAAiB,CAClB,AAMD,sOACE,YAAc,CACf,AAED,wDACE,qBAAsB,AACtB,YAAa,AACb,WAAY,AACZ,kBAAoB,CACrB,AAED,+BACE,sBAAuB,AACvB,6BAA8B,AAC9B,4BAA6B,AAC7B,0BAA2B,AAC3B,YAAa,AACb,kBAAmB,AACnB,mBAAoB,AACpB,gBAAkB,AAClB,cAAgB,CACjB,AAED,qCACE,eAAgB,AAChB,+BAAqC,CACtC,AAED,wEACE,kBAAmB,AACnB,kCAAmC,AACnC,mCAAoC,AACpC,0BAA2B,AAC3B,eAAiB,CAClB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,iBAAmB,CACpB,AAED,uDACE,kBAAoB,CACrB,AAED,gDACE,qBAAsB,AACtB,QAAS,AACT,SAAU,AACV,kBAAmB,AACnB,iCAAkC,AAClC,oCAAqC,AACrC,eAAgB,AAChB,2BAA4B,AAC5B,qBAAuB,CACxB,AAED,oCACE,iBAAkB,AAClB,UAAY,CACb,AAED,4BACE,kBAAmB,AACnB,qBAAsB,AACtB,sBAAuB,AACvB,iBAAkB,AAClB,gBAAoB,AACpB,sBAAuB,AACvB,eAAgB,AAChB,gBAAiB,AACjB,iCAAkC,AAClC,aAAe,CAChB,AAED,6DACE,YAAa,AACb,UAAY,CACb,AAED,oEACE,WAAe,AACf,kBAAoB,CACrB,AAED,mEACE,eAAgB,AAChB,WAAe,AACf,kBAAoB,CACrB,AAED,8DACE,6BAA8B,AAC9B,YAAa,AACb,gBAAiB,AACjB,WAAY,AACZ,eAAkB,CACnB,AAED,4BACE,kBAAmB,AACnB,MAAO,AACP,SAAU,AACV,OAAQ,AACR,QAAS,AACT,aAAe,CAChB,AAED,uEACE,sBAAyB,CAC1B,AAED,uBACE,wBAA0B,CAC3B","file":"tabulator_semantic-ui.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n/*******************************\r\n Site Settings\r\n*******************************/\n/*-------------------\r\n Fonts\r\n--------------------*/\n/*-------------------\r\n Base Sizes\r\n--------------------*/\n/* This is the single variable that controls them all */\n/* The size of page text */\n/*-------------------\r\n Exact Pixel Values\r\n--------------------*/\n/*\r\n These are used to specify exact pixel values in em\r\n for things like borders that remain constantly\r\n sized as emSize adjusts\r\n\r\n Since there are many more sizes than names for sizes,\r\n these are named by their original pixel values.\r\n\r\n*/\n/*-------------------\r\n Border Radius\r\n--------------------*/\n/* See Power-user section below\r\n for explanation of $px variables\r\n*/\n/*-------------------\r\n Site Colors\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Light Colors ---*/\n/*--- Neutrals ---*/\n/*--- Colored Backgrounds ---*/\n/*--- Colored Text ---*/\n/*--- Colored Headers ---*/\n/*--- Colored Border ---*/\n/*-------------------\r\n Alpha Colors\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*--------------\r\n Page Heading\r\n---------------*/\n/*-------------------\r\n Page\r\n--------------------*/\n/*--------------\r\n Form Input\r\n---------------*/\n/* This adjusts the default form input across all elements */\n/* Input Text Color */\n/* Line Height Default For Inputs in Browser (Descendors are 17px at 14px base em) */\n/*-------------------\r\n Focused Input\r\n--------------------*/\n/* Used on inputs, textarea etc */\n/* Used on dropdowns, other larger blocks */\n/*-------------------\r\n Sizes\r\n--------------------*/\n/*\r\n Sizes are all expressed in terms of 14px/em (default em)\r\n This ensures these \"ratios\" remain constant despite changes in EM\r\n*/\n/*-------------------\r\n Paragraph\r\n--------------------*/\n/*-------------------\r\n Links\r\n--------------------*/\n/*-------------------\r\n Highlighted Text\r\n--------------------*/\n/*-------------------\r\n Em Sizes\r\n--------------------*/\n/*\r\n This rounds $size values to the closest pixel then expresses that value in (r)em.\r\n This ensures all size values round to exact pixels\r\n*/\n/* em */\n/* rem */\n/*-------------------\r\n Loader\r\n--------------------*/\n/*-------------------\r\n Grid\r\n--------------------*/\n/*-------------------\r\n Transitions\r\n--------------------*/\n/*-------------------\r\n Breakpoints\r\n--------------------*/\n/* Columns */\n/*******************************\r\n Power-User\r\n*******************************/\n/*-------------------\r\n Emotive Colors\r\n--------------------*/\n/* Positive */\n/* Negative */\n/* Info */\n/* Warning */\n/*-------------------\r\n Paths\r\n--------------------*/\n/* For source only. Modified in gulp for dist */\n/*-------------------\r\n Icons\r\n--------------------*/\n/* Maximum Glyph Width of Icon */\n/*-------------------\r\n Neutral Text\r\n--------------------*/\n/*-------------------\r\n Brand Colors\r\n--------------------*/\n/*-------------------\r\n Borders\r\n--------------------*/\n/*-------------------\r\n Accents\r\n--------------------*/\n/* Differentiating Neutrals */\n/* Differentiating Layers */\n/*-------------------\r\n Derived Values\r\n--------------------*/\n/* Loaders Position Offset */\n/* Rendered Scrollbar Width */\n/* Maximum Single Character Glyph Width, aka Capital \"W\" */\n/* Used to match floats with text */\n/* Header Spacing */\n/* Minimum Mobile Width */\n/* Positive / Negative Dupes */\n/* Responsive */\n/*******************************\r\n States\r\n*******************************/\n/*-------------------\r\n Disabled\r\n--------------------*/\n/*-------------------\r\n Hover\r\n--------------------*/\n/*--- Shadows ---*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Focus\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Down (:active)\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*-------------------\r\n Active\r\n--------------------*/\n/*--- Colors ---*/\n/*--- Emotive ---*/\n/*--- Brand ---*/\n/*--- Dark Tones ---*/\n/*--- Light Tones ---*/\n/*******************************\r\n Table\r\n*******************************/\n/*-------------------\r\n Element\r\n--------------------*/\n/*--------------\r\n Parts\r\n---------------*/\n/* Table Row */\n/* Table Cell */\n/* Table Header */\n/* Table Footer */\n/* Responsive Size */\n/*-------------------\r\n Types\r\n--------------------*/\n/* Definition */\n/*--------------\r\n Couplings\r\n---------------*/\n/*--------------\r\n States\r\n---------------*/\n/* Positive */\n/* Negative */\n/* Error */\n/* Warning */\n/* Active */\n/*--------------\r\n Types\r\n---------------*/\n/* Attached */\n/* Striped */\n/* Selectable */\n/* Sortable */\n/* Colors */\n/* Inverted */\n/* Basic */\n/* Padded */\n/* Compact */\n/* Sizes */\n.tabulator {\n position: relative;\n background-color: #FFFFFF;\n overflow: hidden;\n font-size: 14px;\n text-align: left;\n width: 100%;\n margin: 1em 0em;\n border: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n border-radius: 0.28571rem;\n color: rgba(0, 0, 0, 0.87);\n -ms-transform: translatez(0);\n transform: translatez(0);\n /* Red */\n /* Orange */\n /* Yellow */\n /* Olive */\n /* Green */\n /* Teal */\n /* Blue */\n /* Violet */\n /* Purple */\n /* Pink */\n /* Brown */\n /* Grey */\n /* Black */\n}\n\n.tabulator[tabulator-layout=\"fitDataFill\"] .tabulator-tableHolder .tabulator-table {\n min-width: 100%;\n}\n\n.tabulator.tabulator-block-select {\n -webkit-user-select: none;\n -moz-user-select: none;\n -ms-user-select: none;\n user-select: none;\n}\n\n.tabulator .tabulator-header {\n position: relative;\n box-sizing: border-box;\n width: 100%;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n background-color: #F9FAFB;\n box-shadow: none;\n color: rgba(0, 0, 0, 0.87);\n font-style: none;\n font-weight: bold;\n text-transform: none;\n white-space: nowrap;\n overflow: hidden;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-header.tabulator-header-hidden {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n background-color: #F9FAFB;\n text-align: left;\n vertical-align: bottom;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-moving {\n position: absolute;\n border: 1px solid #999;\n background: #dae1e7;\n pointer-events: none;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content {\n box-sizing: border-box;\n position: relative;\n padding: 0.92857em 0.78571em;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {\n box-sizing: border-box;\n width: 100%;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n vertical-align: bottom;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {\n box-sizing: border-box;\n width: 100%;\n border: 1px solid #999;\n padding: 1px;\n background: #fff;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n display: inline-block;\n position: absolute;\n top: 18px;\n right: 8px;\n width: 0;\n height: 0;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {\n position: relative;\n display: -ms-flexbox;\n display: flex;\n border-top: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {\n margin-right: -1px;\n}\n\n.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {\n position: absolute;\n background-color: #dae1e7 !important;\n border: 1px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {\n position: relative;\n box-sizing: border-box;\n margin-top: 2px;\n width: 100%;\n text-align: center;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {\n height: auto !important;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {\n margin-top: 3px;\n}\n\n.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {\n width: 0;\n height: 0;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {\n padding-right: 25px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {\n cursor: pointer;\n background-color: #dae1e7;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"none\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #bbb;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"asc\"] .tabulator-col-content .tabulator-arrow {\n border-top: none;\n border-bottom: 6px solid #666;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=\"desc\"] .tabulator-col-content .tabulator-arrow {\n border-top: 6px solid #666;\n border-bottom: none;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {\n -ms-writing-mode: tb-rl;\n writing-mode: vertical-rl;\n text-orientation: mixed;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {\n -ms-transform: rotate(180deg);\n transform: rotate(180deg);\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {\n padding-right: 0;\n padding-top: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {\n padding-right: 0;\n padding-bottom: 20px;\n}\n\n.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {\n right: calc(50% - 6px);\n}\n\n.tabulator .tabulator-header .tabulator-frozen {\n display: inline-block;\n position: absolute;\n z-index: 10;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder {\n box-sizing: border-box;\n min-width: 400%;\n background: white !important;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {\n background: white !important;\n}\n\n.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder {\n min-width: 400%;\n}\n\n.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {\n display: none;\n}\n\n.tabulator .tabulator-tableHolder {\n position: relative;\n width: 100%;\n white-space: nowrap;\n overflow: auto;\n -webkit-overflow-scrolling: touch;\n}\n\n.tabulator .tabulator-tableHolder:focus {\n outline: none;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder {\n box-sizing: border-box;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n width: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=\"virtual\"] {\n position: absolute;\n top: 0;\n left: 0;\n height: 100%;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-placeholder span {\n display: inline-block;\n margin: 0 auto;\n padding: 10px;\n color: #000;\n font-weight: bold;\n font-size: 20px;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table {\n position: relative;\n display: inline-block;\n white-space: nowrap;\n overflow: visible;\n color: #333;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {\n font-weight: bold;\n background: #f2f2f2 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {\n border-bottom: 2px solid #ddd;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {\n border-top: 2px solid #ddd;\n}\n\n.tabulator .tabulator-col-resize-handle {\n position: absolute;\n right: 0;\n top: 0;\n bottom: 0;\n width: 5px;\n}\n\n.tabulator .tabulator-col-resize-handle.prev {\n left: 0;\n right: auto;\n}\n\n.tabulator .tabulator-col-resize-handle:hover {\n cursor: ew-resize;\n}\n\n.tabulator .tabulator-footer {\n padding: 0.78571em 0.78571em;\n border-top: 1px solid rgba(34, 36, 38, 0.15);\n box-shadow: none;\n background: #F9FAFB;\n text-align: right;\n color: rgba(0, 0, 0, 0.87);\n font-style: normal;\n font-weight: normal;\n text-transform: none;\n white-space: nowrap;\n -ms-user-select: none;\n user-select: none;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder {\n box-sizing: border-box;\n width: calc(100% + 20px);\n margin: -0.78571em -0.78571em 0.78571em -0.78571em;\n text-align: left;\n background: white !important;\n border-bottom: 1px solid #ddd;\n border-top: 1px solid #ddd;\n overflow: hidden;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {\n font-weight: bold;\n background: white !important;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {\n display: none;\n}\n\n.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {\n margin-bottom: -0.78571em;\n border-bottom: none;\n}\n\n.tabulator .tabulator-footer .tabulator-paginator {\n color: #555;\n font-family: inherit;\n font-weight: inherit;\n font-size: inherit;\n}\n\n.tabulator .tabulator-footer .tabulator-page-size {\n display: inline-block;\n margin: 0 5px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n}\n\n.tabulator .tabulator-footer .tabulator-pages {\n margin: 0 7px;\n}\n\n.tabulator .tabulator-footer .tabulator-page {\n display: inline-block;\n margin: 0 2px;\n padding: 2px 5px;\n border: 1px solid #aaa;\n border-radius: 3px;\n background: rgba(255, 255, 255, 0.2);\n}\n\n.tabulator .tabulator-footer .tabulator-page.active {\n color: #d00;\n}\n\n.tabulator .tabulator-footer .tabulator-page:disabled {\n opacity: .5;\n}\n\n.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n color: #fff;\n}\n\n.tabulator .tabulator-loader {\n position: absolute;\n display: -ms-flexbox;\n display: flex;\n -ms-flex-align: center;\n align-items: center;\n top: 0;\n left: 0;\n z-index: 100;\n height: 100%;\n width: 100%;\n background: rgba(0, 0, 0, 0.4);\n text-align: center;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg {\n display: inline-block;\n margin: 0 auto;\n padding: 10px 20px;\n border-radius: 10px;\n background: #fff;\n font-weight: bold;\n font-size: 16px;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {\n border: 4px solid #333;\n color: #000;\n}\n\n.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {\n border: 4px solid #D00;\n color: #590000;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive {\n box-shadow: 0px 0px 0px #A3C293 inset;\n background: #FCFFF5 !important;\n color: #21BA45 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.positive:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.positive:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.negative:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.negative:hover {\n background: #ffe7e7 !important;\n color: #d41616 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error {\n box-shadow: 0px 0px 0px #E0B4B4 inset;\n background: #FFF6F6 !important;\n color: #DB2828 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.error:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.error:hover {\n background: #ffe7e7 !important;\n color: #d12323 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning {\n box-shadow: 0px 0px 0px #C9BA9B inset;\n background: #FFFAF3 !important;\n color: #F2C037 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.warning:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.warning:hover {\n background: #fff4e4 !important;\n color: #f1bb29 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active:hover {\n background: #f7ffe6 !important;\n color: #13ae38 !important;\n}\n\n.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.active, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.disabled:hover, .tabulator .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell.active {\n pointer-events: none;\n color: rgba(0, 0, 0, 0.2);\n}\n\n.tabulator.inverted {\n background: #333333;\n color: rgba(255, 255, 255, 0.9);\n border: none;\n}\n\n.tabulator.inverted .tabulator-header {\n background-color: rgba(0, 0, 0, 0.15);\n border-color: rgba(255, 255, 255, 0.1) !important;\n color: rgba(255, 255, 255, 0.9);\n}\n\n.tabulator.inverted .tabulator-header .tabulator-col {\n border-color: rgba(255, 255, 255, 0.1) !important;\n}\n\n.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row {\n color: rgba(255, 255, 255, 0.9);\n border: none;\n}\n\n.tabulator.inverted .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-color: rgba(255, 255, 255, 0.1) !important;\n}\n\n.tabulator.inverted .tabulator-footer {\n background: #FFFFFF;\n}\n\n.tabulator.striped .tabulator-tableHolder .tabulator-table .tabulator-row:nth-child(even) {\n background-color: rgba(0, 0, 0, 0.05) !important;\n}\n\n.tabulator.celled {\n border: 1px solid rgba(34, 36, 38, 0.15);\n}\n\n.tabulator.celled .tabulator-header .tabulator-col {\n border-right: 1px solid rgba(34, 36, 38, 0.1);\n}\n\n.tabulator.celled .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: 1px solid rgba(34, 36, 38, 0.1);\n}\n\n.tabulator[class*=\"single line\"] .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n border-right: none;\n}\n\n.tabulator.red {\n border-top: 0.2em solid #DB2828;\n}\n\n.tabulator.inverted.red {\n background-color: #DB2828 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.orange {\n border-top: 0.2em solid #F2711C;\n}\n\n.tabulator.inverted.orange {\n background-color: #F2711C !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.yellow {\n border-top: 0.2em solid #FBBD08;\n}\n\n.tabulator.inverted.yellow {\n background-color: #FBBD08 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.olive {\n border-top: 0.2em solid #B5CC18;\n}\n\n.tabulator.inverted.olive {\n background-color: #B5CC18 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.green {\n border-top: 0.2em solid #21BA45;\n}\n\n.tabulator.inverted.green {\n background-color: #21BA45 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.teal {\n border-top: 0.2em solid #00B5AD;\n}\n\n.tabulator.inverted.teal {\n background-color: #00B5AD !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.blue {\n border-top: 0.2em solid #2185D0;\n}\n\n.tabulator.inverted.blue {\n background-color: #2185D0 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.violet {\n border-top: 0.2em solid #6435C9;\n}\n\n.tabulator.inverted.violet {\n background-color: #6435C9 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.purple {\n border-top: 0.2em solid #A333C8;\n}\n\n.tabulator.inverted.purple {\n background-color: #A333C8 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.pink {\n border-top: 0.2em solid #E03997;\n}\n\n.tabulator.inverted.pink {\n background-color: #E03997 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.brown {\n border-top: 0.2em solid #A5673F;\n}\n\n.tabulator.inverted.brown {\n background-color: #A5673F !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.grey {\n border-top: 0.2em solid #767676;\n}\n\n.tabulator.inverted.grey {\n background-color: #767676 !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.black {\n border-top: 0.2em solid #1B1C1D;\n}\n\n.tabulator.inverted.black {\n background-color: #1B1C1D !important;\n color: #FFFFFF !important;\n}\n\n.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1em 1em;\n}\n\n.tabulator.padded .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 20px;\n}\n\n.tabulator.padded .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1em 1em;\n}\n\n.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 1.5em 1.5em;\n}\n\n.tabulator.padded.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 26px;\n}\n\n.tabulator.padded.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 1.5em 1.5em;\n}\n\n.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.5em 0.7em;\n}\n\n.tabulator.compact .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 12px;\n}\n\n.tabulator.compact .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.5em 0.7em;\n}\n\n.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content {\n padding: 0.4em 0.6em;\n}\n\n.tabulator.compact.very .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {\n top: 10px;\n}\n\n.tabulator.compact.very .tabulator-tableHolder .tabulator-table .tabulator-row .tabulator-cell {\n padding: 0.4em 0.6em;\n}\n\n.tabulator-row {\n position: relative;\n box-sizing: border-box;\n min-height: 22px;\n border-bottom: 1px solid rgba(34, 36, 38, 0.1);\n}\n\n.tabulator-row.tabulator-selectable:hover {\n box-shadow: 0px 0px 0px rgba(0, 0, 0, 0.87) inset;\n background: #E0E0E0 !important;\n color: rgba(0, 0, 0, 0.87) !important;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-selected {\n background-color: #9ABCEA;\n}\n\n.tabulator-row.tabulator-selected:hover {\n background-color: #769BCC;\n cursor: pointer;\n}\n\n.tabulator-row.tabulator-moving {\n position: absolute;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n pointer-events: none !important;\n z-index: 15;\n}\n\n.tabulator-row .tabulator-row-resize-handle {\n position: absolute;\n right: 0;\n bottom: 0;\n left: 0;\n height: 5px;\n}\n\n.tabulator-row .tabulator-row-resize-handle.prev {\n top: 0;\n bottom: auto;\n}\n\n.tabulator-row .tabulator-row-resize-handle:hover {\n cursor: ns-resize;\n}\n\n.tabulator-row .tabulator-frozen {\n display: inline-block;\n position: absolute;\n background-color: inherit;\n z-index: 10;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-left {\n border-right: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-frozen.tabulator-frozen-right {\n border-left: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-responsive-collapse {\n box-sizing: border-box;\n padding: 5px;\n border-top: 1px solid #ddd;\n border-bottom: 1px solid #ddd;\n}\n\n.tabulator-row .tabulator-responsive-collapse:empty {\n display: none;\n}\n\n.tabulator-row .tabulator-responsive-collapse table {\n font-size: 14px;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td {\n position: relative;\n}\n\n.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {\n padding-right: 10px;\n}\n\n.tabulator-row .tabulator-cell {\n display: inline-block;\n position: relative;\n box-sizing: border-box;\n padding: 0.78571em 0.78571em;\n vertical-align: middle;\n white-space: nowrap;\n overflow: hidden;\n text-overflow: ellipsis;\n}\n\n.tabulator-row .tabulator-cell:last-of-type {\n border-right: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing {\n border: 1px solid #1D68CD;\n padding: 0;\n}\n\n.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {\n border: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail {\n border: 1px solid #DB2828;\n}\n\n.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {\n border: 1px;\n background: transparent;\n color: #DB2828;\n}\n\n.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {\n display: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {\n width: 80%;\n}\n\n.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {\n width: 100%;\n height: 3px;\n margin-top: 2px;\n background: #666;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-branch {\n display: inline-block;\n vertical-align: middle;\n height: 9px;\n width: 7px;\n margin-top: -9px;\n margin-right: 5px;\n border-bottom-left-radius: 1px;\n border-left: 2px solid #ddd;\n border-bottom: 2px solid #ddd;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-pack: center;\n justify-content: center;\n -ms-flex-align: center;\n align-items: center;\n vertical-align: middle;\n height: 11px;\n width: 11px;\n margin-right: 5px;\n border: 1px solid #333;\n border-radius: 2px;\n background: rgba(0, 0, 0, 0.1);\n overflow: hidden;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {\n cursor: pointer;\n background: rgba(0, 0, 0, 0.2);\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: transparent;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {\n display: inline-block;\n position: relative;\n height: 7px;\n width: 1px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {\n position: absolute;\n content: \"\";\n left: -3px;\n top: 3px;\n height: 1px;\n width: 7px;\n background: #333;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {\n display: -ms-inline-flexbox;\n display: inline-flex;\n -ms-flex-align: center;\n align-items: center;\n -ms-flex-pack: center;\n justify-content: center;\n -moz-user-select: none;\n -khtml-user-select: none;\n -webkit-user-select: none;\n -o-user-select: none;\n height: 15px;\n width: 15px;\n border-radius: 20px;\n background: #666;\n color: #fff;\n font-weight: bold;\n font-size: 1.1em;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {\n opacity: .7;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {\n display: initial;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {\n display: none;\n}\n\n.tabulator-row .tabulator-cell .tabulator-traffic-light {\n display: inline-block;\n height: 14px;\n width: 14px;\n border-radius: 14px;\n}\n\n.tabulator-row.tabulator-group {\n box-sizing: border-box;\n border-bottom: 1px solid #999;\n border-right: 1px solid #ddd;\n border-top: 1px solid #999;\n padding: 5px;\n padding-left: 10px;\n background: #fafafa;\n font-weight: bold;\n min-width: 100%;\n}\n\n.tabulator-row.tabulator-group:hover {\n cursor: pointer;\n background-color: rgba(0, 0, 0, 0.1);\n}\n\n.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {\n margin-right: 10px;\n border-left: 6px solid transparent;\n border-right: 6px solid transparent;\n border-top: 6px solid #666;\n border-bottom: 0;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-1 {\n padding-left: 30px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-2 {\n padding-left: 50px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-3 {\n padding-left: 70px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-4 {\n padding-left: 90px;\n}\n\n.tabulator-row.tabulator-group.tabulator-group-level-5 {\n padding-left: 110px;\n}\n\n.tabulator-row.tabulator-group .tabulator-arrow {\n display: inline-block;\n width: 0;\n height: 0;\n margin-right: 16px;\n border-top: 6px solid transparent;\n border-bottom: 6px solid transparent;\n border-right: 0;\n border-left: 6px solid #666;\n vertical-align: middle;\n}\n\n.tabulator-row.tabulator-group span {\n margin-left: 10px;\n color: #666;\n}\n\n.tabulator-edit-select-list {\n position: absolute;\n display: inline-block;\n box-sizing: border-box;\n max-height: 200px;\n background: #FFFFFF;\n border: 1px solid #ddd;\n font-size: 14px;\n overflow-y: auto;\n -webkit-overflow-scrolling: touch;\n z-index: 10000;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item {\n padding: 4px;\n color: #333;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item.active {\n color: #FFFFFF;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {\n cursor: pointer;\n color: #FFFFFF;\n background: #1D68CD;\n}\n\n.tabulator-edit-select-list .tabulator-edit-select-list-group {\n border-bottom: 1px solid #ddd;\n padding: 4px;\n padding-top: 6px;\n color: #333;\n font-weight: bold;\n}\n\n.tabulator-print-fullscreen {\n position: absolute;\n top: 0;\n bottom: 0;\n left: 0;\n right: 0;\n z-index: 10000;\n}\n\nbody.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {\n display: none !important;\n}\n\n.tabulator-print-table {\n border-collapse: collapse;\n}\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ border: 1px solid #999;
+ background-color: #888;
+ font-size: 14px;
+ text-align: left;
+ overflow: hidden;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 1px solid #999;
+ background-color: #e6e6e6;
+ color: #555;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ border-right: 1px solid #aaa;
+ background: #e6e6e6;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #999;
+ background: #cdcdcd;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 4px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 9px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #e6e6e6 !important;
+ border: 1px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #cdcdcd;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: #f3f3f3 !important;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: #f3f3f3 !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #ccc;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ white-space: nowrap;
+ overflow: visible;
+ color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #e2e2e2 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #aaa;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #aaa;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 1px solid #999;
+ background-color: #e6e6e6;
+ text-align: right;
+ color: #555;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: #f3f3f3 !important;
+ border-bottom: 1px solid #aaa;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: #f3f3f3 !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ color: #555;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #d00;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ background-color: #fff;
+}
+
+.tabulator-row.tabulator-row-even {
+ background-color: #EFEFEF;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #bbb;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-row-moving {
+ border: 1px solid #000;
+ background: #fff;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ pointer-events: none;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 4px;
+ border-right: 1px solid #aaa;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #aaa;
+ border-bottom: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #aaa;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #ccc;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #d00;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #aaa;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #aaa;
+ padding: 4px;
+ padding-top: 6px;
+ color: #333;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #999;background-color:#888;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#e6e6e6;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background:#e6e6e6;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#cdcdcd;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#cdcdcd}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:#f3f3f3!important;border-top:1px solid #aaa;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#ccc;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#e2e2e2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #aaa}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #aaa}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#e6e6e6;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f3f3f3!important;border-bottom:1px solid #aaa;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f3f3f3!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #aaa;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#d00}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAElB,sBAxCgB,AA0ChB,sBA3CqB,AA6CrB,eA3Ca,AA4Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CAqfxB,AApgBD,iFAoBI,cAAc,CACd,AArBJ,kCA0BE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AA3BF,6BA+BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BAlEwB,AAmExB,yBAtE4B,AAuE5B,WAtEmB,AAuEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AAjSF,qDAkDG,YAAY,CACZ,AAnDH,4CAuDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BAzFoB,AA0FpB,mBA5F2B,AA6F3B,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AAlPH,6DAiEI,kBAAkB,AAClB,sBAhGsB,AAiGtB,mBAA8C,AAC9C,mBAAoB,CACpB,AArEJ,mEAyEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AAjHJ,wFA+EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AAlGL,gHAyFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AAjGN,oFAsGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAvImB,CAwInB,AA/GL,0FAwHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BA1JkB,AA2JlB,eAAgB,CAKhB,AAjIL,oHA+HM,iBAAiB,CACjB,AAhIN,0FAuIK,YAAa,CACb,AAxIL,+DA6II,kBAAkB,AAClB,mCAAmD,AACnD,qBA9KmB,CA+KnB,AAhJJ,qEAoJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAzKJ,8EA4JK,qBAAsB,CACtB,AA7JL,yEAgKK,cAAe,CACf,AAjKL,sFAqKM,QAAS,AACT,QAAS,CACT,AAvKN,oFA8KK,kBAAkB,CAClB,AA/KL,qEAkLK,eAAc,AACd,wBAAoD,CACpD,AApLL,uHAwLM,gBAAgB,AAChB,4BAlNkB,CAmNlB,AA1LN,sHA+LM,gBAAgB,AAChB,4BA1NgB,CA2NhB,AAjMN,uHAsMM,0BAhOgB,AAiOhB,kBAAmB,CACnB,AAxMN,+GAgNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAtNN,oHA2NM,wBAAyB,CACzB,AA5NN,2GAiOM,gBAAe,AACf,gBAAgB,CAChB,AAnON,uIAuOO,gBAAe,AACf,mBAAmB,CACnB,AAzOP,uGA8OM,qBAAqB,CACrB,AA/ON,+CAqPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAnQH,qEA6PI,2BAjRgB,CAkRhB,AA9PJ,sEAiQI,0BArRgB,CAsRhB,AAlQJ,qDAuQG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BAxSiB,AAySjB,6BApToB,AAsTpB,eAAgB,CAChB,AAxRH,oEA6QI,4BAAyD,CAKzD,AAlRJ,iGAgRK,YAAa,CACb,AAjRL,2DA2RG,cAAc,CAKd,AAhSH,iEA8RI,YAAa,CACb,AA/RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA2DjC,AApWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAsXf,AAnWH,kFAsVK,gBAAiB,AACjB,4BAAwD,CASxD,AAhWL,sGA0VM,4BA9Wc,CA+Wd,AA3VN,yGA8VM,yBAlXc,CAmXd,AA/VN,6BA0WE,iBAAgB,AAChB,0BAjXwB,AAkXxB,yBArX4B,AAsX5B,iBAAiB,AACjB,WAtXmB,AAuXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAgFpB,AAtcF,qDAyXG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAyD,AAUzD,6BA7ZiB,AA8ZjB,0BA9ZiB,AAgajB,eAAgB,CAMhB,AAlZH,oEAkYI,4BAAyD,CAKzD,AAvYJ,iGAqYK,YAAa,CACb,AAtYL,gEA+YI,mBAAkB,AAClB,kBAAkB,CAClB,AAjZJ,kDAqZG,WA7ZkB,AA8ZlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAzZH,kDA6ZG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzaoB,AA0apB,iBAAiB,CACjB,AApaH,8CAuaG,YAAY,CACZ,AAxaH,6CA4aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAxboB,AAybpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AArcH,oDAubI,UA5bmB,CA6bnB,AAxbJ,sDA2bI,UAAU,CACV,AA5bJ,kEAgcK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAncL,wCA0cE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAxdF,6CAidG,OAAM,AACN,UAAU,CACV,AAndH,8CAsdG,gBAAgB,CAChB,AAvdH,6BA6dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAngBF,mDA4eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAlgBH,qEAyfI,sBAAqB,AACrB,UAAU,CACV,AA3fJ,mEA+fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAjiBuB,CA84BvB,AAjXD,kCAQE,wBApiB4B,CAqiB5B,AATF,0CAYE,sBAriBsB,AAsiBtB,cAAe,CACf,AAdF,kCAiBE,wBAxiB6B,CAyiB7B,AAlBF,wCAqBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BA5jBkB,AA6jBlB,6BA7jBkB,AA+jBlB,oBAAoB,AACpB,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BA9lBiB,CA+lBjB,AApEH,wDAuEG,0BAlmBiB,CAmmBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BA3mBkB,AA4mBlB,4BA5mBkB,CA+nBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cAnoBW,CA8oBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAvoBkB,AAwoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAxoBkB,AAyoBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAjpBgB,CAwpBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UAtpBe,CAupBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA9sBiB,AA+sBjB,4BA/sBiB,CAgtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA7tBe,AA8tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA1vBa,CA2vBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eArwBc,CAkxBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAhxBa,CAixBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAzyBqB,AA0yBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA30BkB,AA40BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAEhB,cAAe,CAwDf,AA/WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAr2BkB,AAs2BlB,eAAgB,CAChB,AAtUJ,uDA2UG,iBAAiB,CACjB,AA5UH,uDA+UG,iBAAiB,CACjB,AAhVH,uDAmVG,iBAAiB,CACjB,AApVH,uDAuVG,iBAAiB,CACjB,AAxVH,uDA2VG,kBAAkB,CAClB,AA5VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAx4BmB,AAy4BnB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,UAAU,CACV,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAv5BuB,AAw5BvB,sBAt5BmB,AAw5BnB,eAx6Ba,AA06Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAj6BgB,CA86BhB,AAjCF,oEAuBG,WAv6BqB,AAw6BrB,kBA/5BkB,CAg6BlB,AAzBH,mEA4BG,eAAc,AAEd,WA96BqB,AA+6BrB,kBAt6BkB,CAu6BlB,AAhCH,8DAoCE,6BAl7BkB,AAo7BlB,YAAW,AACX,gBAAe,AAEf,WAt7BgB,AAu7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #888 !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#aaa !default; //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#e6e6e6 !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder: 1px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground:$headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#ccc;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t//row element\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align: right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpointer-events: none;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#d00;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ border: 1px solid #333;
+ background-color: #222;
+ overflow: hidden;
+ font-size: 14px;
+ text-align: left;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 1px solid #999;
+ background-color: #333;
+ color: #fff;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ border-right: 1px solid #aaa;
+ background-color: #333;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #999;
+ background: #1a1a1a;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 4px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #444;
+ color: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 9px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #1a1a1a !important;
+ border: 1px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input, .tabulator .tabulator-header .tabulator-col .tabulator-header-filter select {
+ border: 1px solid #999;
+ background: #444;
+ color: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #1a1a1a;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #888;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #888;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: #1a1a1a !important;
+ border-top: 1px solid #888;
+ border-bottom: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: #1a1a1a !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #eee;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #666;
+ white-space: nowrap;
+ overflow: visible;
+ color: #fff;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #373737 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #888;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #888;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 1px solid #999;
+ background-color: #333;
+ text-align: right;
+ color: #333;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: #262626 !important;
+ border-bottom: 1px solid #888;
+ border-top: 1px solid #888;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: #262626 !important;
+ color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator label {
+ color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+ color: #333;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ background-color: #666;
+}
+
+.tabulator-row:nth-child(even) {
+ background-color: #444;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #999;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #000;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #888;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #888;
+ border-bottom: 1px solid #888;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #888;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #888;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #888;
+ border-bottom: 1px solid #888;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 4px;
+ border-right: 1px solid #888;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #999;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #888;
+ border-bottom: 2px solid #888;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #fff;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #fff;
+ color: #666;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #888;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #ccc;
+ font-weight: bold;
+ color: #333;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #666;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #888;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #666;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #999;
+ background: #444;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #999;
+ background: #666;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #888;
+ padding: 4px;
+ padding-top: 6px;
+ color: #fff;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #333;background-color:#222;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#333;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#333;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#1a1a1a;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#1a1a1a!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input,.tabulator .tabulator-header .tabulator-col .tabulator-header-filter select{border:1px solid #999;background:#444;color:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#1a1a1a}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:#1a1a1a!important;border-top:1px solid #888;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#1a1a1a!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#eee;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#666;white-space:nowrap;overflow:visible;color:#fff}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#373737!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #888}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #888}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#333;text-align:right;color:#333;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#262626!important;border-bottom:1px solid #888;border-top:1px solid #888;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#262626!important;color:#fff}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2);color:#333;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#fff}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#666}.tabulator-row:nth-child(2n){background-color:#444}.tabulator-row.tabulator-selectable:hover{background-color:#999;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#000}.tabulator-row.tabulator-selected:hover{background-color:#888;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #888;border-bottom:1px solid #888;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #888}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #888}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #888;border-bottom:1px solid #888}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #888;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #999;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #888;border-bottom:2px solid #888}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #fff;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#fff}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#fff;color:#666;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #888;border-top:1px solid #999;padding:5px;padding-left:10px;background:#ccc;font-weight:700;color:#333;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #888;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#666}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#999;background:#444}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#999;background:#666}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #888;padding:4px;padding-top:6px;color:#fff;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_midnight.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_midnight.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAClB,sBAtCgB,AAuChB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAkgBxB,AA9gBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA4PpB,AAxSF,qDA+CG,YAAY,CACZ,AAhDH,4CAoDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CA6LhB,AAxPH,6DA8DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAlEJ,mEAsEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAwCX,AAhHJ,wFA4EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAerB,AAjGL,gHAsFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,gBAAgB,AAChB,UAAW,CACX,AA/FN,oFAqGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BArImB,CAsInB,AA9GL,0FAuHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAxJkB,AAyJlB,eAAgB,CAKhB,AAhIL,oHA8HM,iBAAiB,CACjB,AA/HN,0FAsIK,YAAa,CACb,AAvIL,+DA4II,kBAAkB,AAClB,mCAAgE,AAChE,qBA5KmB,CA6KnB,AA/IJ,qEAmJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAuBlB,AA9KJ,8EA2JK,qBAAsB,CACtB,AA5JL,yEA+JK,cAAe,CACf,AAhKL,uJAmKK,sBAAqB,AACrB,gBAAgB,AAChB,UAAW,CACX,AAtKL,sFA0KM,QAAS,AACT,QAAS,CACT,AA5KN,oFAmLK,kBAAkB,CAClB,AApLL,qEAuLK,eAAc,AACd,wBAAoD,CACpD,AAzLL,uHA8LM,gBAAgB,AAChB,4BAvNkB,CAwNlB,AAhMN,sHAqMM,gBAAgB,AAChB,4BA/NgB,CAgOhB,AAvMN,uHA4MM,0BArOgB,AAsOhB,kBAAmB,CACnB,AA9MN,+GAqNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA3NN,oHAgOM,wBAAyB,CACzB,AAjON,2GAsOM,gBAAe,AACf,gBAAgB,CAChB,AAxON,uIA4OO,gBAAe,AACf,mBAAmB,CACnB,AA9OP,uGAmPM,qBAAqB,CACrB,AApPN,+CA2PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAzQH,qEAmQI,2BAtRgB,CAuRhB,AApQJ,sEAuQI,0BA1RgB,CA2RhB,AAxQJ,qDA6QG,sBAAqB,AACrB,eAAc,AAEd,6BAAyD,AAUzD,0BA7SiB,AA8SjB,6BAzToB,AA2TpB,eAAgB,CAChB,AA9RH,oEAmRI,4BAAyD,CAKzD,AAxRJ,iGAsRK,YAAa,CACb,AAvRL,2DAiSG,cAAc,CAKd,AAtSH,iEAoSI,YAAa,CACb,AArSJ,kCA4SE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAzWF,wCAmTG,YAAa,CACb,AApTH,yDAwTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AA/UH,wFA6TI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AAjUJ,8DAsUI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AA9UJ,mDAmVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA1WqB,AA2WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA1We,CA0Xf,AAxWH,kFA4VK,gBAAiB,AACjB,4BAAwD,CASxD,AAtWL,sGAgWM,4BAnXc,CAoXd,AAjWN,yGAoWM,yBAvXc,CAwXd,AArWN,wCA6WE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AA3XF,6CAoXG,OAAM,AACN,UAAU,CACV,AAtXH,8CAyXG,gBAAgB,CAChB,AA1XH,6BAgYE,iBAAgB,AAChB,0BAtYwB,AAuYxB,sBA1YyB,AA2YzB,iBAAgB,AAChB,WA3YmB,AA4YnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AAneF,qDA+YG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAWxD,6BAnbiB,AAobjB,0BApbiB,AAsbjB,eAAgB,CAMhB,AAzaH,oEAwZI,6BAAwD,AACxD,UAxbiB,CA6bjB,AA9ZJ,iGA4ZK,YAAa,CACb,AA7ZL,gEAsaI,mBAAkB,AAClB,kBAAkB,CAClB,AAxaJ,wDA8aI,UAAU,CACV,AA/aJ,kDAobG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/boB,AAgcpB,iBAAiB,CACjB,AA3bH,8CA+bG,YAAY,CACZ,AAhcH,6CAocG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA/coB,AAgdpB,kBAAiB,AAEjB,8BAA+B,AAE/B,WArdkB,AAsdlB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AAleH,oDAodI,UAxdmB,CAydnB,AArdJ,sDAwdI,UAAU,CACV,AAzdJ,kEA6dK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AAheL,6BAueE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA7gBF,mDAsfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA5gBH,qEAmgBI,sBAAqB,AACrB,UAAU,CACV,AArgBJ,mEAygBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAC1C,qBA3iBuB,CAo5BvB,AA9WD,6BAQE,qBA7iByB,CA8iBzB,AATF,0CAYE,sBA9iBsB,AA+iBtB,cAAe,CACf,AAdF,kCAiBE,qBAjjB0B,CAkjB1B,AAlBF,wCAqBE,sBApjB+B,AAqjB/B,cAAe,CACf,AAvBF,gCA0BE,kBAAkB,AAElB,0BAhkBkB,AAikBlB,6BAjkBkB,AAmkBlB,8BAA+B,AAC/B,UAAU,CACV,AAjCF,4CAqCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAnDF,iDA4CG,MAAK,AACL,WAAW,CACX,AA9CH,kDAiDG,gBAAgB,CAChB,AAlDH,iCAsDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AApEF,uDA8DG,2BAlmBiB,CAmmBjB,AA/DH,wDAkEG,0BAtmBiB,CAumBjB,AAnEH,8CAuEE,sBAAqB,AAErB,YAAW,AAEX,0BA/mBkB,AAgnBlB,4BAhnBkB,CAmoBlB,AA/FF,oDA+EG,YAAY,CACZ,AAhFH,oDAmFG,cAvoBW,CAkpBX,AA9FH,0DAuFK,iBAAkB,CAKlB,AA5FL,wEA0FM,kBAAkB,CAClB,AA3FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA5oBkB,AA6oBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AAtSF,iDAgHG,sBA7oBe,AA8oBf,SAAU,CAMV,AAvHH,+GAoHI,WAAU,AACV,sBAAsB,CACtB,AAtHJ,yDA0HG,qBAtpBgB,CA6pBhB,AAjIH,+HA4HI,WAAU,AACV,uBAAsB,AAEtB,UA3pBe,CA4pBf,AAhIJ,6EAsII,YAAa,CACb,AAvIJ,oDA6IG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAjKH,8EAuJI,SAAS,CAST,AAhKJ,wGA2JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AA/JL,2DAoKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAntBiB,AAotBjB,4BAptBiB,CAqtBjB,AAjLH,4DAqLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAluBe,AAmuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAtPH,kEAsMI,eAAc,AACd,yBAA4B,CAC5B,AAxMJ,kGA2MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AA9NJ,wGAoNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA/vBa,CAgwBb,AA7NL,gGAiOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA1wBc,CAuxBd,AApPJ,sGA0OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eArxBa,CAsxBb,AAnPL,qEAyPG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WA9yBqB,AA+yBrB,gBAAgB,AAChB,eAAe,CAmBf,AA7RH,2EA6QI,UAAU,CACV,AA9QJ,sHAkRK,eAAe,CACf,AAnRL,sOA2RI,YAAY,CACZ,AA5RJ,wDAgSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AArSH,+BA4SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,gBAAe,AACf,gBAAgB,AAChB,WAAU,AAEV,cAAe,CAuDf,AA7WF,qCAyTG,eAAc,AACd,+BAA+B,CAC/B,AA3TH,wEA+TI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BA52BkB,AA62BlB,eAAgB,CAChB,AApUJ,uDAwUG,iBAAiB,CACjB,AAzUH,uDA4UG,iBAAiB,CACjB,AA7UH,uDAgVG,iBAAiB,CACjB,AAjVH,uDAoVG,iBAAiB,CACjB,AArVH,uDAwVG,kBAAkB,CAClB,AAzVH,gDA8VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BA/4BmB,AAg5BnB,qBAAqB,CACrB,AAvWH,oCA0WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA15BiB,AA25BjB,sBA55BmB,AA85BnB,eA96Ba,AAg7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA16BsB,CAu7BtB,AAjCF,oEAuBG,WAp6Be,AAq6Bf,eA76BwB,CA86BxB,AAzBH,mEA4BG,eAAc,AAEd,WA36Be,AA46Bf,eAr7BqB,CAs7BrB,AAhCH,8DAoCE,6BAx7BkB,AA07BlB,YAAW,AACX,gBAAe,AAEf,WA57BgB,AA67BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_midnight.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #222 !default; //background color of tabulator\r\n$borderColor:#333 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#333 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default; //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#666 !default; //table row background color\r\n$rowAltBackgroundColor:#444 !default; //table row background color\r\n$rowBorderColor:#888 !default; //table border color\r\n$rowTextColor:#fff !default; //table text color\r\n$rowHoverBackground:#999 !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #000 !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #888 !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#999 !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#333 !default; //border to tabulator\r\n$footerTextColor:#333 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#fff !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput, select{\r\n\t\t\t\t\tborder:1px solid #999;\r\n\t\t\t\t\tbackground: #444;\r\n\t\t\t\t\tcolor: #fff;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#eee;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\t\t\t\tcolor:$headerTextColor;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#ccc;\r\n\t\tfont-weight:bold;\r\n\t\tcolor:#333;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowTextColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowBackgroundColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowAltBackgroundColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$editBoxColor;\r\n\t\t\tbackground:$rowBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ border: 1px solid #fff;
+ background-color: #fff;
+ overflow: hidden;
+ font-size: 16px;
+ text-align: left;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 3px solid #3759D7;
+ margin-bottom: 4px;
+ background-color: #fff;
+ color: #3759D7;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ padding-left: 10px;
+ font-size: 1.1em;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ border-right: 2px solid #fff;
+ background-color: #fff;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #3759D7;
+ background: #e6e6e6;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 4px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #3759D7;
+ padding: 1px;
+ background: #fff;
+ font-size: 1em;
+ color: #3759D7;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 9px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #b7c3f1;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 2px solid #3759D7;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #e6e6e6 !important;
+ border: 1px solid #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #e6e6e6;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #b7c3f1;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #3759D7;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #3759D7;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ padding-left: 10px;
+ border-right: 2px solid #fff;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #fff;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ border-top: 2px solid #3759D7 !important;
+ background: white !important;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ padding-left: 0 !important;
+ background: white !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+ background: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #3759D7;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #f3f3f3;
+ white-space: nowrap;
+ overflow: visible;
+ color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #3759D7;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #3759D7;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 1px solid #999;
+ background-color: #fff;
+ text-align: right;
+ color: #3759D7;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: white !important;
+ border-top: 3px solid #3759D7 !important;
+ border-bottom: 2px solid #3759D7 !important;
+ border-bottom: 1px solid #fff;
+ border-top: 1px solid #fff;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: white !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell {
+ background: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+ border-bottom: none !important;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ color: #3759D7;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #3759D7;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ box-sizing: border-box;
+ min-height: 24px;
+ background-color: #3759D7;
+ padding-left: 10px !important;
+ margin-bottom: 2px;
+}
+
+.tabulator-row:nth-child(even) {
+ background-color: #627ce0;
+}
+
+.tabulator-row:nth-child(even) .tabulator-cell {
+ background-color: #fff;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selectable:hover .tabulator-cell {
+ background-color: #bbb;
+}
+
+.tabulator-row.tabulator-selected .tabulator-cell {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover .tabulator-cell {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ padding-left: 10px;
+ border-right: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #fff;
+ border-bottom: 1px solid #fff;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 16px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 6px 4px;
+ border-right: 2px solid #fff;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ background-color: #f3f3f3;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #fff;
+ border-bottom: 2px solid #fff;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #f3f3f3;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 2px solid #3759D7;
+ border-top: 2px solid #3759D7;
+ padding: 5px;
+ padding-left: 10px;
+ background: #8ca0e8;
+ font-weight: bold;
+ color: fff;
+ margin-bottom: 2px;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #3759D7;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #3759D7;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #3759D7;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #f3f3f3;
+ border: 1px solid #1D68CD;
+ font-size: 16px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #f3f3f3;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #f3f3f3;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #fff;
+ padding: 4px;
+ padding-top: 6px;
+ color: #333;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border:1px solid #fff;background-color:#fff;overflow:hidden;font-size:16px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3759d7;margin-bottom:4px;background-color:#fff;color:#3759d7;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;padding-left:10px;font-size:1.1em}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:2px solid #fff;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3759d7;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #3759d7;padding:1px;background:#fff;font-size:1em;color:#3759d7}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:2px solid #3759d7;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #fff}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #b7c3f1}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3759d7}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3759d7;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;border-top:2px solid #3759d7!important;background:#fff!important;border-top:1px solid #fff;border-bottom:1px solid #fff;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{padding-left:0!important;background:#fff!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3759d7;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#f3f3f3;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #3759d7}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #3759d7}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#3759d7;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#fff!important;border-top:3px solid #3759d7!important;border-bottom:2px solid #3759d7!important;border-bottom:1px solid #fff;border-top:1px solid #fff;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-cell{background:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none;border-bottom:none!important}.tabulator .tabulator-footer .tabulator-paginator{color:#3759d7;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#3759d7}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:24px;background-color:#3759d7;padding-left:10px!important;margin-bottom:2px}.tabulator-row:nth-child(2n){background-color:#627ce0}.tabulator-row:nth-child(2n) .tabulator-cell{background-color:#fff}.tabulator-row.tabulator-selectable:hover{cursor:pointer}.tabulator-row.tabulator-selectable:hover .tabulator-cell{background-color:#bbb}.tabulator-row.tabulator-selected .tabulator-cell{background-color:#9abcea}.tabulator-row.tabulator-selected:hover .tabulator-cell{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #fff;border-bottom:1px solid #fff;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{padding-left:10px;border-right:2px solid #fff}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #fff}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #fff;border-bottom:1px solid #fff}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:16px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px 4px;border-right:2px solid #fff;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;background-color:#f3f3f3}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #fff;border-bottom:2px solid #fff}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#f3f3f3;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:2px solid #3759d7;border-top:2px solid #3759d7;padding:5px;padding-left:10px;background:#8ca0e8;font-weight:700;color:fff;margin-bottom:2px;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3759d7;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3759d7;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3759d7}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#f3f3f3;border:1px solid #1d68cd;font-size:16px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#f3f3f3;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #fff;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_modern.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_modern.scss"],"names":[],"mappings":"AA+CA,WACC,kBAAkB,AAClB,sBA1CgB,AA2ChB,sBA5CqB,AA6CrB,gBAAe,AACf,eA5Ca,AA6Cb,gBAAgB,AAMhB,uBAAwB,CA+gBxB,AA3hBD,iFAiBI,cAAc,CACd,AAlBJ,kCAuBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAxBF,6BA4BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA7Ee,AA8Ef,kBAAiB,AACjB,sBAvEyB,AAwEzB,cAhFe,AAiFf,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,kBArDe,AAuDf,eAAgB,CAgQhB,AAjTF,qDAoDG,YAAY,CACZ,AArDH,4CAyDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BA9FoB,AA+FpB,sBAjGwB,AAkGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAyLhB,AAzPH,6DAmEI,kBAAkB,AAClB,yBAhHa,AAiHb,mBAA8C,AAC9C,mBAAoB,CACpB,AAvEJ,mEA2EI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAyCX,AAtHJ,wFAiFK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAgBrB,AAvGL,gHA2FM,sBAAsB,AACtB,WAAW,AAEX,yBA1IW,AA4IX,YAAW,AAEX,gBAAgB,AAEhB,cAAc,AACd,aAjJW,CAkJX,AAtGN,oFA2GK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,+BA/IqC,CAgJrC,AApHL,0FA6HK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,6BA5KY,AA6KZ,eAAgB,CAKhB,AAtIL,oHAoIM,iBAAiB,CACjB,AArIN,0FA6IK,YAAa,CACb,AA9IL,+DAmJI,kBAAkB,AAClB,mCAAgE,AAChE,qBAvLmB,CAwLnB,AAtJJ,qEA0JI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AA/KJ,8EAkKK,qBAAsB,CACtB,AAnKL,yEAsKK,cAAe,CACf,AAvKL,sFA2KM,QAAS,AACT,QAAS,CACT,AA7KN,oFAoLK,kBAAkB,CAClB,AArLL,qEAwLK,eAAc,AACd,wBAAoD,CACpD,AA1LL,uHA+LM,gBAAgB,AAChB,+BA5NoC,CA6NpC,AAjMN,sHAsMM,gBAAgB,AAChB,+BAnPW,CAoPX,AAxMN,uHA6MM,6BAzPW,AA0PX,kBAAmB,CACnB,AA/MN,+GAsNM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AA5NN,oHAiOM,wBAAyB,CACzB,AAlON,2GAuOM,gBAAe,AACf,gBAAgB,CAChB,AAzON,uIA6OO,gBAAe,AACf,mBAAmB,CACnB,AA/OP,uGAoPM,qBAAqB,CACrB,AArPN,+CA4PG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CAWX,AA5QH,qEAoQI,kBA1Qa,AA4Qb,2BA7RgB,CA8RhB,AAvQJ,sEA0QI,0BAjSgB,CAkShB,AA3QJ,qDA+QG,sBAAqB,AACrB,eAAc,AAEd,uCAAqD,AAErD,0BAAyD,AAgBzD,0BA3TiB,AA4TjB,6BAvUoB,AAyUpB,eAAgB,CAChB,AAxSH,oEAuRI,yBAA0B,AAE1B,yBAAyD,CASzD,AAlSJ,iGA4RK,YAAa,CACb,AA7RL,oFAgSK,eAAe,CACf,AAjSL,2DA2SG,cAAc,CAKd,AAhTH,iEA8SI,YAAa,CACb,AA/SJ,kCAqTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAyDjC,AAlXF,wCA4TG,YAAa,CACb,AA7TH,yDAiUG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxVH,wFAsUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1UJ,8DA+UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cAhYa,AAiYb,gBAAiB,AACjB,cAAe,CACf,AAvVJ,mDA4VG,kBAAiB,AACjB,qBAAoB,AACpB,yBAvXwB,AAwXxB,mBAAmB,AACnB,iBAAgB,AAChB,UAvXe,CAuYf,AAjXH,kFAqWK,gBAAiB,AACjB,4BAAwD,CASxD,AA/WL,sGAyWM,+BArZW,CAsZX,AA1WN,yGA6WM,4BAzZW,CA0ZX,AA9WN,wCAuXE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArYF,6CA8XG,OAAM,AACN,UAAU,CACV,AAhYH,8CAmYG,gBAAgB,CAChB,AApYH,6BA0YE,iBAAgB,AAChB,0BApZwB,AAqZxB,sBAxZyB,AAyZzB,iBAAgB,AAChB,cA1be,AA2bf,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CA0FpB,AAhfF,qDAyZG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,0BAAyD,AAEzD,uCAAqD,AACrD,0CAAwD,AAcxD,6BAvciB,AAwcjB,0BAxciB,AA0cjB,eAAgB,CAOhB,AA1bH,oEAqaI,yBAAyD,CASzD,AA9aJ,iGAwaK,YAAa,CACb,AAzaL,oFA4aK,eAAe,CACf,AA7aL,gEAsbI,mBAAkB,AAClB,mBAAkB,AAClB,4BAA6B,CAC7B,AAzbJ,kDA8bG,cA1ec,AA2ed,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AAlcH,kDAscG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBArdoB,AAsdpB,iBAAiB,CACjB,AA7cH,8CAidG,YAAY,CACZ,AAldH,6CAsdG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAreoB,AAsepB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AA/eH,oDAieI,aA7gBa,CA8gBb,AAleJ,sDAqeI,UAAU,CACV,AAteJ,kEA0eK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA7eL,6BAofE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA1hBF,mDAmgBG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAzhBH,qEAghBI,sBAAqB,AACrB,UAAU,CACV,AAlhBJ,mEAshBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAGlB,sBAAsB,AACtB,gBAA0C,AAE1C,yBAjlBgB,AAmlBhB,4BAAqC,AAErC,iBAAkB,CAqXlB,AAhYD,6BAcE,wBAhjBqC,CAqjBrC,AAnBF,6CAiBG,qBAvkBwB,CAwkBxB,AAlBH,0CAsBE,cAAe,CAKf,AA3BF,0DAyBG,qBA5kBqB,CA6kBrB,AA1BH,kDA+BG,wBAhlB4B,CAilB5B,AAhCH,wDAqCG,yBArlBiC,AAslBjC,cAAe,CACf,AAvCH,gCA2CE,kBAAkB,AAElB,0BAlmBkB,AAmmBlB,6BAnmBkB,AAqmBlB,8BAA+B,AAC/B,UAAU,CACV,AAlDF,4CAsDE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApEF,iDA6DG,MAAK,AACL,WAAW,CACX,AA/DH,kDAkEG,gBAAgB,CAChB,AAnEH,iCAuEE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CAUX,AAtFF,uDA+EG,kBAnnBc,AAonBd,2BAroBiB,CAsoBjB,AAjFH,wDAoFG,0BAzoBiB,CA0oBjB,AArFH,8CAyFE,sBAAqB,AAErB,YAAW,AAEX,0BAlpBkB,AAmpBlB,4BAnpBkB,CAsqBlB,AAjHF,oDAiGG,YAAY,CACZ,AAlGH,oDAqGG,cA1qBW,CAqrBX,AAhHH,0DAyGK,iBAAkB,CAKlB,AA9GL,wEA4GM,kBAAkB,CAClB,AA7GN,+BAqHE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,gBAAe,AACf,4BA9qBkB,AA+qBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,uBAAsB,AAEtB,wBAtrByB,CA+2BzB,AAxTF,iDAkIG,yBAhrBkB,AAirBlB,SAAU,CAMV,AAzIH,+GAsII,WAAU,AACV,sBAAsB,CACtB,AAxIJ,yDA4IG,qBAzrBgB,CAgsBhB,AAnJH,+HA8II,WAAU,AACV,uBAAsB,AAEtB,UA9rBe,CA+rBf,AAlJJ,6EAwJI,YAAa,CACb,AAzJJ,oDA+JG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AAnLH,8EAyKI,SAAS,CAST,AAlLJ,wGA6KK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAjLL,2DAsLG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAtvBiB,AAuvBjB,4BAvvBiB,CAwvBjB,AAnMH,4DAuMG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBArwBe,AAswBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAxQH,kEAwNI,eAAc,AACd,yBAA4B,CAC5B,AA1NJ,kGA6NI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAhPJ,wGAsOK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlyBa,CAmyBb,AA/OL,gGAmPI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7yBc,CA0zBd,AAtQJ,sGA4PK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxzBa,CAyzBb,AArQL,qEA2QG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,cAj1BwB,AAk1BxB,gBAAgB,AAChB,eAAe,CAmBf,AA/SH,2EA+RI,UAAU,CACV,AAhSJ,sHAoSK,eAAe,CACf,AArSL,sOA6SI,YAAY,CACZ,AA9SJ,wDAkTG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAvTH,+BA6TE,sBAAqB,AACrB,gCAx4Be,AAy4Bf,6BAz4Be,AA04Bf,YAAW,AACX,kBAAiB,AACjB,mBAAiC,AACjC,gBAAgB,AAChB,UAAS,AACT,kBAAkB,AAElB,cAAe,CAwDf,AA/XF,qCA0UG,eAAc,AACd,+BAA+B,CAC/B,AA5UH,wEAiVI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA95Ba,AA+5Bb,eAAgB,CAChB,AAtVJ,uDA0VG,iBAAiB,CACjB,AA3VH,uDA8VG,iBAAiB,CACjB,AA/VH,uDAkWG,iBAAiB,CACjB,AAnWH,uDAsWG,iBAAiB,CACjB,AAvWH,uDA0WG,kBAAkB,CAClB,AA3WH,gDAgXG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAj8Bc,AAk8Bd,qBAAqB,CACrB,AAzXH,oCA4XG,iBAAgB,AAChB,aAv8Bc,CAw8Bd,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,mBAh8B0B,AAi8B1B,yBAx7BoB,AA07BpB,eAj9Ba,AAm9Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA18BgB,CAu9BhB,AAjCF,oEAuBG,cAh9BwB,AAi9BxB,kBAx8BkB,CAy8BlB,AAzBH,mEA4BG,eAAc,AAEd,cAv9BwB,AAw9BxB,kBA/8BkB,CAg9BlB,AAhCH,8DAoCE,6BA39BkB,AA69BlB,YAAW,AACX,gBAAe,AAEf,WA/9BgB,AAg+BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_modern.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n\n\r\n$primary: #3759D7 !default; //the base text color from which the rest of the theme derives\r\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#fff !default; //border to tabulator\r\n$textSize:16px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:$primary !default; //header text colour\r\n$headerBorderColor:#fff !default; //header border color\r\n$headerSeperatorColor:$primary !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: $primary !default;\r\n$sortArrowInactive: lighten($primary, 30%) !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#f3f3f3 !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#fff !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:$primary !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:$primary !default; //footer bottom active text color\r\n\r\n$handleWidth:10px !default; //width of the row handle\r\n$handleColor: $primary !default; //color for odd numbered rows\r\n$handleColorAlt: lighten($primary, 10%) !default; //color for even numbered rows\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tborder: 1px solid $borderColor;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tmargin-bottom:4px;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\tpadding-left:$handleWidth;\r\n\r\n\t\tfont-size: 1.1em;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:2px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid $primary;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\r\n\t\t\t\t\t\tfont-size: 1em;\r\n\t\t\t\t\t\tcolor: $primary;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t\twidth : 0;\r\n\t\t\t\t\t\theight: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tpadding-left: $handleWidth;\r\n\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\tborder-top:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tpadding-left: 0 !important;\r\n\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$primary;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $headerSeperatorColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\tborder-top:3px solid $headerSeperatorColor !important;\r\n\t\t\tborder-bottom:2px solid $headerSeperatorColor !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-cell{\r\n\t\t\t\t\tbackground:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t\tborder-bottom:none !important;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\r\n\tbackground-color: $handleColor;\r\n\r\n\tpadding-left: $handleWidth !important;\r\n\r\n\tmargin-bottom: 2px;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $handleColorAlt;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color: $rowAltBackgroundColor;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tcursor: pointer;\r\n\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowHoverBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackground;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\t.tabulator-cell{\r\n\t\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\t\tcursor: pointer;\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tpadding-left: $handleWidth;\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px 4px;\r\n\t\tborder-right:2px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\tbackground-color: $rowBackgroundColor;\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:2px solid $primary;\r\n\t\tborder-top:2px solid $primary;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:lighten($primary, 20%);\r\n\t\tfont-weight:bold;\r\n\t\tcolor:fff;\r\n\t\tmargin-bottom: 2px;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$primary;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $editBoxColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ background-color: #fff;
+ overflow: hidden;
+ font-size: 14px;
+ text-align: left;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 1px solid #999;
+ background-color: #fff;
+ color: #555;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ border-right: 1px solid #ddd;
+ background-color: #fff;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #999;
+ background: #e6e6e6;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 4px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 9px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #e6e6e6 !important;
+ border: 1px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #e6e6e6;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #666;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #666;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: #f2f2f2 !important;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #999;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #000;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ white-space: nowrap;
+ overflow: visible;
+ color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top {
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom {
+ border-top: 2px solid #ddd;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ border-top: 1px solid #999;
+ background-color: #fff;
+ text-align: right;
+ color: #555;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -5px -10px 5px -10px;
+ text-align: left;
+ background: #f2f2f2 !important;
+ border-bottom: 1px solid #fff;
+ border-top: 1px solid #ddd;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: #f2f2f2 !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator {
+ color: #555;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: rgba(255, 255, 255, 0.2);
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #d00;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ background-color: #fff;
+ border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row:nth-child(even) {
+ background-color: #fff;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #bbb;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #ddd;
+ border-bottom: 1px solid #ddd;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 4px;
+ border-right: 1px solid #ddd;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell:last-of-type {
+ border-right: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #666;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #ddd;
+ border-bottom: 2px solid #ddd;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-bottom: 1px solid #999;
+ border-right: 1px solid #ddd;
+ border-top: 1px solid #999;
+ padding: 5px;
+ padding-left: 10px;
+ background: #fafafa;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: rgba(0, 0, 0, 0.1);
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #666;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #666;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #666;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #ddd;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #ddd;
+ padding: 4px;
+ padding-top: 6px;
+ color: #333;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;background-color:#fff;overflow:hidden;font-size:14px;text-align:left;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:1px solid #999;background-color:#fff;color:#555;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #ddd;background-color:#fff;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #999;background:#e6e6e6;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:4px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:9px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#e6e6e6!important;border:1px solid #ddd}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#e6e6e6}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #666}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #666;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:#f2f2f2!important;border-top:1px solid #ddd;border-bottom:1px solid #999;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#000;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#f2f2f2!important}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-top{border-bottom:2px solid #ddd}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs.tabulator-calcs-bottom{border-top:2px solid #ddd}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-footer{padding:5px 10px;border-top:1px solid #999;background-color:#fff;text-align:right;color:#555;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-5px -10px 5px;text-align:left;background:#f2f2f2!important;border-bottom:1px solid #fff;border-top:1px solid #ddd;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#f2f2f2!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator{color:#555;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:hsla(0,0%,100%,.2)}.tabulator .tabulator-footer .tabulator-page.active{color:#d00}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;border-bottom:1px solid #ddd}.tabulator-row,.tabulator-row:nth-child(2n){background-color:#fff}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #ddd;border-bottom:1px solid #ddd;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #ddd}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #ddd}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #ddd;border-bottom:1px solid #ddd}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:4px;border-right:1px solid #ddd;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#666}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #ddd;border-bottom:2px solid #ddd}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-bottom:1px solid #999;border-right:1px solid #ddd;border-top:1px solid #999;padding:5px;padding-left:10px;background:#fafafa;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:rgba(0,0,0,.1)}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #666;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #666;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#666}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #ddd;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #ddd;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_simple.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_simple.scss"],"names":[],"mappings":"AA0CA,WACC,kBAAkB,AAClB,sBAxCqB,AAyCrB,gBAAe,AACf,eAxCa,AAyCb,gBAAgB,AAMhB,uBAAwB,CAwfxB,AAngBD,iFAgBI,cAAc,CACd,AAjBJ,kCAsBE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAvBF,6BA2BE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,6BA9DwB,AA+DxB,sBAlEyB,AAmEzB,WAlEmB,AAmEnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAoPpB,AA/RF,qDA8CG,YAAY,CACZ,AA/CH,4CAmDG,qBAAoB,AACpB,kBAAiB,AACjB,sBAAqB,AACrB,4BArFoB,AAsFpB,sBAxFwB,AAyFxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAuLhB,AAjPH,6DA6DI,kBAAkB,AAClB,sBA5FsB,AA6FtB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjEJ,mEAqEI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7GJ,wFA2EK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9FL,gHAqFM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7FN,oFAkGK,qBAAqB,AACrB,kBAAkB,AAClB,QAAO,AACP,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAnImB,CAoInB,AA3GL,0FAoHK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BAtJkB,AAuJlB,eAAgB,CAKhB,AA7HL,oHA2HM,iBAAiB,CACjB,AA5HN,0FAoIK,YAAa,CACb,AArIL,+DA0II,kBAAkB,AAClB,mCAA+D,AAC/D,qBA3KmB,CA4KnB,AA7IJ,qEAiJI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AAtKJ,8EAyJK,qBAAsB,CACtB,AA1JL,yEA6JK,cAAe,CACf,AA9JL,sFAkKO,QAAS,AACT,QAAS,CACV,AApKN,oFA4KK,kBAAkB,CAClB,AA7KL,qEAgLK,eAAc,AACd,wBAAoD,CACpD,AAlLL,uHAuLM,gBAAgB,AAChB,4BAjNkB,CAkNlB,AAzLN,sHA8LM,gBAAgB,AAChB,4BAzNgB,CA0NhB,AAhMN,uHAqMM,0BA/NgB,AAgOhB,kBAAmB,CACnB,AAvMN,+GA8MM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AApNN,oHAyNM,wBAAyB,CACzB,AA1NN,2GA+NM,gBAAe,AACf,gBAAgB,CAChB,AAjON,uIAqOO,gBAAe,AACf,mBAAmB,CACnB,AAvOP,uGA4OM,qBAAqB,CACrB,AA7ON,+CAoPG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AAlQH,qEA4PI,2BAhRgB,CAiRhB,AA7PJ,sEAgQI,0BApRgB,CAqRhB,AAjQJ,qDAqQG,sBAAqB,AACrB,eAAc,AAEd,6BAAwD,AAUxD,0BAtSiB,AAuSjB,6BAjTuB,AAmTvB,eAAgB,CAChB,AAtRH,oEA2QI,4BAAwD,CAKxD,AAhRJ,iGA8QK,YAAa,CACb,AA/QL,2DAyRG,cAAc,CAKd,AA9RH,iEA4RI,YAAa,CACb,AA7RJ,kCAqSE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CA0DjC,AAnWF,wCA4SG,YAAa,CACb,AA7SH,yDAiTG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAxUH,wFAsTI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AA1TJ,8DA+TI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,WAAU,AACV,gBAAiB,AACjB,cAAe,CACf,AAvUJ,mDA4UG,kBAAiB,AACjB,qBAAoB,AACpB,sBApWqB,AAqWrB,mBAAmB,AACnB,iBAAgB,AAChB,UApWe,CAqXf,AAlWH,kFAqVK,gBAAiB,AACjB,4BAAwD,CASxD,AA/VL,sGAyVM,4BA7Wc,CA8Wd,AA1VN,yGA6VM,yBAjXc,CAkXd,AA9VN,wCAuWE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AArXF,6CA8WG,OAAM,AACN,UAAU,CACV,AAhXH,8CAmXG,gBAAgB,CAChB,AApXH,6BA0XE,iBAAgB,AAChB,0BAhYwB,AAiYxB,sBApYyB,AAqYzB,iBAAgB,AAChB,WArYmB,AAsYnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkFpB,AAxdF,qDAyYG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAAwD,AAUxD,6BAjawB,AAkaxB,0BA9aiB,AAgbjB,eAAgB,CAMhB,AAlaH,oEAkZI,4BAAwD,CAKxD,AAvZJ,iGAqZK,YAAa,CACb,AAtZL,gEA+ZI,mBAAkB,AAClB,kBAAkB,CAClB,AAjaJ,kDAsaG,WA7akB,AA8alB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CACjB,AA1aH,kDA8aG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzboB,AA0bpB,iBAAiB,CACjB,AArbH,8CAybG,YAAY,CACZ,AA1bH,6CA8bG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBAzcoB,AA0cpB,kBAAiB,AAEjB,6BAA+B,CAiB/B,AAvdH,oDAycI,UA7cmB,CA8cnB,AA1cJ,sDA6cI,UAAU,CACV,AA9cJ,kEAkdK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AArdL,6BA4dE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AAlgBF,mDA2eG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AAjgBH,qEAwfI,sBAAqB,AACrB,UAAU,CACV,AA1fJ,mEA8fI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AAEtB,gBAA0C,AAE1C,4BAhiBmB,CAy4BnB,AA/WD,4CAKC,qBAjiBuB,CAsiBtB,AAVF,0CAaE,sBAriBsB,AAsiBtB,cAAe,CACf,AAfF,kCAkBE,wBAxiB6B,CAyiB7B,AAnBF,wCAsBE,yBA3iBkC,AA4iBlC,cAAe,CACf,AAxBF,gCA2BE,kBAAkB,AAElB,0BAvjBkB,AAwjBlB,6BAxjBkB,AA0jBlB,8BAA+B,AAC/B,UAAU,CACV,AAlCF,4CAsCE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AApDF,iDA6CG,MAAK,AACL,WAAW,CACX,AA/CH,kDAkDG,gBAAgB,CAChB,AAnDH,iCAuDE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AArEF,uDA+DG,2BAzlBiB,CA0lBjB,AAhEH,wDAmEG,0BA7lBiB,CA8lBjB,AApEH,8CAwEE,sBAAqB,AAErB,YAAW,AAEX,0BAtmBkB,AAumBlB,4BAvmBkB,CA0nBlB,AAhGF,oDAgFG,YAAY,CACZ,AAjFH,oDAoFG,cA9nBW,CAyoBX,AA/FH,0DAwFK,iBAAkB,CAKlB,AA7FL,wEA2FM,kBAAkB,CAClB,AA5FN,+BAoGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BAloBkB,AAmoBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA6LtB,AAzSF,4CA+GG,iBAAkB,CAClB,AAhHH,iDAmHG,yBAroBkB,AAsoBlB,SAAU,CAMV,AA1HH,+GAuHI,WAAU,AACV,sBAAsB,CACtB,AAzHJ,yDA6HG,qBA9oBgB,CAqpBhB,AApIH,+HA+HI,WAAU,AACV,uBAAsB,AAEtB,UAnpBe,CAopBf,AAnIJ,6EAyII,YAAa,CACb,AA1IJ,oDAgJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AApKH,8EA0JI,SAAS,CAST,AAnKJ,wGA8JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,eAAe,CACf,AAlKL,2DAuKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BA5sBiB,AA6sBjB,4BA7sBiB,CA8sBjB,AApLH,4DAwLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBA3tBe,AA4tBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AAzPH,kEAyMI,eAAc,AACd,yBAA4B,CAC5B,AA3MJ,kGA8MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAjOJ,wGAuNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxvBa,CAyvBb,AAhOL,gGAoOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eAnwBc,CAgxBd,AAvPJ,sGA6OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eA9wBa,CA+wBb,AAtPL,qEA4PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAvyBqB,AAwyBrB,gBAAgB,AAChB,eAAe,CAmBf,AAhSH,2EAgRI,UAAU,CACV,AAjRJ,sHAqRK,eAAe,CACf,AAtRL,sOA8RI,YAAY,CACZ,AA/RJ,wDAmSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAxSH,+BA8SE,sBAAqB,AACrB,6BAA4B,AAC5B,4BA10BkB,AA20BlB,0BAAyB,AACzB,YAAW,AACX,kBAAiB,AACjB,mBAAkB,AAClB,gBAAgB,AAEhB,cAAe,CAuDf,AA9WF,qCA0TG,eAAc,AACd,+BAA+B,CAC/B,AA5TH,wEAgUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,0BAn2BkB,AAo2BlB,eAAgB,CAChB,AArUJ,uDAyUG,iBAAiB,CACjB,AA1UH,uDA6UG,iBAAiB,CACjB,AA9UH,uDAiVG,iBAAiB,CACjB,AAlVH,uDAqVG,iBAAiB,CACjB,AAtVH,uDAyVG,kBAAkB,CAClB,AA1VH,gDA+VG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,2BAt4BmB,AAu4BnB,qBAAqB,CACrB,AAxWH,oCA2WG,iBAAgB,AAChB,UAAU,CACV,AAIH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBAp5BuB,AAq5BvB,sBAn5BmB,AAq5BnB,eAr6Ba,AAu6Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UA95BgB,CA26BhB,AAjCF,oEAuBG,WAp6BqB,AAq6BrB,kBA35BkB,CA45BlB,AAzBH,mEA4BG,eAAc,AAEd,WA36BqB,AA46BrB,kBAl6BkB,CAm6BlB,AAhCH,8DAoCE,6BA/6BkB,AAi7BlB,YAAW,AACX,gBAAe,AAEf,WAn7BgB,AAo7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_simple.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#999 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#fff !default; //border to tabulator\r\n$headerTextColor:#555 !default; //header text colour\r\n$headerBorderColor:#ddd !default; //header border color\r\n$headerSeperatorColor:#999 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #666 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#fff !default; //table row background color\r\n$rowBorderColor:#ddd !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#fff !default; //border to tabulator\r\n$footerTextColor:#555 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#999 !default; //footer bottom seperator color\r\n$footerActiveColor:#d00 !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\tbackground-color: $backgroundColor;\r\n\toverflow:hidden;\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:4px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:9px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%) !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t width : 0;\r\n\t\t\t\t\t height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $headerSeperatorColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:#000;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:darken($rowAltBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t\t&.tabulator-calcs-top{\r\n\t\t\t\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-calcs-bottom{\r\n\t\t\t\t\t\tborder-top:2px solid $rowBorderColor;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tborder-top:1px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-5px -10px 5px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:darken($footerBackgroundColor, 5%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-bottom:1px solid $footerBackgroundColor;\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:rgba(255,255,255,.2);\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t&:nth-child(even){\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:4px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\t\t&:last-of-type{\r\n\t\t\tborder-right: none;\r\n\t\t}\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:#666;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-bottom:1px solid #999;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #999;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:#fafafa;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:rgba(0,0,0,.1);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:#666;\r\n\t\t}\r\n\t}\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator {
+ position: relative;
+ border-bottom: 5px solid #222;
+ background-color: #fff;
+ font-size: 14px;
+ text-align: left;
+ overflow: hidden;
+ -ms-transform: translatez(0);
+ transform: translatez(0);
+}
+
+.tabulator[tabulator-layout="fitDataFill"] .tabulator-tableHolder .tabulator-table {
+ min-width: 100%;
+}
+
+.tabulator[tabulator-layout="fitColumns"] .tabulator-row .tabulator-cell:last-of-type {
+ border-right: none;
+}
+
+.tabulator.tabulator-block-select {
+ -webkit-user-select: none;
+ -moz-user-select: none;
+ -ms-user-select: none;
+ user-select: none;
+}
+
+.tabulator .tabulator-header {
+ position: relative;
+ box-sizing: border-box;
+ width: 100%;
+ border-bottom: 3px solid #3FB449;
+ background-color: #222;
+ color: #fff;
+ font-weight: bold;
+ white-space: nowrap;
+ overflow: hidden;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-header.tabulator-header-hidden {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ border-right: 1px solid #aaa;
+ background-color: #222;
+ text-align: left;
+ vertical-align: bottom;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-moving {
+ position: absolute;
+ border: 1px solid #3FB449;
+ background: #090909;
+ pointer-events: none;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content {
+ box-sizing: border-box;
+ position: relative;
+ padding: 8px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title {
+ box-sizing: border-box;
+ width: 100%;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ vertical-align: bottom;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor {
+ box-sizing: border-box;
+ width: 100%;
+ border: 1px solid #999;
+ padding: 1px;
+ background: #fff;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow {
+ display: inline-block;
+ position: absolute;
+ top: 14px;
+ right: 8px;
+ width: 0;
+ height: 0;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols {
+ position: relative;
+ display: -ms-flexbox;
+ display: flex;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child {
+ margin-right: -1px;
+}
+
+.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.ui-sortable-helper {
+ position: absolute;
+ background-color: #222 !important;
+ border: 1px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter {
+ position: relative;
+ box-sizing: border-box;
+ margin-top: 2px;
+ width: 100%;
+ text-align: center;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea {
+ height: auto !important;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg {
+ margin-top: 3px;
+}
+
+.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear {
+ width: 0;
+ height: 0;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title {
+ padding-right: 25px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover {
+ cursor: pointer;
+ background-color: #090909;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="none"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #bbb;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="asc"] .tabulator-col-content .tabulator-arrow {
+ border-top: none;
+ border-bottom: 6px solid #3FB449;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort="desc"] .tabulator-col-content .tabulator-arrow {
+ border-top: 6px solid #3FB449;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title {
+ -ms-writing-mode: tb-rl;
+ writing-mode: vertical-rl;
+ text-orientation: mixed;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title {
+ -ms-transform: rotate(180deg);
+ transform: rotate(180deg);
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title {
+ padding-right: 0;
+ padding-top: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title {
+ padding-right: 0;
+ padding-bottom: 20px;
+}
+
+.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow {
+ right: calc(50% - 6px);
+}
+
+.tabulator .tabulator-header .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ z-index: 10;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder {
+ box-sizing: border-box;
+ min-width: 400%;
+ background: #3c3c3c !important;
+ border-top: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row {
+ background: #3c3c3c !important;
+}
+
+.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder {
+ min-width: 400%;
+}
+
+.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty {
+ display: none;
+}
+
+.tabulator .tabulator-tableHolder {
+ position: relative;
+ width: 100%;
+ white-space: nowrap;
+ overflow: auto;
+ -webkit-overflow-scrolling: touch;
+}
+
+.tabulator .tabulator-tableHolder:focus {
+ outline: none;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder {
+ box-sizing: border-box;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ width: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode="virtual"] {
+ position: absolute;
+ top: 0;
+ left: 0;
+ height: 100%;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-placeholder span {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px;
+ color: #3FB449;
+ font-weight: bold;
+ font-size: 20px;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table {
+ position: relative;
+ display: inline-block;
+ background-color: #fff;
+ white-space: nowrap;
+ overflow: visible;
+ color: #333;
+}
+
+.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs {
+ font-weight: bold;
+ background: #484848 !important;
+ color: #fff;
+}
+
+.tabulator .tabulator-footer {
+ padding: 5px 10px;
+ padding-top: 8px;
+ border-top: 3px solid #3FB449;
+ background-color: #222;
+ text-align: right;
+ color: #222;
+ font-weight: bold;
+ white-space: nowrap;
+ -ms-user-select: none;
+ user-select: none;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder {
+ box-sizing: border-box;
+ width: calc(100% + 20px);
+ margin: -8px -10px 8px -10px;
+ text-align: left;
+ background: #3c3c3c !important;
+ border-bottom: 1px solid #aaa;
+ overflow: hidden;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row {
+ background: #3c3c3c !important;
+ color: #fff !important;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle {
+ display: none;
+}
+
+.tabulator .tabulator-footer .tabulator-calcs-holder:only-child {
+ margin-bottom: -5px;
+ border-bottom: none;
+}
+
+.tabulator .tabulator-footer .tabulator-paginator label {
+ color: #fff;
+}
+
+.tabulator .tabulator-footer .tabulator-page-size {
+ display: inline-block;
+ margin: 0 5px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+}
+
+.tabulator .tabulator-footer .tabulator-pages {
+ margin: 0 7px;
+}
+
+.tabulator .tabulator-footer .tabulator-page {
+ display: inline-block;
+ margin: 0 2px;
+ padding: 2px 5px;
+ border: 1px solid #aaa;
+ border-radius: 3px;
+ background: #fff;
+ color: #222;
+ font-family: inherit;
+ font-weight: inherit;
+ font-size: inherit;
+}
+
+.tabulator .tabulator-footer .tabulator-page.active {
+ color: #3FB449;
+}
+
+.tabulator .tabulator-footer .tabulator-page:disabled {
+ opacity: .5;
+}
+
+.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+ color: #fff;
+}
+
+.tabulator .tabulator-col-resize-handle {
+ position: absolute;
+ right: 0;
+ top: 0;
+ bottom: 0;
+ width: 5px;
+}
+
+.tabulator .tabulator-col-resize-handle.prev {
+ left: 0;
+ right: auto;
+}
+
+.tabulator .tabulator-col-resize-handle:hover {
+ cursor: ew-resize;
+}
+
+.tabulator .tabulator-loader {
+ position: absolute;
+ display: -ms-flexbox;
+ display: flex;
+ -ms-flex-align: center;
+ align-items: center;
+ top: 0;
+ left: 0;
+ z-index: 100;
+ height: 100%;
+ width: 100%;
+ background: rgba(0, 0, 0, 0.4);
+ text-align: center;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg {
+ display: inline-block;
+ margin: 0 auto;
+ padding: 10px 20px;
+ border-radius: 10px;
+ background: #fff;
+ font-weight: bold;
+ font-size: 16px;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading {
+ border: 4px solid #333;
+ color: #000;
+}
+
+.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error {
+ border: 4px solid #D00;
+ color: #590000;
+}
+
+.tabulator-row {
+ position: relative;
+ box-sizing: border-box;
+ min-height: 22px;
+ background-color: #fff;
+}
+
+.tabulator-row.tabulator-row-even {
+ background-color: #EFEFEF;
+}
+
+.tabulator-row.tabulator-selectable:hover {
+ background-color: #bbb;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-selected {
+ background-color: #9ABCEA;
+}
+
+.tabulator-row.tabulator-selected:hover {
+ background-color: #769BCC;
+ cursor: pointer;
+}
+
+.tabulator-row.tabulator-row-moving {
+ border: 1px solid #000;
+ background: #fff;
+}
+
+.tabulator-row.tabulator-moving {
+ position: absolute;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+ pointer-events: none !important;
+ z-index: 15;
+}
+
+.tabulator-row .tabulator-row-resize-handle {
+ position: absolute;
+ right: 0;
+ bottom: 0;
+ left: 0;
+ height: 5px;
+}
+
+.tabulator-row .tabulator-row-resize-handle.prev {
+ top: 0;
+ bottom: auto;
+}
+
+.tabulator-row .tabulator-row-resize-handle:hover {
+ cursor: ns-resize;
+}
+
+.tabulator-row .tabulator-frozen {
+ display: inline-block;
+ position: absolute;
+ background-color: inherit;
+ z-index: 10;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-left {
+ border-right: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-frozen.tabulator-frozen-right {
+ border-left: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse {
+ box-sizing: border-box;
+ padding: 5px;
+ border-top: 1px solid #aaa;
+ border-bottom: 1px solid #aaa;
+}
+
+.tabulator-row .tabulator-responsive-collapse:empty {
+ display: none;
+}
+
+.tabulator-row .tabulator-responsive-collapse table {
+ font-size: 14px;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td {
+ position: relative;
+}
+
+.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type {
+ padding-right: 10px;
+}
+
+.tabulator-row .tabulator-cell {
+ display: inline-block;
+ position: relative;
+ box-sizing: border-box;
+ padding: 6px;
+ border-right: 1px solid #aaa;
+ vertical-align: middle;
+ white-space: nowrap;
+ overflow: hidden;
+ text-overflow: ellipsis;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing {
+ border: 1px solid #1D68CD;
+ padding: 0;
+}
+
+.tabulator-row .tabulator-cell.tabulator-editing input, .tabulator-row .tabulator-cell.tabulator-editing select {
+ border: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail {
+ border: 1px solid #dd0000;
+}
+
+.tabulator-row .tabulator-cell.tabulator-validation-fail input, .tabulator-row .tabulator-cell.tabulator-validation-fail select {
+ border: 1px;
+ background: transparent;
+ color: #dd0000;
+}
+
+.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box {
+ width: 80%;
+}
+
+.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar {
+ width: 100%;
+ height: 3px;
+ margin-top: 2px;
+ background: #3FB449;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-branch {
+ display: inline-block;
+ vertical-align: middle;
+ height: 9px;
+ width: 7px;
+ margin-top: -9px;
+ margin-right: 5px;
+ border-bottom-left-radius: 1px;
+ border-left: 2px solid #aaa;
+ border-bottom: 2px solid #aaa;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -ms-flex-align: center;
+ align-items: center;
+ vertical-align: middle;
+ height: 11px;
+ width: 11px;
+ margin-right: 5px;
+ border: 1px solid #333;
+ border-radius: 2px;
+ background: rgba(0, 0, 0, 0.1);
+ overflow: hidden;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover {
+ cursor: pointer;
+ background: rgba(0, 0, 0, 0.2);
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: transparent;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand {
+ display: inline-block;
+ position: relative;
+ height: 7px;
+ width: 1px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after {
+ position: absolute;
+ content: "";
+ left: -3px;
+ top: 3px;
+ height: 1px;
+ width: 7px;
+ background: #333;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle {
+ display: -ms-inline-flexbox;
+ display: inline-flex;
+ -ms-flex-align: center;
+ align-items: center;
+ -ms-flex-pack: center;
+ justify-content: center;
+ -moz-user-select: none;
+ -khtml-user-select: none;
+ -webkit-user-select: none;
+ -o-user-select: none;
+ height: 15px;
+ width: 15px;
+ border-radius: 20px;
+ background: #666;
+ color: #fff;
+ font-weight: bold;
+ font-size: 1.1em;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover {
+ opacity: .7;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close {
+ display: initial;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close {
+ display: none;
+}
+
+.tabulator-row .tabulator-cell .tabulator-traffic-light {
+ display: inline-block;
+ height: 14px;
+ width: 14px;
+ border-radius: 14px;
+}
+
+.tabulator-row.tabulator-group {
+ box-sizing: border-box;
+ border-right: 1px solid #aaa;
+ border-top: 1px solid #000;
+ border-bottom: 2px solid #3FB449;
+ padding: 5px;
+ padding-left: 10px;
+ background: #222;
+ color: #fff;
+ font-weight: bold;
+ min-width: 100%;
+}
+
+.tabulator-row.tabulator-group:hover {
+ cursor: pointer;
+ background-color: #090909;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow {
+ margin-right: 10px;
+ border-left: 6px solid transparent;
+ border-right: 6px solid transparent;
+ border-top: 6px solid #3FB449;
+ border-bottom: 0;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-1 {
+ padding-left: 30px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-2 {
+ padding-left: 50px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-3 {
+ padding-left: 70px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-4 {
+ padding-left: 90px;
+}
+
+.tabulator-row.tabulator-group.tabulator-group-level-5 {
+ padding-left: 110px;
+}
+
+.tabulator-row.tabulator-group .tabulator-arrow {
+ display: inline-block;
+ width: 0;
+ height: 0;
+ margin-right: 16px;
+ border-top: 6px solid transparent;
+ border-bottom: 6px solid transparent;
+ border-right: 0;
+ border-left: 6px solid #3FB449;
+ vertical-align: middle;
+}
+
+.tabulator-row.tabulator-group span {
+ margin-left: 10px;
+ color: #3FB449;
+}
+
+.tabulator-edit-select-list {
+ position: absolute;
+ display: inline-block;
+ box-sizing: border-box;
+ max-height: 200px;
+ background: #fff;
+ border: 1px solid #aaa;
+ font-size: 14px;
+ overflow-y: auto;
+ -webkit-overflow-scrolling: touch;
+ z-index: 10000;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item {
+ padding: 4px;
+ color: #333;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item.active {
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-item:hover {
+ cursor: pointer;
+ color: #fff;
+ background: #1D68CD;
+}
+
+.tabulator-edit-select-list .tabulator-edit-select-list-group {
+ border-bottom: 1px solid #aaa;
+ padding: 4px;
+ padding-top: 6px;
+ color: #333;
+ font-weight: bold;
+}
+
+.tabulator-print-fullscreen {
+ position: absolute;
+ top: 0;
+ bottom: 0;
+ left: 0;
+ right: 0;
+ z-index: 10000;
+}
+
+body.tabulator-print-fullscreen-hide > *:not(.tabulator-print-fullscreen) {
+ display: none !important;
+}
+
+.tabulator-print-table {
+ border-collapse: collapse;
+}
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+.tabulator{position:relative;border-bottom:5px solid #222;background-color:#fff;font-size:14px;text-align:left;overflow:hidden;transform:translatez(0)}.tabulator[tabulator-layout=fitDataFill] .tabulator-tableHolder .tabulator-table{min-width:100%}.tabulator[tabulator-layout=fitColumns] .tabulator-row .tabulator-cell:last-of-type{border-right:none}.tabulator.tabulator-block-select{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.tabulator .tabulator-header{position:relative;box-sizing:border-box;width:100%;border-bottom:3px solid #3fb449;background-color:#222;color:#fff;font-weight:700;white-space:nowrap;overflow:hidden;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-header.tabulator-header-hidden{display:none}.tabulator .tabulator-header .tabulator-col{display:inline-block;position:relative;box-sizing:border-box;border-right:1px solid #aaa;background-color:#222;text-align:left;vertical-align:bottom;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-moving{position:absolute;border:1px solid #3fb449;background:#090909;pointer-events:none}.tabulator .tabulator-header .tabulator-col .tabulator-col-content{box-sizing:border-box;position:relative;padding:8px}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title{box-sizing:border-box;width:100%;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;vertical-align:bottom}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-col-title .tabulator-title-editor{box-sizing:border-box;width:100%;border:1px solid #999;padding:1px;background:#fff}.tabulator .tabulator-header .tabulator-col .tabulator-col-content .tabulator-arrow{display:inline-block;position:absolute;top:14px;right:8px;width:0;height:0;border-left:6px solid transparent;border-right:6px solid transparent;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols{position:relative;display:-ms-flexbox;display:flex;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-col.tabulator-col-group .tabulator-col-group-cols .tabulator-col:last-child{margin-right:-1px}.tabulator .tabulator-header .tabulator-col:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator .tabulator-header .tabulator-col.ui-sortable-helper{position:absolute;background-color:#222!important;border:1px solid #aaa}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter{position:relative;box-sizing:border-box;margin-top:2px;width:100%;text-align:center}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter textarea{height:auto!important}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter svg{margin-top:3px}.tabulator .tabulator-header .tabulator-col .tabulator-header-filter input::-ms-clear{width:0;height:0}.tabulator .tabulator-header .tabulator-col.tabulator-sortable .tabulator-col-title{padding-right:25px}.tabulator .tabulator-header .tabulator-col.tabulator-sortable:hover{cursor:pointer;background-color:#090909}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=none] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #bbb}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=asc] .tabulator-col-content .tabulator-arrow{border-top:none;border-bottom:6px solid #3fb449}.tabulator .tabulator-header .tabulator-col.tabulator-sortable[aria-sort=desc] .tabulator-col-content .tabulator-arrow{border-top:6px solid #3fb449;border-bottom:none}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical .tabulator-col-content .tabulator-col-title{-ms-writing-mode:tb-rl;writing-mode:vertical-rl;text-orientation:mixed;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-col-vertical-flip .tabulator-col-title{transform:rotate(180deg)}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-col-title{padding-right:0;padding-top:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable.tabulator-col-vertical-flip .tabulator-col-title{padding-right:0;padding-bottom:20px}.tabulator .tabulator-header .tabulator-col.tabulator-col-vertical.tabulator-sortable .tabulator-arrow{right:calc(50% - 6px)}.tabulator .tabulator-header .tabulator-frozen{display:inline-block;position:absolute;z-index:10}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator .tabulator-header .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator .tabulator-header .tabulator-calcs-holder{box-sizing:border-box;min-width:400%;background:#3c3c3c!important;border-top:1px solid #aaa;overflow:hidden}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important}.tabulator .tabulator-header .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-header .tabulator-frozen-rows-holder{min-width:400%}.tabulator .tabulator-header .tabulator-frozen-rows-holder:empty{display:none}.tabulator .tabulator-tableHolder{position:relative;width:100%;white-space:nowrap;overflow:auto;-webkit-overflow-scrolling:touch}.tabulator .tabulator-tableHolder:focus{outline:none}.tabulator .tabulator-tableHolder .tabulator-placeholder{box-sizing:border-box;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;width:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder[tabulator-render-mode=virtual]{position:absolute;top:0;left:0;height:100%}.tabulator .tabulator-tableHolder .tabulator-placeholder span{display:inline-block;margin:0 auto;padding:10px;color:#3fb449;font-weight:700;font-size:20px}.tabulator .tabulator-tableHolder .tabulator-table{position:relative;display:inline-block;background-color:#fff;white-space:nowrap;overflow:visible;color:#333}.tabulator .tabulator-tableHolder .tabulator-table .tabulator-row.tabulator-calcs{font-weight:700;background:#484848!important;color:#fff}.tabulator .tabulator-footer{padding:5px 10px;padding-top:8px;border-top:3px solid #3fb449;background-color:#222;text-align:right;color:#222;font-weight:700;white-space:nowrap;-ms-user-select:none;user-select:none;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator .tabulator-footer .tabulator-calcs-holder{box-sizing:border-box;width:calc(100% + 20px);margin:-8px -10px 8px;text-align:left;background:#3c3c3c!important;border-bottom:1px solid #aaa;overflow:hidden}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row{background:#3c3c3c!important;color:#fff!important}.tabulator .tabulator-footer .tabulator-calcs-holder .tabulator-row .tabulator-col-resize-handle{display:none}.tabulator .tabulator-footer .tabulator-calcs-holder:only-child{margin-bottom:-5px;border-bottom:none}.tabulator .tabulator-footer .tabulator-paginator label{color:#fff}.tabulator .tabulator-footer .tabulator-page-size{display:inline-block;margin:0 5px;padding:2px 5px;border:1px solid #aaa;border-radius:3px}.tabulator .tabulator-footer .tabulator-pages{margin:0 7px}.tabulator .tabulator-footer .tabulator-page{display:inline-block;margin:0 2px;padding:2px 5px;border:1px solid #aaa;border-radius:3px;background:#fff;color:#222;font-family:inherit;font-weight:inherit;font-size:inherit}.tabulator .tabulator-footer .tabulator-page.active{color:#3fb449}.tabulator .tabulator-footer .tabulator-page:disabled{opacity:.5}.tabulator .tabulator-footer .tabulator-page:not(.disabled):hover{cursor:pointer;background:rgba(0,0,0,.2);color:#fff}.tabulator .tabulator-col-resize-handle{position:absolute;right:0;top:0;bottom:0;width:5px}.tabulator .tabulator-col-resize-handle.prev{left:0;right:auto}.tabulator .tabulator-col-resize-handle:hover{cursor:ew-resize}.tabulator .tabulator-loader{position:absolute;display:-ms-flexbox;display:flex;-ms-flex-align:center;align-items:center;top:0;left:0;z-index:100;height:100%;width:100%;background:rgba(0,0,0,.4);text-align:center}.tabulator .tabulator-loader .tabulator-loader-msg{display:inline-block;margin:0 auto;padding:10px 20px;border-radius:10px;background:#fff;font-weight:700;font-size:16px}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-loading{border:4px solid #333;color:#000}.tabulator .tabulator-loader .tabulator-loader-msg.tabulator-error{border:4px solid #d00;color:#590000}.tabulator-row{position:relative;box-sizing:border-box;min-height:22px;background-color:#fff}.tabulator-row.tabulator-row-even{background-color:#efefef}.tabulator-row.tabulator-selectable:hover{background-color:#bbb;cursor:pointer}.tabulator-row.tabulator-selected{background-color:#9abcea}.tabulator-row.tabulator-selected:hover{background-color:#769bcc;cursor:pointer}.tabulator-row.tabulator-row-moving{border:1px solid #000;background:#fff}.tabulator-row.tabulator-moving{position:absolute;border-top:1px solid #aaa;border-bottom:1px solid #aaa;pointer-events:none!important;z-index:15}.tabulator-row .tabulator-row-resize-handle{position:absolute;right:0;bottom:0;left:0;height:5px}.tabulator-row .tabulator-row-resize-handle.prev{top:0;bottom:auto}.tabulator-row .tabulator-row-resize-handle:hover{cursor:ns-resize}.tabulator-row .tabulator-frozen{display:inline-block;position:absolute;background-color:inherit;z-index:10}.tabulator-row .tabulator-frozen.tabulator-frozen-left{border-right:2px solid #aaa}.tabulator-row .tabulator-frozen.tabulator-frozen-right{border-left:2px solid #aaa}.tabulator-row .tabulator-responsive-collapse{box-sizing:border-box;padding:5px;border-top:1px solid #aaa;border-bottom:1px solid #aaa}.tabulator-row .tabulator-responsive-collapse:empty{display:none}.tabulator-row .tabulator-responsive-collapse table{font-size:14px}.tabulator-row .tabulator-responsive-collapse table tr td{position:relative}.tabulator-row .tabulator-responsive-collapse table tr td:first-of-type{padding-right:10px}.tabulator-row .tabulator-cell{display:inline-block;position:relative;box-sizing:border-box;padding:6px;border-right:1px solid #aaa;vertical-align:middle;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}.tabulator-row .tabulator-cell.tabulator-editing{border:1px solid #1d68cd;padding:0}.tabulator-row .tabulator-cell.tabulator-editing input,.tabulator-row .tabulator-cell.tabulator-editing select{border:1px;background:transparent}.tabulator-row .tabulator-cell.tabulator-validation-fail{border:1px solid #d00}.tabulator-row .tabulator-cell.tabulator-validation-fail input,.tabulator-row .tabulator-cell.tabulator-validation-fail select{border:1px;background:transparent;color:#d00}.tabulator-row .tabulator-cell:first-child .tabulator-col-resize-handle.prev{display:none}.tabulator-row .tabulator-cell.tabulator-row-handle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box{width:80%}.tabulator-row .tabulator-cell.tabulator-row-handle .tabulator-row-handle-box .tabulator-row-handle-bar{width:100%;height:3px;margin-top:2px;background:#3fb449}.tabulator-row .tabulator-cell .tabulator-data-tree-branch{display:inline-block;vertical-align:middle;height:9px;width:7px;margin-top:-9px;margin-right:5px;border-bottom-left-radius:1px;border-left:2px solid #aaa;border-bottom:2px solid #aaa}.tabulator-row .tabulator-cell .tabulator-data-tree-control{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-pack:center;justify-content:center;-ms-flex-align:center;align-items:center;vertical-align:middle;height:11px;width:11px;margin-right:5px;border:1px solid #333;border-radius:2px;background:rgba(0,0,0,.1);overflow:hidden}.tabulator-row .tabulator-cell .tabulator-data-tree-control:hover{cursor:pointer;background:rgba(0,0,0,.2)}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse{display:inline-block;position:relative;height:7px;width:1px;background:transparent}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-collapse:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand{display:inline-block;position:relative;height:7px;width:1px;background:#333}.tabulator-row .tabulator-cell .tabulator-data-tree-control .tabulator-data-tree-control-expand:after{position:absolute;content:"";left:-3px;top:3px;height:1px;width:7px;background:#333}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle{display:-ms-inline-flexbox;display:inline-flex;-ms-flex-align:center;align-items:center;-ms-flex-pack:center;justify-content:center;-moz-user-select:none;-khtml-user-select:none;-webkit-user-select:none;-o-user-select:none;height:15px;width:15px;border-radius:20px;background:#666;color:#fff;font-weight:700;font-size:1.1em}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle:hover{opacity:.7}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-close{display:initial}.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle.open .tabulator-responsive-collapse-toggle-open,.tabulator-row .tabulator-cell .tabulator-responsive-collapse-toggle .tabulator-responsive-collapse-toggle-close{display:none}.tabulator-row .tabulator-cell .tabulator-traffic-light{display:inline-block;height:14px;width:14px;border-radius:14px}.tabulator-row.tabulator-group{box-sizing:border-box;border-right:1px solid #aaa;border-top:1px solid #000;border-bottom:2px solid #3fb449;padding:5px;padding-left:10px;background:#222;color:#fff;font-weight:700;min-width:100%}.tabulator-row.tabulator-group:hover{cursor:pointer;background-color:#090909}.tabulator-row.tabulator-group.tabulator-group-visible .tabulator-arrow{margin-right:10px;border-left:6px solid transparent;border-right:6px solid transparent;border-top:6px solid #3fb449;border-bottom:0}.tabulator-row.tabulator-group.tabulator-group-level-1{padding-left:30px}.tabulator-row.tabulator-group.tabulator-group-level-2{padding-left:50px}.tabulator-row.tabulator-group.tabulator-group-level-3{padding-left:70px}.tabulator-row.tabulator-group.tabulator-group-level-4{padding-left:90px}.tabulator-row.tabulator-group.tabulator-group-level-5{padding-left:110px}.tabulator-row.tabulator-group .tabulator-arrow{display:inline-block;width:0;height:0;margin-right:16px;border-top:6px solid transparent;border-bottom:6px solid transparent;border-right:0;border-left:6px solid #3fb449;vertical-align:middle}.tabulator-row.tabulator-group span{margin-left:10px;color:#3fb449}.tabulator-edit-select-list{position:absolute;display:inline-block;box-sizing:border-box;max-height:200px;background:#fff;border:1px solid #aaa;font-size:14px;overflow-y:auto;-webkit-overflow-scrolling:touch;z-index:10000}.tabulator-edit-select-list .tabulator-edit-select-list-item{padding:4px;color:#333}.tabulator-edit-select-list .tabulator-edit-select-list-item.active{color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-item:hover{cursor:pointer;color:#fff;background:#1d68cd}.tabulator-edit-select-list .tabulator-edit-select-list-group{border-bottom:1px solid #aaa;padding:4px;padding-top:6px;color:#333;font-weight:700}.tabulator-print-fullscreen{position:absolute;top:0;bottom:0;left:0;right:0;z-index:10000}body.tabulator-print-fullscreen-hide>:not(.tabulator-print-fullscreen){display:none!important}.tabulator-print-table{border-collapse:collapse}
+/*# sourceMappingURL=tabulator_site.min.css.map */
--- /dev/null
+{"version":3,"sources":["tabulator_site.scss"],"names":[],"mappings":"AAyCA,WACC,kBAAkB,AAElB,6BAvCgB,AAyChB,sBA1CqB,AA4CrB,eA1Ca,AA2Cb,gBAAgB,AAChB,gBAAe,AAMf,uBAAwB,CA8fxB,AA7gBD,iFAoBI,cAAc,CACd,AArBJ,oFA6BK,iBAAkB,CAClB,AA9BL,kCAqCE,yBAAiB,AAAjB,sBAAiB,AAAjB,qBAAiB,AAAjB,gBAAiB,CACjB,AAtCF,6BA0CE,kBAAiB,AACjB,sBAAsB,AAEtB,WAAU,AAEV,gCA5E2B,AA6E3B,sBAhFyB,AAiFzB,WAhFmB,AAiFnB,gBAAgB,AAEhB,mBAAmB,AACnB,gBAAe,AAEf,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAkPpB,AA5SF,qDA6DG,YAAY,CACZ,AA9DH,4CAkEG,qBAAoB,AAEpB,kBAAiB,AACjB,sBAAqB,AACrB,4BApGoB,AAqGpB,sBAvGwB,AAwGxB,gBAAe,AACf,sBAAsB,AACtB,eAAgB,CAoLhB,AA9PH,6DA6EI,kBAAkB,AAClB,yBA3GyB,AA4GzB,mBAA8C,AAC9C,mBAAoB,CACpB,AAjFJ,mEAqFI,sBAAqB,AACrB,kBAAkB,AAClB,WAAW,CAsCX,AA7HJ,wFA2FK,sBAAqB,AACrB,WAAW,AAEX,mBAAmB,AACnB,gBAAgB,AAChB,uBAAuB,AACvB,qBAAqB,CAarB,AA9GL,gHAqGM,sBAAsB,AACtB,WAAW,AAEX,sBAAqB,AAErB,YAAW,AAEX,eAAgB,CAChB,AA7GN,oFAkHK,qBAAqB,AACrB,kBAAkB,AAClB,SAAQ,AACR,UAAS,AACT,QAAQ,AACR,SAAS,AACT,kCAAkC,AAClC,mCAAmC,AACnC,4BAlJmB,CAmJnB,AA3HL,0FAoIK,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AAEb,0BArKkB,AAsKlB,eAAgB,CAKhB,AA7IL,oHA2IM,iBAAiB,CACjB,AA5IN,0FAmJK,YAAa,CACb,AApJL,+DAyJI,kBAAkB,AAClB,gCAAmD,AACnD,qBAzLmB,CA0LnB,AA5JJ,qEAgKI,kBAAkB,AAClB,sBAAsB,AACtB,eAAc,AACd,WAAU,AACV,iBAAkB,CAiBlB,AArLJ,8EAwKK,qBAAsB,CACtB,AAzKL,yEA4KK,cAAe,CACf,AA7KL,sFAiLO,QAAS,AACT,QAAS,CACV,AAnLN,oFA0LK,kBAAkB,CAClB,AA3LL,qEA8LK,eAAc,AACd,wBAAoD,CACpD,AAhML,uHAoMM,gBAAgB,AAChB,4BA7NkB,CA8NlB,AAtMN,sHA2MM,gBAAgB,AAChB,+BArOmB,CAsOnB,AA7MN,uHAkNM,6BA3OmB,AA4OnB,kBAAmB,CACnB,AApNN,+GA2NM,uBAAyB,AAAzB,yBAAyB,AACzB,uBAAuB,AAEvB,oBAAY,AAAZ,aAAY,AACZ,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,sBAAsB,CACtB,AAjON,oHAsOM,wBAAyB,CACzB,AAvON,2GA4OM,gBAAe,AACf,gBAAgB,CAChB,AA9ON,uIAkPO,gBAAe,AACf,mBAAmB,CACnB,AApPP,uGAyPM,qBAAqB,CACrB,AA1PN,+CAiQG,qBAAqB,AACrB,kBAAkB,AAIlB,UAAW,CASX,AA/QH,qEAyQI,2BA5RgB,CA6RhB,AA1QJ,sEA6QI,0BAhSgB,CAiShB,AA9QJ,qDAkRG,sBAAqB,AACrB,eAAc,AAEd,6BAA0D,AAU1D,0BAlTiB,AAqTjB,eAAgB,CAChB,AAnSH,oEAwRI,4BAA0D,CAK1D,AA7RJ,iGA2RK,YAAa,CACb,AA5RL,2DAsSG,cAAc,CAKd,AA3SH,iEAySI,YAAa,CACb,AA1SJ,kCAgTE,kBAAiB,AACjB,WAAU,AACV,mBAAmB,AACnB,cAAa,AACb,gCAAiC,CAkDjC,AAtWF,wCAuTG,YAAa,CACb,AAxTH,yDA4TG,sBAAqB,AACrB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AASlB,UAAU,CAYV,AAnVH,wFAiUI,kBAAkB,AAClB,MAAK,AACL,OAAM,AACN,WAAW,CACX,AArUJ,8DA0UI,qBAAqB,AAErB,cAAa,AACb,aAAY,AAEZ,cA5WyB,AA6WzB,gBAAiB,AACjB,cAAe,CACf,AAlVJ,mDAuVG,kBAAiB,AACjB,qBAAoB,AACpB,sBA9WqB,AA+WrB,mBAAmB,AACnB,iBAAgB,AAChB,UA9We,CAuXf,AArWH,kFAgWK,gBAAiB,AACjB,6BAA0D,AAC1D,UAjYgB,CAkYhB,AAnWL,6BA2WE,iBAAgB,AAChB,gBAAe,AACf,6BAlX2B,AAmX3B,sBAtXyB,AAuXzB,iBAAgB,AAChB,WAvXmB,AAwXnB,gBAAgB,AAChB,mBAAkB,AAClB,qBAAgB,AAAhB,iBAAgB,AAEhB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAuFpB,AA/cF,qDA2XG,sBAAqB,AACrB,wBAAuB,AACvB,sBAA2B,AAE3B,gBAAgB,AAEhB,6BAA0D,AAY1D,6BAhaiB,AAkajB,eAAgB,CAMhB,AArZH,oEAoYI,6BAA0D,AAC1D,oBAAiC,CAKjC,AA1YJ,iGAwYK,YAAa,CACb,AAzYL,gEAkZI,mBAAkB,AAClB,kBAAkB,CAClB,AApZJ,wDA0ZI,UAAU,CACV,AA3ZJ,kDAgaG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3aoB,AA4apB,iBAAiB,CACjB,AAvaH,8CA2aG,YAAY,CACZ,AA5aH,6CAgbG,qBAAoB,AAEpB,aAAY,AACZ,gBAAe,AAEf,sBA3boB,AA4bpB,kBAAiB,AAEjB,gBAAe,AAEf,WAjckB,AAkclB,oBAAmB,AACnB,oBAAmB,AACnB,iBAAiB,CAiBjB,AA9cH,oDAgcI,aArcyB,CAsczB,AAjcJ,sDAocI,UAAU,CACV,AArcJ,kEAycK,eAAc,AACd,0BAAyB,AACzB,UAAU,CACV,AA5cL,wCAmdE,kBAAiB,AACjB,QAAO,AACP,MAAK,AACL,SAAQ,AACR,SAAS,CAUT,AAjeF,6CA0dG,OAAM,AACN,UAAU,CACV,AA5dH,8CA+dG,gBAAgB,CAChB,AAheH,6BAseE,kBAAiB,AACjB,oBAAa,AAAb,aAAa,AACb,sBAAkB,AAAlB,mBAAkB,AAElB,MAAK,AACL,OAAM,AACN,YAAW,AAEX,YAAW,AACX,WAAU,AACV,0BAAyB,AACzB,iBAAiB,CA2BjB,AA5gBF,mDAqfG,qBAAoB,AAEpB,cAAa,AACb,kBAAiB,AAEjB,mBAAkB,AAElB,gBAAe,AACf,gBAAgB,AAChB,cAAc,CAad,AA3gBH,qEAkgBI,sBAAqB,AACrB,UAAU,CACV,AApgBJ,mEAwgBI,sBAAqB,AACrB,aAAa,CACb,AAMJ,eACC,kBAAkB,AAClB,sBAAsB,AACtB,gBAA0C,AAC1C,qBAziBuB,CAs5BvB,AAjXD,kCAQE,wBA5iB4B,CA6iB5B,AATF,0CAYE,sBA7iBsB,AA8iBtB,cAAe,CACf,AAdF,kCAiBE,wBAhjB6B,CAijB7B,AAlBF,wCAqBE,yBAnjBkC,AAojBlC,cAAe,CACf,AAvBF,oCA0BE,sBAAqB,AACrB,eAAe,CACf,AA5BF,gCA+BE,kBAAkB,AAElB,0BApkBkB,AAqkBlB,6BArkBkB,AAukBlB,8BAA+B,AAC/B,UAAU,CACV,AAtCF,4CA0CE,kBAAiB,AACjB,QAAO,AACP,SAAQ,AACR,OAAM,AACN,UAAU,CAUV,AAxDF,iDAiDG,MAAK,AACL,WAAW,CACX,AAnDH,kDAsDG,gBAAgB,CAChB,AAvDH,iCA2DE,qBAAqB,AACrB,kBAAkB,AAElB,yBAAyB,AAEzB,UAAW,CASX,AAzEF,uDAmEG,2BAtmBiB,CAumBjB,AApEH,wDAuEG,0BA1mBiB,CA2mBjB,AAxEH,8CA4EE,sBAAqB,AAErB,YAAW,AAEX,0BAnnBkB,AAonBlB,4BApnBkB,CAuoBlB,AApGF,oDAoFG,YAAY,CACZ,AArFH,oDAwFG,cA3oBW,CAspBX,AAnGH,0DA4FK,iBAAkB,CAKlB,AAjGL,wEA+FM,kBAAkB,CAClB,AAhGN,+BAwGE,qBAAoB,AACpB,kBAAkB,AAClB,sBAAqB,AACrB,YAAW,AACX,4BA/oBkB,AAgpBlB,sBAAqB,AACrB,mBAAkB,AAClB,gBAAe,AACf,sBAAsB,CA0LtB,AA1SF,iDAoHG,yBAhpBkB,AAipBlB,SAAU,CAMV,AA3HH,+GAwHI,WAAU,AACV,sBAAsB,CACtB,AA1HJ,yDA8HG,qBAzpBgB,CAgqBhB,AArIH,+HAgII,WAAU,AACV,uBAAsB,AAEtB,UA9pBe,CA+pBf,AApIJ,6EA0II,YAAa,CACb,AA3IJ,oDAiJG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAElB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,mBAAoB,CAcpB,AArKH,8EA2JI,SAAS,CAST,AApKJ,wGA+JK,WAAU,AACV,WAAU,AACV,eAAc,AACd,kBA3sBoB,CA4sBpB,AAnKL,2DAwKG,qBAAoB,AACpB,sBAAqB,AAErB,WAAU,AACV,UAAS,AAET,gBAAe,AACf,iBAAgB,AAEhB,8BAA6B,AAE7B,2BAttBiB,AAutBjB,4BAvtBiB,CAwtBjB,AArLH,4DAyLG,2BAAmB,AAAnB,oBAAmB,AACnB,qBAAsB,AAAtB,uBAAsB,AACtB,sBAAkB,AAAlB,mBAAkB,AAClB,sBAAqB,AAErB,YAAW,AACX,WAAU,AAEV,iBAAgB,AAEhB,sBAruBe,AAsuBf,kBAAiB,AACjB,0BAA4B,AAE5B,eAAe,CAmDf,AA1PH,kEA0MI,eAAc,AACd,yBAA4B,CAC5B,AA5MJ,kGA+MI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,sBAAuB,CAavB,AAlOJ,wGAwNK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAlwBa,CAmwBb,AAjOL,gGAqOI,qBAAoB,AACpB,kBAAkB,AAElB,WAAW,AACX,UAAU,AAEV,eA7wBc,CA0xBd,AAxPJ,sGA8OK,kBAAkB,AAClB,WAAW,AACX,UAAU,AACV,QAAQ,AAER,WAAW,AACX,UAAU,AAEV,eAxxBa,CAyxBb,AAvPL,qEA6PG,2BAAoB,AAApB,oBAAoB,AACpB,sBAAkB,AAAlB,mBAAkB,AAClB,qBAAsB,AAAtB,uBAAsB,AAEtB,sBAAsB,AACtB,wBAAwB,AACxB,yBAAyB,AACzB,oBAAoB,AAEpB,YAAW,AACX,WAAU,AAEV,mBAAkB,AAClB,gBAAe,AAEf,WAjzBqB,AAkzBrB,gBAAgB,AAChB,eAAe,CAmBf,AAjSH,2EAiRI,UAAU,CACV,AAlRJ,sHAsRK,eAAe,CACf,AAvRL,sOA+RI,YAAY,CACZ,AAhSJ,wDAoSG,qBAAqB,AACrB,YAAW,AACX,WAAU,AAEV,kBAAkB,CAClB,AAzSH,+BA8SE,sBAAqB,AACrB,4BAl1BkB,AAm1BlB,0BAAyB,AACzB,gCA91B2B,AA+1B3B,YAAW,AACX,kBAAiB,AACjB,gBAp2ByB,AAq2BzB,WAp2BmB,AAq2BnB,gBAAgB,AAEhB,cAAe,CAuDf,AA/WF,qCA2TG,eAAc,AACd,wBAAoD,CACpD,AA7TH,wEAiUI,kBAAiB,AACjB,kCAAkC,AAClC,mCAAmC,AACnC,6BA72BqB,AA82BrB,eAAgB,CAChB,AAtUJ,uDA0UG,iBAAiB,CACjB,AA3UH,uDA8UG,iBAAiB,CACjB,AA/UH,uDAkVG,iBAAiB,CACjB,AAnVH,uDAsVG,iBAAiB,CACjB,AAvVH,uDA0VG,kBAAkB,CAClB,AA3VH,gDAgWG,qBAAqB,AACrB,QAAQ,AACR,SAAS,AACT,kBAAiB,AACjB,iCAAiC,AACjC,oCAAoC,AACpC,eAAe,AACf,8BAh5BsB,AAi5BtB,qBAAqB,CACrB,AAzWH,oCA4WG,iBAAgB,AAChB,aA15B0B,CA25B1B,AAKH,4BACC,kBAAkB,AAClB,qBAAoB,AACpB,sBAAqB,AAErB,iBAAgB,AAEhB,gBA/5BuB,AAg6BvB,sBA95BmB,AAg6BnB,eAh7Ba,AAk7Bb,gBAAe,AACf,iCAAiC,AAEjC,aAAc,CA6Bd,AA5CD,6DAkBE,YAAW,AAEX,UAz6BgB,CAs7BhB,AAjCF,oEAuBG,WA/6BqB,AAg7BrB,kBAv6BkB,CAw6BlB,AAzBH,mEA4BG,eAAc,AAEd,WAt7BqB,AAu7BrB,kBA96BkB,CA+6BlB,AAhCH,8DAoCE,6BA17BkB,AA47BlB,YAAW,AACX,gBAAe,AAEf,WA97BgB,AA+7BhB,eAAgB,CAChB,AAKF,4BACC,kBAAkB,AAClB,MAAK,AACL,SAAQ,AACR,OAAM,AACN,QAAO,AAEP,aAAc,CACd,AAED,uEACC,sBAAuB,CACvB,AAED,uBACC,wBAAyB,CACzB","file":"tabulator_site.min.css","sourcesContent":["/* Tabulator v4.4.1 (c) Oliver Folkerd */\n\n\r\n//Main Theme Variables\r\n$backgroundColor: #fff !default; //background color of tabulator\r\n$borderColor:#222 !default; //border to tabulator\r\n$textSize:14px !default; //table text size\r\n\r\n//header themeing\r\n$headerBackgroundColor:#222 !default; //border to tabulator\r\n$headerTextColor:#fff !default; //header text colour\r\n$headerBorderColor:#aaa !default; //header border color\r\n$headerSeperatorColor:#3FB449 !default; //header bottom seperator color\r\n$headerMargin:4px !default; //padding round header\r\n\r\n//column header arrows\r\n$sortArrowActive: #3FB449 !default;\r\n$sortArrowInactive: #bbb !default;\r\n\r\n//row themeing\r\n$rowBackgroundColor:#fff !default; //table row background color\r\n$rowAltBackgroundColor:#EFEFEF !default; //table row background color\r\n$rowBorderColor:#aaa !default; //table border color\r\n$rowTextColor:#333 !default; //table text color\r\n$rowHoverBackground:#bbb !default; //row background color on hover\r\n\r\n$rowSelectedBackground: #9ABCEA !default; //row background color when selected\r\n$rowSelectedBackgroundHover: #769BCC !default;//row background color when selected and hovered\r\n\r\n$editBoxColor:#1D68CD !default; //border color for edit boxes\r\n$errorColor:#dd0000 !default; //error indication\r\n\r\n//footer themeing\r\n$footerBackgroundColor:#222 !default; //border to tabulator\r\n$footerTextColor:#222 !default; //footer text colour\r\n$footerBorderColor:#aaa !default; //footer border color\r\n$footerSeperatorColor:#3FB449 !default; //footer bottom seperator color\r\n$footerActiveColor:$footerSeperatorColor !default; //footer bottom active text color\r\n\r\n\r\n//Tabulator Containing Element\r\n.tabulator{\r\n\tposition: relative;\r\n\r\n\tborder-bottom: 5px solid $borderColor;\r\n\r\n\tbackground-color: $backgroundColor;\r\n\r\n\tfont-size:$textSize;\r\n\ttext-align: left;\r\n\toverflow:hidden;\r\n\r\n\t-webkit-transform: translatez(0);\r\n\t-moz-transform: translatez(0);\r\n\t-ms-transform: translatez(0);\r\n\t-o-transform: translatez(0);\r\n\ttransform: translatez(0);\r\n\r\n\t&[tabulator-layout=\"fitDataFill\"]{\r\n\t\t.tabulator-tableHolder{\r\n\t\t\t.tabulator-table{\r\n\t\t\t\tmin-width:100%;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t&[tabulator-layout=\"fitColumns\"]{\r\n\t\t.tabulator-row{\r\n\t\t\t.tabulator-cell{\r\n\t\t\t\t&:last-of-type{\r\n\t\t\t\t\tborder-right: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t&.tabulator-block-select{\r\n\t\tuser-select: none;\r\n\t}\r\n\r\n\t//column header containing element\r\n\t.tabulator-header{\r\n\t\tposition:relative;\r\n\t\tbox-sizing: border-box;\r\n\r\n\t\twidth:100%;\r\n\r\n\t\tborder-bottom:3px solid $headerSeperatorColor;\r\n\t\tbackground-color: $headerBackgroundColor;\r\n\t\tcolor: $headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:hidden;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t&.tabulator-header-hidden{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\t//individual column header element\r\n\t\t.tabulator-col{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tposition:relative;\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tborder-right:1px solid $headerBorderColor;\r\n\t\t\tbackground-color: $headerBackgroundColor;\r\n\t\t\ttext-align:left;\r\n\t\t\tvertical-align: bottom;\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&.tabulator-moving{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tborder:1px solid $headerSeperatorColor;\r\n\t\t\t\tbackground:darken($headerBackgroundColor, 10%);\r\n\t\t\t\tpointer-events: none;\r\n\t\t\t}\r\n\r\n\t\t\t//hold content of column header\r\n\t\t\t.tabulator-col-content{\r\n\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tpadding:8px;\r\n\r\n\t\t\t\t//hold title of column header\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tbox-sizing:border-box;\r\n\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\twhite-space: nowrap;\r\n\t\t\t\t\toverflow: hidden;\r\n\t\t\t\t\ttext-overflow: ellipsis;\r\n\t\t\t\t\tvertical-align:bottom;\r\n\r\n\t\t\t\t\t//element to hold title editor\r\n\t\t\t\t\t.tabulator-title-editor{\r\n\t\t\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\t\t\twidth: 100%;\r\n\r\n\t\t\t\t\t\tborder:1px solid #999;\r\n\r\n\t\t\t\t\t\tpadding:1px;\r\n\r\n\t\t\t\t\t\tbackground: #fff;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t//column sorter arrow\r\n\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\tdisplay: inline-block;\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\ttop:14px;\r\n\t\t\t\t\tright:8px;\r\n\t\t\t\t\twidth: 0;\r\n\t\t\t\t\theight: 0;\r\n\t\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t}\r\n\r\n\t\t\t}\r\n\r\n\t\t\t//complex header column group\r\n\t\t\t&.tabulator-col-group{\r\n\r\n\t\t\t\t//gelement to hold sub columns in column group\r\n\t\t\t\t.tabulator-col-group-cols{\r\n\t\t\t\t\tposition:relative;\r\n\t\t\t\t\tdisplay: flex;\r\n\r\n\t\t\t\t\tborder-top:1px solid $headerBorderColor;\r\n\t\t\t\t\toverflow: hidden;\r\n\r\n\t\t\t\t\t.tabulator-col:last-child{\r\n\t\t\t\t\t\tmargin-right:-1px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//hide left resize handle on first column\r\n\t\t\t&:first-child{\r\n\t\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//placeholder element for sortable columns\r\n\t\t\t&.ui-sortable-helper{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\tbackground-color: $headerBackgroundColor !important;\r\n\t\t\t\tborder:1px solid $headerBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t//header filter containing element\r\n\t\t\t.tabulator-header-filter{\r\n\t\t\t\tposition: relative;\r\n\t\t\t\tbox-sizing: border-box;\r\n\t\t\t\tmargin-top:2px;\r\n\t\t\t\twidth:100%;\r\n\t\t\t\ttext-align: center;\r\n\r\n\t\t\t\t//styling adjustment for inbuilt editors\r\n\t\t\t\ttextarea{\r\n\t\t\t\t\theight:auto !important;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tsvg{\r\n\t\t\t\t\tmargin-top: 3px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\tinput{\r\n\t\t\t\t\t&::-ms-clear {\r\n\t\t\t\t\t width : 0;\r\n\t\t\t\t\t height: 0;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t//styling child elements for sortable columns\r\n\t\t\t&.tabulator-sortable{\r\n\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\tpadding-right:25px;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"none\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowInactive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"asc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: none;\r\n\t\t\t\t\t\tborder-bottom: 6px solid $sortArrowActive;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&[aria-sort=\"desc\"]{\r\n\t\t\t\t\t.tabulator-col-content .tabulator-arrow{\r\n\t\t\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\t\t\tborder-bottom: none;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-col-vertical{\r\n\t\t\t\t.tabulator-col-content{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\twriting-mode: vertical-rl;\r\n\t\t\t\t\t\ttext-orientation: mixed;\r\n\r\n\t\t\t\t\t\tdisplay:flex;\r\n\t\t\t\t\t\talign-items:center;\r\n\t\t\t\t\t\tjustify-content:center;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\ttransform: rotate(180deg);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\r\n\t\t\t\t&.tabulator-sortable{\r\n\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\tpadding-top:20px;\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t&.tabulator-col-vertical-flip{\r\n\t\t\t\t\t\t.tabulator-col-title{\r\n\t\t\t\t\t\t\tpadding-right:0;\r\n\t\t\t\t\t\t\tpadding-bottom:20px;\r\n\t\t\t\t\t\t}\r\n\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\t.tabulator-arrow{\r\n\t\t\t\t\t\tright:calc(50% - 6px);\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\tposition: absolute;\r\n\r\n\t\t\t// background-color: inherit;\r\n\r\n\t\t\tz-index: 10;\r\n\r\n\t\t\t&.tabulator-frozen-left{\r\n\t\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\r\n\t\t\t&.tabulator-frozen-right{\r\n\t\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($headerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\tborder-top:1px solid $rowBorderColor;\r\n\t\t\t// border-bottom:1px solid $headerBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\t\t}\r\n\r\n\t\t.tabulator-frozen-rows-holder{\r\n\t\t\tmin-width:400%;\r\n\r\n\t\t\t&:empty{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//scrolling element to hold table\r\n\t.tabulator-tableHolder{\r\n\t\tposition:relative;\r\n\t\twidth:100%;\r\n\t\twhite-space: nowrap;\r\n\t\toverflow:auto;\r\n\t\t-webkit-overflow-scrolling: touch;\r\n\r\n\t\t&:focus{\r\n\t\t\toutline: none;\r\n\t\t}\r\n\r\n\t\t//default placeholder element\r\n\t\t.tabulator-placeholder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\tdisplay: flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t&[tabulator-render-mode=\"virtual\"]{\r\n\t\t\t\tposition: absolute;\r\n\t\t\t\ttop:0;\r\n\t\t\t\tleft:0;\r\n\t\t\t\theight:100%;\r\n\t\t\t}\r\n\r\n\t\t\twidth:100%;\r\n\r\n\t\t\tspan{\r\n\t\t\t\tdisplay: inline-block;\r\n\r\n\t\t\t\tmargin:0 auto;\r\n\t\t\t\tpadding:10px;\r\n\r\n\t\t\t\tcolor:$headerSeperatorColor;\r\n\t\t\t\tfont-weight: bold;\r\n\t\t\t\tfont-size: 20px;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//element to hold table rows\r\n\t\t.tabulator-table{\r\n\t\t\tposition:relative;\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tbackground-color:$rowBackgroundColor;\r\n\t\t\twhite-space: nowrap;\r\n\t\t\toverflow:visible;\r\n\t\t\tcolor:$rowTextColor;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\t&.tabulator-calcs{\r\n\t\t\t\t\tfont-weight: bold;\r\n\t\t\t\t\tbackground:lighten($headerBackgroundColor, 15%) !important;\r\n\t\t\t\t\tcolor:$headerTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//footer element\r\n\t.tabulator-footer{\r\n\t\tpadding:5px 10px;\r\n\t\tpadding-top:8px;\r\n\t\tborder-top:3px solid $footerSeperatorColor;\r\n\t\tbackground-color: $footerBackgroundColor;\r\n\t\ttext-align:right;\r\n\t\tcolor: $footerTextColor;\r\n\t\tfont-weight:bold;\r\n\t\twhite-space:nowrap;\r\n\t\tuser-select:none;\r\n\r\n\t\t-moz-user-select: none;\r\n\t\t-khtml-user-select: none;\r\n\t\t-webkit-user-select: none;\r\n\t\t-o-user-select: none;\r\n\r\n\t\t.tabulator-calcs-holder{\r\n\t\t\tbox-sizing:border-box;\r\n\t\t\twidth:calc(100% + 20px);\r\n\t\t\tmargin:-8px -10px 8px -10px;\r\n\r\n\t\t\ttext-align: left;\r\n\r\n\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\r\n\t\t\t.tabulator-row{\r\n\t\t\t\tbackground:lighten($footerBackgroundColor, 10%) !important;\r\n\t\t\t\tcolor:$headerTextColor !important;\r\n\r\n\t\t\t\t.tabulator-col-resize-handle{\r\n\t\t\t\t\tdisplay: none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t// border-top:1px solid $rowBorderColor;\r\n\t\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t\toverflow: hidden;\r\n\r\n\t\t\t&:only-child{\r\n\t\t\t\tmargin-bottom:-5px;\r\n\t\t\t\tborder-bottom:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-paginator{\r\n\t\t\tlabel{\r\n\t\t\t\tcolor:#fff;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//page size select element\r\n\t\t.tabulator-page-size{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 5px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\t\t}\r\n\r\n\t\t//pagination container element\r\n\t\t.tabulator-pages{\r\n\t\t\tmargin:0 7px;\r\n\t\t}\r\n\r\n\t\t//pagination button\r\n\t\t.tabulator-page{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 2px;\r\n\t\t\tpadding:2px 5px;\r\n\r\n\t\t\tborder:1px solid $footerBorderColor;\r\n\t\t\tborder-radius:3px;\r\n\r\n\t\t\tbackground:#fff;\r\n\r\n\t\t\tcolor: $footerTextColor;\r\n\t\t\tfont-family:inherit;\r\n\t\t\tfont-weight:inherit;\r\n\t\t\tfont-size:inherit;\r\n\r\n\t\t\t&.active{\r\n\t\t\t\tcolor:$footerActiveColor;\r\n\t\t\t}\r\n\r\n\t\t\t&:disabled{\r\n\t\t\t\topacity:.5;\r\n\t\t\t}\r\n\r\n\t\t\t&:not(.disabled){\r\n\t\t\t\t&:hover{\r\n\t\t\t\t\tcursor:pointer;\r\n\t\t\t\t\tbackground:rgba(0,0,0,.2);\r\n\t\t\t\t\tcolor:#fff;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//column resize handles\r\n\t.tabulator-col-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\ttop:0;\r\n\t\tbottom:0;\r\n\t\twidth:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\tleft:0;\r\n\t\t\tright:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ew-resize;\r\n\t\t}\r\n\t}\r\n\r\n\r\n\t//holding div that contains loader and covers tabulator element to prevent interaction\r\n\t.tabulator-loader{\r\n\t\tposition:absolute;\r\n\t\tdisplay: flex;\r\n\t\talign-items:center;\r\n\r\n\t\ttop:0;\r\n\t\tleft:0;\r\n\t\tz-index:100;\r\n\r\n\t\theight:100%;\r\n\t\twidth:100%;\r\n\t\tbackground:rgba(0,0,0,.4);\r\n\t\ttext-align:center;\r\n\r\n\t\t//loading message element\r\n\t\t.tabulator-loader-msg{\r\n\t\t\tdisplay:inline-block;\r\n\r\n\t\t\tmargin:0 auto;\r\n\t\t\tpadding:10px 20px;\r\n\r\n\t\t\tborder-radius:10px;\r\n\r\n\t\t\tbackground:#fff;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:16px;\r\n\r\n\t\t\t//loading message\r\n\t\t\t&.tabulator-loading{\r\n\t\t\t\tborder:4px solid #333;\r\n\t\t\t\tcolor:#000;\r\n\t\t\t}\r\n\r\n\t\t\t//error message\r\n\t\t\t&.tabulator-error{\r\n\t\t\t\tborder:4px solid #D00;\r\n\t\t\t\tcolor:#590000;\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n}\r\n\r\n//row element\r\n.tabulator-row{\r\n\tposition: relative;\r\n\tbox-sizing: border-box;\r\n\tmin-height:$textSize + ($headerMargin * 2);\r\n\tbackground-color: $rowBackgroundColor;\r\n\r\n\r\n\t&.tabulator-row-even{\r\n\t\tbackground-color: $rowAltBackgroundColor;\r\n\t}\r\n\r\n\t&.tabulator-selectable:hover{\r\n\t\tbackground-color:$rowHoverBackground;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-selected{\r\n\t\tbackground-color:$rowSelectedBackground;\r\n\t}\r\n\r\n\t&.tabulator-selected:hover{\r\n\t\tbackground-color:$rowSelectedBackgroundHover;\r\n\t\tcursor: pointer;\r\n\t}\r\n\r\n\t&.tabulator-row-moving{\r\n\t\tborder:1px solid #000;\r\n\t\tbackground:#fff;\r\n\t}\r\n\r\n\t&.tabulator-moving{\r\n\t\tposition: absolute;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpointer-events: none !important;\r\n\t\tz-index:15;\r\n\t}\r\n\r\n\t//row resize handles\r\n\t.tabulator-row-resize-handle{\r\n\t\tposition:absolute;\r\n\t\tright:0;\r\n\t\tbottom:0;\r\n\t\tleft:0;\r\n\t\theight:5px;\r\n\r\n\t\t&.prev{\r\n\t\t\ttop:0;\r\n\t\t\tbottom:auto;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:ns-resize;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-frozen{\r\n\t\tdisplay: inline-block;\r\n\t\tposition: absolute;\r\n\r\n\t\tbackground-color: inherit;\r\n\r\n\t\tz-index: 10;\r\n\r\n\t\t&.tabulator-frozen-left{\r\n\t\t\tborder-right:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t&.tabulator-frozen-right{\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-responsive-collapse{\r\n\t\tbox-sizing:border-box;\r\n\r\n\t\tpadding:5px;\r\n\r\n\t\tborder-top:1px solid $rowBorderColor;\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\t&:empty{\r\n\t\t\tdisplay:none;\r\n\t\t}\r\n\r\n\t\ttable{\r\n\t\t\tfont-size:$textSize;\r\n\r\n\t\t\ttr{\r\n\t\t\t\ttd{\r\n\t\t\t\t\tposition: relative;\r\n\r\n\t\t\t\t\t&:first-of-type{\r\n\t\t\t\t\t\tpadding-right:10px;\r\n\t\t\t\t\t}\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\t}\r\n\r\n\t//cell element\r\n\t.tabulator-cell{\r\n\t\tdisplay:inline-block;\r\n\t\tposition: relative;\r\n\t\tbox-sizing:border-box;\r\n\t\tpadding:6px;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tvertical-align:middle;\r\n\t\twhite-space:nowrap;\r\n\t\toverflow:hidden;\r\n\t\ttext-overflow:ellipsis;\r\n\r\n\r\n\t\t&.tabulator-editing{\r\n\t\t\tborder:1px solid $editBoxColor;\r\n\t\t\tpadding: 0;\r\n\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-validation-fail{\r\n\t\t\tborder:1px solid $errorColor;\r\n\t\t\tinput, select{\r\n\t\t\t\tborder:1px;\r\n\t\t\t\tbackground:transparent;\r\n\r\n\t\t\t\tcolor: $errorColor;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//hide left resize handle on first column\r\n\t\t&:first-child{\r\n\t\t\t.tabulator-col-resize-handle.prev{\r\n\t\t\t\tdisplay: none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t//movable row handle\r\n\t\t&.tabulator-row-handle{\r\n\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\t//handle holder\r\n\t\t\t.tabulator-row-handle-box{\r\n\t\t\t\twidth:80%;\r\n\r\n\t\t\t\t//Hamburger element\r\n\t\t\t\t.tabulator-row-handle-bar{\r\n\t\t\t\t\twidth:100%;\r\n\t\t\t\t\theight:3px;\r\n\t\t\t\t\tmargin-top:2px;\r\n\t\t\t\t\tbackground:$sortArrowActive;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-branch{\r\n\t\t\tdisplay:inline-block;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:9px;\r\n\t\t\twidth:7px;\r\n\r\n\t\t\tmargin-top:-9px;\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder-bottom-left-radius:1px;\r\n\r\n\t\t\tborder-left:2px solid $rowBorderColor;\r\n\t\t\tborder-bottom:2px solid $rowBorderColor;\r\n\t\t}\r\n\r\n\t\t.tabulator-data-tree-control{\r\n\r\n\t\t\tdisplay:inline-flex;\r\n\t\t\tjustify-content:center;\r\n\t\t\talign-items:center;\r\n\t\t\tvertical-align:middle;\r\n\r\n\t\t\theight:11px;\r\n\t\t\twidth:11px;\r\n\r\n\t\t\tmargin-right:5px;\r\n\r\n\t\t\tborder:1px solid $rowTextColor;\r\n\t\t\tborder-radius:2px;\r\n\t\t\tbackground:rgba(0, 0, 0, .1);\r\n\r\n\t\t\toverflow:hidden;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\tcursor:pointer;\r\n\t\t\t\tbackground:rgba(0, 0, 0, .2);\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-collapse{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: transparent;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-data-tree-control-expand{\r\n\t\t\t\tdisplay:inline-block;\r\n\t\t\t\tposition: relative;\r\n\r\n\t\t\t\theight: 7px;\r\n\t\t\t\twidth: 1px;\r\n\r\n\t\t\t\tbackground: $rowTextColor;\r\n\r\n\t\t\t\t&:after {\r\n\t\t\t\t\tposition: absolute;\r\n\t\t\t\t\tcontent: \"\";\r\n\t\t\t\t\tleft: -3px;\r\n\t\t\t\t\ttop: 3px;\r\n\r\n\t\t\t\t\theight: 1px;\r\n\t\t\t\t\twidth: 7px;\r\n\r\n\t\t\t\t\tbackground: $rowTextColor;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t}\r\n\r\n\t\t.tabulator-responsive-collapse-toggle{\r\n\t\t\tdisplay: inline-flex;\r\n\t\t\talign-items:center;\r\n\t\t\tjustify-content:center;\r\n\r\n\t\t\t-moz-user-select: none;\r\n\t\t\t-khtml-user-select: none;\r\n\t\t\t-webkit-user-select: none;\r\n\t\t\t-o-user-select: none;\r\n\r\n\t\t\theight:15px;\r\n\t\t\twidth:15px;\r\n\r\n\t\t\tborder-radius:20px;\r\n\t\t\tbackground:#666;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tfont-weight:bold;\r\n\t\t\tfont-size:1.1em;\r\n\r\n\t\t\t&:hover{\r\n\t\t\t\topacity:.7;\r\n\t\t\t}\r\n\r\n\t\t\t&.open{\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\t\tdisplay:initial;\r\n\t\t\t\t}\r\n\r\n\t\t\t\t.tabulator-responsive-collapse-toggle-open{\r\n\t\t\t\t\tdisplay:none;\r\n\t\t\t\t}\r\n\t\t\t}\r\n\r\n\t\t\t.tabulator-responsive-collapse-toggle-close{\r\n\t\t\t\tdisplay:none;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t.tabulator-traffic-light{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\theight:14px;\r\n\t\t\twidth:14px;\r\n\r\n\t\t\tborder-radius:14px;\r\n\t\t}\r\n\t}\r\n\r\n\t//row grouping element\r\n\t&.tabulator-group{\r\n\t\tbox-sizing:border-box;\r\n\t\tborder-right:1px solid $rowBorderColor;\r\n\t\tborder-top:1px solid #000;\r\n\t\tborder-bottom:2px solid $headerSeperatorColor;\r\n\t\tpadding:5px;\r\n\t\tpadding-left:10px;\r\n\t\tbackground:$headerBackgroundColor;\r\n\t\tcolor:$headerTextColor;\r\n\t\tfont-weight:bold;\r\n\r\n\t\tmin-width: 100%;\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\t\t\tbackground-color:darken($headerBackgroundColor, 10%);\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-visible{\r\n\t\t\t.tabulator-arrow{\r\n\t\t\t\tmargin-right:10px;\r\n\t\t\t\tborder-left: 6px solid transparent;\r\n\t\t\t\tborder-right: 6px solid transparent;\r\n\t\t\t\tborder-top: 6px solid $sortArrowActive;\r\n\t\t\t\tborder-bottom: 0;\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-1{\r\n\t\t\tpadding-left:30px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-2{\r\n\t\t\tpadding-left:50px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-3{\r\n\t\t\tpadding-left:70px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-4{\r\n\t\t\tpadding-left:90px;\r\n\t\t}\r\n\r\n\t\t&.tabulator-group-level-5{\r\n\t\t\tpadding-left:110px;\r\n\t\t}\r\n\r\n\r\n\t\t//sorting arrow\r\n\t\t.tabulator-arrow{\r\n\t\t\tdisplay: inline-block;\r\n\t\t\twidth: 0;\r\n\t\t\theight: 0;\r\n\t\t\tmargin-right:16px;\r\n\t\t\tborder-top: 6px solid transparent;\r\n\t\t\tborder-bottom: 6px solid transparent;\r\n\t\t\tborder-right: 0;\r\n\t\t\tborder-left: 6px solid $sortArrowActive;\r\n\t\t\tvertical-align:middle;\r\n\t\t}\r\n\r\n\t\tspan{\r\n\t\t\tmargin-left:10px;\r\n\t\t\tcolor:$headerSeperatorColor;\r\n\t\t}\r\n\t}\r\n\r\n}\r\n\r\n.tabulator-edit-select-list{\r\n\tposition: absolute;\r\n\tdisplay:inline-block;\r\n\tbox-sizing:border-box;\r\n\r\n\tmax-height:200px;\r\n\r\n\tbackground:$rowBackgroundColor;\r\n\tborder:1px solid $rowBorderColor;\r\n\r\n\tfont-size:$textSize;\r\n\r\n\toverflow-y:auto;\r\n\t-webkit-overflow-scrolling: touch;\r\n\r\n\tz-index: 10000;\r\n\r\n\t.tabulator-edit-select-list-item{\r\n\t\tpadding:4px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\r\n\t\t&.active{\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\r\n\t\t&:hover{\r\n\t\t\tcursor:pointer;\r\n\r\n\t\t\tcolor:$rowBackgroundColor;\r\n\t\t\tbackground:$editBoxColor;\r\n\t\t}\r\n\t}\r\n\r\n\t.tabulator-edit-select-list-group{\r\n\t\tborder-bottom:1px solid $rowBorderColor;\r\n\r\n\t\tpadding:4px;\r\n\t\tpadding-top:6px;\r\n\r\n\t\tcolor:$rowTextColor;\r\n\t\tfont-weight:bold;\r\n\t}\r\n}\r\n\r\n// Table print styling\r\n\r\n.tabulator-print-fullscreen{\r\n\tposition: absolute;\r\n\ttop:0;\r\n\tbottom:0;\r\n\tleft:0;\r\n\tright:0;\r\n\r\n\tz-index: 10000;\r\n}\r\n\r\nbody.tabulator-print-fullscreen-hide>*:not(.tabulator-print-fullscreen){\r\n\tdisplay:none !important;\r\n}\r\n\r\n.tabulator-print-table{\r\n\tborder-collapse: collapse;\r\n}\r\n\r\n"]}
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+/*
+ * This file is part of the Tabulator package.
+ *
+ * (c) Oliver Folkerd <oliver.folkerd@gmail.com>
+ *
+ * For the full copyright and license information, please view the LICENSE
+ * file that was distributed with this source code.
+ *
+ * Full Documentation & Demos can be found at: http://olifolkerd.github.io/tabulator/
+ *
+ */
+
+(function (factory) {
+ "use strict";
+
+ if (typeof define === 'function' && define.amd) {
+ define(['jquery', 'jquery-ui', 'tabulator'], factory);
+ } else if (typeof module !== 'undefined' && module.exports) {
+ module.exports = factory(require('jquery'), require('jquery-ui'), require('tabulator'));
+ } else {
+ factory(jQuery);
+ }
+})(function ($, undefined, Tabulator) {
+ $.widget("ui.tabulator", {
+ _create: function _create() {
+ this.table = new Tabulator(this.element[0], this.options);
+
+ //map tabulator functions to jquery wrapper
+ for (var key in Tabulator.prototype) {
+ if (typeof Tabulator.prototype[key] === "function" && key.charAt(0) !== "_") {
+ this[key] = this.table[key].bind(this.table);
+ }
+ }
+ },
+
+ _setOption: function _setOption(option, value) {
+ console.error("Tabulator jQuery wrapper does not support setting options after the table has been instantiated");
+ },
+
+ _destroy: function _destroy(option, value) {
+ this.table.destroy();
+ }
+ });
+});
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+!function(e){"use strict";"function"==typeof define&&define.amd?define(["jquery","jquery-ui","tabulator"],e):"undefined"!=typeof module&&module.exports?module.exports=e(require("jquery"),require("jquery-ui"),require("tabulator")):e(jQuery)}(function(e,t,o){e.widget("ui.tabulator",{_create:function(){this.table=new o(this.element[0],this.options);for(var e in o.prototype)"function"==typeof o.prototype[e]&&"_"!==e.charAt(0)&&(this[e]=this.table[e].bind(this.table))},_setOption:function(e,t){console.error("Tabulator jQuery wrapper does not support setting options after the table has been instantiated")},_destroy:function(e,t){this.table.destroy()}})});
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Accessor = function Accessor(table) {
+ this.table = table; //hold Tabulator object
+ this.allowedTypes = ["", "data", "download", "clipboard"]; //list of accessor types
+};
+
+//initialize column accessor
+Accessor.prototype.initializeColumn = function (column) {
+ var self = this,
+ match = false,
+ config = {};
+
+ this.allowedTypes.forEach(function (type) {
+ var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ accessor;
+
+ if (column.definition[key]) {
+ accessor = self.lookupAccessor(column.definition[key]);
+
+ if (accessor) {
+ match = true;
+
+ config[key] = {
+ accessor: accessor,
+ params: column.definition[key + "Params"] || {}
+ };
+ }
+ }
+ });
+
+ if (match) {
+ column.modules.accessor = config;
+ }
+}, Accessor.prototype.lookupAccessor = function (value) {
+ var accessor = false;
+
+ //set column accessor
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "string":
+ if (this.accessors[value]) {
+ accessor = this.accessors[value];
+ } else {
+ console.warn("Accessor Error - No such accessor found, ignoring: ", value);
+ }
+ break;
+
+ case "function":
+ accessor = value;
+ break;
+ }
+
+ return accessor;
+};
+
+//apply accessor to row
+Accessor.prototype.transformRow = function (dataIn, type) {
+ var self = this,
+ key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
+
+ //clone data object with deep copy to isolate internal data from returned result
+ var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
+
+ self.table.columnManager.traverse(function (column) {
+ var value, accessor, params, component;
+
+ if (column.modules.accessor) {
+
+ accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
+
+ if (accessor) {
+ value = column.getFieldValue(data);
+
+ if (value != "undefined") {
+ component = column.getComponent();
+ params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+ column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
+ }
+ }
+ }
+ });
+
+ return data;
+},
+
+//default accessors
+Accessor.prototype.accessors = {};
+
+Tabulator.prototype.registerModule("accessor", Accessor);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Accessor=function(o){this.table=o,this.allowedTypes=["","data","download","clipboard"]};Accessor.prototype.initializeColumn=function(o){var e=this,s=!1,r={};this.allowedTypes.forEach(function(c){var t,a="accessor"+(c.charAt(0).toUpperCase()+c.slice(1));o.definition[a]&&(t=e.lookupAccessor(o.definition[a]))&&(s=!0,r[a]={accessor:t,params:o.definition[a+"Params"]||{}})}),s&&(o.modules.accessor=r)},Accessor.prototype.lookupAccessor=function(o){var e=!1;switch(void 0===o?"undefined":_typeof(o)){case"string":this.accessors[o]?e=this.accessors[o]:console.warn("Accessor Error - No such accessor found, ignoring: ",o);break;case"function":e=o}return e},Accessor.prototype.transformRow=function(o,e){var s=this,r="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),c=Tabulator.prototype.helpers.deepClone(o||{});return s.table.columnManager.traverse(function(o){var s,t,a,n;o.modules.accessor&&(t=o.modules.accessor[r]||o.modules.accessor.accessor||!1)&&"undefined"!=(s=o.getFieldValue(c))&&(n=o.getComponent(),a="function"==typeof t.params?t.params(s,c,e,n):t.params,o.setFieldValue(c,t.accessor(s,c,e,a,n)))}),c},Accessor.prototype.accessors={},Tabulator.prototype.registerModule("accessor",Accessor);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Ajax = function Ajax(table) {
+
+ this.table = table; //hold Tabulator object
+ this.config = false; //hold config object for ajax request
+ this.url = ""; //request URL
+ this.urlGenerator = false;
+ this.params = false; //request parameters
+
+ this.loaderElement = this.createLoaderElement(); //loader message div
+ this.msgElement = this.createMsgElement(); //message element
+ this.loadingElement = false;
+ this.errorElement = false;
+ this.loaderPromise = false;
+
+ this.progressiveLoad = false;
+ this.loading = false;
+
+ this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
+};
+
+//initialize setup options
+Ajax.prototype.initialize = function () {
+ var template;
+
+ this.loaderElement.appendChild(this.msgElement);
+
+ if (this.table.options.ajaxLoaderLoading) {
+ if (typeof this.table.options.ajaxLoaderLoading == "string") {
+ template = document.createElement('template');
+ template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
+ this.loadingElement = template.content.firstChild;
+ } else {
+ this.loadingElement = this.table.options.ajaxLoaderLoading;
+ }
+ }
+
+ this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
+
+ this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
+
+ if (this.table.options.ajaxLoaderError) {
+ if (typeof this.table.options.ajaxLoaderError == "string") {
+ template = document.createElement('template');
+ template.innerHTML = this.table.options.ajaxLoaderError.trim();
+ this.errorElement = template.content.firstChild;
+ } else {
+ this.errorElement = this.table.options.ajaxLoaderError;
+ }
+ }
+
+ if (this.table.options.ajaxParams) {
+ this.setParams(this.table.options.ajaxParams);
+ }
+
+ if (this.table.options.ajaxConfig) {
+ this.setConfig(this.table.options.ajaxConfig);
+ }
+
+ if (this.table.options.ajaxURL) {
+ this.setUrl(this.table.options.ajaxURL);
+ }
+
+ if (this.table.options.ajaxProgressiveLoad) {
+ if (this.table.options.pagination) {
+ this.progressiveLoad = false;
+ console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
+ } else {
+ if (this.table.modExists("page")) {
+ this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
+ this.table.modules.page.initializeProgressive(this.progressiveLoad);
+ } else {
+ console.error("Pagination plugin is required for progressive ajax loading");
+ }
+ }
+ }
+};
+
+Ajax.prototype.createLoaderElement = function () {
+ var el = document.createElement("div");
+ el.classList.add("tabulator-loader");
+ return el;
+};
+
+Ajax.prototype.createMsgElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-loader-msg");
+ el.setAttribute("role", "alert");
+
+ return el;
+};
+
+//set ajax params
+Ajax.prototype.setParams = function (params, update) {
+ if (update) {
+ this.params = this.params || {};
+
+ for (var key in params) {
+ this.params[key] = params[key];
+ }
+ } else {
+ this.params = params;
+ }
+};
+
+Ajax.prototype.getParams = function () {
+ return this.params || {};
+};
+
+//load config object
+Ajax.prototype.setConfig = function (config) {
+ this._loadDefaultConfig();
+
+ if (typeof config == "string") {
+ this.config.method = config;
+ } else {
+ for (var key in config) {
+ this.config[key] = config[key];
+ }
+ }
+};
+
+//create config object from default
+Ajax.prototype._loadDefaultConfig = function (force) {
+ var self = this;
+ if (!self.config || force) {
+
+ self.config = {};
+
+ //load base config from defaults
+ for (var key in self.defaultConfig) {
+ self.config[key] = self.defaultConfig[key];
+ }
+ }
+};
+
+//set request url
+Ajax.prototype.setUrl = function (url) {
+ this.url = url;
+};
+
+//get request url
+Ajax.prototype.getUrl = function () {
+ return this.url;
+};
+
+//lstandard loading function
+Ajax.prototype.loadData = function (inPosition) {
+ var self = this;
+
+ if (this.progressiveLoad) {
+ return this._loadDataProgressive();
+ } else {
+ return this._loadDataStandard(inPosition);
+ }
+};
+
+Ajax.prototype.nextPage = function (diff) {
+ var margin;
+
+ if (!this.loading) {
+
+ margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
+
+ if (diff < margin) {
+ this.table.modules.page.nextPage().then(function () {}).catch(function () {});
+ }
+ }
+};
+
+Ajax.prototype.blockActiveRequest = function () {
+ this.requestOrder++;
+};
+
+Ajax.prototype._loadDataProgressive = function () {
+ this.table.rowManager.setData([]);
+ return this.table.modules.page.setPage(1);
+};
+
+Ajax.prototype._loadDataStandard = function (inPosition) {
+ var _this = this;
+
+ return new Promise(function (resolve, reject) {
+ _this.sendRequest(inPosition).then(function (data) {
+ _this.table.rowManager.setData(data, inPosition).then(function () {
+ resolve();
+ }).catch(function (e) {
+ reject(e);
+ });
+ }).catch(function (e) {
+ reject(e);
+ });
+ });
+};
+
+Ajax.prototype.generateParamsList = function (data, prefix) {
+ var self = this,
+ output = [];
+
+ prefix = prefix || "";
+
+ if (Array.isArray(data)) {
+ data.forEach(function (item, i) {
+ output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
+ });
+ } else if ((typeof data === "undefined" ? "undefined" : _typeof(data)) === "object") {
+ for (var key in data) {
+ output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
+ }
+ } else {
+ output.push({ key: prefix, value: data });
+ }
+
+ return output;
+};
+
+Ajax.prototype.serializeParams = function (params) {
+ var output = this.generateParamsList(params),
+ encoded = [];
+
+ output.forEach(function (item) {
+ encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
+ });
+
+ return encoded.join("&");
+};
+
+//send ajax request
+Ajax.prototype.sendRequest = function (silent) {
+ var _this2 = this;
+
+ var self = this,
+ url = self.url,
+ requestNo,
+ esc,
+ query;
+
+ self.requestOrder++;
+ requestNo = self.requestOrder;
+
+ self._loadDefaultConfig();
+
+ return new Promise(function (resolve, reject) {
+ if (self.table.options.ajaxRequesting.call(_this2.table, self.url, self.params) !== false) {
+
+ self.loading = true;
+
+ if (!silent) {
+ self.showLoader();
+ }
+
+ _this2.loaderPromise(url, self.config, self.params).then(function (data) {
+ if (requestNo === self.requestOrder) {
+ if (self.table.options.ajaxResponse) {
+ data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
+ }
+ resolve(data);
+ } else {
+ console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
+ }
+
+ self.hideLoader();
+
+ self.loading = false;
+ }).catch(function (error) {
+ console.error("Ajax Load Error: ", error);
+ self.table.options.ajaxError.call(self.table, error);
+
+ self.showError();
+
+ setTimeout(function () {
+ self.hideLoader();
+ }, 3000);
+
+ self.loading = false;
+
+ reject();
+ });
+ } else {
+ reject();
+ }
+ });
+};
+
+Ajax.prototype.showLoader = function () {
+ var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
+
+ if (shouldLoad) {
+
+ this.hideLoader();
+
+ while (this.msgElement.firstChild) {
+ this.msgElement.removeChild(this.msgElement.firstChild);
+ }this.msgElement.classList.remove("tabulator-error");
+ this.msgElement.classList.add("tabulator-loading");
+
+ if (this.loadingElement) {
+ this.msgElement.appendChild(this.loadingElement);
+ } else {
+ this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
+ }
+
+ this.table.element.appendChild(this.loaderElement);
+ }
+};
+
+Ajax.prototype.showError = function () {
+ this.hideLoader();
+
+ while (this.msgElement.firstChild) {
+ this.msgElement.removeChild(this.msgElement.firstChild);
+ }this.msgElement.classList.remove("tabulator-loading");
+ this.msgElement.classList.add("tabulator-error");
+
+ if (this.errorElement) {
+ this.msgElement.appendChild(this.errorElement);
+ } else {
+ this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
+ }
+
+ this.table.element.appendChild(this.loaderElement);
+};
+
+Ajax.prototype.hideLoader = function () {
+ if (this.loaderElement.parentNode) {
+ this.loaderElement.parentNode.removeChild(this.loaderElement);
+ }
+};
+
+//default ajax config object
+Ajax.prototype.defaultConfig = {
+ method: "GET"
+};
+
+Ajax.prototype.defaultURLGenerator = function (url, config, params) {
+
+ if (url) {
+ if (params && Object.keys(params).length) {
+ if (!config.method || config.method.toLowerCase() == "get") {
+ config.method = "get";
+ url += "?" + this.serializeParams(params);
+ }
+ }
+ }
+
+ return url;
+};
+
+Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
+ var self = this,
+ contentType;
+
+ return new Promise(function (resolve, reject) {
+
+ //set url
+ url = self.urlGenerator(url, config, params);
+
+ //set body content if not GET request
+ if (config.method.toUpperCase() != "GET") {
+ contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
+ if (contentType) {
+
+ for (var key in contentType.headers) {
+ if (!config.headers) {
+ config.headers = {};
+ }
+
+ if (typeof config.headers[key] === "undefined") {
+ config.headers[key] = contentType.headers[key];
+ }
+ }
+
+ config.body = contentType.body.call(self, url, config, params);
+ } else {
+ console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
+ }
+ }
+
+ if (url) {
+
+ //configure headers
+ if (typeof config.headers === "undefined") {
+ config.headers = {};
+ }
+
+ if (typeof config.headers.Accept === "undefined") {
+ config.headers.Accept = "application/json";
+ }
+
+ if (typeof config.headers["X-Requested-With"] === "undefined") {
+ config.headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ if (typeof config.mode === "undefined") {
+ config.mode = "cors";
+ }
+
+ if (config.mode == "cors") {
+
+ if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
+ config.headers["Access-Control-Allow-Origin"] = window.location.origin;
+ }
+
+ if (typeof config.credentials === "undefined") {
+ config.credentials = 'same-origin';
+ }
+ } else {
+ if (typeof config.credentials === "undefined") {
+ config.credentials = 'include';
+ }
+ }
+
+ //send request
+ fetch(url, config).then(function (response) {
+ if (response.ok) {
+ response.json().then(function (data) {
+ resolve(data);
+ }).catch(function (error) {
+ reject(error);
+ console.warn("Ajax Load Error - Invalid JSON returned", error);
+ });
+ } else {
+ console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
+ reject(response);
+ }
+ }).catch(function (error) {
+ console.error("Ajax Load Error - Connection Error: ", error);
+ reject(error);
+ });
+ } else {
+ console.warn("Ajax Load Error - No URL Set");
+ resolve([]);
+ }
+ });
+};
+
+Ajax.prototype.contentTypeFormatters = {
+ "json": {
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: function body(url, config, params) {
+ return JSON.stringify(params);
+ }
+ },
+ "form": {
+ headers: {},
+ body: function body(url, config, params) {
+ var output = this.generateParamsList(params),
+ form = new FormData();
+
+ output.forEach(function (item) {
+ form.append(item.key, item.value);
+ });
+
+ return form;
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("ajax", Ajax);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Ajax=function(e){this.table=e,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};Ajax.prototype.initialize=function(){var e;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=e.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(e=document.createElement("template"),e.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=e.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},Ajax.prototype.createLoaderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader"),e},Ajax.prototype.createMsgElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-loader-msg"),e.setAttribute("role","alert"),e},Ajax.prototype.setParams=function(e,t){if(t){this.params=this.params||{};for(var o in e)this.params[o]=e[o]}else this.params=e},Ajax.prototype.getParams=function(){return this.params||{}},Ajax.prototype.setConfig=function(e){if(this._loadDefaultConfig(),"string"==typeof e)this.config.method=e;else for(var t in e)this.config[t]=e[t]},Ajax.prototype._loadDefaultConfig=function(e){var t=this;if(!t.config||e){t.config={};for(var o in t.defaultConfig)t.config[o]=t.defaultConfig[o]}},Ajax.prototype.setUrl=function(e){this.url=e},Ajax.prototype.getUrl=function(){return this.url},Ajax.prototype.loadData=function(e){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(e)},Ajax.prototype.nextPage=function(e){var t;this.loading||(t=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,e<t&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},Ajax.prototype.blockActiveRequest=function(){this.requestOrder++},Ajax.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},Ajax.prototype._loadDataStandard=function(e){var t=this;return new Promise(function(o,a){t.sendRequest(e).then(function(r){t.table.rowManager.setData(r,e).then(function(){o()}).catch(function(e){a(e)})}).catch(function(e){a(e)})})},Ajax.prototype.generateParamsList=function(e,t){var o=this,a=[];if(t=t||"",Array.isArray(e))e.forEach(function(e,r){a=a.concat(o.generateParamsList(e,t?t+"["+r+"]":r))});else if("object"===(void 0===e?"undefined":_typeof(e)))for(var r in e)a=a.concat(o.generateParamsList(e[r],t?t+"["+r+"]":r));else a.push({key:t,value:e});return a},Ajax.prototype.serializeParams=function(e){var t=this.generateParamsList(e),o=[];return t.forEach(function(e){o.push(encodeURIComponent(e.key)+"="+encodeURIComponent(e.value))}),o.join("&")},Ajax.prototype.sendRequest=function(e){var t,o=this,a=this,r=a.url;return a.requestOrder++,t=a.requestOrder,a._loadDefaultConfig(),new Promise(function(i,n){!1!==a.table.options.ajaxRequesting.call(o.table,a.url,a.params)?(a.loading=!0,e||a.showLoader(),o.loaderPromise(r,a.config,a.params).then(function(e){t===a.requestOrder?(a.table.options.ajaxResponse&&(e=a.table.options.ajaxResponse.call(a.table,a.url,a.params,e)),i(e)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),a.hideLoader(),a.loading=!1}).catch(function(e){console.error("Ajax Load Error: ",e),a.table.options.ajaxError.call(a.table,e),a.showError(),setTimeout(function(){a.hideLoader()},3e3),a.loading=!1,n()})):n()})},Ajax.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},Ajax.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},Ajax.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},Ajax.prototype.defaultConfig={method:"GET"},Ajax.prototype.defaultURLGenerator=function(e,t,o){return e&&o&&Object.keys(o).length&&(t.method&&"get"!=t.method.toLowerCase()||(t.method="get",e+="?"+this.serializeParams(o))),e},Ajax.prototype.defaultLoaderPromise=function(e,t,o){var a,r=this;return new Promise(function(i,n){if(e=r.urlGenerator(e,t,o),"GET"!=t.method.toUpperCase())if(a="object"===_typeof(r.table.options.ajaxContentType)?r.table.options.ajaxContentType:r.contentTypeFormatters[r.table.options.ajaxContentType]){for(var s in a.headers)t.headers||(t.headers={}),void 0===t.headers[s]&&(t.headers[s]=a.headers[s]);t.body=a.body.call(r,e,t,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",r.table.options.ajaxContentType);e?(void 0===t.headers&&(t.headers={}),void 0===t.headers.Accept&&(t.headers.Accept="application/json"),void 0===t.headers["X-Requested-With"]&&(t.headers["X-Requested-With"]="XMLHttpRequest"),void 0===t.mode&&(t.mode="cors"),"cors"==t.mode?(void 0===t.headers["Access-Control-Allow-Origin"]&&(t.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===t.credentials&&(t.credentials="same-origin")):void 0===t.credentials&&(t.credentials="include"),fetch(e,t).then(function(e){e.ok?e.json().then(function(e){i(e)}).catch(function(e){n(e),console.warn("Ajax Load Error - Invalid JSON returned",e)}):(console.error("Ajax Load Error - Connection Error: "+e.status,e.statusText),n(e))}).catch(function(e){console.error("Ajax Load Error - Connection Error: ",e),n(e)})):(console.warn("Ajax Load Error - No URL Set"),i([]))})},Ajax.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(e,t,o){return JSON.stringify(o)}},form:{headers:{},body:function(e,t,o){var a=this.generateParamsList(o),r=new FormData;return a.forEach(function(e){r.append(e.key,e.value)}),r}}},Tabulator.prototype.registerModule("ajax",Ajax);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ColumnCalcs = function ColumnCalcs(table) {
+ this.table = table; //hold Tabulator object
+ this.topCalcs = [];
+ this.botCalcs = [];
+ this.genColumn = false;
+ this.topElement = this.createElement();
+ this.botElement = this.createElement();
+ this.topRow = false;
+ this.botRow = false;
+ this.topInitialized = false;
+ this.botInitialized = false;
+
+ this.initialize();
+};
+
+ColumnCalcs.prototype.createElement = function () {
+ var el = document.createElement("div");
+ el.classList.add("tabulator-calcs-holder");
+ return el;
+};
+
+ColumnCalcs.prototype.initialize = function () {
+ this.genColumn = new Column({ field: "value" }, this);
+};
+
+//dummy functions to handle being mock column manager
+ColumnCalcs.prototype.registerColumnField = function () {};
+
+//initialize column calcs
+ColumnCalcs.prototype.initializeColumn = function (column) {
+ var def = column.definition;
+
+ var config = {
+ topCalcParams: def.topCalcParams || {},
+ botCalcParams: def.bottomCalcParams || {}
+ };
+
+ if (def.topCalc) {
+
+ switch (_typeof(def.topCalc)) {
+ case "string":
+ if (this.calculations[def.topCalc]) {
+ config.topCalc = this.calculations[def.topCalc];
+ } else {
+ console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
+ }
+ break;
+
+ case "function":
+ config.topCalc = def.topCalc;
+ break;
+
+ }
+
+ if (config.topCalc) {
+ column.modules.columnCalcs = config;
+ this.topCalcs.push(column);
+
+ if (this.table.options.columnCalcs != "group") {
+ this.initializeTopRow();
+ }
+ }
+ }
+
+ if (def.bottomCalc) {
+ switch (_typeof(def.bottomCalc)) {
+ case "string":
+ if (this.calculations[def.bottomCalc]) {
+ config.botCalc = this.calculations[def.bottomCalc];
+ } else {
+ console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
+ }
+ break;
+
+ case "function":
+ config.botCalc = def.bottomCalc;
+ break;
+
+ }
+
+ if (config.botCalc) {
+ column.modules.columnCalcs = config;
+ this.botCalcs.push(column);
+
+ if (this.table.options.columnCalcs != "group") {
+ this.initializeBottomRow();
+ }
+ }
+ }
+};
+
+ColumnCalcs.prototype.removeCalcs = function () {
+ var changed = false;
+
+ if (this.topInitialized) {
+ this.topInitialized = false;
+ this.topElement.parentNode.removeChild(this.topElement);
+ changed = true;
+ }
+
+ if (this.botInitialized) {
+ this.botInitialized = false;
+ this.table.footerManager.remove(this.botElement);
+ changed = true;
+ }
+
+ if (changed) {
+ this.table.rowManager.adjustTableSize();
+ }
+};
+
+ColumnCalcs.prototype.initializeTopRow = function () {
+ if (!this.topInitialized) {
+ // this.table.columnManager.headersElement.after(this.topElement);
+ this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+ this.topInitialized = true;
+ }
+};
+
+ColumnCalcs.prototype.initializeBottomRow = function () {
+ if (!this.botInitialized) {
+ this.table.footerManager.prepend(this.botElement);
+ this.botInitialized = true;
+ }
+};
+
+ColumnCalcs.prototype.scrollHorizontal = function (left) {
+ var hozAdjust = 0,
+ scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
+
+ if (this.botInitialized) {
+ this.botRow.getElement().style.marginLeft = -left + "px";
+ }
+};
+
+ColumnCalcs.prototype.recalc = function (rows) {
+ var data, row;
+
+ if (this.topInitialized || this.botInitialized) {
+ data = this.rowsToData(rows);
+
+ if (this.topInitialized) {
+ if (this.topRow) {
+ this.topRow.deleteCells();
+ }
+
+ row = this.generateRow("top", this.rowsToData(rows));
+ this.topRow = row;
+ while (this.topElement.firstChild) {
+ this.topElement.removeChild(this.topElement.firstChild);
+ }this.topElement.appendChild(row.getElement());
+ row.initialize(true);
+ }
+
+ if (this.botInitialized) {
+ if (this.botRow) {
+ this.botRow.deleteCells();
+ }
+
+ row = this.generateRow("bottom", this.rowsToData(rows));
+ this.botRow = row;
+ while (this.botElement.firstChild) {
+ this.botElement.removeChild(this.botElement.firstChild);
+ }this.botElement.appendChild(row.getElement());
+ row.initialize(true);
+ }
+
+ this.table.rowManager.adjustTableSize();
+
+ //set resizable handles
+ if (this.table.modExists("frozenColumns")) {
+ this.table.modules.frozenColumns.layout();
+ }
+ }
+};
+
+ColumnCalcs.prototype.recalcRowGroup = function (row) {
+ this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
+};
+
+ColumnCalcs.prototype.recalcGroup = function (group) {
+ var data, rowData;
+
+ if (group) {
+ if (group.calcs) {
+ if (group.calcs.bottom) {
+ data = this.rowsToData(group.rows);
+ rowData = this.generateRowData("bottom", data);
+
+ group.calcs.bottom.updateData(rowData);
+ group.calcs.bottom.reinitialize();
+ }
+
+ if (group.calcs.top) {
+ data = this.rowsToData(group.rows);
+ rowData = this.generateRowData("top", data);
+
+ group.calcs.top.updateData(rowData);
+ group.calcs.top.reinitialize();
+ }
+ }
+ }
+};
+
+//generate top stats row
+ColumnCalcs.prototype.generateTopRow = function (rows) {
+ return this.generateRow("top", this.rowsToData(rows));
+};
+//generate bottom stats row
+ColumnCalcs.prototype.generateBottomRow = function (rows) {
+ return this.generateRow("bottom", this.rowsToData(rows));
+};
+
+ColumnCalcs.prototype.rowsToData = function (rows) {
+ var data = [];
+
+ rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ return data;
+};
+
+//generate stats row
+ColumnCalcs.prototype.generateRow = function (pos, data) {
+ var self = this,
+ rowData = this.generateRowData(pos, data),
+ row;
+
+ if (self.table.modExists("mutator")) {
+ self.table.modules.mutator.disable();
+ }
+
+ row = new Row(rowData, this);
+
+ if (self.table.modExists("mutator")) {
+ self.table.modules.mutator.enable();
+ }
+
+ row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
+ row.type = "calc";
+
+ row.generateCells = function () {
+
+ var cells = [];
+
+ self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+ //set field name of mock column
+ self.genColumn.setField(column.getField());
+ self.genColumn.hozAlign = column.hozAlign;
+
+ if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
+ self.genColumn.modules.format = {
+ formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
+ params: column.definition[pos + "CalcFormatterParams"]
+ };
+ } else {
+ self.genColumn.modules.format = {
+ formatter: self.table.modules.format.getFormatter("plaintext"),
+ params: {}
+ };
+ }
+
+ //ensure css class defintion is replicated to calculation cell
+ self.genColumn.definition.cssClass = column.definition.cssClass;
+
+ //generate cell and assign to correct column
+ var cell = new Cell(self.genColumn, row);
+ cell.column = column;
+ cell.setWidth();
+
+ column.cells.push(cell);
+ cells.push(cell);
+
+ if (!column.visible) {
+ cell.hide();
+ }
+ });
+
+ this.cells = cells;
+ };
+
+ return row;
+};
+
+//generate stats row
+ColumnCalcs.prototype.generateRowData = function (pos, data) {
+ var rowData = {},
+ calcs = pos == "top" ? this.topCalcs : this.botCalcs,
+ type = pos == "top" ? "topCalc" : "botCalc",
+ params,
+ paramKey;
+
+ calcs.forEach(function (column) {
+ var values = [];
+
+ if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
+ data.forEach(function (item) {
+ values.push(column.getFieldValue(item));
+ });
+
+ paramKey = type + "Params";
+ params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
+
+ column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
+ }
+ });
+
+ return rowData;
+};
+
+ColumnCalcs.prototype.hasTopCalcs = function () {
+ return !!this.topCalcs.length;
+};
+
+ColumnCalcs.prototype.hasBottomCalcs = function () {
+ return !!this.botCalcs.length;
+};
+
+//handle table redraw
+ColumnCalcs.prototype.redraw = function () {
+ if (this.topRow) {
+ this.topRow.normalizeHeight(true);
+ }
+ if (this.botRow) {
+ this.botRow.normalizeHeight(true);
+ }
+};
+
+//return the calculated
+ColumnCalcs.prototype.getResults = function () {
+ var self = this,
+ results = {},
+ groups;
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ groups = this.table.modules.groupRows.getGroups(true);
+
+ groups.forEach(function (group) {
+ results[group.getKey()] = self.getGroupResults(group);
+ });
+ } else {
+ results = {
+ top: this.topRow ? this.topRow.getData() : {},
+ bottom: this.botRow ? this.botRow.getData() : {}
+ };
+ }
+
+ return results;
+};
+
+//get results from a group
+ColumnCalcs.prototype.getGroupResults = function (group) {
+ var self = this,
+ groupObj = group._getSelf(),
+ subGroups = group.getSubGroups(),
+ subGroupResults = {},
+ results = {};
+
+ subGroups.forEach(function (subgroup) {
+ subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
+ });
+
+ results = {
+ top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
+ bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
+ groups: subGroupResults
+ };
+
+ return results;
+};
+
+//default calculations
+ColumnCalcs.prototype.calculations = {
+ "avg": function avg(values, data, calcParams) {
+ var output = 0,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
+
+ if (values.length) {
+ output = values.reduce(function (sum, value) {
+ value = Number(value);
+ return sum + value;
+ });
+
+ output = output / values.length;
+
+ output = precision !== false ? output.toFixed(precision) : output;
+ }
+
+ return parseFloat(output).toString();
+ },
+ "max": function max(values, data, calcParams) {
+ var output = null,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ values.forEach(function (value) {
+
+ value = Number(value);
+
+ if (value > output || output === null) {
+ output = value;
+ }
+ });
+
+ return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+ },
+ "min": function min(values, data, calcParams) {
+ var output = null,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ values.forEach(function (value) {
+
+ value = Number(value);
+
+ if (value < output || output === null) {
+ output = value;
+ }
+ });
+
+ return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+ },
+ "sum": function sum(values, data, calcParams) {
+ var output = 0,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ if (values.length) {
+ values.forEach(function (value) {
+ value = Number(value);
+
+ output += !isNaN(value) ? Number(value) : 0;
+ });
+ }
+
+ return precision !== false ? output.toFixed(precision) : output;
+ },
+ "concat": function concat(values, data, calcParams) {
+ var output = 0;
+
+ if (values.length) {
+ output = values.reduce(function (sum, value) {
+ return String(sum) + String(value);
+ });
+ }
+
+ return output;
+ },
+ "count": function count(values, data, calcParams) {
+ var output = 0;
+
+ if (values.length) {
+ values.forEach(function (value) {
+ if (value) {
+ output++;
+ }
+ });
+ }
+
+ return output;
+ }
+};
+
+Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},ColumnCalcs=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};ColumnCalcs.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},ColumnCalcs.prototype.initialize=function(){this.genColumn=new Column({field:"value"},this)},ColumnCalcs.prototype.registerColumnField=function(){},ColumnCalcs.prototype.initializeColumn=function(t){var o=t.definition,e={topCalcParams:o.topCalcParams||{},botCalcParams:o.bottomCalcParams||{}};if(o.topCalc){switch(_typeof(o.topCalc)){case"string":this.calculations[o.topCalc]?e.topCalc=this.calculations[o.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.topCalc);break;case"function":e.topCalc=o.topCalc}e.topCalc&&(t.modules.columnCalcs=e,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(o.bottomCalc){switch(_typeof(o.bottomCalc)){case"string":this.calculations[o.bottomCalc]?e.botCalc=this.calculations[o.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",o.bottomCalc);break;case"function":e.botCalc=o.bottomCalc}e.botCalc&&(t.modules.columnCalcs=e,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},ColumnCalcs.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},ColumnCalcs.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},ColumnCalcs.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},ColumnCalcs.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},ColumnCalcs.prototype.recalc=function(t){var o;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),o=this.generateRow("top",this.rowsToData(t)),this.topRow=o;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(o.getElement()),o.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),o=this.generateRow("bottom",this.rowsToData(t)),this.botRow=o;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(o.getElement()),o.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},ColumnCalcs.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},ColumnCalcs.prototype.recalcGroup=function(t){var o,e;t&&t.calcs&&(t.calcs.bottom&&(o=this.rowsToData(t.rows),e=this.generateRowData("bottom",o),t.calcs.bottom.updateData(e),t.calcs.bottom.reinitialize()),t.calcs.top&&(o=this.rowsToData(t.rows),e=this.generateRowData("top",o),t.calcs.top.updateData(e),t.calcs.top.reinitialize()))},ColumnCalcs.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},ColumnCalcs.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},ColumnCalcs.prototype.rowsToData=function(t){var o=[];return t.forEach(function(t){o.push(t.getData())}),o},ColumnCalcs.prototype.generateRow=function(t,o){var e,i=this,l=this.generateRowData(t,o);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),e=new Row(l,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),e.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),e.type="calc",e.generateCells=function(){var o=[];i.table.columnManager.columnsByIndex.forEach(function(l){i.genColumn.setField(l.getField()),i.genColumn.hozAlign=l.hozAlign,l.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(l.definition[t+"CalcFormatter"]),params:l.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=l.definition.cssClass;var a=new Cell(i.genColumn,e);a.column=l,a.setWidth(),l.cells.push(a),o.push(a),l.visible||a.hide()}),this.cells=o},e},ColumnCalcs.prototype.generateRowData=function(t,o){var e,i,l={},a="top"==t?this.topCalcs:this.botCalcs,n="top"==t?"topCalc":"botCalc";return a.forEach(function(t){var a=[];t.modules.columnCalcs&&t.modules.columnCalcs[n]&&(o.forEach(function(o){a.push(t.getFieldValue(o))}),i=n+"Params",e="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](a,o):t.modules.columnCalcs[i],t.setFieldValue(l,t.modules.columnCalcs[n](a,o,e)))}),l},ColumnCalcs.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},ColumnCalcs.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},ColumnCalcs.prototype.redraw=function(){this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},ColumnCalcs.prototype.getResults=function(){var t,o=this,e={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){e[t.getKey()]=o.getGroupResults(t)})):e={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},e},ColumnCalcs.prototype.getGroupResults=function(t){var o=this,e=t._getSelf(),i=t.getSubGroups(),l={};return i.forEach(function(t){l[t.getKey()]=o.getGroupResults(t)}),{top:e.calcs.top?e.calcs.top.getData():{},bottom:e.calcs.bottom?e.calcs.bottom.getData():{},groups:l}},ColumnCalcs.prototype.calculations={avg:function(t,o,e){var i=0,l=void 0!==e.precision?e.precision:2;return t.length&&(i=t.reduce(function(t,o){return o=Number(o),t+o}),i/=t.length,i=!1!==l?i.toFixed(l):i),parseFloat(i).toString()},max:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},min:function(t,o,e){var i=null,l=void 0!==e.precision&&e.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==l?i.toFixed(l):i:""},sum:function(t,o,e){var i=0,l=void 0!==e.precision&&e.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==l?i.toFixed(l):i},concat:function(t,o,e){var i=0;return t.length&&(i=t.reduce(function(t,o){return String(t)+String(o)})),i},count:function(t,o,e){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},Tabulator.prototype.registerModule("columnCalcs",ColumnCalcs);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Clipboard = function Clipboard(table) {
+ this.table = table;
+ this.mode = true;
+ this.copySelector = false;
+ this.copySelectorParams = {};
+ this.copyFormatter = false;
+ this.copyFormatterParams = {};
+ this.pasteParser = function () {};
+ this.pasteAction = function () {};
+ this.htmlElement = false;
+ this.config = {};
+
+ this.blocked = true; //block copy actions not originating from this command
+};
+
+Clipboard.prototype.initialize = function () {
+ var self = this;
+
+ this.mode = this.table.options.clipboard;
+
+ if (this.mode === true || this.mode === "copy") {
+ this.table.element.addEventListener("copy", function (e) {
+ var data;
+
+ self.processConfig();
+
+ if (!self.blocked) {
+ e.preventDefault();
+
+ data = self.generateContent();
+
+ if (window.clipboardData && window.clipboardData.setData) {
+ window.clipboardData.setData('Text', data);
+ } else if (e.clipboardData && e.clipboardData.setData) {
+ e.clipboardData.setData('text/plain', data);
+ if (self.htmlElement) {
+ e.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+ }
+ } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
+ e.originalEvent.clipboardData.setData('text/plain', data);
+ if (self.htmlElement) {
+ e.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+ }
+ }
+
+ self.table.options.clipboardCopied.call(this.table, data);
+
+ self.reset();
+ }
+ });
+ }
+
+ if (this.mode === true || this.mode === "paste") {
+ this.table.element.addEventListener("paste", function (e) {
+ self.paste(e);
+ });
+ }
+
+ this.setPasteParser(this.table.options.clipboardPasteParser);
+ this.setPasteAction(this.table.options.clipboardPasteAction);
+};
+
+Clipboard.prototype.processConfig = function () {
+ var config = {
+ columnHeaders: "groups",
+ rowGroups: true,
+ columnCalcs: true
+ };
+
+ if (typeof this.table.options.clipboardCopyHeader !== "undefined") {
+ config.columnHeaders = this.table.options.clipboardCopyHeader;
+ console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
+ }
+
+ if (this.table.options.clipboardCopyConfig) {
+ for (var key in this.table.options.clipboardCopyConfig) {
+ config[key] = this.table.options.clipboardCopyConfig[key];
+ }
+ }
+
+ if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.config.rowGroups = true;
+ }
+
+ if (config.columnHeaders) {
+ if ((config.columnHeaders === "groups" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+ this.config.columnHeaders = "groups";
+ } else {
+ this.config.columnHeaders = "columns";
+ }
+ } else {
+ this.config.columnHeaders = false;
+ }
+
+ if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+ this.config.columnCalcs = true;
+ }
+};
+
+Clipboard.prototype.reset = function () {
+ this.blocked = false;
+ this.originalSelectionText = "";
+};
+
+Clipboard.prototype.setPasteAction = function (action) {
+
+ switch (typeof action === "undefined" ? "undefined" : _typeof(action)) {
+ case "string":
+ this.pasteAction = this.pasteActions[action];
+
+ if (!this.pasteAction) {
+ console.warn("Clipboard Error - No such paste action found:", action);
+ }
+ break;
+
+ case "function":
+ this.pasteAction = action;
+ break;
+ }
+};
+
+Clipboard.prototype.setPasteParser = function (parser) {
+ switch (typeof parser === "undefined" ? "undefined" : _typeof(parser)) {
+ case "string":
+ this.pasteParser = this.pasteParsers[parser];
+
+ if (!this.pasteParser) {
+ console.warn("Clipboard Error - No such paste parser found:", parser);
+ }
+ break;
+
+ case "function":
+ this.pasteParser = parser;
+ break;
+ }
+};
+
+Clipboard.prototype.paste = function (e) {
+ var data, rowData, rows;
+
+ if (this.checkPaseOrigin(e)) {
+
+ data = this.getPasteData(e);
+
+ rowData = this.pasteParser.call(this, data);
+
+ if (rowData) {
+ e.preventDefault();
+
+ if (this.table.modExists("mutator")) {
+ rowData = this.mutateData(rowData);
+ }
+
+ rows = this.pasteAction.call(this, rowData);
+ this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
+ } else {
+ this.table.options.clipboardPasteError.call(this.table, data);
+ }
+ }
+};
+
+Clipboard.prototype.mutateData = function (data) {
+ var self = this,
+ output = [];
+
+ if (Array.isArray(data)) {
+ data.forEach(function (row) {
+ output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
+ });
+ } else {
+ output = data;
+ }
+
+ return output;
+};
+
+Clipboard.prototype.checkPaseOrigin = function (e) {
+ var valid = true;
+
+ if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
+ valid = false;
+ }
+
+ return valid;
+};
+
+Clipboard.prototype.getPasteData = function (e) {
+ var data;
+
+ if (window.clipboardData && window.clipboardData.getData) {
+ data = window.clipboardData.getData('Text');
+ } else if (e.clipboardData && e.clipboardData.getData) {
+ data = e.clipboardData.getData('text/plain');
+ } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
+ data = e.originalEvent.clipboardData.getData('text/plain');
+ }
+
+ return data;
+};
+
+Clipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {
+ var range, sel, textRange;
+ this.blocked = false;
+
+ if (this.mode === true || this.mode === "copy") {
+
+ if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
+ range = document.createRange();
+ range.selectNodeContents(this.table.element);
+ sel = window.getSelection();
+
+ if (sel.toString() && internal) {
+ selector = "userSelection";
+ formatter = "raw";
+ selectorParams = sel.toString();
+ }
+
+ sel.removeAllRanges();
+ sel.addRange(range);
+ } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
+ textRange = document.body.createTextRange();
+ textRange.moveToElementText(this.table.element);
+ textRange.select();
+ }
+
+ this.setSelector(selector);
+ this.copySelectorParams = typeof selectorParams != "undefined" && selectorParams != null ? selectorParams : this.config.columnHeaders;
+ this.setFormatter(formatter);
+ this.copyFormatterParams = typeof formatterParams != "undefined" && formatterParams != null ? formatterParams : {};
+
+ document.execCommand('copy');
+
+ if (sel) {
+ sel.removeAllRanges();
+ }
+ }
+};
+
+Clipboard.prototype.setSelector = function (selector) {
+ selector = selector || this.table.options.clipboardCopySelector;
+
+ switch (typeof selector === "undefined" ? "undefined" : _typeof(selector)) {
+ case "string":
+ if (this.copySelectors[selector]) {
+ this.copySelector = this.copySelectors[selector];
+ } else {
+ console.warn("Clipboard Error - No such selector found:", selector);
+ }
+ break;
+
+ case "function":
+ this.copySelector = selector;
+ break;
+ }
+};
+
+Clipboard.prototype.setFormatter = function (formatter) {
+
+ formatter = formatter || this.table.options.clipboardCopyFormatter;
+
+ switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
+ case "string":
+ if (this.copyFormatters[formatter]) {
+ this.copyFormatter = this.copyFormatters[formatter];
+ } else {
+ console.warn("Clipboard Error - No such formatter found:", formatter);
+ }
+ break;
+
+ case "function":
+ this.copyFormatter = formatter;
+ break;
+ }
+};
+
+Clipboard.prototype.generateContent = function () {
+ var data;
+
+ this.htmlElement = false;
+ data = this.copySelector.call(this, this.config, this.copySelectorParams);
+
+ return this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);
+};
+
+Clipboard.prototype.generateSimpleHeaders = function (columns) {
+ var headers = [];
+
+ columns.forEach(function (column) {
+ headers.push(column.definition.title);
+ });
+
+ return headers;
+};
+
+Clipboard.prototype.generateColumnGroupHeaders = function (columns) {
+ var _this = this;
+
+ var output = [];
+
+ this.table.columnManager.columns.forEach(function (column) {
+ var colData = _this.processColumnGroup(column);
+
+ if (colData) {
+ output.push(colData);
+ }
+ });
+
+ return output;
+};
+
+Clipboard.prototype.processColumnGroup = function (column) {
+ var _this2 = this;
+
+ var subGroups = column.columns;
+
+ var groupData = {
+ type: "group",
+ title: column.definition.title,
+ column: column
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this2.processColumnGroup(subGroup);
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+ }
+ });
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && (column.definition.clipboard || column.visible && column.definition.clipboard !== false)) {
+ groupData.width = 1;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+};
+
+Clipboard.prototype.groupHeadersToRows = function (columns) {
+
+ var headers = [];
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ headers[level].push(column.title);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ padColumnheaders();
+ }
+ }
+
+ function padColumnheaders() {
+ var max = 0;
+
+ headers.forEach(function (title) {
+ var len = title.length;
+ if (len > max) {
+ max = len;
+ }
+ });
+
+ headers.forEach(function (title) {
+ var len = title.length;
+ if (len < max) {
+ for (var i = len; i < max; i++) {
+ title.push("");
+ }
+ }
+ });
+ }
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ return headers;
+};
+
+Clipboard.prototype.rowsToData = function (rows, columns, config, params) {
+ var data = [];
+
+ rows.forEach(function (row) {
+ var rowArray = [],
+ rowData = row instanceof RowComponent ? row.getData("clipboard") : row;
+
+ columns.forEach(function (column) {
+ var value = column.getFieldValue(rowData);
+
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ rowArray.push(value);
+ });
+
+ data.push(rowArray);
+ });
+
+ return data;
+};
+
+Clipboard.prototype.buildComplexRows = function (config) {
+ var _this3 = this;
+
+ var output = [],
+ groups = this.table.modules.groupRows.getGroups();
+
+ groups.forEach(function (group) {
+ output.push(_this3.processGroupData(group));
+ });
+
+ return output;
+};
+
+Clipboard.prototype.processGroupData = function (group) {
+ var _this4 = this;
+
+ var subGroups = group.getSubGroups();
+
+ var groupData = {
+ type: "group",
+ key: group.key
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+
+ subGroups.forEach(function (subGroup) {
+ groupData.subGroups.push(_this4.processGroupData(subGroup));
+ });
+ } else {
+ groupData.rows = group.getRows(true);
+ }
+
+ return groupData;
+};
+
+Clipboard.prototype.getCalcRow = function (calcs, columns, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ return this.rowsToData([calcData], columns);
+ }
+ }
+
+ return [];
+};
+
+Clipboard.prototype.buildOutput = function (rows, config, params) {
+ var _this5 = this;
+
+ var output = [],
+ calcs,
+ columns = [];
+
+ if (config.columnHeaders) {
+
+ if (config.columnHeaders == "groups") {
+ columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
+
+ output = output.concat(this.groupHeadersToRows(columns));
+ } else {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+ columns.push(column);
+ }
+ });
+
+ output.push(this.generateSimpleHeaders(columns));
+ }
+ }
+
+ if (this.config.columnCalcs) {
+ calcs = this.table.getCalcResults();
+ }
+
+ //generate styled content
+ if (this.table.options.clipboardCopyStyled) {
+ this.generateHTML(rows, columns, calcs, config, params);
+ }
+
+ //generate unstyled content
+ if (config.rowGroups) {
+ rows.forEach(function (row) {
+ output = output.concat(_this5.parseRowGroupData(row, columns, config, params, calcs || {}));
+ });
+ } else {
+ if (config.columnCalcs) {
+ output = output.concat(this.getCalcRow(calcs, columns, "top"));
+ }
+
+ output = output.concat(this.rowsToData(rows, columns, config, params));
+
+ if (config.columnCalcs) {
+ output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+ }
+ }
+
+ return output;
+};
+
+Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
+ var _this6 = this;
+
+ var groupData = [];
+
+ groupData.push([group.key]);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ groupData = groupData.concat(_this6.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
+ });
+ } else {
+ if (config.columnCalcs) {
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "top"));
+ }
+
+ groupData = groupData.concat(this.rowsToData(group.rows, columns, config, params));
+
+ if (config.columnCalcs) {
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "bottom"));
+ }
+ }
+
+ return groupData;
+};
+
+Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {
+ var self = this,
+ data = [],
+ headers = [],
+ body,
+ oddRow,
+ evenRow,
+ calcRow,
+ firstRow,
+ firstCell,
+ firstGroup,
+ lastCell,
+ styleCells;
+
+ //create table element
+ this.htmlElement = document.createElement("table");
+ self.mapElementStyles(this.table.element, this.htmlElement, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+ function generateSimpleHeaders() {
+ var headerEl = document.createElement("tr");
+
+ columns.forEach(function (column) {
+ var columnEl = document.createElement("th");
+ columnEl.innerHTML = column.definition.title;
+
+ self.mapElementStyles(column.getElement(), columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerEl.appendChild(columnEl);
+ });
+
+ self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ self.htmlElement.appendChild(document.createElement("thead").appendChild(headerEl));
+ }
+
+ function generateHeaders(headers) {
+
+ var headerHolderEl = document.createElement("thead");
+
+ headers.forEach(function (columns) {
+ var headerEl = document.createElement("tr");
+
+ columns.forEach(function (column) {
+ var columnEl = document.createElement("th");
+
+ if (column.width > 1) {
+ columnEl.colSpan = column.width;
+ }
+
+ if (column.height > 1) {
+ columnEl.rowSpan = column.height;
+ }
+
+ columnEl.innerHTML = column.title;
+
+ self.mapElementStyles(column.element, columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerEl.appendChild(columnEl);
+ });
+
+ self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerHolderEl.appendChild(headerEl);
+ });
+
+ self.htmlElement.appendChild(headerHolderEl);
+ }
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ headers[level].push({
+ title: column.title,
+ width: column.width,
+ height: 1,
+ children: !!column.subGroups,
+ element: column.column.getElement()
+ });
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ }
+ }
+
+ function padVerticalColumnheaders() {
+ headers.forEach(function (row, index) {
+ row.forEach(function (header) {
+ if (!header.children) {
+ header.height = headers.length - index;
+ }
+ });
+ });
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ // calcRowIndexs.push(body.length);
+ processRows([calcData]);
+ }
+ }
+ }
+
+ //create headers if needed
+ if (config.columnHeaders) {
+ if (config.columnHeaders == "groups") {
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ padVerticalColumnheaders();
+ generateHeaders(headers);
+ } else {
+ generateSimpleHeaders();
+ }
+ }
+
+ // columns = this.table.columnManager.columnsByIndex;
+
+ //create table body
+ body = document.createElement("tbody");
+
+ //lookup row styles
+ if (window.getComputedStyle) {
+ oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+ evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+ calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+ firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+ firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+ if (firstRow) {
+ styleCells = firstRow.getElementsByClassName("tabulator-cell");
+ firstCell = styleCells[0];
+ lastCell = styleCells[styleCells.length - 1];
+ }
+ }
+
+ function processRows(rowArray) {
+ //add rows to table
+ rowArray.forEach(function (row, i) {
+ var rowEl = document.createElement("tr"),
+ styleRow = firstRow,
+ isCalc = false,
+ rowData;
+
+ if (row instanceof RowComponent) {
+ rowData = row.getData("clipboard");
+ } else {
+ rowData = row;
+ isCalc = true;
+ }
+
+ columns.forEach(function (column, j) {
+ var cellEl = document.createElement("td"),
+ value = column.getFieldValue(rowData);
+
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ cellEl.innerHTML = value;
+
+ if (column.definition.align) {
+ cellEl.style.textAlign = column.definition.align;
+ }
+
+ if (j < columns.length - 1) {
+ if (firstCell) {
+ self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+ }
+ } else {
+ if (firstCell) {
+ self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+ }
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ if (isCalc) {
+ styleRow = calcRow;
+ } else {
+ if (!(i % 2) && oddRow) {
+ styleRow = oddRow;
+ }
+
+ if (i % 2 && evenRow) {
+ styleRow = evenRow;
+ }
+ }
+
+ if (styleRow) {
+ self.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ }
+
+ body.appendChild(rowEl);
+ });
+ }
+
+ function processGroup(group, calcObj) {
+ var groupEl = document.createElement("tr"),
+ groupCellEl = document.createElement("td");
+
+ groupCellEl.colSpan = columns.length;
+
+ groupCellEl.innerHTML = group.key;
+
+ groupEl.appendChild(groupCellEl);
+ body.appendChild(groupEl);
+
+ self.mapElementStyles(firstGroup, groupEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ processGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ processRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ rows.forEach(function (group) {
+ processGroup(group, calcs || {});
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ processRows(rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ this.htmlElement.appendChild(body);
+};
+
+Clipboard.prototype.mapElementStyles = function (from, to, props) {
+
+ var lookup = {
+ "background-color": "backgroundColor",
+ "color": "fontColor",
+ "font-weight": "fontWeight",
+ "font-family": "fontFamily",
+ "font-size": "fontSize",
+ "border-top": "borderTop",
+ "border-left": "borderLeft",
+ "border-right": "borderRight",
+ "border-bottom": "borderBottom"
+ };
+
+ if (window.getComputedStyle) {
+ var fromStyle = window.getComputedStyle(from);
+
+ props.forEach(function (prop) {
+ to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+ });
+ }
+
+ // return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];
+};
+
+Clipboard.prototype.copySelectors = {
+ userSelection: function userSelection(config, params) {
+ return params;
+ },
+ selected: function selected(config, params) {
+ var rows = [];
+
+ if (this.table.modExists("selectRow", true)) {
+ rows = this.table.modules.selectRow.getSelectedRows();
+ }
+
+ if (config.rowGroups) {
+ console.warn("Clipboard Warning - select coptSelector does not support row groups");
+ }
+
+ return this.buildOutput(rows, config, params);
+ },
+ table: function table(config, params) {
+ if (config.rowGroups) {
+ console.warn("Clipboard Warning - table coptSelector does not support row groups");
+ }
+
+ return this.buildOutput(this.table.rowManager.getComponents(), config, params);
+ },
+ active: function active(config, params) {
+ var rows;
+
+ if (config.rowGroups) {
+ rows = this.buildComplexRows(config);
+ } else {
+ rows = this.table.rowManager.getComponents(true);
+ }
+
+ return this.buildOutput(rows, config, params);
+ }
+};
+
+Clipboard.prototype.copyFormatters = {
+ raw: function raw(data, params) {
+ return data;
+ },
+ table: function table(data, params) {
+ var output = [];
+
+ data.forEach(function (row) {
+ row.forEach(function (value) {
+ if (typeof value == "undefined") {
+ value = "";
+ }
+
+ value = typeof value == "undefined" || value === null ? "" : value.toString();
+
+ if (value.match(/\r|\n/)) {
+ value = value.split('"').join('""');
+ value = '"' + value + '"';
+ }
+ });
+
+ output.push(row.join("\t"));
+ });
+
+ return output.join("\n");
+ }
+};
+
+Clipboard.prototype.pasteParsers = {
+ table: function table(clipboard) {
+ var data = [],
+ success = false,
+ headerFindSuccess = true,
+ columns = this.table.columnManager.columns,
+ columnMap = [],
+ rows = [];
+
+ //get data from clipboard into array of columns and rows.
+ clipboard = clipboard.split("\n");
+
+ clipboard.forEach(function (row) {
+ data.push(row.split("\t"));
+ });
+
+ if (data.length && !(data.length === 1 && data[0].length < 2)) {
+ success = true;
+
+ //check if headers are present by title
+ data[0].forEach(function (value) {
+ var column = columns.find(function (column) {
+ return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
+ });
+
+ if (column) {
+ columnMap.push(column);
+ } else {
+ headerFindSuccess = false;
+ }
+ });
+
+ //check if column headers are present by field
+ if (!headerFindSuccess) {
+ headerFindSuccess = true;
+ columnMap = [];
+
+ data[0].forEach(function (value) {
+ var column = columns.find(function (column) {
+ return value && column.field && value.trim() && column.field.trim() === value.trim();
+ });
+
+ if (column) {
+ columnMap.push(column);
+ } else {
+ headerFindSuccess = false;
+ }
+ });
+
+ if (!headerFindSuccess) {
+ columnMap = this.table.columnManager.columnsByIndex;
+ }
+ }
+
+ //remove header row if found
+ if (headerFindSuccess) {
+ data.shift();
+ }
+
+ data.forEach(function (item) {
+ var row = {};
+
+ item.forEach(function (value, i) {
+ if (columnMap[i]) {
+ row[columnMap[i].field] = value;
+ }
+ });
+
+ rows.push(row);
+ });
+
+ return rows;
+ } else {
+ return false;
+ }
+ }
+};
+
+Clipboard.prototype.pasteActions = {
+ replace: function replace(rows) {
+ return this.table.setData(rows);
+ },
+ update: function update(rows) {
+ return this.table.updateOrAddData(rows);
+ },
+ insert: function insert(rows) {
+ return this.table.addData(rows);
+ }
+};
+
+Tabulator.prototype.registerModule("clipboard", Clipboard);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Clipboard=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};Clipboard.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(o){var e;t.processConfig(),t.blocked||(o.preventDefault(),e=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",e):o.clipboardData&&o.clipboardData.setData?(o.clipboardData.setData("text/plain",e),t.htmlElement&&o.clipboardData.setData("text/html",t.htmlElement.outerHTML)):o.originalEvent&&o.originalEvent.clipboardData.setData&&(o.originalEvent.clipboardData.setData("text/plain",e),t.htmlElement&&o.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,e),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(o){t.paste(o)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},Clipboard.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var o in this.table.options.clipboardCopyConfig)t[o]=this.table.options.clipboardCopyConfig[o];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Clipboard.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},Clipboard.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},Clipboard.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},Clipboard.prototype.paste=function(t){var o,e,r;this.checkPaseOrigin(t)&&(o=this.getPasteData(t),e=this.pasteParser.call(this,o),e?(t.preventDefault(),this.table.modExists("mutator")&&(e=this.mutateData(e)),r=this.pasteAction.call(this,e),this.table.options.clipboardPasted.call(this.table,o,e,r)):this.table.options.clipboardPasteError.call(this.table,o))},Clipboard.prototype.mutateData=function(t){var o=this,e=[];return Array.isArray(t)?t.forEach(function(t){e.push(o.table.modules.mutator.transformRow(t,"clipboard"))}):e=t,e},Clipboard.prototype.checkPaseOrigin=function(t){var o=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(o=!1),o},Clipboard.prototype.getPasteData=function(t){var o;return window.clipboardData&&window.clipboardData.getData?o=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?o=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(o=t.originalEvent.clipboardData.getData("text/plain")),o},Clipboard.prototype.copy=function(t,o,e,r,a){var n,i,l;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(n=document.createRange(),n.selectNodeContents(this.table.element),i=window.getSelection(),i.toString()&&a&&(t="userSelection",e="raw",o=i.toString()),i.removeAllRanges(),i.addRange(n)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(l=document.body.createTextRange(),l.moveToElementText(this.table.element),l.select()),this.setSelector(t),this.copySelectorParams=void 0!==o&&null!=o?o:this.config.columnHeaders,this.setFormatter(e),this.copyFormatterParams=void 0!==r&&null!=r?r:{},document.execCommand("copy"),i&&i.removeAllRanges())},Clipboard.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},Clipboard.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},Clipboard.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},Clipboard.prototype.generateSimpleHeaders=function(t){var o=[];return t.forEach(function(t){o.push(t.definition.title)}),o},Clipboard.prototype.generateColumnGroupHeaders=function(t){var o=this,e=[];return this.table.columnManager.columns.forEach(function(t){var r=o.processColumnGroup(t);r&&e.push(r)}),e},Clipboard.prototype.processColumnGroup=function(t){var o=this,e=t.columns,r={type:"group",title:t.definition.title,column:t};if(e.length){if(r.subGroups=[],r.width=0,e.forEach(function(t){var e=o.processColumnGroup(t);e&&(r.width+=e.width,r.subGroups.push(e))}),!r.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;r.width=1}return r},Clipboard.prototype.groupHeadersToRows=function(t){function o(t,a){void 0===r[a]&&(r[a]=[]),r[a].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,a+1)}):e()}function e(){var t=0;r.forEach(function(o){var e=o.length;e>t&&(t=e)}),r.forEach(function(o){var e=o.length;if(e<t)for(var r=e;r<t;r++)o.push("")})}var r=[];return t.forEach(function(t){o(t,0)}),r},Clipboard.prototype.rowsToData=function(t,o,e,r){var a=[];return t.forEach(function(t){var e=[],r=t instanceof RowComponent?t.getData("clipboard"):t;o.forEach(function(t){var o=t.getFieldValue(r);switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}e.push(o)}),a.push(e)}),a},Clipboard.prototype.buildComplexRows=function(t){var o=this,e=[];return this.table.modules.groupRows.getGroups().forEach(function(t){e.push(o.processGroupData(t))}),e},Clipboard.prototype.processGroupData=function(t){var o=this,e=t.getSubGroups(),r={type:"group",key:t.key};return e.length?(r.subGroups=[],e.forEach(function(t){r.subGroups.push(o.processGroupData(t))})):r.rows=t.getRows(!0),r},Clipboard.prototype.getCalcRow=function(t,o,e,r){var a=t[e];return a&&(r&&(a=a[r]),Object.keys(a).length)?this.rowsToData([a],o):[]},Clipboard.prototype.buildOutput=function(t,o,e){var r,a=this,n=[],i=[];return o.columnHeaders&&("groups"==o.columnHeaders?(i=this.generateColumnGroupHeaders(this.table.columnManager.columns),n=n.concat(this.groupHeadersToRows(i))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&i.push(t)}),n.push(this.generateSimpleHeaders(i)))),this.config.columnCalcs&&(r=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,i,r,o,e),o.rowGroups?t.forEach(function(t){n=n.concat(a.parseRowGroupData(t,i,o,e,r||{}))}):(o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"top"))),n=n.concat(this.rowsToData(t,i,o,e)),o.columnCalcs&&(n=n.concat(this.getCalcRow(r,i,"bottom")))),n},Clipboard.prototype.parseRowGroupData=function(t,o,e,r,a){var n=this,i=[];return i.push([t.key]),t.subGroups?t.subGroups.forEach(function(o){i=i.concat(n.parseRowGroupData(o,e,r,a[t.key]?a[t.key].groups||{}:{}))}):(e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"top"))),i=i.concat(this.rowsToData(t.rows,o,e,r)),e.columnCalcs&&(i=i.concat(this.getCalcRow(a,o,t.key,"bottom")))),i},Clipboard.prototype.generateHTML=function(t,o,e,r,a){function n(t,o){void 0===y[o]&&(y[o]=[]),y[o].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){n(t,o+1)})}function i(t,o,e){var r=t[o];r&&(e&&(r=r[e]),Object.keys(r).length&&l([r]))}function l(t){t.forEach(function(t,e){var r,a=document.createElement("tr"),n=h,i=!1;t instanceof RowComponent?r=t.getData("clipboard"):(r=t,i=!0),o.forEach(function(t,e){var n=document.createElement("td"),i=t.getFieldValue(r);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}n.innerHTML=i,t.definition.align&&(n.style.textAlign=t.definition.align),o.length,b&&g.mapElementStyles(b,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),a.appendChild(n)}),i?n=d:(e%2||!p||(n=p),e%2&&u&&(n=u)),n&&g.mapElementStyles(n,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.appendChild(a)})}function s(t,e){var a=document.createElement("tr"),n=document.createElement("td");n.colSpan=o.length,n.innerHTML=t.key,a.appendChild(n),c.appendChild(a),g.mapElementStyles(f,a,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(o){s(o,e[t.key]?e[t.key].groups||{}:{})}):(r.columnCalcs&&i(e,t.key,"top"),l(t.rows),r.columnCalcs&&i(e,t.key,"bottom"))}var c,p,u,d,h,b,f,m,g=this,y=[];this.htmlElement=document.createElement("table"),g.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),r.columnHeaders&&("groups"==r.columnHeaders?(o.forEach(function(t){n(t,0)}),function(){y.forEach(function(t,o){t.forEach(function(t){t.children||(t.height=y.length-o)})})}(),function(t){var o=document.createElement("thead");t.forEach(function(t){var e=document.createElement("tr");t.forEach(function(t){var o=document.createElement("th");t.width>1&&(o.colSpan=t.width),t.height>1&&(o.rowSpan=t.height),o.innerHTML=t.title,g.mapElementStyles(t.element,o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),g.htmlElement.appendChild(o)}(y)):function(){var t=document.createElement("tr");o.forEach(function(o){var e=document.createElement("th");e.innerHTML=o.definition.title,g.mapElementStyles(o.getElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(e)}),g.mapElementStyles(g.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),g.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),c=document.createElement("tbody"),window.getComputedStyle&&(p=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),u=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),d=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),h=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),f=this.table.element.getElementsByClassName("tabulator-group")[0],h&&(m=h.getElementsByClassName("tabulator-cell"),b=m[0],m[m.length-1])),r.rowGroups?t.forEach(function(t){s(t,e||{})}):(r.columnCalcs&&i(e,"top"),l(t),r.columnCalcs&&i(e,"bottom")),this.htmlElement.appendChild(c)},Clipboard.prototype.mapElementStyles=function(t,o,e){var r={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var a=window.getComputedStyle(t);e.forEach(function(t){o.style[r[t]]=a.getPropertyValue(t)})}},Clipboard.prototype.copySelectors={userSelection:function(t,o){return o},selected:function(t,o){var e=[];return this.table.modExists("selectRow",!0)&&(e=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(e,t,o)},table:function(t,o){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,o)},active:function(t,o){var e;return e=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(e,t,o)}},Clipboard.prototype.copyFormatters={raw:function(t,o){return t},table:function(t,o){var e=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),e.push(t.join("\t"))}),e.join("\n")}},Clipboard.prototype.pasteParsers={table:function(t){var o=[],e=!0,r=this.table.columnManager.columns,a=[],n=[];return t=t.split("\n"),t.forEach(function(t){o.push(t.split("\t"))}),!(!o.length||1===o.length&&o[0].length<2)&&(!0,o[0].forEach(function(t){var o=r.find(function(o){return t&&o.definition.title&&t.trim()&&o.definition.title.trim()===t.trim()});o?a.push(o):e=!1}),e||(e=!0,a=[],o[0].forEach(function(t){var o=r.find(function(o){return t&&o.field&&t.trim()&&o.field.trim()===t.trim()});o?a.push(o):e=!1}),e||(a=this.table.columnManager.columnsByIndex)),e&&o.shift(),o.forEach(function(t){var o={};t.forEach(function(t,e){a[e]&&(o[a[e].field]=t)}),n.push(o)}),n)}},Clipboard.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},Tabulator.prototype.registerModule("clipboard",Clipboard);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var DataTree = function DataTree(table) {
+ this.table = table;
+ this.indent = 10;
+ this.field = "";
+ this.collapseEl = null;
+ this.expandEl = null;
+ this.branchEl = null;
+ this.elementField = false;
+
+ this.startOpen = function () {};
+
+ this.displayIndex = 0;
+};
+
+DataTree.prototype.initialize = function () {
+ var dummyEl = null,
+ firstCol = this.table.columnManager.getFirstVisibileColumn(),
+ options = this.table.options;
+
+ this.field = options.dataTreeChildField;
+ this.indent = options.dataTreeChildIndent;
+ this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
+
+ if (options.dataTreeBranchElement) {
+
+ if (options.dataTreeBranchElement === true) {
+ this.branchEl = document.createElement("div");
+ this.branchEl.classList.add("tabulator-data-tree-branch");
+ } else {
+ if (typeof options.dataTreeBranchElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeBranchElement;
+ this.branchEl = dummyEl.firstChild;
+ } else {
+ this.branchEl = options.dataTreeBranchElement;
+ }
+ }
+ }
+
+ if (options.dataTreeCollapseElement) {
+ if (typeof options.dataTreeCollapseElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeCollapseElement;
+ this.collapseEl = dummyEl.firstChild;
+ } else {
+ this.collapseEl = options.dataTreeCollapseElement;
+ }
+ } else {
+ this.collapseEl = document.createElement("div");
+ this.collapseEl.classList.add("tabulator-data-tree-control");
+ this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
+ }
+
+ if (options.dataTreeExpandElement) {
+ if (typeof options.dataTreeExpandElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeExpandElement;
+ this.expandEl = dummyEl.firstChild;
+ } else {
+ this.expandEl = options.dataTreeExpandElement;
+ }
+ } else {
+ this.expandEl = document.createElement("div");
+ this.expandEl.classList.add("tabulator-data-tree-control");
+ this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
+ }
+
+ switch (_typeof(options.dataTreeStartExpanded)) {
+ case "boolean":
+ this.startOpen = function (row, index) {
+ return options.dataTreeStartExpanded;
+ };
+ break;
+
+ case "function":
+ this.startOpen = options.dataTreeStartExpanded;
+ break;
+
+ default:
+ this.startOpen = function (row, index) {
+ return options.dataTreeStartExpanded[index];
+ };
+ break;
+ }
+};
+
+DataTree.prototype.initializeRow = function (row) {
+ var childArray = row.getData()[this.field];
+ var isArray = Array.isArray(childArray);
+
+ var children = isArray || !isArray && (typeof childArray === "undefined" ? "undefined" : _typeof(childArray)) === "object" && childArray !== null;
+
+ row.modules.dataTree = {
+ index: 0,
+ open: children ? this.startOpen(row.getComponent(), 0) : false,
+ controlEl: false,
+ branchEl: false,
+ parent: false,
+ children: children
+ };
+};
+
+DataTree.prototype.layoutRow = function (row) {
+ var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
+ el = cell.getElement(),
+ config = row.modules.dataTree;
+
+ if (config.branchEl) {
+ config.branchEl.parentNode.removeChild(config.branchEl);
+ }
+
+ this.generateControlElement(row, el);
+
+ if (config.index) {
+ if (this.branchEl) {
+ config.branchEl = this.branchEl.cloneNode(true);
+ el.insertBefore(config.branchEl, el.firstChild);
+ config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
+ } else {
+ el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
+ }
+ }
+};
+
+DataTree.prototype.generateControlElement = function (row, el) {
+ var _this = this;
+
+ var config = row.modules.dataTree,
+ el = el || row.getCells()[0].getElement(),
+ oldControl = config.controlEl;
+
+ if (config.children !== false) {
+
+ if (config.open) {
+ config.controlEl = this.collapseEl.cloneNode(true);
+ config.controlEl.addEventListener("click", function (e) {
+ e.stopPropagation();
+ _this.collapseRow(row);
+ });
+ } else {
+ config.controlEl = this.expandEl.cloneNode(true);
+ config.controlEl.addEventListener("click", function (e) {
+ e.stopPropagation();
+ _this.expandRow(row);
+ });
+ }
+
+ config.controlEl.addEventListener("mousedown", function (e) {
+ e.stopPropagation();
+ });
+
+ if (oldControl && oldControl.parentNode === el) {
+ oldControl.parentNode.replaceChild(config.controlEl, oldControl);
+ } else {
+ el.insertBefore(config.controlEl, el.firstChild);
+ }
+ }
+};
+
+DataTree.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+};
+
+DataTree.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+};
+
+DataTree.prototype.getRows = function (rows) {
+ var _this2 = this;
+
+ var output = [];
+
+ rows.forEach(function (row, i) {
+ var config, children;
+
+ output.push(row);
+
+ if (row instanceof Row) {
+
+ config = row.modules.dataTree.children;
+
+ if (!config.index && config.children !== false) {
+ children = _this2.getChildren(row);
+
+ children.forEach(function (child) {
+ output.push(child);
+ });
+ }
+ }
+ });
+
+ return output;
+};
+
+DataTree.prototype.getChildren = function (row) {
+ var _this3 = this;
+
+ var config = row.modules.dataTree,
+ children = [],
+ output = [];
+
+ if (config.children !== false && config.open) {
+ if (!Array.isArray(config.children)) {
+ config.children = this.generateChildren(row);
+ }
+
+ if (this.table.modExists("filter")) {
+ children = this.table.modules.filter.filter(config.children);
+ } else {
+ children = config.children;
+ }
+
+ if (this.table.modExists("sort")) {
+ this.table.modules.sort.sort(children);
+ }
+
+ children.forEach(function (child) {
+ output.push(child);
+
+ var subChildren = _this3.getChildren(child);
+
+ subChildren.forEach(function (sub) {
+ output.push(sub);
+ });
+ });
+ }
+
+ return output;
+};
+
+DataTree.prototype.generateChildren = function (row) {
+ var _this4 = this;
+
+ var children = [];
+
+ var childArray = row.getData()[this.field];
+
+ if (!Array.isArray(childArray)) {
+ childArray = [childArray];
+ }
+
+ childArray.forEach(function (childData) {
+ var childRow = new Row(childData || {}, _this4.table.rowManager);
+ childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
+ childRow.modules.dataTree.parent = row;
+ if (childRow.modules.dataTree.children) {
+ childRow.modules.dataTree.open = _this4.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+ }
+ children.push(childRow);
+ });
+
+ return children;
+};
+
+DataTree.prototype.expandRow = function (row, silent) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ config.open = true;
+
+ row.reinitialize();
+
+ this.table.rowManager.refreshActiveData("tree", false, true);
+
+ this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
+ }
+};
+
+DataTree.prototype.collapseRow = function (row) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ config.open = false;
+
+ row.reinitialize();
+
+ this.table.rowManager.refreshActiveData("tree", false, true);
+
+ this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
+ }
+};
+
+DataTree.prototype.toggleRow = function (row) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ if (config.open) {
+ this.collapseRow(row);
+ } else {
+ this.expandRow(row);
+ }
+ }
+};
+
+DataTree.prototype.getTreeParent = function (row) {
+ return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
+};
+
+DataTree.prototype.getTreeChildren = function (row) {
+ var config = row.modules.dataTree,
+ output = [];
+
+ if (config.children) {
+
+ if (!Array.isArray(config.children)) {
+ config.children = this.generateChildren(row);
+ }
+
+ config.children.forEach(function (childRow) {
+ if (childRow instanceof Row) {
+ output.push(childRow.getComponent());
+ }
+ });
+ }
+
+ return output;
+};
+
+DataTree.prototype.checkForRestyle = function (cell) {
+ if (!cell.row.cells.indexOf(cell)) {
+ if (cell.row.modules.dataTree.children !== false) {
+ cell.row.reinitialize();
+ }
+ }
+};
+
+DataTree.prototype.getChildField = function () {
+ return this.field;
+};
+
+Tabulator.prototype.registerModule("dataTree", DataTree);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},DataTree=function(e){this.table=e,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};DataTree.prototype.initialize=function(){var e=null,t=this.table.columnManager.getFirstVisibileColumn(),a=this.table.options;switch(this.field=a.dataTreeChildField,this.indent=a.dataTreeChildIndent,this.elementField=a.dataTreeElementColumn||!!t&&t.field,a.dataTreeBranchElement&&(!0===a.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof a.dataTreeBranchElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeBranchElement,this.branchEl=e.firstChild):this.branchEl=a.dataTreeBranchElement),a.dataTreeCollapseElement?"string"==typeof a.dataTreeCollapseElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeCollapseElement,this.collapseEl=e.firstChild):this.collapseEl=a.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),a.dataTreeExpandElement?"string"==typeof a.dataTreeExpandElement?(e=document.createElement("div"),e.innerHTML=a.dataTreeExpandElement,this.expandEl=e.firstChild):this.expandEl=a.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(a.dataTreeStartExpanded)){case"boolean":this.startOpen=function(e,t){return a.dataTreeStartExpanded};break;case"function":this.startOpen=a.dataTreeStartExpanded;break;default:this.startOpen=function(e,t){return a.dataTreeStartExpanded[t]}}},DataTree.prototype.initializeRow=function(e){var t=e.getData()[this.field],a=Array.isArray(t),n=a||!a&&"object"===(void 0===t?"undefined":_typeof(t))&&null!==t;e.modules.dataTree={index:0,open:!!n&&this.startOpen(e.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:n}},DataTree.prototype.layoutRow=function(e){var t=this.elementField?e.getCell(this.elementField):e.getCells()[0],a=t.getElement(),n=e.modules.dataTree;n.branchEl&&n.branchEl.parentNode.removeChild(n.branchEl),this.generateControlElement(e,a),n.index&&(this.branchEl?(n.branchEl=this.branchEl.cloneNode(!0),a.insertBefore(n.branchEl,a.firstChild),n.branchEl.style.marginLeft=(n.branchEl.offsetWidth+n.branchEl.style.marginRight)*(n.index-1)+n.index*this.indent+"px"):a.style.paddingLeft=parseInt(window.getComputedStyle(a,null).getPropertyValue("padding-left"))+n.index*this.indent+"px")},DataTree.prototype.generateControlElement=function(e,t){var a=this,n=e.modules.dataTree,t=t||e.getCells()[0].getElement(),r=n.controlEl;!1!==n.children&&(n.open?(n.controlEl=this.collapseEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.collapseRow(e)})):(n.controlEl=this.expandEl.cloneNode(!0),n.controlEl.addEventListener("click",function(t){t.stopPropagation(),a.expandRow(e)})),n.controlEl.addEventListener("mousedown",function(e){e.stopPropagation()}),r&&r.parentNode===t?r.parentNode.replaceChild(n.controlEl,r):t.insertBefore(n.controlEl,t.firstChild))},DataTree.prototype.setDisplayIndex=function(e){this.displayIndex=e},DataTree.prototype.getDisplayIndex=function(){return this.displayIndex},DataTree.prototype.getRows=function(e){var t=this,a=[];return e.forEach(function(e,n){var r,l;a.push(e),e instanceof Row&&(r=e.modules.dataTree.children,r.index||!1===r.children||(l=t.getChildren(e),l.forEach(function(e){a.push(e)})))}),a},DataTree.prototype.getChildren=function(e){var t=this,a=e.modules.dataTree,n=[],r=[];return!1!==a.children&&a.open&&(Array.isArray(a.children)||(a.children=this.generateChildren(e)),n=this.table.modExists("filter")?this.table.modules.filter.filter(a.children):a.children,this.table.modExists("sort")&&this.table.modules.sort.sort(n),n.forEach(function(e){r.push(e),t.getChildren(e).forEach(function(e){r.push(e)})})),r},DataTree.prototype.generateChildren=function(e){var t=this,a=[],n=e.getData()[this.field];return Array.isArray(n)||(n=[n]),n.forEach(function(n){var r=new Row(n||{},t.table.rowManager);r.modules.dataTree.index=e.modules.dataTree.index+1,r.modules.dataTree.parent=e,r.modules.dataTree.children&&(r.modules.dataTree.open=t.startOpen(r.getComponent(),r.modules.dataTree.index)),a.push(r)}),a},DataTree.prototype.expandRow=function(e,t){var a=e.modules.dataTree;!1!==a.children&&(a.open=!0,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.collapseRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open=!1,e.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(e.getComponent(),e.modules.dataTree.index))},DataTree.prototype.toggleRow=function(e){var t=e.modules.dataTree;!1!==t.children&&(t.open?this.collapseRow(e):this.expandRow(e))},DataTree.prototype.getTreeParent=function(e){return!!e.modules.dataTree.parent&&e.modules.dataTree.parent.getComponent()},DataTree.prototype.getTreeChildren=function(e){var t=e.modules.dataTree,a=[];return t.children&&(Array.isArray(t.children)||(t.children=this.generateChildren(e)),t.children.forEach(function(e){e instanceof Row&&a.push(e.getComponent())})),a},DataTree.prototype.checkForRestyle=function(e){e.row.cells.indexOf(e)||!1!==e.row.modules.dataTree.children&&e.row.reinitialize()},DataTree.prototype.getChildField=function(){return this.field},Tabulator.prototype.registerModule("dataTree",DataTree);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Download = function Download(table) {
+ this.table = table; //hold Tabulator object
+ this.fields = {}; //hold filed multi dimension arrays
+ this.columnsByIndex = []; //hold columns in their order in the table
+ this.columnsByField = {}; //hold columns with lookup by field name
+ this.config = {};
+};
+
+//trigger file download
+Download.prototype.download = function (type, filename, options, interceptCallback) {
+ var self = this,
+ downloadFunc = false;
+ this.processConfig();
+
+ function buildLink(data, mime) {
+ if (interceptCallback) {
+ if (interceptCallback === true) {
+ self.triggerDownload(data, mime, type, filename, true);
+ } else {
+ interceptCallback(data);
+ }
+ } else {
+ self.triggerDownload(data, mime, type, filename);
+ }
+ }
+
+ if (typeof type == "function") {
+ downloadFunc = type;
+ } else {
+ if (self.downloaders[type]) {
+ downloadFunc = self.downloaders[type];
+ } else {
+ console.warn("Download Error - No such download type found: ", type);
+ }
+ }
+
+ this.processColumns();
+
+ if (downloadFunc) {
+ downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+ }
+};
+
+Download.prototype.processConfig = function () {
+ var config = { //download config
+ columnGroups: true,
+ rowGroups: true,
+ columnCalcs: true
+ };
+
+ if (this.table.options.downloadConfig) {
+ for (var key in this.table.options.downloadConfig) {
+ config[key] = this.table.options.downloadConfig[key];
+ }
+ }
+
+ if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.config.rowGroups = true;
+ }
+
+ if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+ this.config.columnGroups = true;
+ }
+
+ if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+ this.config.columnCalcs = true;
+ }
+};
+
+Download.prototype.processColumns = function () {
+ var self = this;
+
+ self.columnsByIndex = [];
+ self.columnsByField = {};
+
+ self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+ if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+ self.columnsByIndex.push(column);
+ self.columnsByField[column.field] = column;
+ }
+ });
+};
+
+Download.prototype.processDefinitions = function () {
+ var self = this,
+ processedDefinitions = [];
+
+ if (this.config.columnGroups) {
+ self.table.columnManager.columns.forEach(function (column) {
+ var colData = self.processColumnGroup(column);
+
+ if (colData) {
+ processedDefinitions.push(colData);
+ }
+ });
+ } else {
+ self.columnsByIndex.forEach(function (column) {
+ if (column.download !== false) {
+ //isolate definiton from defintion object
+ processedDefinitions.push(self.processDefinition(column));
+ }
+ });
+ }
+
+ return processedDefinitions;
+};
+
+Download.prototype.processColumnGroup = function (column) {
+ var _this = this;
+
+ var subGroups = column.columns,
+ maxDepth = 0;
+ var processedColumn = this.processDefinition(column);
+ var groupData = {
+ type: "group",
+ title: processedColumn.title,
+ depth: 1
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this.processColumnGroup(subGroup);
+
+ if (subGroupData.depth > maxDepth) {
+ maxDepth = subGroupData.depth;
+ }
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+ }
+ });
+
+ groupData.depth += maxDepth;
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+ groupData.width = 1;
+ groupData.definition = processedColumn;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+};
+
+Download.prototype.processDefinition = function (column) {
+ var def = {};
+
+ for (var key in column.definition) {
+ def[key] = column.definition[key];
+ }
+
+ if (typeof column.definition.downloadTitle != "undefined") {
+ def.title = column.definition.downloadTitle;
+ }
+
+ return def;
+};
+
+Download.prototype.processData = function () {
+ var _this2 = this;
+
+ var self = this,
+ data = [],
+ groups = [],
+ calcs = {};
+
+ if (this.config.rowGroups) {
+ groups = this.table.modules.groupRows.getGroups();
+
+ groups.forEach(function (group) {
+ data.push(_this2.processGroupData(group));
+ });
+ } else {
+ data = self.table.rowManager.getData(true, "download");
+ }
+
+ if (this.config.columnCalcs) {
+ calcs = this.table.getCalcResults();
+
+ data = {
+ calcs: calcs,
+ data: data
+ };
+ }
+
+ //bulk data processing
+ if (typeof self.table.options.downloadDataFormatter == "function") {
+ data = self.table.options.downloadDataFormatter(data);
+ }
+
+ return data;
+};
+
+Download.prototype.processGroupData = function (group) {
+ var _this3 = this;
+
+ var subGroups = group.getSubGroups();
+
+ var groupData = {
+ type: "group",
+ key: group.key
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+
+ subGroups.forEach(function (subGroup) {
+ groupData.subGroups.push(_this3.processGroupData(subGroup));
+ });
+ } else {
+ groupData.rows = group.getData(true, "download");
+ }
+
+ return groupData;
+};
+
+Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
+ var element = document.createElement('a'),
+ blob = new Blob([data], { type: mime }),
+ filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
+
+ blob = this.table.options.downloadReady.call(this.table, data, blob);
+
+ if (blob) {
+
+ if (newTab) {
+ window.open(window.URL.createObjectURL(blob));
+ } else {
+ if (navigator.msSaveOrOpenBlob) {
+ navigator.msSaveOrOpenBlob(blob, filename);
+ } else {
+ element.setAttribute('href', window.URL.createObjectURL(blob));
+
+ //set file title
+ element.setAttribute('download', filename);
+
+ //trigger download
+ element.style.display = 'none';
+ document.body.appendChild(element);
+ element.click();
+
+ //remove temporary link element
+ document.body.removeChild(element);
+ }
+ }
+
+ if (this.table.options.downloadComplete) {
+ this.table.options.downloadComplete();
+ }
+ }
+};
+
+//nested field lookup
+Download.prototype.getFieldValue = function (field, data) {
+ var column = this.columnsByField[field];
+
+ if (column) {
+ return column.getFieldValue(data);
+ }
+
+ return false;
+};
+
+Download.prototype.commsReceived = function (table, action, data) {
+ switch (action) {
+ case "intercept":
+ this.download(data.type, "", data.options, data.intercept);
+ break;
+ }
+};
+
+//downloaders
+Download.prototype.downloaders = {
+ csv: function csv(columns, data, options, setFileContents, config) {
+ var self = this,
+ titles = [],
+ fields = [],
+ delimiter = options && options.delimiter ? options.delimiter : ",",
+ fileContents,
+ output;
+
+ //build column headers
+ function parseSimpleTitles() {
+ columns.forEach(function (column) {
+ titles.push('"' + String(column.title).split('"').join('""') + '"');
+ fields.push(column.field);
+ });
+ }
+
+ function parseColumnGroup(column, level) {
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ titles.push('"' + String(column.title).split('"').join('""') + '"');
+ fields.push(column.definition.field);
+ }
+ }
+
+ if (config.columnGroups) {
+ console.warn("Download Warning - CSV downloader cannot process column groups");
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ //generate header row
+ fileContents = [titles.join(delimiter)];
+
+ function parseRows(data) {
+ //generate each row of the table
+ data.forEach(function (row) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ //escape quotation marks
+ rowData.push('"' + String(value).split('"').join('""') + '"');
+ });
+
+ fileContents.push(rowData.join(delimiter));
+ });
+ }
+
+ function parseGroup(group) {
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup);
+ });
+ } else {
+ parseRows(group.rows);
+ }
+ }
+
+ if (config.columnCalcs) {
+ console.warn("Download Warning - CSV downloader cannot process column calculations");
+ data = data.data;
+ }
+
+ if (config.rowGroups) {
+ console.warn("Download Warning - CSV downloader cannot process row groups");
+
+ data.forEach(function (group) {
+ parseGroup(group);
+ });
+ } else {
+ parseRows(data);
+ }
+
+ output = fileContents.join("\n");
+
+ if (options.bom) {
+ output = "\uFEFF" + output;
+ }
+
+ setFileContents(output, "text/csv");
+ },
+
+ json: function json(columns, data, options, setFileContents, config) {
+ var fileContents;
+
+ if (config.columnCalcs) {
+ console.warn("Download Warning - CSV downloader cannot process column calculations");
+ data = data.data;
+ }
+
+ fileContents = JSON.stringify(data, null, '\t');
+
+ setFileContents(fileContents, "application/json");
+ },
+
+ pdf: function pdf(columns, data, options, setFileContents, config) {
+ var self = this,
+ fields = [],
+ header = [],
+ body = [],
+ calcs = {},
+ headerDepth = 1,
+ table = "",
+ autoTableParams = {},
+ rowGroupStyles = options.rowGroupStyles || {
+ fontStyle: "bold",
+ fontSize: 12,
+ cellPadding: 6,
+ fillColor: 220
+ },
+ rowCalcStyles = options.rowCalcStyles || {
+ fontStyle: "bold",
+ fontSize: 10,
+ cellPadding: 4,
+ fillColor: 232
+ },
+ jsPDFParams = options.jsPDF || {},
+ title = options && options.title ? options.title : "";
+
+ if (config.columnCalcs) {
+ calcs = data.calcs;
+ data = data.data;
+ }
+
+ if (!jsPDFParams.orientation) {
+ jsPDFParams.orientation = options.orientation || "landscape";
+ }
+
+ if (!jsPDFParams.unit) {
+ jsPDFParams.unit = "pt";
+ }
+
+ //build column headers
+ function parseSimpleTitles() {
+ columns.forEach(function (column) {
+ if (column.field) {
+ header.push(column.title || "");
+ fields.push(column.field);
+ }
+ });
+
+ header = [header];
+ }
+
+ function parseColumnGroup(column, level) {
+ var colSpan = column.width,
+ rowSpan = 1,
+ col = {
+ content: column.title || ""
+ };
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ rowSpan = 1;
+ } else {
+ fields.push(column.definition.field);
+ rowSpan = headerDepth - level;
+ }
+
+ col.rowSpan = rowSpan;
+ // col.colSpan = colSpan;
+
+ header[level].push(col);
+
+ colSpan--;
+
+ if (rowSpan > 1) {
+ for (var i = level + 1; i < headerDepth; i++) {
+ header[i].push("");
+ }
+ }
+
+ for (var i = 0; i < colSpan; i++) {
+ header[level].push("");
+ }
+ }
+
+ if (config.columnGroups) {
+ columns.forEach(function (column) {
+ if (column.depth > headerDepth) {
+ headerDepth = column.depth;
+ }
+ });
+
+ for (var i = 0; i < headerDepth; i++) {
+ header.push([]);
+ }
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ function parseValue(value) {
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ return value;
+ }
+
+ function parseRows(data) {
+ //build table rows
+ data.forEach(function (row) {
+ body.push(parseRow(row));
+ });
+ }
+
+ function parseRow(row, styles) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+ value = parseValue(value);
+
+ if (styles) {
+ rowData.push({
+ content: value,
+ styles: styles
+ });
+ } else {
+ rowData.push(value);
+ }
+ });
+
+ return rowData;
+ }
+
+ function parseGroup(group, calcObj) {
+ var groupData = [];
+
+ groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
+
+ body.push(groupData);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ parseRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ body.push(parseRow(calcData, rowCalcStyles));
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ data.forEach(function (group) {
+ parseGroup(group, calcs);
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ parseRows(data);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
+
+ if (options && options.autoTable) {
+ if (typeof options.autoTable === "function") {
+ autoTableParams = options.autoTable(doc) || {};
+ } else {
+ autoTableParams = options.autoTable;
+ }
+ }
+
+ if (title) {
+ autoTableParams.addPageContent = function (data) {
+ doc.text(title, 40, 30);
+ };
+ }
+
+ autoTableParams.head = header;
+ autoTableParams.body = body;
+
+ doc.autoTable(autoTableParams);
+
+ if (options && options.documentProcessing) {
+ options.documentProcessing(doc);
+ }
+
+ setFileContents(doc.output("arraybuffer"), "application/pdf");
+ },
+
+ xlsx: function xlsx(columns, data, options, setFileContents, config) {
+ var self = this,
+ sheetName = options.sheetName || "Sheet1",
+ workbook = { SheetNames: [], Sheets: {} },
+ calcs = {},
+ groupRowIndexs = [],
+ groupColumnIndexs = [],
+ calcRowIndexs = [],
+ output;
+
+ if (config.columnCalcs) {
+ calcs = data.calcs;
+ data = data.data;
+ }
+
+ function generateSheet() {
+ var titles = [],
+ fields = [],
+ rows = [],
+ worksheet;
+
+ //convert rows to worksheet
+ function rowsToSheet() {
+ var sheet = {};
+ var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
+
+ XLSX.utils.sheet_add_aoa(sheet, rows);
+
+ sheet['!ref'] = XLSX.utils.encode_range(range);
+
+ var merges = generateMerges();
+
+ if (merges.length) {
+ sheet["!merges"] = merges;
+ }
+
+ return sheet;
+ }
+
+ function parseSimpleTitles() {
+ //get field lists
+ columns.forEach(function (column) {
+ titles.push(column.title);
+ fields.push(column.field);
+ });
+
+ rows.push(titles);
+ }
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof titles[level] === "undefined") {
+ titles[level] = [];
+ }
+
+ if (typeof groupColumnIndexs[level] === "undefined") {
+ groupColumnIndexs[level] = [];
+ }
+
+ if (column.width > 1) {
+
+ groupColumnIndexs[level].push({
+ type: "hoz",
+ start: titles[level].length,
+ end: titles[level].length + column.width - 1
+ });
+ }
+
+ titles[level].push(column.title);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ fields.push(column.definition.field);
+ padColumnTitles(fields.length - 1, level);
+
+ groupColumnIndexs[level].push({
+ type: "vert",
+ start: fields.length - 1
+ });
+ }
+ }
+
+ function padColumnTitles() {
+ var max = 0;
+
+ titles.forEach(function (title) {
+ var len = title.length;
+ if (len > max) {
+ max = len;
+ }
+ });
+
+ titles.forEach(function (title) {
+ var len = title.length;
+ if (len < max) {
+ for (var i = len; i < max; i++) {
+ title.push("");
+ }
+ }
+ });
+ }
+
+ if (config.columnGroups) {
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ titles.forEach(function (title) {
+ rows.push(title);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ function generateMerges() {
+ var output = [];
+
+ groupRowIndexs.forEach(function (index) {
+ output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
+ });
+
+ groupColumnIndexs.forEach(function (merges, level) {
+ merges.forEach(function (merge) {
+ if (merge.type === "hoz") {
+ output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
+ } else {
+ if (level != titles.length - 1) {
+ output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
+ }
+ }
+ });
+ });
+
+ return output;
+ }
+
+ //generate each row of the table
+ function parseRows(data) {
+ data.forEach(function (row) {
+ rows.push(parseRow(row));
+ });
+ }
+
+ function parseRow(row) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+ rowData.push(!(value instanceof Date) && (typeof value === "undefined" ? "undefined" : _typeof(value)) === "object" ? JSON.stringify(value) : value);
+ });
+
+ return rowData;
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ calcRowIndexs.push(rows.length);
+ rows.push(parseRow(calcData));
+ }
+ }
+ }
+
+ function parseGroup(group, calcObj) {
+ var groupData = [];
+
+ groupData.push(group.key);
+
+ groupRowIndexs.push(rows.length);
+
+ rows.push(groupData);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ parseRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ data.forEach(function (group) {
+ parseGroup(group, calcs);
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ parseRows(data);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ worksheet = rowsToSheet();
+
+ return worksheet;
+ }
+
+ if (options.sheetOnly) {
+ setFileContents(generateSheet());
+ return;
+ }
+
+ if (options.sheets) {
+ for (var sheet in options.sheets) {
+
+ if (options.sheets[sheet] === true) {
+ workbook.SheetNames.push(sheet);
+ workbook.Sheets[sheet] = generateSheet();
+ } else {
+
+ workbook.SheetNames.push(sheet);
+
+ this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+ type: "xlsx",
+ options: { sheetOnly: true },
+ intercept: function intercept(data) {
+ workbook.Sheets[sheet] = data;
+ }
+ });
+ }
+ }
+ } else {
+ workbook.SheetNames.push(sheetName);
+ workbook.Sheets[sheetName] = generateSheet();
+ }
+
+ //convert workbook to binary array
+ function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) {
+ view[i] = s.charCodeAt(i) & 0xFF;
+ }return buf;
+ }
+
+ output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
+
+ setFileContents(s2ab(output), "application/octet-stream");
+ }
+
+};
+
+Tabulator.prototype.registerModule("download", Download);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(o){return typeof o}:function(o){return o&&"function"==typeof Symbol&&o.constructor===Symbol&&o!==Symbol.prototype?"symbol":typeof o},Download=function(o){this.table=o,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};Download.prototype.download=function(o,n,t,e){function i(t,i){e?!0===e?s.triggerDownload(t,i,o,n,!0):e(t):s.triggerDownload(t,i,o,n)}var s=this,r=!1;this.processConfig(),"function"==typeof o?r=o:s.downloaders[o]?r=s.downloaders[o]:console.warn("Download Error - No such download type found: ",o),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),t||{},i,this.config)},Download.prototype.processConfig=function(){var o={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var n in this.table.options.downloadConfig)o[n]=this.table.options.downloadConfig[n];o.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),o.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),o.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},Download.prototype.processColumns=function(){var o=this;o.columnsByIndex=[],o.columnsByField={},o.table.columnManager.columnsByIndex.forEach(function(n){n.field&&!1!==n.definition.download&&(n.visible||!n.visible&&n.definition.download)&&(o.columnsByIndex.push(n),o.columnsByField[n.field]=n)})},Download.prototype.processDefinitions=function(){var o=this,n=[];return this.config.columnGroups?o.table.columnManager.columns.forEach(function(t){var e=o.processColumnGroup(t);e&&n.push(e)}):o.columnsByIndex.forEach(function(t){!1!==t.download&&n.push(o.processDefinition(t))}),n},Download.prototype.processColumnGroup=function(o){var n=this,t=o.columns,e=0,i=this.processDefinition(o),s={type:"group",title:i.title,depth:1};if(t.length){if(s.subGroups=[],s.width=0,t.forEach(function(o){var t=n.processColumnGroup(o);t.depth>e&&(e=t.depth),t&&(s.width+=t.width,s.subGroups.push(t))}),s.depth+=e,!s.width)return!1}else{if(!o.field||!1===o.definition.download||!(o.visible||!o.visible&&o.definition.download))return!1;s.width=1,s.definition=i}return s},Download.prototype.processDefinition=function(o){var n={};for(var t in o.definition)n[t]=o.definition[t];return void 0!==o.definition.downloadTitle&&(n.title=o.definition.downloadTitle),n},Download.prototype.processData=function(){var o=this,n=this,t=[],e=[],i={};return this.config.rowGroups?(e=this.table.modules.groupRows.getGroups(),e.forEach(function(n){t.push(o.processGroupData(n))})):t=n.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(i=this.table.getCalcResults(),t={calcs:i,data:t}),"function"==typeof n.table.options.downloadDataFormatter&&(t=n.table.options.downloadDataFormatter(t)),t},Download.prototype.processGroupData=function(o){var n=this,t=o.getSubGroups(),e={type:"group",key:o.key};return t.length?(e.subGroups=[],t.forEach(function(o){e.subGroups.push(n.processGroupData(o))})):e.rows=o.getData(!0,"download"),e},Download.prototype.triggerDownload=function(o,n,t,e,i){var s=document.createElement("a"),r=new Blob([o],{type:n}),e=e||"Tabulator."+("function"==typeof t?"txt":t);(r=this.table.options.downloadReady.call(this.table,o,r))&&(i?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,e):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",e),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},Download.prototype.getFieldValue=function(o,n){var t=this.columnsByField[o];return!!t&&t.getFieldValue(n)},Download.prototype.commsReceived=function(o,n,t){switch(n){case"intercept":this.download(t.type,"",t.options,t.intercept)}},Download.prototype.downloaders={csv:function(o,n,t,e,i){function s(o,n){o.subGroups?o.subGroups.forEach(function(o){s(o,n+1)}):(f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.definition.field))}function r(o){o.forEach(function(o){var n=[];p.forEach(function(t){var e=c.getFieldValue(t,o);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}n.push('"'+String(e).split('"').join('""')+'"')}),u.push(n.join(d))})}function a(o){o.subGroups?o.subGroups.forEach(function(o){a(o)}):r(o.rows)}var u,l,c=this,f=[],p=[],d=t&&t.delimiter?t.delimiter:",";i.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),o.forEach(function(o){s(o,0)})):function(){o.forEach(function(o){f.push('"'+String(o.title).split('"').join('""')+'"'),p.push(o.field)})}(),u=[f.join(d)],i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),i.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),n.forEach(function(o){a(o)})):r(n),l=u.join("\n"),t.bom&&(l="\ufeff"+l),e(l,"text/csv")},json:function(o,n,t,e,i){var s;i.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),n=n.data),s=JSON.stringify(n,null,"\t"),e(s,"application/json")},pdf:function(o,n,t,e,i){function s(o,n){var t=o.width,e=1,i={content:o.title||""};if(o.subGroups?(o.subGroups.forEach(function(o){s(o,n+1)}),e=1):(p.push(o.definition.field),e=y-n),i.rowSpan=e,d[n].push(i),t--,e>1)for(var r=n+1;r<y;r++)d[r].push("");for(var r=0;r<t;r++)d[n].push("")}function r(o){switch(void 0===o?"undefined":_typeof(o)){case"object":o=JSON.stringify(o);break;case"undefined":case"null":o="";break;default:o=o}return o}function a(o){o.forEach(function(o){h.push(u(o))})}function u(o,n){var t=[];return p.forEach(function(e){var i=f.getFieldValue(e,o);i=r(i),n?t.push({content:i,styles:n}):t.push(i)}),t}function l(o,n){var t=[];t.push({content:r(o.key),colSpan:p.length,styles:g}),h.push(t),o.subGroups?o.subGroups.forEach(function(t){l(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&c(n,o.key,"top"),a(o.rows),i.columnCalcs&&c(n,o.key,"bottom"))}function c(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&h.push(u(e,b)))}var f=this,p=[],d=[],h=[],w={},y=1,m={},g=t.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},b=t.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},v=t.jsPDF||{},C=t&&t.title?t.title:"";if(i.columnCalcs&&(w=n.calcs,n=n.data),v.orientation||(v.orientation=t.orientation||"landscape"),v.unit||(v.unit="pt"),i.columnGroups){o.forEach(function(o){o.depth>y&&(y=o.depth)});for(var S=0;S<y;S++)d.push([]);o.forEach(function(o){s(o,0)})}else!function(){o.forEach(function(o){o.field&&(d.push(o.title||""),p.push(o.field))}),d=[d]}();i.rowGroups?n.forEach(function(o){l(o,w)}):(i.columnCalcs&&c(w,"top"),a(n),i.columnCalcs&&c(w,"bottom"));var D=new jsPDF(v);t&&t.autoTable&&(m="function"==typeof t.autoTable?t.autoTable(D)||{}:t.autoTable),C&&(m.addPageContent=function(o){D.text(C,40,30)}),m.head=d,m.body=h,D.autoTable(m),t&&t.documentProcessing&&t.documentProcessing(D),e(D.output("arraybuffer"),"application/pdf")},xlsx:function(o,n,t,e,i){function s(){function t(o,n){void 0===w[n]&&(w[n]=[]),void 0===p[n]&&(p[n]=[]),o.width>1&&p[n].push({type:"hoz",start:w[n].length,end:w[n].length+o.width-1}),w[n].push(o.title),o.subGroups?o.subGroups.forEach(function(o){t(o,n+1)}):(y.push(o.definition.field),e(y.length),p[n].push({type:"vert",start:y.length-1}))}function e(){var o=0;w.forEach(function(n){var t=n.length;t>o&&(o=t)}),w.forEach(function(n){var t=n.length;if(t<o)for(var e=t;e<o;e++)n.push("")})}function s(){var o=[];return f.forEach(function(n){o.push({s:{r:n,c:0},e:{r:n,c:y.length-1}})}),p.forEach(function(n,t){n.forEach(function(n){"hoz"===n.type?o.push({s:{r:t,c:n.start},e:{r:t,c:n.end}}):t!=w.length-1&&o.push({s:{r:t,c:n.start},e:{r:w.length-1,c:n.start}})})}),o}function r(o){o.forEach(function(o){m.push(u(o))})}function u(o){var n=[];return y.forEach(function(t){var e=a.getFieldValue(t,o);n.push(e instanceof Date||"object"!==(void 0===e?"undefined":_typeof(e))?e:JSON.stringify(e))}),n}function l(o,n,t){var e=o[n];e&&(t&&(e=e[t]),Object.keys(e).length&&(d.push(m.length),m.push(u(e))))}function h(o,n){var t=[];t.push(o.key),f.push(m.length),m.push(t),o.subGroups?o.subGroups.forEach(function(t){h(t,n[o.key]?n[o.key].groups||{}:{})}):(i.columnCalcs&&l(n,o.key,"top"),r(o.rows),i.columnCalcs&&l(n,o.key,"bottom"))}var w=[],y=[],m=[];return i.columnGroups?(o.forEach(function(o){t(o,0)}),w.forEach(function(o){m.push(o)})):function(){o.forEach(function(o){w.push(o.title),y.push(o.field)}),m.push(w)}(),i.rowGroups?n.forEach(function(o){h(o,c)}):(i.columnCalcs&&l(c,"top"),r(n),i.columnCalcs&&l(c,"bottom")),function(){var o={},n={s:{c:0,r:0},e:{c:y.length,r:m.length}};XLSX.utils.sheet_add_aoa(o,m),o["!ref"]=XLSX.utils.encode_range(n);var t=s();return t.length&&(o["!merges"]=t),o}()}var r,a=this,u=t.sheetName||"Sheet1",l={SheetNames:[],Sheets:{}},c={},f=[],p=[],d=[];if(i.columnCalcs&&(c=n.calcs,n=n.data),t.sheetOnly)return void e(s());if(t.sheets)for(var h in t.sheets)!0===t.sheets[h]?(l.SheetNames.push(h),l.Sheets[h]=s()):(l.SheetNames.push(h),this.table.modules.comms.send(t.sheets[h],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(o){l.Sheets[h]=o}}));else l.SheetNames.push(u),l.Sheets[u]=s();r=XLSX.write(l,{bookType:"xlsx",bookSST:!0,type:"binary"}),e(function(o){for(var n=new ArrayBuffer(o.length),t=new Uint8Array(n),e=0;e!=o.length;++e)t[e]=255&o.charCodeAt(e);return n}(r),"application/octet-stream")}},Tabulator.prototype.registerModule("download",Download);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Edit = function Edit(table) {
+ this.table = table; //hold Tabulator object
+ this.currentCell = false; //hold currently editing cell
+ this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
+ this.recursionBlock = false; //prevent focus recursion
+ this.invalidEdit = false;
+};
+
+//initialize column editor
+Edit.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = {
+ editor: false,
+ blocked: false,
+ check: column.definition.editable,
+ params: column.definition.editorParams || {}
+ };
+
+ //set column editor
+ switch (_typeof(column.definition.editor)) {
+ case "string":
+
+ if (column.definition.editor === "tick") {
+ column.definition.editor = "tickCross";
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+ }
+
+ if (self.editors[column.definition.editor]) {
+ config.editor = self.editors[column.definition.editor];
+ } else {
+ console.warn("Editor Error - No such editor found: ", column.definition.editor);
+ }
+ break;
+
+ case "function":
+ config.editor = column.definition.editor;
+ break;
+
+ case "boolean":
+
+ if (column.definition.editor === true) {
+
+ if (typeof column.definition.formatter !== "function") {
+
+ if (column.definition.formatter === "tick") {
+ column.definition.formatter = "tickCross";
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+ }
+
+ if (self.editors[column.definition.formatter]) {
+ config.editor = self.editors[column.definition.formatter];
+ } else {
+ config.editor = self.editors["input"];
+ }
+ } else {
+ console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
+ }
+ }
+ break;
+ }
+
+ if (config.editor) {
+ column.modules.edit = config;
+ }
+};
+
+Edit.prototype.getCurrentCell = function () {
+ return this.currentCell ? this.currentCell.getComponent() : false;
+};
+
+Edit.prototype.clearEditor = function () {
+ var cell = this.currentCell,
+ cellEl;
+
+ this.invalidEdit = false;
+
+ if (cell) {
+ this.currentCell = false;
+
+ cellEl = cell.getElement();
+ cellEl.classList.remove("tabulator-validation-fail");
+ cellEl.classList.remove("tabulator-editing");
+ while (cellEl.firstChild) {
+ cellEl.removeChild(cellEl.firstChild);
+ }cell.row.getElement().classList.remove("tabulator-row-editing");
+ }
+};
+
+Edit.prototype.cancelEdit = function () {
+
+ if (this.currentCell) {
+ var cell = this.currentCell;
+ var component = this.currentCell.getComponent();
+
+ this.clearEditor();
+ cell.setValueActual(cell.getValue());
+
+ if (cell.column.cellEvents.cellEditCancelled) {
+ cell.column.cellEvents.cellEditCancelled.call(this.table, component);
+ }
+
+ this.table.options.cellEditCancelled.call(this.table, component);
+ }
+};
+
+//return a formatted value for a cell
+Edit.prototype.bindEditor = function (cell) {
+ var self = this,
+ element = cell.getElement();
+
+ element.setAttribute("tabindex", 0);
+
+ element.addEventListener("click", function (e) {
+ if (!element.classList.contains("tabulator-editing")) {
+ element.focus();
+ }
+ });
+
+ element.addEventListener("mousedown", function (e) {
+ self.mouseClick = true;
+ });
+
+ element.addEventListener("focus", function (e) {
+ if (!self.recursionBlock) {
+ self.edit(cell, e, false);
+ }
+ });
+};
+
+Edit.prototype.focusCellNoEvent = function (cell) {
+ this.recursionBlock = true;
+ if (this.table.browser !== "ie") {
+ cell.getElement().focus();
+ }
+ this.recursionBlock = false;
+};
+
+Edit.prototype.editCell = function (cell, forceEdit) {
+ this.focusCellNoEvent(cell);
+ this.edit(cell, false, forceEdit);
+};
+
+Edit.prototype.edit = function (cell, e, forceEdit) {
+ var self = this,
+ allowEdit = true,
+ rendered = function rendered() {},
+ element = cell.getElement(),
+ cellEditor,
+ component,
+ params;
+
+ //prevent editing if another cell is refusing to leave focus (eg. validation fail)
+ if (this.currentCell) {
+ if (!this.invalidEdit) {
+ this.cancelEdit();
+ }
+ return;
+ }
+
+ //handle successfull value change
+ function success(value) {
+
+ if (self.currentCell === cell) {
+ var valid = true;
+
+ if (cell.column.modules.validate && self.table.modExists("validate")) {
+ valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
+ }
+
+ if (valid === true) {
+ self.clearEditor();
+ cell.setValue(value, true);
+
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.checkForRestyle(cell);
+ }
+ } else {
+ self.invalidEdit = true;
+ element.classList.add("tabulator-validation-fail");
+ self.focusCellNoEvent(cell);
+ rendered();
+ self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
+ }
+ } else {
+ // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
+ }
+ }
+
+ //handle aborted edit
+ function cancel() {
+ if (self.currentCell === cell) {
+ self.cancelEdit();
+
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.checkForRestyle(cell);
+ }
+ } else {
+ // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
+ }
+ }
+
+ function onRendered(callback) {
+ rendered = callback;
+ }
+
+ if (!cell.column.modules.edit.blocked) {
+ if (e) {
+ e.stopPropagation();
+ }
+
+ switch (_typeof(cell.column.modules.edit.check)) {
+ case "function":
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ break;
+
+ case "boolean":
+ allowEdit = cell.column.modules.edit.check;
+ break;
+ }
+
+ if (allowEdit || forceEdit) {
+
+ self.cancelEdit();
+
+ self.currentCell = cell;
+
+ component = cell.getComponent();
+
+ if (this.mouseClick) {
+ this.mouseClick = false;
+
+ if (cell.column.cellEvents.cellClick) {
+ cell.column.cellEvents.cellClick.call(this.table, e, component);
+ }
+ }
+
+ if (cell.column.cellEvents.cellEditing) {
+ cell.column.cellEvents.cellEditing.call(this.table, component);
+ }
+
+ self.table.options.cellEditing.call(this.table, component);
+
+ params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
+
+ cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
+
+ //if editor returned, add to DOM, if false, abort edit
+ if (cellEditor !== false) {
+
+ if (cellEditor instanceof Node) {
+ element.classList.add("tabulator-editing");
+ cell.row.getElement().classList.add("tabulator-row-editing");
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.appendChild(cellEditor);
+
+ //trigger onRendered Callback
+ rendered();
+
+ //prevent editing from triggering rowClick event
+ var children = element.children;
+
+ for (var i = 0; i < children.length; i++) {
+ children[i].addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+ }
+ } else {
+ console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
+ element.blur();
+ return false;
+ }
+ } else {
+ element.blur();
+ return false;
+ }
+
+ return true;
+ } else {
+ this.mouseClick = false;
+ element.blur();
+ return false;
+ }
+ } else {
+ this.mouseClick = false;
+ element.blur();
+ return false;
+ }
+};
+
+//default data editors
+Edit.prototype.editors = {
+
+ //input element
+ input: function input(cell, onRendered, success, cancel, editorParams) {
+
+ //create and style input
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", editorParams.search ? "search" : "text");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = typeof cellValue !== "undefined" ? cellValue : "";
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange(e) {
+ if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+ success(input.value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur or change
+ input.addEventListener("change", onChange);
+ input.addEventListener("blur", onChange);
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ success(input.value);
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //resizable text area element
+ textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellValue = cell.getValue(),
+ value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
+ count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
+ input = document.createElement("textarea"),
+ scrollHeight = 0;
+
+ //create and style input
+ input.style.display = "block";
+ input.style.padding = "2px";
+ input.style.height = "100%";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+ input.style.whiteSpace = "pre-wrap";
+ input.style.resize = "none";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = value;
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange(e) {
+
+ if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+ success(input.value);
+ setTimeout(function () {
+ cell.getRow().normalizeHeight();
+ }, 300);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur or change
+ input.addEventListener("change", onChange);
+ input.addEventListener("blur", onChange);
+
+ input.addEventListener("keyup", function () {
+
+ input.style.height = "";
+
+ var heightNow = input.scrollHeight;
+
+ input.style.height = heightNow + "px";
+
+ if (heightNow != scrollHeight) {
+ scrollHeight = heightNow;
+ cell.getRow().normalizeHeight();
+ }
+ });
+
+ input.addEventListener("keydown", function (e) {
+ if (e.keyCode == 27) {
+ cancel();
+ }
+ });
+
+ return input;
+ },
+
+ //input element with type of number
+ number: function number(cell, onRendered, success, cancel, editorParams) {
+
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", "number");
+
+ if (typeof editorParams.max != "undefined") {
+ input.setAttribute("max", editorParams.max);
+ }
+
+ if (typeof editorParams.min != "undefined") {
+ input.setAttribute("min", editorParams.min);
+ }
+
+ if (typeof editorParams.step != "undefined") {
+ input.setAttribute("step", editorParams.step);
+ }
+
+ //create and style input
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = cellValue;
+
+ var blurFunc = function blurFunc(e) {
+ onChange();
+ };
+
+ onRendered(function () {
+ //submit new value on blur
+ input.removeEventListener("blur", blurFunc);
+
+ input.focus();
+ input.style.height = "100%";
+
+ //submit new value on blur
+ input.addEventListener("blur", blurFunc);
+ });
+
+ function onChange() {
+ var value = input.value;
+
+ if (!isNaN(value) && value !== "") {
+ value = Number(value);
+ }
+
+ if (value != cellValue) {
+ success(value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ // case 9:
+ onChange();
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //input element with type of number
+ range: function range(cell, onRendered, success, cancel, editorParams) {
+
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", "range");
+
+ if (typeof editorParams.max != "undefined") {
+ input.setAttribute("max", editorParams.max);
+ }
+
+ if (typeof editorParams.min != "undefined") {
+ input.setAttribute("min", editorParams.min);
+ }
+
+ if (typeof editorParams.step != "undefined") {
+ input.setAttribute("step", editorParams.step);
+ }
+
+ //create and style input
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = cellValue;
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange() {
+ var value = input.value;
+
+ if (!isNaN(value) && value !== "") {
+ value = Number(value);
+ }
+
+ if (value != cellValue) {
+ success(value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur
+ input.addEventListener("blur", function (e) {
+ onChange();
+ });
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ case 9:
+ onChange();
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //select
+ select: function select(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellEl = cell.getElement(),
+ initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+ input = document.createElement("input"),
+ listEl = document.createElement("div"),
+ dataItems = [],
+ displayItems = [],
+ currentItem = {},
+ blurable = true;
+
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+ if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === "undefined" ? "undefined" : _typeof(editorParams)) === "object" && !editorParams.values) {
+ console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
+ editorParams = { values: editorParams };
+ }
+
+ function getUniqueColumnValues(field) {
+ var output = {},
+ data = self.table.getData(),
+ column;
+
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
+
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
+
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
+ } else {
+ output = Object.keys(output);
+ }
+ } else {
+ console.warn("unable to find matching column to create select lookup list:", field);
+ }
+
+ return output;
+ }
+
+ function parseItems(inputValues, curentValue) {
+ var dataList = [];
+ var displayList = [];
+
+ function processComplexListItem(item) {
+ var item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
+ value: item.value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+
+ return item;
+ }
+
+ if (typeof inputValues == "function") {
+ inputValues = inputValues(cell);
+ }
+
+ if (Array.isArray(inputValues)) {
+ inputValues.forEach(function (value) {
+ var item;
+
+ if ((typeof value === "undefined" ? "undefined" : _typeof(value)) === "object") {
+
+ if (value.options) {
+ item = {
+ label: value.label,
+ group: true,
+ element: false
+ };
+
+ displayList.push(item);
+
+ value.options.forEach(function (item) {
+ processComplexListItem(item);
+ });
+ } else {
+ processComplexListItem(value);
+ }
+ } else {
+
+ item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+ value: value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+ }
+ });
+ } else {
+ for (var key in inputValues) {
+ var item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+ value: key,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+ }
+ }
+
+ dataItems = dataList;
+ displayItems = displayList;
+
+ fillList();
+ }
+
+ function fillList() {
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }displayItems.forEach(function (item) {
+ var el = item.element;
+
+ if (!el) {
+
+ if (item.group) {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-group");
+ el.tabIndex = 0;
+ el.innerHTML = item.label === "" ? " " : item.label;
+ } else {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-item");
+ el.tabIndex = 0;
+ el.innerHTML = item.label === "" ? " " : item.label;
+
+ el.addEventListener("click", function () {
+ setCurrentItem(item);
+ chooseItem();
+ });
+
+ if (item === currentItem) {
+ el.classList.add("active");
+ }
+ }
+
+ el.addEventListener("mousedown", function () {
+ blurable = false;
+
+ setTimeout(function () {
+ blurable = true;
+ }, 10);
+ });
+
+ item.element = el;
+ }
+
+ listEl.appendChild(el);
+ });
+ }
+
+ function setCurrentItem(item) {
+
+ if (currentItem && currentItem.element) {
+ currentItem.element.classList.remove("active");
+ }
+
+ currentItem = item;
+ input.value = item.label === " " ? "" : item.label;
+
+ if (item.element) {
+ item.element.classList.add("active");
+ }
+ }
+
+ function chooseItem() {
+ hideList();
+
+ if (initialValue !== currentItem.value) {
+ initialValue = currentItem.value;
+ success(currentItem.value);
+ } else {
+ cancel();
+ }
+ }
+
+ function cancelItem() {
+ hideList();
+ cancel();
+ }
+
+ function showList() {
+ if (!listEl.parentNode) {
+
+ if (editorParams.values === true) {
+ parseItems(getUniqueColumnValues(), initialDisplayValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
+ } else {
+ parseItems(editorParams.values || [], initialDisplayValue);
+ }
+
+ var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+ listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+ listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+ listEl.style.left = offset.left + "px";
+ document.body.appendChild(listEl);
+ }
+ }
+
+ function hideList() {
+ if (listEl.parentNode) {
+ listEl.parentNode.removeChild(listEl);
+ }
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+ }
+
+ //style input
+ input.setAttribute("type", "text");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+ input.style.cursor = "default";
+ input.readOnly = this.currentCell != false;
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
+
+ if (editorParams.values === true) {
+ parseItems(getUniqueColumnValues(), initialValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+ } else {
+ parseItems(editorParams.values || [], initialValue);
+ }
+
+ //allow key based navigation
+ input.addEventListener("keydown", function (e) {
+ var index;
+
+ switch (e.keyCode) {
+ case 38:
+ //up arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = dataItems.indexOf(currentItem);
+
+ if (index > 0) {
+ setCurrentItem(dataItems[index - 1]);
+ }
+ break;
+
+ case 40:
+ //down arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = dataItems.indexOf(currentItem);
+
+ if (index < dataItems.length - 1) {
+ if (index == -1) {
+ setCurrentItem(dataItems[0]);
+ } else {
+ setCurrentItem(dataItems[index + 1]);
+ }
+ }
+ break;
+
+ case 37: //left arrow
+ case 39:
+ //right arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+ break;
+
+ case 13:
+ //enter
+ chooseItem();
+ break;
+
+ case 27:
+ //escape
+ cancelItem();
+ break;
+ }
+ });
+
+ input.addEventListener("blur", function (e) {
+ if (blurable) {
+ cancelItem();
+ }
+ });
+
+ input.addEventListener("focus", function (e) {
+ showList();
+ });
+
+ //style list element
+ listEl = document.createElement("div");
+ listEl.classList.add("tabulator-edit-select-list");
+
+ onRendered(function () {
+ input.style.height = "100%";
+ input.focus();
+ });
+
+ return input;
+ },
+
+ //autocomplete
+ autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellEl = cell.getElement(),
+ initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+ input = document.createElement("input"),
+ listEl = document.createElement("div"),
+ allItems = [],
+ displayItems = [],
+ values = [],
+ currentItem = {},
+ blurable = true;
+
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+ function getUniqueColumnValues(field) {
+ var output = {},
+ data = self.table.getData(),
+ column;
+
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
+
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
+
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
+ } else {
+ output = Object.keys(output);
+ }
+ } else {
+ console.warn("unable to find matching column to create autocomplete lookup list:", field);
+ }
+
+ return output;
+ }
+
+ function parseItems(inputValues, curentValue) {
+ var itemList = [];
+
+ if (Array.isArray(inputValues)) {
+ inputValues.forEach(function (value) {
+ var item = {
+ title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+ value: value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ itemList.push(item);
+ });
+ } else {
+ for (var key in inputValues) {
+ var item = {
+ title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+ value: key,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ itemList.push(item);
+ }
+ }
+
+ if (editorParams.searchFunc) {
+ itemList.forEach(function (item) {
+ item.search = {
+ title: item.title,
+ value: item.value
+ };
+ });
+ }
+
+ allItems = itemList;
+ }
+
+ function filterList(term, intialLoad) {
+ var matches = [],
+ searchObjs = [],
+ searchResults = [];
+
+ if (editorParams.searchFunc) {
+
+ allItems.forEach(function (item) {
+ searchObjs.push(item.search);
+ });
+
+ searchResults = editorParams.searchFunc(term, searchObjs);
+
+ searchResults.forEach(function (result) {
+ var match = allItems.find(function (item) {
+ return item.search === result;
+ });
+
+ if (match) {
+ matches.push(match);
+ }
+ });
+ } else {
+ if (term === "") {
+
+ if (editorParams.showListOnEmpty) {
+ allItems.forEach(function (item) {
+ matches.push(item);
+ });
+ }
+ } else {
+ allItems.forEach(function (item) {
+
+ if (item.value !== null || typeof item.value !== "undefined") {
+ if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
+ matches.push(item);
+ }
+ }
+ });
+ }
+ }
+
+ displayItems = matches;
+
+ fillList(intialLoad);
+ }
+
+ function fillList(intialLoad) {
+ var current = false;
+
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }displayItems.forEach(function (item) {
+ var el = item.element;
+
+ if (!el) {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-item");
+ el.tabIndex = 0;
+ el.innerHTML = item.title;
+
+ el.addEventListener("click", function () {
+ setCurrentItem(item);
+ chooseItem();
+ });
+
+ el.addEventListener("mousedown", function () {
+ blurable = false;
+
+ setTimeout(function () {
+ blurable = true;
+ }, 10);
+ });
+
+ item.element = el;
+
+ if (intialLoad && item.value == initialValue) {
+ input.value = item.title;
+ item.element.classList.add("active");
+ current = true;
+ }
+
+ if (item === currentItem) {
+ item.element.classList.add("active");
+ current = true;
+ }
+ }
+
+ listEl.appendChild(el);
+ });
+
+ if (!current) {
+ setCurrentItem(false);
+ }
+ }
+
+ function setCurrentItem(item, showInputValue) {
+ if (currentItem && currentItem.element) {
+ currentItem.element.classList.remove("active");
+ }
+
+ currentItem = item;
+
+ if (item && item.element) {
+ item.element.classList.add("active");
+ }
+ }
+
+ function chooseItem() {
+ hideList();
+
+ if (currentItem) {
+ if (initialValue !== currentItem.value) {
+ initialValue = currentItem.value;
+ input.value = currentItem.title;
+ success(currentItem.value);
+ } else {
+ cancel();
+ }
+ } else {
+ if (editorParams.freetext) {
+ initialValue = input.value;
+ success(input.value);
+ } else {
+ if (editorParams.allowEmpty && input.value === "") {
+ initialValue = input.value;
+ success(input.value);
+ } else {
+ cancel();
+ }
+ }
+ }
+ }
+
+ function cancelItem() {
+ hideList();
+ cancel();
+ }
+
+ function showList() {
+ if (!listEl.parentNode) {
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }if (editorParams.values === true) {
+ values = getUniqueColumnValues();
+ } else if (typeof editorParams.values === "string") {
+ values = getUniqueColumnValues(editorParams.values);
+ } else {
+ values = editorParams.values || [];
+ }
+
+ parseItems(values, initialValue);
+
+ var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+ listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+ listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+ listEl.style.left = offset.left + "px";
+ document.body.appendChild(listEl);
+ }
+ }
+
+ function hideList() {
+ if (listEl.parentNode) {
+ listEl.parentNode.removeChild(listEl);
+ }
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+ }
+
+ //style input
+ input.setAttribute("type", "search");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //allow key based navigation
+ input.addEventListener("keydown", function (e) {
+ var index;
+
+ switch (e.keyCode) {
+ case 38:
+ //up arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = displayItems.indexOf(currentItem);
+
+ if (index > 0) {
+ setCurrentItem(displayItems[index - 1]);
+ } else {
+ setCurrentItem(false);
+ }
+ break;
+
+ case 40:
+ //down arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = displayItems.indexOf(currentItem);
+
+ if (index < displayItems.length - 1) {
+ if (index == -1) {
+ setCurrentItem(displayItems[0]);
+ } else {
+ setCurrentItem(displayItems[index + 1]);
+ }
+ }
+ break;
+
+ case 37: //left arrow
+ case 39:
+ //right arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+ break;
+
+ case 13:
+ //enter
+ chooseItem();
+ break;
+
+ case 27:
+ //escape
+ cancelItem();
+ break;
+
+ case 36: //home
+ case 35:
+ //end
+ //prevent table navigation while using input element
+ e.stopImmediatePropagation();
+ break;
+ }
+ });
+
+ input.addEventListener("keyup", function (e) {
+
+ switch (e.keyCode) {
+ case 38: //up arrow
+ case 37: //left arrow
+ case 39: //up arrow
+ case 40: //right arrow
+ case 13: //enter
+ case 27:
+ //escape
+ break;
+
+ default:
+ filterList(input.value);
+ }
+ });
+
+ input.addEventListener("search", function (e) {
+ filterList(input.value);
+ });
+
+ input.addEventListener("blur", function (e) {
+ if (blurable) {
+ chooseItem();
+ }
+ });
+
+ input.addEventListener("focus", function (e) {
+ var value = initialDisplayValue;
+ showList();
+ input.value = value;
+ filterList(value, true);
+ });
+
+ //style list element
+ listEl = document.createElement("div");
+ listEl.classList.add("tabulator-edit-select-list");
+
+ onRendered(function () {
+ input.style.height = "100%";
+ input.focus();
+ });
+
+ return input;
+ },
+
+ //start rating
+ star: function star(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ element = cell.getElement(),
+ value = cell.getValue(),
+ maxStars = element.getElementsByTagName("svg").length || 5,
+ size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
+ stars = [],
+ starsHolder = document.createElement("div"),
+ star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
+
+ //change star type
+ function starChange(val) {
+ stars.forEach(function (star, i) {
+ if (i < val) {
+ if (self.table.browser == "ie") {
+ star.setAttribute("class", "tabulator-star-active");
+ } else {
+ star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
+ }
+
+ star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+ } else {
+ if (self.table.browser == "ie") {
+ star.setAttribute("class", "tabulator-star-inactive");
+ } else {
+ star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
+ }
+
+ star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+ }
+ });
+ }
+
+ //build stars
+ function buildStar(i) {
+
+ var starHolder = document.createElement("span");
+ var nextStar = star.cloneNode(true);
+
+ stars.push(nextStar);
+
+ starHolder.addEventListener("mouseenter", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ starChange(i);
+ });
+
+ starHolder.addEventListener("mousemove", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ });
+
+ starHolder.addEventListener("click", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ success(i);
+ });
+
+ starHolder.appendChild(nextStar);
+ starsHolder.appendChild(starHolder);
+ }
+
+ //handle keyboard navigation value change
+ function changeValue(val) {
+ value = val;
+ starChange(val);
+ }
+
+ //style cell
+ element.style.whiteSpace = "nowrap";
+ element.style.overflow = "hidden";
+ element.style.textOverflow = "ellipsis";
+
+ //style holding element
+ starsHolder.style.verticalAlign = "middle";
+ starsHolder.style.display = "inline-block";
+ starsHolder.style.padding = "4px";
+
+ //style star
+ star.setAttribute("width", size);
+ star.setAttribute("height", size);
+ star.setAttribute("viewBox", "0 0 512 512");
+ star.setAttribute("xml:space", "preserve");
+ star.style.padding = "0 1px";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //create correct number of stars
+ for (var i = 1; i <= maxStars; i++) {
+ buildStar(i);
+ }
+
+ //ensure value does not exceed number of stars
+ value = Math.min(parseInt(value), maxStars);
+
+ // set initial styling of stars
+ starChange(value);
+
+ starsHolder.addEventListener("mousemove", function (e) {
+ starChange(0);
+ });
+
+ starsHolder.addEventListener("click", function (e) {
+ success(0);
+ });
+
+ element.addEventListener("blur", function (e) {
+ cancel();
+ });
+
+ //allow key based navigation
+ element.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 39:
+ //right arrow
+ changeValue(value + 1);
+ break;
+
+ case 37:
+ //left arrow
+ changeValue(value - 1);
+ break;
+
+ case 13:
+ //enter
+ success(value);
+ break;
+
+ case 27:
+ //escape
+ cancel();
+ break;
+ }
+ });
+
+ return starsHolder;
+ },
+
+ //draggable progress bar
+ progress: function progress(cell, onRendered, success, cancel, editorParams) {
+ var element = cell.getElement(),
+ max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
+ min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
+ percent = (max - min) / 100,
+ value = cell.getValue() || 0,
+ handle = document.createElement("div"),
+ bar = document.createElement("div"),
+ mouseDrag,
+ mouseDragWidth;
+
+ //set new value
+ function updateValue() {
+ var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
+ success(calcVal);
+ element.setAttribute("aria-valuenow", calcVal);
+ element.setAttribute("aria-label", value);
+ }
+
+ //style handle
+ handle.style.position = "absolute";
+ handle.style.right = "0";
+ handle.style.top = "0";
+ handle.style.bottom = "0";
+ handle.style.width = "5px";
+ handle.classList.add("tabulator-progress-handle");
+
+ //style bar
+ bar.style.display = "inline-block";
+ bar.style.position = "relative";
+ // bar.style.top = "8px";
+ // bar.style.bottom = "8px";
+ // bar.style.left = "4px";
+ // bar.style.marginRight = "4px";
+ bar.style.height = "100%";
+ bar.style.backgroundColor = "#488CE9";
+ bar.style.maxWidth = "100%";
+ bar.style.minWidth = "0%";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ bar.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //style cell
+ element.style.padding = "4px 4px";
+
+ //make sure value is in range
+ value = Math.min(parseFloat(value), max);
+ value = Math.max(parseFloat(value), min);
+
+ //workout percentage
+ value = Math.round((value - min) / percent);
+ // bar.style.right = value + "%";
+ bar.style.width = value + "%";
+
+ element.setAttribute("aria-valuemin", min);
+ element.setAttribute("aria-valuemax", max);
+
+ bar.appendChild(handle);
+
+ handle.addEventListener("mousedown", function (e) {
+ mouseDrag = e.screenX;
+ mouseDragWidth = bar.offsetWidth;
+ });
+
+ handle.addEventListener("mouseover", function () {
+ handle.style.cursor = "ew-resize";
+ });
+
+ element.addEventListener("mousemove", function (e) {
+ if (mouseDrag) {
+ bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
+ }
+ });
+
+ element.addEventListener("mouseup", function (e) {
+ if (mouseDrag) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+
+ mouseDrag = false;
+ mouseDragWidth = false;
+
+ updateValue();
+ }
+ });
+
+ //allow key based navigation
+ element.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 39:
+ //right arrow
+ bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
+ break;
+
+ case 37:
+ //left arrow
+ bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
+ break;
+
+ case 13:
+ //enter
+ updateValue();
+ break;
+
+ case 27:
+ //escape
+ cancel();
+ break;
+
+ }
+ });
+
+ element.addEventListener("blur", function () {
+ cancel();
+ });
+
+ return bar;
+ },
+
+ //checkbox
+ tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
+ var value = cell.getValue(),
+ input = document.createElement("input"),
+ tristate = editorParams.tristate,
+ indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
+ indetermState = false;
+
+ input.setAttribute("type", "checkbox");
+ input.style.marginTop = "5px";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = value;
+
+ if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
+ indetermState = true;
+ input.indeterminate = true;
+ }
+
+ if (this.table.browser != "firefox") {
+ //prevent blur issue on mac firefox
+ onRendered(function () {
+ input.focus();
+ });
+ }
+
+ input.checked = value === true || value === "true" || value === "True" || value === 1;
+
+ function setValue(blur) {
+ if (tristate) {
+ if (!blur) {
+ if (input.checked && !indetermState) {
+ input.checked = false;
+ input.indeterminate = true;
+ indetermState = true;
+ return indetermValue;
+ } else {
+ indetermState = false;
+ return input.checked;
+ }
+ } else {
+ if (indetermState) {
+ return indetermValue;
+ } else {
+ return input.checked;
+ }
+ }
+ } else {
+ return input.checked;
+ }
+ }
+
+ //submit new value on blur
+ input.addEventListener("change", function (e) {
+ success(setValue());
+ });
+
+ input.addEventListener("blur", function (e) {
+ success(setValue(true));
+ });
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ if (e.keyCode == 13) {
+ success(setValue());
+ }
+ if (e.keyCode == 27) {
+ cancel();
+ }
+ });
+
+ return input;
+ }
+};
+
+Tabulator.prototype.registerModule("edit", Edit);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Edit=function(e){this.table=e,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};Edit.prototype.initializeColumn=function(e){var t=this,i={editor:!1,blocked:!1,check:e.definition.editable,params:e.definition.editorParams||{}};switch(_typeof(e.definition.editor)){case"string":"tick"===e.definition.editor&&(e.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.editor]?i.editor=t.editors[e.definition.editor]:console.warn("Editor Error - No such editor found: ",e.definition.editor);break;case"function":i.editor=e.definition.editor;break;case"boolean":!0===e.definition.editor&&("function"!=typeof e.definition.formatter?("tick"===e.definition.formatter&&(e.definition.formatter="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),t.editors[e.definition.formatter]?i.editor=t.editors[e.definition.formatter]:i.editor=t.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",e.definition.formatter))}i.editor&&(e.modules.edit=i)},Edit.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},Edit.prototype.clearEditor=function(){var e,t=this.currentCell;if(this.invalidEdit=!1,t){for(this.currentCell=!1,e=t.getElement(),e.classList.remove("tabulator-validation-fail"),e.classList.remove("tabulator-editing");e.firstChild;)e.removeChild(e.firstChild);t.row.getElement().classList.remove("tabulator-row-editing")}},Edit.prototype.cancelEdit=function(){if(this.currentCell){var e=this.currentCell,t=this.currentCell.getComponent();this.clearEditor(),e.setValueActual(e.getValue()),e.column.cellEvents.cellEditCancelled&&e.column.cellEvents.cellEditCancelled.call(this.table,t),this.table.options.cellEditCancelled.call(this.table,t)}},Edit.prototype.bindEditor=function(e){var t=this,i=e.getElement();i.setAttribute("tabindex",0),i.addEventListener("click",function(e){i.classList.contains("tabulator-editing")||i.focus()}),i.addEventListener("mousedown",function(e){t.mouseClick=!0}),i.addEventListener("focus",function(i){t.recursionBlock||t.edit(e,i,!1)})},Edit.prototype.focusCellNoEvent=function(e){this.recursionBlock=!0,"ie"!==this.table.browser&&e.getElement().focus(),this.recursionBlock=!1},Edit.prototype.editCell=function(e,t){this.focusCellNoEvent(e),this.edit(e,!1,t)},Edit.prototype.edit=function(e,t,i){function n(t){if(u.currentCell===e){var i=!0;e.column.modules.validate&&u.table.modExists("validate")&&(i=u.table.modules.validate.validate(e.column.modules.validate,e.getComponent(),t)),!0===i?(u.clearEditor(),e.setValue(t,!0),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e)):(u.invalidEdit=!0,m.classList.add("tabulator-validation-fail"),u.focusCellNoEvent(e),d(),u.table.options.validationFailed.call(u.table,e.getComponent(),t,i))}}function a(){u.currentCell===e&&(u.cancelEdit(),u.table.options.dataTree&&u.table.modExists("dataTree")&&u.table.modules.dataTree.checkForRestyle(e))}function o(e){d=e}var r,l,s,u=this,c=!0,d=function(){},m=e.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(e.column.modules.edit.blocked)return this.mouseClick=!1,m.blur(),!1;switch(t&&t.stopPropagation(),_typeof(e.column.modules.edit.check)){case"function":c=e.column.modules.edit.check(e.getComponent());break;case"boolean":c=e.column.modules.edit.check}if(c||i){if(u.cancelEdit(),u.currentCell=e,l=e.getComponent(),this.mouseClick&&(this.mouseClick=!1,e.column.cellEvents.cellClick&&e.column.cellEvents.cellClick.call(this.table,t,l)),e.column.cellEvents.cellEditing&&e.column.cellEvents.cellEditing.call(this.table,l),u.table.options.cellEditing.call(this.table,l),s="function"==typeof e.column.modules.edit.params?e.column.modules.edit.params(l):e.column.modules.edit.params,!1===(r=e.column.modules.edit.editor.call(u,l,o,n,a,s)))return m.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),m.blur(),!1;for(m.classList.add("tabulator-editing"),e.row.getElement().classList.add("tabulator-row-editing");m.firstChild;)m.removeChild(m.firstChild);m.appendChild(r),d();for(var f=m.children,v=0;v<f.length;v++)f[v].addEventListener("click",function(e){e.stopPropagation()});return!0}return this.mouseClick=!1,m.blur(),!1},Edit.prototype.editors={input:function(e,t,i,n,a){function o(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?i(l.value):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type",a.search?"search":"text"),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=void 0!==r?r:"",t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",o),l.addEventListener("blur",o),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:i(l.value);break;case 27:n()}}),l},textarea:function(e,t,i,n,a){function o(t){(null===r||void 0===r)&&""!==s.value||s.value!=r?(i(s.value),setTimeout(function(){e.getRow().normalizeHeight()},300)):n()}var r=e.getValue(),l=String(null!==r&&void 0!==r?r:""),s=(l.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),u=0;if(s.style.display="block",s.style.padding="2px",s.style.height="100%",s.style.width="100%",s.style.boxSizing="border-box",s.style.whiteSpace="pre-wrap",s.style.resize="none",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var c in a.elementAttributes)"+"==c.charAt(0)?(c=c.slice(1),s.setAttribute(c,s.getAttribute(c)+a.elementAttributes["+"+c])):s.setAttribute(c,a.elementAttributes[c]);return s.value=l,t(function(){s.focus(),s.style.height="100%"}),s.addEventListener("change",o),s.addEventListener("blur",o),s.addEventListener("keyup",function(){s.style.height="";var t=s.scrollHeight;s.style.height=t+"px",t!=u&&(u=t,e.getRow().normalizeHeight())}),s.addEventListener("keydown",function(e){27==e.keyCode&&n()}),s},number:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","number"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);l.value=r;var u=function(e){o()};return t(function(){l.removeEventListener("blur",u),l.focus(),l.style.height="100%",l.addEventListener("blur",u)}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:o();break;case 27:n()}}),l},range:function(e,t,i,n,a){function o(){var e=l.value;isNaN(e)||""===e||(e=Number(e)),e!=r?i(e):n()}var r=e.getValue(),l=document.createElement("input");if(l.setAttribute("type","range"),void 0!==a.max&&l.setAttribute("max",a.max),void 0!==a.min&&l.setAttribute("min",a.min),void 0!==a.step&&l.setAttribute("step",a.step),l.style.padding="4px",l.style.width="100%",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var s in a.elementAttributes)"+"==s.charAt(0)?(s=s.slice(1),l.setAttribute(s,l.getAttribute(s)+a.elementAttributes["+"+s])):l.setAttribute(s,a.elementAttributes[s]);return l.value=r,t(function(){l.focus(),l.style.height="100%"}),l.addEventListener("blur",function(e){o()}),l.addEventListener("keydown",function(e){switch(e.keyCode){case 13:case 9:o();break;case 27:n()}}),l},select:function(e,t,i,n,a){function o(t){var i,n={},o=v.table.getData();return i=t?v.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create select lookup list:",t),n}function r(t,i){function n(e){var e={label:a.listItemFormatter?a.listItemFormatter(e.value,e.label):e.label,value:e.value,element:!1};return e.value!==i&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(i))||s(e),o.push(e),r.push(e),e}var o=[],r=[];if("function"==typeof t&&(t=t(e)),Array.isArray(t))t.forEach(function(e){var t;"object"===(void 0===e?"undefined":_typeof(e))?e.options?(t={label:e.label,group:!0,element:!1},r.push(t),e.options.forEach(function(e){n(e)})):n(e):(t={label:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1},t.value!==i&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(i))||s(t),o.push(t),r.push(t))});else for(var u in t){var c={label:a.listItemFormatter?a.listItemFormatter(u,t[u]):t[u],value:u,element:!1};c.value!==i&&(isNaN(parseFloat(c.value))||isNaN(parseFloat(c.value))||parseFloat(c.value)!==parseFloat(i))||s(c),o.push(c),r.push(c)}E=o,A=r,l()}function l(){for(;g.firstChild;)g.removeChild(g.firstChild);A.forEach(function(e){var t=e.element;t||(e.group?(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-group"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label):(t=document.createElement("div"),t.classList.add("tabulator-edit-select-list-item"),t.tabIndex=0,t.innerHTML=""===e.label?" ":e.label,t.addEventListener("click",function(){s(e),u()}),e===k&&t.classList.add("active")),t.addEventListener("mousedown",function(){C=!1,setTimeout(function(){C=!0},10)}),e.element=t),g.appendChild(t)})}function s(e){k&&k.element&&k.element.classList.remove("active"),k=e,y.value=" "===e.label?"":e.label,e.element&&e.element.classList.add("active")}function u(){m(),b!==k.value?(b=k.value,i(k.value)):n()}function c(){m(),n()}function d(){if(!g.parentNode){!0===a.values?r(o(),h):"string"==typeof a.values?r(o(a.values),h):r(a.values||[],h);var e=Tabulator.prototype.helpers.elOffset(p);g.style.minWidth=p.offsetWidth+"px",g.style.top=e.top+p.offsetHeight+"px",g.style.left=e.left+"px",document.body.appendChild(g)}}function m(){g.parentNode&&g.parentNode.removeChild(g),f()}function f(){v.table.rowManager.element.removeEventListener("scroll",c)}var v=this,p=e.getElement(),b=e.getValue(),h=void 0!==b||null===b?b:void 0!==a.defaultValue?a.defaultValue:"",y=document.createElement("input"),g=document.createElement("div"),E=[],A=[],k={},C=!0;if(this.table.rowManager.element.addEventListener("scroll",c),(Array.isArray(a)||!Array.isArray(a)&&"object"===(void 0===a?"undefined":_typeof(a))&&!a.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),a={values:a}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var L in a.elementAttributes)"+"==L.charAt(0)?(L=L.slice(1),y.setAttribute(L,y.getAttribute(L)+a.elementAttributes["+"+L])):y.setAttribute(L,a.elementAttributes[L]);return y.value=void 0!==b||null===b?b:"",!0===a.values?r(o(),b):"string"==typeof a.values?r(o(a.values),b):r(a.values||[],b),y.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t>0&&s(E[t-1]);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=E.indexOf(k),t<E.length-1&&s(-1==t?E[0]:E[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:u();break;case 27:c()}}),y.addEventListener("blur",function(e){C&&c()}),y.addEventListener("focus",function(e){d()}),g=document.createElement("div"),g.classList.add("tabulator-edit-select-list"),t(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(e,t,i,n,a){function o(t){var i,n={},o=p.table.getData();return i=t?p.table.columnManager.getColumnByField(t):e.getColumn()._getSelf(),i?(o.forEach(function(e){var t=i.getFieldValue(e);null!==t&&void 0!==t&&""!==t&&(n[t]=!0)}),n=a.sortValuesList?"asc"==a.sortValuesList?Object.keys(n).sort():Object.keys(n).sort().reverse():Object.keys(n)):console.warn("unable to find matching column to create autocomplete lookup list:",t),n}function r(e,t){var i=[];if(Array.isArray(e))e.forEach(function(e){var n={title:a.listItemFormatter?a.listItemFormatter(e,e):e,value:e,element:!1};n.value!==t&&(isNaN(parseFloat(n.value))||isNaN(parseFloat(n.value))||parseFloat(n.value)!==parseFloat(t))||u(n),i.push(n)});else for(var n in e){var o={title:a.listItemFormatter?a.listItemFormatter(n,e[n]):e[n],value:n,element:!1};o.value!==t&&(isNaN(parseFloat(o.value))||isNaN(parseFloat(o.value))||parseFloat(o.value)!==parseFloat(t))||u(o),i.push(o)}a.searchFunc&&i.forEach(function(e){e.search={title:e.title,value:e.value}}),A=i}function l(e,t){var i=[],n=[],o=[];a.searchFunc?(A.forEach(function(e){n.push(e.search)}),o=a.searchFunc(e,n),o.forEach(function(e){var t=A.find(function(t){return t.search===e});t&&i.push(t)})):""===e?a.showListOnEmpty&&A.forEach(function(e){i.push(e)}):A.forEach(function(t){null===t.value&&void 0===t.value||(String(t.value).toLowerCase().indexOf(String(e).toLowerCase())>-1||String(t.title).toLowerCase().indexOf(String(e).toLowerCase())>-1)&&i.push(t)}),k=i,s(t)}function s(e){for(var t=!1;E.firstChild;)E.removeChild(E.firstChild);k.forEach(function(i){var n=i.element;n||(n=document.createElement("div"),n.classList.add("tabulator-edit-select-list-item"),n.tabIndex=0,n.innerHTML=i.title,n.addEventListener("click",function(){u(i),c()}),n.addEventListener("mousedown",function(){w=!1,setTimeout(function(){w=!0},10)}),i.element=n,e&&i.value==h&&(g.value=i.title,i.element.classList.add("active"),t=!0),i===L&&(i.element.classList.add("active"),t=!0)),E.appendChild(n)}),t||u(!1)}function u(e,t){L&&L.element&&L.element.classList.remove("active"),L=e,e&&e.element&&e.element.classList.add("active")}function c(){f(),L?h!==L.value?(h=L.value,g.value=L.title,i(L.value)):n():a.freetext?(h=g.value,i(g.value)):a.allowEmpty&&""===g.value?(h=g.value,i(g.value)):n()}function d(){f(),n()}function m(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);C=!0===a.values?o():"string"==typeof a.values?o(a.values):a.values||[],r(C,h);var e=Tabulator.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=e.top+b.offsetHeight+"px",E.style.left=e.left+"px",document.body.appendChild(E)}}function f(){E.parentNode&&E.parentNode.removeChild(E),v()}function v(){p.table.rowManager.element.removeEventListener("scroll",d)}var p=this,b=e.getElement(),h=e.getValue(),y=void 0!==h||null===h?h:void 0!==a.defaultValue?a.defaultValue:"",g=document.createElement("input"),E=document.createElement("div"),A=[],k=[],C=[],L={},w=!0;if(this.table.rowManager.element.addEventListener("scroll",d),g.setAttribute("type","search"),g.style.padding="4px",g.style.width="100%",g.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var x in a.elementAttributes)"+"==x.charAt(0)?(x=x.slice(1),g.setAttribute(x,g.getAttribute(x)+a.elementAttributes["+"+x])):g.setAttribute(x,a.elementAttributes[x]);return g.addEventListener("keydown",function(e){var t;switch(e.keyCode){case 38:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),u(t>0?k[t-1]:!1);break;case 40:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault(),t=k.indexOf(L),t<k.length-1&&u(-1==t?k[0]:k[t+1]);break;case 37:case 39:e.stopImmediatePropagation(),e.stopPropagation(),e.preventDefault();break;case 13:c();break;case 27:d();break;case 36:case 35:e.stopImmediatePropagation()}}),g.addEventListener("keyup",function(e){switch(e.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:l(g.value)}}),g.addEventListener("search",function(e){l(g.value)}),g.addEventListener("blur",function(e){w&&c()}),g.addEventListener("focus",function(e){var t=y;m(),g.value=t,l(t,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),t(function(){g.style.height="100%",g.focus()}),g},star:function(e,t,i,n,a){function o(e){m.forEach(function(t,i){i<e?("ie"==l.table.browser?t.setAttribute("class","tabulator-star-active"):t.classList.replace("tabulator-star-inactive","tabulator-star-active"),t.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==l.table.browser?t.setAttribute("class","tabulator-star-inactive"):t.classList.replace("tabulator-star-active","tabulator-star-inactive"),t.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(e){u=e,o(e)}var l=this,s=e.getElement(),u=e.getValue(),c=s.getElementsByTagName("svg").length||5,d=s.getElementsByTagName("svg")[0]?s.getElementsByTagName("svg")[0].getAttribute("width"):14,m=[],f=document.createElement("div"),v=document.createElementNS("http://www.w3.org/2000/svg","svg");if(s.style.whiteSpace="nowrap",s.style.overflow="hidden",s.style.textOverflow="ellipsis",f.style.verticalAlign="middle",f.style.display="inline-block",f.style.padding="4px",v.setAttribute("width",d),v.setAttribute("height",d),v.setAttribute("viewBox","0 0 512 512"),v.setAttribute("xml:space","preserve"),v.style.padding="0 1px",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),f.setAttribute(p,f.getAttribute(p)+a.elementAttributes["+"+p])):f.setAttribute(p,a.elementAttributes[p]);for(var b=1;b<=c;b++)!function(e){var t=document.createElement("span"),n=v.cloneNode(!0);m.push(n),t.addEventListener("mouseenter",function(t){t.stopPropagation(),t.stopImmediatePropagation(),o(e)}),t.addEventListener("mousemove",function(e){e.stopPropagation(),e.stopImmediatePropagation()}),t.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),i(e)}),t.appendChild(n),f.appendChild(t)}(b);return u=Math.min(parseInt(u),c),o(u),f.addEventListener("mousemove",function(e){o(0)}),f.addEventListener("click",function(e){i(0)}),s.addEventListener("blur",function(e){n()}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:r(u+1);break;case 37:r(u-1);break;case 13:i(u);break;case 27:n()}}),f},progress:function(e,t,i,n,a){function o(){var e=d*Math.round(v.offsetWidth/(s.clientWidth/100))+c;i(e),s.setAttribute("aria-valuenow",e),s.setAttribute("aria-label",m)}var r,l,s=e.getElement(),u=void 0===a.max?s.getElementsByTagName("div")[0].getAttribute("max")||100:a.max,c=void 0===a.min?s.getElementsByTagName("div")[0].getAttribute("min")||0:a.min,d=(u-c)/100,m=e.getValue()||0,f=document.createElement("div"),v=document.createElement("div");if(f.style.position="absolute",f.style.right="0",f.style.top="0",f.style.bottom="0",f.style.width="5px",f.classList.add("tabulator-progress-handle"),v.style.display="inline-block",v.style.position="relative",v.style.height="100%",v.style.backgroundColor="#488CE9",v.style.maxWidth="100%",v.style.minWidth="0%",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var p in a.elementAttributes)"+"==p.charAt(0)?(p=p.slice(1),v.setAttribute(p,v.getAttribute(p)+a.elementAttributes["+"+p])):v.setAttribute(p,a.elementAttributes[p]);return s.style.padding="4px 4px",m=Math.min(parseFloat(m),u),m=Math.max(parseFloat(m),c),m=Math.round((m-c)/d),v.style.width=m+"%",s.setAttribute("aria-valuemin",c),s.setAttribute("aria-valuemax",u),v.appendChild(f),f.addEventListener("mousedown",function(e){r=e.screenX,l=v.offsetWidth}),f.addEventListener("mouseover",function(){f.style.cursor="ew-resize"}),s.addEventListener("mousemove",function(e){r&&(v.style.width=l+e.screenX-r+"px")}),s.addEventListener("mouseup",function(e){r&&(e.stopPropagation(),e.stopImmediatePropagation(),r=!1,l=!1,o())}),s.addEventListener("keydown",function(e){switch(e.keyCode){case 39:v.style.width=v.clientWidth+s.clientWidth/100+"px";break;case 37:v.style.width=v.clientWidth-s.clientWidth/100+"px";break;case 13:o();break;case 27:n()}}),s.addEventListener("blur",function(){n()}),v},tickCross:function(e,t,i,n,a){function o(e){return s?e?c?u:l.checked:l.checked&&!c?(l.checked=!1,l.indeterminate=!0,c=!0,u):(c=!1,l.checked):l.checked}var r=e.getValue(),l=document.createElement("input"),s=a.tristate,u=void 0===a.indeterminateValue?null:a.indeterminateValue,c=!1;if(l.setAttribute("type","checkbox"),l.style.marginTop="5px",l.style.boxSizing="border-box",a.elementAttributes&&"object"==_typeof(a.elementAttributes))for(var d in a.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),l.setAttribute(d,l.getAttribute(d)+a.elementAttributes["+"+d])):l.setAttribute(d,a.elementAttributes[d]);return l.value=r,!s||void 0!==r&&r!==u&&""!==r||(c=!0,l.indeterminate=!0),"firefox"!=this.table.browser&&t(function(){l.focus()}),l.checked=!0===r||"true"===r||"True"===r||1===r,l.addEventListener("change",function(e){i(o())}),l.addEventListener("blur",function(e){i(o(!0))}),l.addEventListener("keydown",function(e){13==e.keyCode&&i(o()),27==e.keyCode&&n()}),l}},Tabulator.prototype.registerModule("edit",Edit);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Filter = function Filter(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.filterList = []; //hold filter list
+ this.headerFilters = {}; //hold column filters
+ this.headerFilterElements = []; //hold header filter elements for manipulation
+ this.headerFilterColumns = []; //hold columns that use header filters
+
+ this.changed = false; //has filtering changed since last render
+};
+
+//initialize column header filter
+Filter.prototype.initializeColumn = function (column, value) {
+ var self = this,
+ field = column.getField(),
+ params;
+
+ //handle successfull value change
+ function success(value) {
+ var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
+ type = "",
+ filterFunc;
+
+ if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
+
+ column.modules.filter.prevSuccess = value;
+
+ if (!column.modules.filter.emptyFunc(value)) {
+ column.modules.filter.value = value;
+
+ switch (_typeof(column.definition.headerFilterFunc)) {
+ case "string":
+ if (self.filters[column.definition.headerFilterFunc]) {
+ type = column.definition.headerFilterFunc;
+ filterFunc = function filterFunc(data) {
+ var params = column.definition.headerFilterFuncParams || {};
+ var fieldVal = column.getFieldValue(data);
+
+ params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+ return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
+ };
+ } else {
+ console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
+ }
+ break;
+
+ case "function":
+ filterFunc = function filterFunc(data) {
+ var params = column.definition.headerFilterFuncParams || {};
+ var fieldVal = column.getFieldValue(data);
+
+ params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+ return column.definition.headerFilterFunc(value, fieldVal, data, params);
+ };
+
+ type = filterFunc;
+ break;
+ }
+
+ if (!filterFunc) {
+ switch (filterType) {
+ case "partial":
+ filterFunc = function filterFunc(data) {
+ var colVal = column.getFieldValue(data);
+
+ if (typeof colVal !== 'undefined' && colVal !== null) {
+ return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
+ } else {
+ return false;
+ }
+ };
+ type = "like";
+ break;
+
+ default:
+ filterFunc = function filterFunc(data) {
+ return column.getFieldValue(data) == value;
+ };
+ type = "=";
+ }
+ }
+
+ self.headerFilters[field] = { value: value, func: filterFunc, type: type };
+ } else {
+ delete self.headerFilters[field];
+ }
+
+ self.changed = true;
+
+ self.table.rowManager.filterRefresh();
+ }
+ }
+
+ column.modules.filter = {
+ success: success,
+ attrType: false,
+ tagType: false,
+ emptyFunc: false
+ };
+
+ this.generateHeaderFilterElement(column);
+};
+
+Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+ var _this = this;
+
+ var self = this,
+ success = column.modules.filter.success,
+ field = column.getField(),
+ filterElement,
+ editor,
+ editorElement,
+ cellWrapper,
+ typingTimer,
+ searchTrigger,
+ params;
+
+ //handle aborted edit
+ function cancel() {}
+
+ if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
+ var oldFilterElement = column.modules.filter.headerElement.parentNode;
+ var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
+ if (oldFilterElementIndex >= 0) {
+ self.headerFilterElements.splice(oldFilterElementIndex, 1);
+ }
+
+ var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
+ if (oldColumnIndex >= 0) {
+ self.headerFilterColumns.splice(oldColumnIndex, 1);
+ }
+
+ column.contentElement.removeChild(oldFilterElement);
+ }
+
+ if (field) {
+
+ //set empty value function
+ column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
+ return !value && value !== "0";
+ };
+
+ filterElement = document.createElement("div");
+ filterElement.classList.add("tabulator-header-filter");
+
+ //set column editor
+ switch (_typeof(column.definition.headerFilter)) {
+ case "string":
+ if (self.table.modules.edit.editors[column.definition.headerFilter]) {
+ editor = self.table.modules.edit.editors[column.definition.headerFilter];
+
+ if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+ column.modules.filter.emptyFunc = function (value) {
+ return value !== true && value !== false;
+ };
+ }
+ } else {
+ console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
+ }
+ break;
+
+ case "function":
+ editor = column.definition.headerFilter;
+ break;
+
+ case "boolean":
+ if (column.modules.edit && column.modules.edit.editor) {
+ editor = column.modules.edit.editor;
+ } else {
+ if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
+ editor = self.table.modules.edit.editors[column.definition.formatter];
+
+ if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+ column.modules.filter.emptyFunc = function (value) {
+ return value !== true && value !== false;
+ };
+ }
+ } else {
+ editor = self.table.modules.edit.editors["input"];
+ }
+ }
+ break;
+ }
+
+ if (editor) {
+
+ cellWrapper = {
+ getValue: function getValue() {
+ return typeof initialValue !== "undefined" ? initialValue : "";
+ },
+ getField: function getField() {
+ return column.definition.field;
+ },
+ getElement: function getElement() {
+ return filterElement;
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ },
+ getRow: function getRow() {
+ return {
+ normalizeHeight: function normalizeHeight() {}
+ };
+ }
+ };
+
+ params = column.definition.headerFilterParams || {};
+
+ params = typeof params === "function" ? params.call(self.table) : params;
+
+ editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
+
+ if (!editorElement) {
+ console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
+ return;
+ }
+
+ if (!(editorElement instanceof Node)) {
+ console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
+ return;
+ }
+
+ //set Placeholder Text
+ if (field) {
+ self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
+ editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
+ });
+ } else {
+ self.table.modules.localize.bind("headerFilters|default", function (value) {
+ editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
+ });
+ }
+
+ //focus on element on click
+ editorElement.addEventListener("click", function (e) {
+ e.stopPropagation();
+ editorElement.focus();
+ });
+
+ editorElement.addEventListener("focus", function (e) {
+ var left = _this.table.columnManager.element.scrollLeft;
+
+ if (left !== _this.table.rowManager.element.scrollLeft) {
+ _this.table.rowManager.scrollHorizontal(left);
+ _this.table.columnManager.scrollHorizontal(left);
+ }
+ });
+
+ //live update filters as user types
+ typingTimer = false;
+
+ searchTrigger = function searchTrigger(e) {
+ if (typingTimer) {
+ clearTimeout(typingTimer);
+ }
+
+ typingTimer = setTimeout(function () {
+ success(editorElement.value);
+ }, 300);
+ };
+
+ column.modules.filter.headerElement = editorElement;
+ column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
+ column.modules.filter.tagType = editorElement.tagName.toLowerCase();
+
+ if (column.definition.headerFilterLiveFilter !== false) {
+
+ if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
+ editorElement.addEventListener("keyup", searchTrigger);
+ editorElement.addEventListener("search", searchTrigger);
+
+ //update number filtered columns on change
+ if (column.modules.filter.attrType == "number") {
+ editorElement.addEventListener("change", function (e) {
+ success(editorElement.value);
+ });
+ }
+
+ //change text inputs to search inputs to allow for clearing of field
+ if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
+ editorElement.setAttribute("type", "search");
+ // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
+ }
+ }
+
+ //prevent input and select elements from propegating click to column sorters etc
+ if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
+ editorElement.addEventListener("mousedown", function (e) {
+ e.stopPropagation();
+ });
+ }
+ }
+
+ filterElement.appendChild(editorElement);
+
+ column.contentElement.appendChild(filterElement);
+
+ self.headerFilterElements.push(editorElement);
+ self.headerFilterColumns.push(column);
+ }
+ } else {
+ console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
+ }
+};
+
+//hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+Filter.prototype.hideHeaderFilterElements = function () {
+ this.headerFilterElements.forEach(function (element) {
+ element.style.display = 'none';
+ });
+};
+
+//show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+Filter.prototype.showHeaderFilterElements = function () {
+ this.headerFilterElements.forEach(function (element) {
+ element.style.display = '';
+ });
+};
+
+//programatically set value of header filter
+Filter.prototype.setHeaderFilterFocus = function (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ column.modules.filter.headerElement.focus();
+ } else {
+ console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
+ }
+};
+
+//programatically set value of header filter
+Filter.prototype.setHeaderFilterValue = function (column, value) {
+ if (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ this.generateHeaderFilterElement(column, value);
+ column.modules.filter.success(value);
+ } else {
+ console.warn("Column Filter Error - No header filter set on column:", column.getField());
+ }
+ }
+};
+
+Filter.prototype.reloadHeaderFilter = function (column) {
+ if (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ this.generateHeaderFilterElement(column, column.modules.filter.value);
+ } else {
+ console.warn("Column Filter Error - No header filter set on column:", column.getField());
+ }
+ }
+};
+
+//check if the filters has changed since last use
+Filter.prototype.hasChanged = function () {
+ var changed = this.changed;
+ this.changed = false;
+ return changed;
+};
+
+//set standard filters
+Filter.prototype.setFilter = function (field, type, value) {
+ var self = this;
+
+ self.filterList = [];
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ self.addFilter(field);
+};
+
+//add filter to array
+Filter.prototype.addFilter = function (field, type, value) {
+ var self = this;
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ self.filterList.push(filter);
+
+ self.changed = true;
+ }
+ });
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+};
+
+Filter.prototype.findFilter = function (filter) {
+ var self = this,
+ column;
+
+ if (Array.isArray(filter)) {
+ return this.findSubFilters(filter);
+ }
+
+ var filterFunc = false;
+
+ if (typeof filter.field == "function") {
+ filterFunc = function filterFunc(data) {
+ return filter.field(data, filter.type || {}); // pass params to custom filter function
+ };
+ } else {
+
+ if (self.filters[filter.type]) {
+
+ column = self.table.columnManager.getColumnByField(filter.field);
+
+ if (column) {
+ filterFunc = function filterFunc(data) {
+ return self.filters[filter.type](filter.value, column.getFieldValue(data));
+ };
+ } else {
+ filterFunc = function filterFunc(data) {
+ return self.filters[filter.type](filter.value, data[filter.field]);
+ };
+ }
+ } else {
+ console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
+ }
+ }
+
+ filter.func = filterFunc;
+
+ return filter.func ? filter : false;
+};
+
+Filter.prototype.findSubFilters = function (filters) {
+ var self = this,
+ output = [];
+
+ filters.forEach(function (filter) {
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ output.push(filter);
+ }
+ });
+
+ return output.length ? output : false;
+};
+
+//get all filters
+Filter.prototype.getFilters = function (all, ajax) {
+ var output = [];
+
+ if (all) {
+ output = this.getHeaderFilters();
+ }
+
+ if (ajax) {
+ output.forEach(function (item) {
+ if (typeof item.type == "function") {
+ item.type = "function";
+ }
+ });
+ }
+
+ output = output.concat(this.filtersToArray(this.filterList, ajax));
+
+ return output;
+};
+
+//filter to Object
+Filter.prototype.filtersToArray = function (filterList, ajax) {
+ var _this2 = this;
+
+ var output = [];
+
+ filterList.forEach(function (filter) {
+ var item;
+
+ if (Array.isArray(filter)) {
+ output.push(_this2.filtersToArray(filter, ajax));
+ } else {
+ item = { field: filter.field, type: filter.type, value: filter.value };
+
+ if (ajax) {
+ if (typeof item.type == "function") {
+ item.type = "function";
+ }
+ }
+
+ output.push(item);
+ }
+ });
+
+ return output;
+};
+
+//get all filters
+Filter.prototype.getHeaderFilters = function () {
+ var self = this,
+ output = [];
+
+ for (var key in this.headerFilters) {
+ output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
+ }
+
+ return output;
+};
+
+//remove filter from array
+Filter.prototype.removeFilter = function (field, type, value) {
+ var self = this;
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+ var index = -1;
+
+ if (_typeof(filter.field) == "object") {
+ index = self.filterList.findIndex(function (element) {
+ return filter === element;
+ });
+ } else {
+ index = self.filterList.findIndex(function (element) {
+ return filter.field === element.field && filter.type === element.type && filter.value === element.value;
+ });
+ }
+
+ if (index > -1) {
+ self.filterList.splice(index, 1);
+ self.changed = true;
+ } else {
+ console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
+ }
+ });
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+};
+
+//clear filters
+Filter.prototype.clearFilter = function (all) {
+ this.filterList = [];
+
+ if (all) {
+ this.clearHeaderFilter();
+ }
+
+ this.changed = true;
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+};
+
+//clear header filters
+Filter.prototype.clearHeaderFilter = function () {
+ var self = this;
+
+ this.headerFilters = {};
+
+ this.headerFilterColumns.forEach(function (column) {
+ column.modules.filter.value = null;
+ column.modules.filter.prevSuccess = undefined;
+ self.reloadHeaderFilter(column);
+ });
+
+ this.changed = true;
+};
+
+//search data and return matching rows
+Filter.prototype.search = function (searchType, field, type, value) {
+ var self = this,
+ activeRows = [],
+ filterList = [];
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ filterList.push(filter);
+ }
+ });
+
+ this.table.rowManager.rows.forEach(function (row) {
+ var match = true;
+
+ filterList.forEach(function (filter) {
+ if (!self.filterRecurse(filter, row.getData())) {
+ match = false;
+ }
+ });
+
+ if (match) {
+ activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
+ }
+ });
+
+ return activeRows;
+};
+
+//filter row array
+Filter.prototype.filter = function (rowList, filters) {
+ var self = this,
+ activeRows = [],
+ activeRowComponents = [];
+
+ if (self.table.options.dataFiltering) {
+ self.table.options.dataFiltering.call(self.table, self.getFilters());
+ }
+
+ if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
+
+ rowList.forEach(function (row) {
+ if (self.filterRow(row)) {
+ activeRows.push(row);
+ }
+ });
+ } else {
+ activeRows = rowList.slice(0);
+ }
+
+ if (self.table.options.dataFiltered) {
+
+ activeRows.forEach(function (row) {
+ activeRowComponents.push(row.getComponent());
+ });
+
+ self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
+ }
+
+ return activeRows;
+};
+
+//filter individual row
+Filter.prototype.filterRow = function (row, filters) {
+ var self = this,
+ match = true,
+ data = row.getData();
+
+ self.filterList.forEach(function (filter) {
+ if (!self.filterRecurse(filter, data)) {
+ match = false;
+ }
+ });
+
+ for (var field in self.headerFilters) {
+ if (!self.headerFilters[field].func(data)) {
+ match = false;
+ }
+ }
+
+ return match;
+};
+
+Filter.prototype.filterRecurse = function (filter, data) {
+ var self = this,
+ match = false;
+
+ if (Array.isArray(filter)) {
+ filter.forEach(function (subFilter) {
+ if (self.filterRecurse(subFilter, data)) {
+ match = true;
+ }
+ });
+ } else {
+ match = filter.func(data);
+ }
+
+ return match;
+};
+
+//list of available filters
+Filter.prototype.filters = {
+
+ //equal to
+ "=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal == filterVal ? true : false;
+ },
+
+ //less than
+ "<": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal < filterVal ? true : false;
+ },
+
+ //less than or equal to
+ "<=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal <= filterVal ? true : false;
+ },
+
+ //greater than
+ ">": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal > filterVal ? true : false;
+ },
+
+ //greater than or equal to
+ ">=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal >= filterVal ? true : false;
+ },
+
+ //not equal to
+ "!=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal != filterVal ? true : false;
+ },
+
+ "regex": function regex(filterVal, rowVal, rowData, filterParams) {
+
+ if (typeof filterVal == "string") {
+ filterVal = new RegExp(filterVal);
+ }
+
+ return filterVal.test(rowVal);
+ },
+
+ //contains the string
+ "like": function like(filterVal, rowVal, rowData, filterParams) {
+ if (filterVal === null || typeof filterVal === "undefined") {
+ return rowVal === filterVal ? true : false;
+ } else {
+ if (typeof rowVal !== 'undefined' && rowVal !== null) {
+ return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
+ } else {
+ return false;
+ }
+ }
+ },
+
+ //in array
+ "in": function _in(filterVal, rowVal, rowData, filterParams) {
+ if (Array.isArray(filterVal)) {
+ return filterVal.indexOf(rowVal) > -1;
+ } else {
+ console.warn("Filter Error - filter value is not an array:", filterVal);
+ return false;
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("filter", Filter);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Filter=function(e){this.table=e,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};Filter.prototype.initializeColumn=function(e,t){function r(t){var r,l="input"==e.modules.filter.tagType&&"text"==e.modules.filter.attrType||"textarea"==e.modules.filter.tagType?"partial":"match",o="";if(void 0===e.modules.filter.prevSuccess||e.modules.filter.prevSuccess!==t){if(e.modules.filter.prevSuccess=t,e.modules.filter.emptyFunc(t))delete i.headerFilters[n];else{switch(e.modules.filter.value=t,_typeof(e.definition.headerFilterFunc)){case"string":i.filters[e.definition.headerFilterFunc]?(o=e.definition.headerFilterFunc,r=function(r){var n=e.definition.headerFilterFuncParams||{},l=e.getFieldValue(r);return n="function"==typeof n?n(t,l,r):n,i.filters[e.definition.headerFilterFunc](t,l,r,n)}):console.warn("Header Filter Error - Matching filter function not found: ",e.definition.headerFilterFunc);break;case"function":r=function(r){var i=e.definition.headerFilterFuncParams||{},n=e.getFieldValue(r);return i="function"==typeof i?i(t,n,r):i,e.definition.headerFilterFunc(t,n,r,i)},o=r}if(!r)switch(l){case"partial":r=function(r){var i=e.getFieldValue(r);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(t).toLowerCase())>-1},o="like";break;default:r=function(r){return e.getFieldValue(r)==t},o="="}i.headerFilters[n]={value:t,func:r,type:o}}i.changed=!0,i.table.rowManager.filterRefresh()}}var i=this,n=e.getField();e.modules.filter={success:r,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(e)},Filter.prototype.generateHeaderFilterElement=function(e,t){function r(){}var i,n,l,o,a,s,d,u=this,f=this,c=e.modules.filter.success,h=e.getField();if(e.modules.filter.headerElement&&e.modules.filter.headerElement.parentNode){var p=e.modules.filter.headerElement.parentNode,F=f.headerFilterElements.indexOf(p);F>=0&&f.headerFilterElements.splice(F,1);var m=f.headerFilterColumns.indexOf(m);m>=0&&f.headerFilterColumns.splice(m,1),e.contentElement.removeChild(p)}if(h){switch(e.modules.filter.emptyFunc=e.definition.headerFilterEmptyCheck||function(e){return!e&&"0"!==e},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(e.definition.headerFilter)){case"string":f.table.modules.edit.editors[e.definition.headerFilter]?(n=f.table.modules.edit.editors[e.definition.headerFilter],"tick"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",e.definition.editor);break;case"function":n=e.definition.headerFilter;break;case"boolean":e.modules.edit&&e.modules.edit.editor?n=e.modules.edit.editor:e.definition.formatter&&f.table.modules.edit.editors[e.definition.formatter]?(n=f.table.modules.edit.editors[e.definition.formatter],"tick"!==e.definition.formatter&&"tickCross"!==e.definition.formatter||e.definition.headerFilterEmptyCheck||(e.modules.filter.emptyFunc=function(e){return!0!==e&&!1!==e})):n=f.table.modules.edit.editors.input}if(n){if(o={getValue:function(){return void 0!==t?t:""},getField:function(){return e.definition.field},getElement:function(){return i},getColumn:function(){return e.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},d=e.definition.headerFilterParams||{},d="function"==typeof d?d.call(f.table):d,!(l=n.call(this.table.modules.edit,o,function(){},c,r,d)))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor returned a value of false");if(!(l instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+h+" column, editor should return an instance of Node, the editor returned:",l);h?f.table.modules.localize.bind("headerFilters|columns|"+e.definition.field,function(e){l.setAttribute("placeholder",void 0!==e&&e?e:f.table.modules.localize.getText("headerFilters|default"))}):f.table.modules.localize.bind("headerFilters|default",function(e){l.setAttribute("placeholder",void 0!==f.column.definition.headerFilterPlaceholder&&f.column.definition.headerFilterPlaceholder?f.column.definition.headerFilterPlaceholder:e)}),l.addEventListener("click",function(e){e.stopPropagation(),l.focus()}),l.addEventListener("focus",function(e){var t=u.table.columnManager.element.scrollLeft;t!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(t),u.table.columnManager.scrollHorizontal(t))}),a=!1,s=function(e){a&&clearTimeout(a),a=setTimeout(function(){c(l.value)},300)},e.modules.filter.headerElement=l,e.modules.filter.attrType=l.hasAttribute("type")?l.getAttribute("type").toLowerCase():"",e.modules.filter.tagType=l.tagName.toLowerCase(),!1!==e.definition.headerFilterLiveFilter&&("autocomplete"!==e.definition.headerFilter&&"tickCross"!==e.definition.headerFilter&&("autocomplete"!==e.definition.editor&&"tickCross"!==e.definition.editor||!0!==e.definition.headerFilter)&&(l.addEventListener("keyup",s),l.addEventListener("search",s),"number"==e.modules.filter.attrType&&l.addEventListener("change",function(e){c(l.value)}),"text"==e.modules.filter.attrType&&"ie"!==this.table.browser&&l.setAttribute("type","search")),"input"!=e.modules.filter.tagType&&"select"!=e.modules.filter.tagType&&"textarea"!=e.modules.filter.tagType||l.addEventListener("mousedown",function(e){e.stopPropagation()})),i.appendChild(l),e.contentElement.appendChild(i),f.headerFilterElements.push(l),f.headerFilterColumns.push(e)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",e.definition.title)},Filter.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display="none"})},Filter.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(e){e.style.display=""})},Filter.prototype.setHeaderFilterFocus=function(e){e.modules.filter&&e.modules.filter.headerElement?e.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",e.getField())},Filter.prototype.setHeaderFilterValue=function(e,t){e&&(e.modules.filter&&e.modules.filter.headerElement?(this.generateHeaderFilterElement(e,t),e.modules.filter.success(t)):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.reloadHeaderFilter=function(e){e&&(e.modules.filter&&e.modules.filter.headerElement?this.generateHeaderFilterElement(e,e.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",e.getField()))},Filter.prototype.hasChanged=function(){var e=this.changed;return this.changed=!1,e},Filter.prototype.setFilter=function(e,t,r){var i=this;i.filterList=[],Array.isArray(e)||(e=[{field:e,type:t,value:r}]),i.addFilter(e)},Filter.prototype.addFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){(e=i.findFilter(e))&&(i.filterList.push(e),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.findFilter=function(e){var t,r=this;if(Array.isArray(e))return this.findSubFilters(e);var i=!1;return"function"==typeof e.field?i=function(t){return e.field(t,e.type||{})}:r.filters[e.type]?(t=r.table.columnManager.getColumnByField(e.field),i=t?function(i){return r.filters[e.type](e.value,t.getFieldValue(i))}:function(t){return r.filters[e.type](e.value,t[e.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",e.type),e.func=i,!!e.func&&e},Filter.prototype.findSubFilters=function(e){var t=this,r=[];return e.forEach(function(e){(e=t.findFilter(e))&&r.push(e)}),!!r.length&&r},Filter.prototype.getFilters=function(e,t){var r=[];return e&&(r=this.getHeaderFilters()),t&&r.forEach(function(e){"function"==typeof e.type&&(e.type="function")}),r=r.concat(this.filtersToArray(this.filterList,t))},Filter.prototype.filtersToArray=function(e,t){var r=this,i=[];return e.forEach(function(e){var n;Array.isArray(e)?i.push(r.filtersToArray(e,t)):(n={field:e.field,type:e.type,value:e.value},t&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},Filter.prototype.getHeaderFilters=function(){var e=[];for(var t in this.headerFilters)e.push({field:t,type:this.headerFilters[t].type,value:this.headerFilters[t].value});return e},Filter.prototype.removeFilter=function(e,t,r){var i=this;Array.isArray(e)||(e=[{field:e,type:t,value:r}]),e.forEach(function(e){var t=-1;t="object"==_typeof(e.field)?i.filterList.findIndex(function(t){return e===t}):i.filterList.findIndex(function(t){return e.field===t.field&&e.type===t.type&&e.value===t.value}),t>-1?(i.filterList.splice(t,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",e.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearFilter=function(e){this.filterList=[],e&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},Filter.prototype.clearHeaderFilter=function(){var e=this;this.headerFilters={},this.headerFilterColumns.forEach(function(t){t.modules.filter.value=null,t.modules.filter.prevSuccess=void 0,e.reloadHeaderFilter(t)}),this.changed=!0},Filter.prototype.search=function(e,t,r,i){var n=this,l=[],o=[];return Array.isArray(t)||(t=[{field:t,type:r,value:i}]),t.forEach(function(e){(e=n.findFilter(e))&&o.push(e)}),this.table.rowManager.rows.forEach(function(t){var r=!0;o.forEach(function(e){n.filterRecurse(e,t.getData())||(r=!1)}),r&&l.push("data"===e?t.getData("data"):t.getComponent())}),l},Filter.prototype.filter=function(e,t){var r=this,i=[],n=[];return r.table.options.dataFiltering&&r.table.options.dataFiltering.call(r.table,r.getFilters()),r.table.options.ajaxFiltering||!r.filterList.length&&!Object.keys(r.headerFilters).length?i=e.slice(0):e.forEach(function(e){r.filterRow(e)&&i.push(e)}),r.table.options.dataFiltered&&(i.forEach(function(e){n.push(e.getComponent())}),r.table.options.dataFiltered.call(r.table,r.getFilters(),n)),i},Filter.prototype.filterRow=function(e,t){var r=this,i=!0,n=e.getData();r.filterList.forEach(function(e){r.filterRecurse(e,n)||(i=!1)});for(var l in r.headerFilters)r.headerFilters[l].func(n)||(i=!1);return i},Filter.prototype.filterRecurse=function(e,t){var r=this,i=!1;return Array.isArray(e)?e.forEach(function(e){r.filterRecurse(e,t)&&(i=!0)}):i=e.func(t),i},Filter.prototype.filters={"=":function(e,t,r,i){return t==e},"<":function(e,t,r,i){return t<e},"<=":function(e,t,r,i){return t<=e},">":function(e,t,r,i){return t>e},">=":function(e,t,r,i){return t>=e},"!=":function(e,t,r,i){return t!=e},regex:function(e,t,r,i){return"string"==typeof e&&(e=new RegExp(e)),e.test(t)},like:function(e,t,r,i){return null===e||void 0===e?t===e:void 0!==t&&null!==t&&String(t).toLowerCase().indexOf(e.toLowerCase())>-1},in:function(e,t,r,i){return Array.isArray(e)?e.indexOf(t)>-1:(console.warn("Filter Error - filter value is not an array:",e),!1)}},Tabulator.prototype.registerModule("filter",Filter);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Format = function Format(table) {
+ this.table = table; //hold Tabulator object
+};
+
+//initialize column formatter
+Format.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = { params: column.definition.formatterParams || {} };
+
+ //set column formatter
+ switch (_typeof(column.definition.formatter)) {
+ case "string":
+
+ if (column.definition.formatter === "tick") {
+ column.definition.formatter = "tickCross";
+
+ if (typeof config.params.crossElement == "undefined") {
+ config.params.crossElement = false;
+ }
+
+ console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
+ }
+
+ if (self.formatters[column.definition.formatter]) {
+ config.formatter = self.formatters[column.definition.formatter];
+ } else {
+ console.warn("Formatter Error - No such formatter found: ", column.definition.formatter);
+ config.formatter = self.formatters.plaintext;
+ }
+ break;
+
+ case "function":
+ config.formatter = column.definition.formatter;
+ break;
+
+ default:
+ config.formatter = self.formatters.plaintext;
+ break;
+ }
+
+ column.modules.format = config;
+};
+
+Format.prototype.cellRendered = function (cell) {
+ if (cell.column.modules.format.renderedCallback) {
+ cell.column.modules.format.renderedCallback();
+ }
+};
+
+//return a formatted value for a cell
+Format.prototype.formatValue = function (cell) {
+ var component = cell.getComponent(),
+ params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
+
+ function onRendered(callback) {
+ cell.column.modules.format.renderedCallback = callback;
+ }
+
+ return cell.column.modules.format.formatter.call(this, component, params, onRendered);
+};
+
+Format.prototype.sanitizeHTML = function (value) {
+ if (value) {
+ var entityMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '/': '/',
+ '`': '`',
+ '=': '='
+ };
+
+ return String(value).replace(/[&<>"'`=\/]/g, function (s) {
+ return entityMap[s];
+ });
+ } else {
+ return value;
+ }
+};
+
+Format.prototype.emptyToSpace = function (value) {
+ return value === null || typeof value === "undefined" ? " " : value;
+};
+
+//get formatter for cell
+Format.prototype.getFormatter = function (formatter) {
+ var formatter;
+
+ switch (typeof formatter === "undefined" ? "undefined" : _typeof(formatter)) {
+ case "string":
+ if (this.formatters[formatter]) {
+ formatter = this.formatters[formatter];
+ } else {
+ console.warn("Formatter Error - No such formatter found: ", formatter);
+ formatter = this.formatters.plaintext;
+ }
+ break;
+
+ case "function":
+ formatter = formatter;
+ break;
+
+ default:
+ formatter = this.formatters.plaintext;
+ break;
+ }
+
+ return formatter;
+};
+
+//default data formatters
+Format.prototype.formatters = {
+ //plain text value
+ plaintext: function plaintext(cell, formatterParams, onRendered) {
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ },
+
+ //html text value
+ html: function html(cell, formatterParams, onRendered) {
+ return cell.getValue();
+ },
+
+ //multiline text area
+ textarea: function textarea(cell, formatterParams, onRendered) {
+ cell.getElement().style.whiteSpace = "pre-wrap";
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ },
+
+ //currency formatting
+ money: function money(cell, formatterParams, onRendered) {
+ var floatVal = parseFloat(cell.getValue()),
+ number,
+ integer,
+ decimal,
+ rgx;
+
+ var decimalSym = formatterParams.decimal || ".";
+ var thousandSym = formatterParams.thousand || ",";
+ var symbol = formatterParams.symbol || "";
+ var after = !!formatterParams.symbolAfter;
+ var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
+
+ if (isNaN(floatVal)) {
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ }
+
+ number = precision !== false ? floatVal.toFixed(precision) : floatVal;
+ number = String(number).split(".");
+
+ integer = number[0];
+ decimal = number.length > 1 ? decimalSym + number[1] : "";
+
+ rgx = /(\d+)(\d{3})/;
+
+ while (rgx.test(integer)) {
+ integer = integer.replace(rgx, "$1" + thousandSym + "$2");
+ }
+
+ return after ? integer + decimal + symbol : symbol + integer + decimal;
+ },
+
+ //clickable anchor tag
+ link: function link(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ urlPrefix = formatterParams.urlPrefix || "",
+ label = this.emptyToSpace(value),
+ el = document.createElement("a"),
+ data;
+
+ if (formatterParams.labelField) {
+ data = cell.getData();
+ label = data[formatterParams.labelField];
+ }
+
+ if (formatterParams.label) {
+ switch (_typeof(formatterParams.label)) {
+ case "string":
+ label = formatterParams.label;
+ break;
+
+ case "function":
+ label = formatterParams.label(cell);
+ break;
+ }
+ }
+
+ if (formatterParams.urlField) {
+ data = cell.getData();
+ value = data[formatterParams.urlField];
+ }
+
+ if (formatterParams.url) {
+ switch (_typeof(formatterParams.url)) {
+ case "string":
+ value = formatterParams.url;
+ break;
+
+ case "function":
+ value = formatterParams.url(cell);
+ break;
+ }
+ }
+
+ el.setAttribute("href", urlPrefix + value);
+
+ if (formatterParams.target) {
+ el.setAttribute("target", formatterParams.target);
+ }
+
+ el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
+
+ return el;
+ },
+
+ //image element
+ image: function image(cell, formatterParams, onRendered) {
+ var el = document.createElement("img");
+ el.setAttribute("src", cell.getValue());
+
+ switch (_typeof(formatterParams.height)) {
+ case "number":
+ el.style.height = formatterParams.height + "px";
+ break;
+
+ case "string":
+ el.style.height = formatterParams.height;
+ break;
+ }
+
+ switch (_typeof(formatterParams.width)) {
+ case "number":
+ el.style.width = formatterParams.width + "px";
+ break;
+
+ case "string":
+ el.style.width = formatterParams.width;
+ break;
+ }
+
+ el.addEventListener("load", function () {
+ cell.getRow().normalizeHeight();
+ });
+
+ return el;
+ },
+
+ //tick or cross
+ tickCross: function tickCross(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ element = cell.getElement(),
+ empty = formatterParams.allowEmpty,
+ truthy = formatterParams.allowTruthy,
+ tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
+ cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+
+ if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
+ element.setAttribute("aria-checked", true);
+ return tick || "";
+ } else {
+ if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
+ element.setAttribute("aria-checked", "mixed");
+ return "";
+ } else {
+ element.setAttribute("aria-checked", false);
+ return cross || "";
+ }
+ }
+ },
+
+ datetime: function datetime(cell, formatterParams, onRendered) {
+ var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+ var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
+ var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+ var value = cell.getValue();
+
+ var newDatetime = moment(value, inputFormat);
+
+ if (newDatetime.isValid()) {
+ return newDatetime.format(outputFormat);
+ } else {
+
+ if (invalid === true) {
+ return value;
+ } else if (typeof invalid === "function") {
+ return invalid(value);
+ } else {
+ return invalid;
+ }
+ }
+ },
+
+ datetimediff: function datetime(cell, formatterParams, onRendered) {
+ var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+ var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+ var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
+ var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
+ var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
+ var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
+ var value = cell.getValue();
+
+ var newDatetime = moment(value, inputFormat);
+
+ if (newDatetime.isValid()) {
+ if (humanize) {
+ return moment.duration(newDatetime.diff(date)).humanize(suffix);
+ } else {
+ return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
+ }
+ } else {
+
+ if (invalid === true) {
+ return value;
+ } else if (typeof invalid === "function") {
+ return invalid(value);
+ } else {
+ return invalid;
+ }
+ }
+ },
+
+ //select
+ lookup: function lookup(cell, formatterParams, onRendered) {
+ var value = cell.getValue();
+
+ if (typeof formatterParams[value] === "undefined") {
+ console.warn('Missing display value for ' + value);
+ return value;
+ }
+
+ return formatterParams[value];
+ },
+
+ //star rating
+ star: function star(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ element = cell.getElement(),
+ maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
+ stars = document.createElement("span"),
+ star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
+ starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
+ starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+
+ //style stars holder
+ stars.style.verticalAlign = "middle";
+
+ //style star
+ star.setAttribute("width", "14");
+ star.setAttribute("height", "14");
+ star.setAttribute("viewBox", "0 0 512 512");
+ star.setAttribute("xml:space", "preserve");
+ star.style.padding = "0 1px";
+
+ value = parseInt(value) < maxStars ? parseInt(value) : maxStars;
+
+ for (var i = 1; i <= maxStars; i++) {
+ var nextStar = star.cloneNode(true);
+ nextStar.innerHTML = i <= value ? starActive : starInactive;
+
+ stars.appendChild(nextStar);
+ }
+
+ element.style.whiteSpace = "nowrap";
+ element.style.overflow = "hidden";
+ element.style.textOverflow = "ellipsis";
+
+ element.setAttribute("aria-label", value);
+
+ return stars;
+ },
+
+ traffic: function traffic(cell, formatterParams, onRendered) {
+ var value = this.sanitizeHTML(cell.getValue()) || 0,
+ el = document.createElement("span"),
+ max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+ min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+ colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
+ color = "#666666",
+ percent,
+ percentValue;
+
+ if (isNaN(value) || typeof cell.getValue() === "undefined") {
+ return;
+ }
+
+ el.classList.add("tabulator-traffic-light");
+
+ //make sure value is in range
+ percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+ percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+ //workout percentage
+ percent = (max - min) / 100;
+ percentValue = Math.round((percentValue - min) / percent);
+
+ //set color
+ switch (typeof colors === "undefined" ? "undefined" : _typeof(colors)) {
+ case "string":
+ color = colors;
+ break;
+ case "function":
+ color = colors(value);
+ break;
+ case "object":
+ if (Array.isArray(colors)) {
+ var unit = 100 / colors.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, colors.length - 1);
+ index = Math.max(index, 0);
+ color = colors[index];
+ break;
+ }
+ }
+
+ el.style.backgroundColor = color;
+
+ return el;
+ },
+
+ //progress bar
+ progress: function progress(cell, formatterParams, onRendered) {
+ //progress bar
+ var value = this.sanitizeHTML(cell.getValue()) || 0,
+ element = cell.getElement(),
+ max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+ min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+ legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
+ percent,
+ percentValue,
+ color,
+ legend,
+ legendColor,
+ top,
+ left,
+ right,
+ bottom;
+
+ //make sure value is in range
+ percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+ percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+ //workout percentage
+ percent = (max - min) / 100;
+ percentValue = Math.round((percentValue - min) / percent);
+
+ //set bar color
+ switch (_typeof(formatterParams.color)) {
+ case "string":
+ color = formatterParams.color;
+ break;
+ case "function":
+ color = formatterParams.color(value);
+ break;
+ case "object":
+ if (Array.isArray(formatterParams.color)) {
+ var unit = 100 / formatterParams.color.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, formatterParams.color.length - 1);
+ index = Math.max(index, 0);
+ color = formatterParams.color[index];
+ break;
+ }
+ default:
+ color = "#2DC214";
+ }
+
+ //generate legend
+ switch (_typeof(formatterParams.legend)) {
+ case "string":
+ legend = formatterParams.legend;
+ break;
+ case "function":
+ legend = formatterParams.legend(value);
+ break;
+ case "boolean":
+ legend = value;
+ break;
+ default:
+ legend = false;
+ }
+
+ //set legend color
+ switch (_typeof(formatterParams.legendColor)) {
+ case "string":
+ legendColor = formatterParams.legendColor;
+ break;
+ case "function":
+ legendColor = formatterParams.legendColor(value);
+ break;
+ case "object":
+ if (Array.isArray(formatterParams.legendColor)) {
+ var unit = 100 / formatterParams.legendColor.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, formatterParams.legendColor.length - 1);
+ index = Math.max(index, 0);
+ legendColor = formatterParams.legendColor[index];
+ }
+ break;
+ default:
+ legendColor = "#000";
+ }
+
+ element.style.minWidth = "30px";
+ element.style.position = "relative";
+
+ element.setAttribute("aria-label", percentValue);
+
+ return "<div style='position:relative; height:100%;' data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+ },
+
+ //background color
+ color: function color(cell, formatterParams, onRendered) {
+ cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
+ return "";
+ },
+
+ //tick icon
+ buttonTick: function buttonTick(cell, formatterParams, onRendered) {
+ return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
+ },
+
+ //cross icon
+ buttonCross: function buttonCross(cell, formatterParams, onRendered) {
+ return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+ },
+
+ //current row number
+ rownum: function rownum(cell, formatterParams, onRendered) {
+ return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
+ },
+
+ //row handle
+ handle: function handle(cell, formatterParams, onRendered) {
+ cell.getElement().classList.add("tabulator-row-handle");
+ return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
+ },
+
+ responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
+ var self = this,
+ open = false,
+ el = document.createElement("div");
+
+ function toggleList(isOpen) {
+ var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
+
+ open = isOpen;
+
+ if (open) {
+ el.classList.add("open");
+ if (collapse) {
+ collapse.style.display = '';
+ }
+ } else {
+ el.classList.remove("open");
+ if (collapse) {
+ collapse.style.display = 'none';
+ }
+ }
+ }
+
+ el.classList.add("tabulator-responsive-collapse-toggle");
+ el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
+
+ cell.getElement().classList.add("tabulator-row-handle");
+
+ if (self.table.options.responsiveLayoutCollapseStartOpen) {
+ open = true;
+ }
+
+ el.addEventListener("click", function (e) {
+ e.stopImmediatePropagation();
+ toggleList(!open);
+ });
+
+ toggleList(open);
+
+ return el;
+ },
+
+ rowSelection: function rowSelection(cell) {
+ var _this = this;
+
+ var checkbox = document.createElement("input");
+
+ checkbox.type = 'checkbox';
+
+ if (this.table.modExists("selectRow", true)) {
+
+ checkbox.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ if (typeof cell.getRow == 'function') {
+ var row = cell.getRow();
+
+ checkbox.addEventListener("change", function (e) {
+ row.toggleSelect();
+ });
+
+ checkbox.checked = row.isSelected();
+ this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
+ } else {
+ checkbox.addEventListener("change", function (e) {
+ if (_this.table.modules.selectRow.selectedRows.length) {
+ _this.table.deselectRow();
+ } else {
+ _this.table.selectRow();
+ }
+ });
+
+ this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
+ }
+ }
+ return checkbox;
+ }
+};
+
+Tabulator.prototype.registerModule("format", Format);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},Format=function(e){this.table=e};Format.prototype.initializeColumn=function(e){var t=this,o={params:e.definition.formatterParams||{}};switch(_typeof(e.definition.formatter)){case"string":"tick"===e.definition.formatter&&(e.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),t.formatters[e.definition.formatter]?o.formatter=t.formatters[e.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",e.definition.formatter),o.formatter=t.formatters.plaintext);break;case"function":o.formatter=e.definition.formatter;break;default:o.formatter=t.formatters.plaintext}e.modules.format=o},Format.prototype.cellRendered=function(e){e.column.modules.format.renderedCallback&&e.column.modules.format.renderedCallback()},Format.prototype.formatValue=function(e){function t(t){e.column.modules.format.renderedCallback=t}var o=e.getComponent(),r="function"==typeof e.column.modules.format.params?e.column.modules.format.params(o):e.column.modules.format.params;return e.column.modules.format.formatter.call(this,o,r,t)},Format.prototype.sanitizeHTML=function(e){if(e){var t={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(e).replace(/[&<>"'`=\/]/g,function(e){return t[e]})}return e},Format.prototype.emptyToSpace=function(e){return null===e||void 0===e?" ":e},Format.prototype.getFormatter=function(e){var e;switch(void 0===e?"undefined":_typeof(e)){case"string":this.formatters[e]?e=this.formatters[e]:(console.warn("Formatter Error - No such formatter found: ",e),e=this.formatters.plaintext);break;case"function":e=e;break;default:e=this.formatters.plaintext}return e},Format.prototype.formatters={plaintext:function(e,t,o){return this.emptyToSpace(this.sanitizeHTML(e.getValue()))},html:function(e,t,o){return e.getValue()},textarea:function(e,t,o){return e.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(e.getValue()))},money:function(e,t,o){var r,a,i,n,l=parseFloat(e.getValue()),s=t.decimal||".",c=t.thousand||",",d=t.symbol||"",u=!!t.symbolAfter,m=void 0!==t.precision?t.precision:2;if(isNaN(l))return this.emptyToSpace(this.sanitizeHTML(e.getValue()));for(r=!1!==m?l.toFixed(m):l,r=String(r).split("."),a=r[0],i=r.length>1?s+r[1]:"",n=/(\d+)(\d{3})/;n.test(a);)a=a.replace(n,"$1"+c+"$2");return u?a+i+d:d+a+i},link:function(e,t,o){var r,a=e.getValue(),i=t.urlPrefix||"",n=this.emptyToSpace(a),l=document.createElement("a");if(t.labelField&&(r=e.getData(),n=r[t.labelField]),t.label)switch(_typeof(t.label)){case"string":n=t.label;break;case"function":n=t.label(e)}if(t.urlField&&(r=e.getData(),a=r[t.urlField]),t.url)switch(_typeof(t.url)){case"string":a=t.url;break;case"function":a=t.url(e)}return l.setAttribute("href",i+a),t.target&&l.setAttribute("target",t.target),l.innerHTML=this.emptyToSpace(this.sanitizeHTML(n)),l},image:function(e,t,o){var r=document.createElement("img");switch(r.setAttribute("src",e.getValue()),_typeof(t.height)){case"number":r.style.height=t.height+"px";break;case"string":r.style.height=t.height}switch(_typeof(t.width)){case"number":r.style.width=t.width+"px";break;case"string":r.style.width=t.width}return r.addEventListener("load",function(){e.getRow().normalizeHeight()}),r},tickCross:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t.allowEmpty,n=t.allowTruthy,l=void 0!==t.tickElement?t.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',s=void 0!==t.crossElement?t.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return n&&r||!0===r||"true"===r||"True"===r||1===r||"1"===r?(a.setAttribute("aria-checked",!0),l||""):!i||"null"!==r&&""!==r&&null!==r&&void 0!==r?(a.setAttribute("aria-checked",!1),s||""):(a.setAttribute("aria-checked","mixed"),"")},datetime:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=t.outputFormat||"DD/MM/YYYY hh:mm:ss",i=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",n=e.getValue(),l=moment(n,r);return l.isValid()?l.format(a):!0===i?n:"function"==typeof i?i(n):i},datetimediff:function(e,t,o){var r=t.inputFormat||"YYYY-MM-DD hh:mm:ss",a=void 0!==t.invalidPlaceholder?t.invalidPlaceholder:"",i=void 0!==t.suffix&&t.suffix,n=void 0!==t.unit?t.unit:void 0,l=void 0!==t.humanize&&t.humanize,s=void 0!==t.date?t.date:moment(),c=e.getValue(),d=moment(c,r);return d.isValid()?l?moment.duration(d.diff(s)).humanize(i):d.diff(s,n)+(i?" "+i:""):!0===a?c:"function"==typeof a?a(c):a},lookup:function(e,t,o){var r=e.getValue();return void 0===t[r]?(console.warn("Missing display value for "+r),r):t[r]},star:function(e,t,o){var r=e.getValue(),a=e.getElement(),i=t&&t.stars?t.stars:5,n=document.createElement("span"),l=document.createElementNS("http://www.w3.org/2000/svg","svg");n.style.verticalAlign="middle",l.setAttribute("width","14"),l.setAttribute("height","14"),l.setAttribute("viewBox","0 0 512 512"),l.setAttribute("xml:space","preserve"),l.style.padding="0 1px",r=parseInt(r)<i?parseInt(r):i;for(var s=1;s<=i;s++){var c=l.cloneNode(!0);c.innerHTML=s<=r?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',n.appendChild(c)}return a.style.whiteSpace="nowrap",a.style.overflow="hidden",a.style.textOverflow="ellipsis",a.setAttribute("aria-label",r),n},traffic:function(e,t,o){var r,a,i=this.sanitizeHTML(e.getValue())||0,n=document.createElement("span"),l=t&&t.max?t.max:100,s=t&&t.min?t.min:0,c=t&&void 0!==t.color?t.color:["red","orange","green"],d="#666666";if(!isNaN(i)&&void 0!==e.getValue()){switch(n.classList.add("tabulator-traffic-light"),a=parseFloat(i)<=l?parseFloat(i):l,a=parseFloat(a)>=s?parseFloat(a):s,r=(l-s)/100,a=Math.round((a-s)/r),void 0===c?"undefined":_typeof(c)){case"string":d=c;break;case"function":d=c(i);break;case"object":if(Array.isArray(c)){var u=100/c.length,m=Math.floor(a/u);m=Math.min(m,c.length-1),m=Math.max(m,0),d=c[m];break}}return n.style.backgroundColor=d,n}},progress:function(e,t,o){var r,a,i,n,l,s=this.sanitizeHTML(e.getValue())||0,c=e.getElement(),d=t&&t.max?t.max:100,u=t&&t.min?t.min:0,m=t&&t.legendAlign?t.legendAlign:"center";switch(a=parseFloat(s)<=d?parseFloat(s):d,a=parseFloat(a)>=u?parseFloat(a):u,r=(d-u)/100,a=Math.round((a-u)/r),_typeof(t.color)){case"string":i=t.color;break;case"function":i=t.color(s);break;case"object":if(Array.isArray(t.color)){var f=100/t.color.length,p=Math.floor(a/f);p=Math.min(p,t.color.length-1),p=Math.max(p,0),i=t.color[p];break}default:i="#2DC214"}switch(_typeof(t.legend)){case"string":n=t.legend;break;case"function":n=t.legend(s);break;case"boolean":n=s;break;default:n=!1}switch(_typeof(t.legendColor)){case"string":l=t.legendColor;break;case"function":l=t.legendColor(s);break;case"object":if(Array.isArray(t.legendColor)){var f=100/t.legendColor.length,p=Math.floor(a/f);p=Math.min(p,t.legendColor.length-1),p=Math.max(p,0),l=t.legendColor[p]}break;default:l="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",a),"<div style='position:relative; height:100%;' data-max='"+d+"' data-min='"+u+"'><div style='position:relative; height:100%; width:calc("+a+"%); background-color:"+i+"; display:inline-block;'></div></div>"+(n?"<div style='position:absolute; top:4px; left:0; text-align:"+m+"; width:100%; color:"+l+";'>"+n+"</div>":"")},color:function(e,t,o){return e.getElement().style.backgroundColor=this.sanitizeHTML(e.getValue()),""},buttonTick:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(e,t,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(e,t,o){return this.table.rowManager.activeRows.indexOf(e.getRow()._getSelf())+1},handle:function(e,t,o){return e.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(e,t,o){function r(t){var o=e.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];i=t,i?(n.classList.add("open"),o&&(o.style.display="")):(n.classList.remove("open"),o&&(o.style.display="none"))}var a=this,i=!1,n=document.createElement("div");return n.classList.add("tabulator-responsive-collapse-toggle"),n.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",e.getElement().classList.add("tabulator-row-handle"),a.table.options.responsiveLayoutCollapseStartOpen&&(i=!0),n.addEventListener("click",function(e){e.stopImmediatePropagation(),r(!i)}),r(i),n},rowSelection:function(e){var t=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(e){e.stopPropagation()}),"function"==typeof e.getRow){var r=e.getRow();o.addEventListener("change",function(e){r.toggleSelect()}),o.checked=r.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(r,o)}else o.addEventListener("change",function(e){t.table.modules.selectRow.selectedRows.length?t.table.deselectRow():t.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},Tabulator.prototype.registerModule("format",Format);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var FrozenColumns = function FrozenColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.leftColumns = [];
+ this.rightColumns = [];
+ this.leftMargin = 0;
+ this.rightMargin = 0;
+ this.rightPadding = 0;
+ this.initializationMode = "left";
+ this.active = false;
+ this.scrollEndTimer = false;
+};
+
+//reset initial state
+FrozenColumns.prototype.reset = function () {
+ this.initializationMode = "left";
+ this.leftColumns = [];
+ this.rightColumns = [];
+ this.leftMargin = 0;
+ this.rightMargin = 0;
+ this.rightMargin = 0;
+ this.active = false;
+
+ this.table.columnManager.headersElement.style.marginLeft = 0;
+ this.table.columnManager.element.style.paddingRight = 0;
+};
+
+//initialize specific column
+FrozenColumns.prototype.initializeColumn = function (column) {
+ var config = { margin: 0, edge: false };
+
+ if (column.definition.frozen) {
+
+ if (!column.parent.isGroup) {
+
+ if (!column.isGroup) {
+ config.position = this.initializationMode;
+
+ if (this.initializationMode == "left") {
+ this.leftColumns.push(column);
+ } else {
+ this.rightColumns.unshift(column);
+ }
+
+ this.active = true;
+
+ column.modules.frozen = config;
+ } else {
+ console.warn("Frozen Column Error - Column Groups cannot be frozen");
+ }
+ } else {
+ console.warn("Frozen Column Error - Grouped columns cannot be frozen");
+ }
+ } else {
+ this.initializationMode = "right";
+ }
+};
+
+//quick layout to smooth horizontal scrolling
+FrozenColumns.prototype.scrollHorizontal = function () {
+ var _this = this;
+
+ var rows;
+
+ if (this.active) {
+ clearTimeout(this.scrollEndTimer);
+
+ //layout all rows after scroll is complete
+ this.scrollEndTimer = setTimeout(function () {
+ _this.layout();
+ }, 100);
+
+ rows = this.table.rowManager.getVisibleRows();
+
+ this.calcMargins();
+
+ this.layoutColumnPosition();
+
+ this.layoutCalcRows();
+
+ rows.forEach(function (row) {
+ if (row.type === "row") {
+ _this.layoutRow(row);
+ }
+ });
+
+ this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+ }
+};
+
+//calculate margins for rows
+FrozenColumns.prototype.calcMargins = function () {
+ this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
+ this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
+
+ this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
+ this.table.columnManager.element.style.paddingRight = this.rightMargin;
+
+ //calculate right frozen columns
+ this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
+};
+
+//layout calculation rows
+FrozenColumns.prototype.layoutCalcRows = function () {
+ if (this.table.modExists("columnCalcs")) {
+ if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
+ this.layoutRow(this.table.modules.columnCalcs.topRow);
+ }
+ if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
+ this.layoutRow(this.table.modules.columnCalcs.botRow);
+ }
+ }
+};
+
+//calculate column positions and layout headers
+FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
+ var _this2 = this;
+
+ this.leftColumns.forEach(function (column, i) {
+ column.modules.frozen.margin = _this2._calcSpace(_this2.leftColumns, i) + _this2.table.columnManager.scrollLeft + "px";
+
+ if (i == _this2.leftColumns.length - 1) {
+ column.modules.frozen.edge = true;
+ } else {
+ column.modules.frozen.edge = false;
+ }
+
+ _this2.layoutElement(column.getElement(), column);
+
+ if (allCells) {
+ column.cells.forEach(function (cell) {
+ _this2.layoutElement(cell.getElement(), column);
+ });
+ }
+ });
+
+ this.rightColumns.forEach(function (column, i) {
+ column.modules.frozen.margin = _this2.rightPadding - _this2._calcSpace(_this2.rightColumns, i + 1) + "px";
+
+ if (i == _this2.rightColumns.length - 1) {
+ column.modules.frozen.edge = true;
+ } else {
+ column.modules.frozen.edge = false;
+ }
+
+ _this2.layoutElement(column.getElement(), column);
+
+ if (allCells) {
+ column.cells.forEach(function (cell) {
+ _this2.layoutElement(cell.getElement(), column);
+ });
+ }
+ });
+};
+
+//layout columns appropropriatly
+FrozenColumns.prototype.layout = function () {
+ var self = this,
+ rightMargin = 0;
+
+ if (self.active) {
+
+ //calculate row padding
+ this.calcMargins();
+
+ // self.table.rowManager.activeRows.forEach(function(row){
+ // self.layoutRow(row);
+ // });
+
+ // if(self.table.options.dataTree){
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row") {
+ self.layoutRow(row);
+ }
+ });
+ // }
+
+ this.layoutCalcRows();
+
+ //calculate left columns
+ this.layoutColumnPosition(true);
+
+ // if(tableHolder.scrollHeight > tableHolder.clientHeight){
+ // rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
+ // }
+
+ this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+ }
+};
+
+FrozenColumns.prototype.layoutRow = function (row) {
+ var _this3 = this;
+
+ var rowEl = row.getElement();
+
+ rowEl.style.paddingLeft = this.leftMargin;
+ // rowEl.style.paddingRight = this.rightMargin + "px";
+
+ this.leftColumns.forEach(function (column) {
+ var cell = row.getCell(column);
+
+ if (cell) {
+ _this3.layoutElement(cell.getElement(), column);
+ }
+ });
+
+ this.rightColumns.forEach(function (column) {
+ var cell = row.getCell(column);
+
+ if (cell) {
+ _this3.layoutElement(cell.getElement(), column);
+ }
+ });
+};
+
+FrozenColumns.prototype.layoutElement = function (element, column) {
+
+ if (column.modules.frozen) {
+ element.style.position = "absolute";
+ element.style.left = column.modules.frozen.margin;
+
+ element.classList.add("tabulator-frozen");
+
+ if (column.modules.frozen.edge) {
+ element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
+ }
+ }
+};
+
+FrozenColumns.prototype._calcSpace = function (columns, index) {
+ var width = 0;
+
+ for (var i = 0; i < index; i++) {
+ if (columns[i].visible) {
+ width += columns[i].getWidth();
+ }
+ }
+
+ return width;
+};
+
+Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var FrozenColumns=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};FrozenColumns.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},FrozenColumns.prototype.initializeColumn=function(t){var o={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(o.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=o):this.initializationMode="right"},FrozenColumns.prototype.scrollHorizontal=function(){var t,o=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){o.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&o.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},FrozenColumns.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},FrozenColumns.prototype.layoutColumnPosition=function(t){var o=this;this.leftColumns.forEach(function(e,n){e.modules.frozen.margin=o._calcSpace(o.leftColumns,n)+o.table.columnManager.scrollLeft+"px",n==o.leftColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})}),this.rightColumns.forEach(function(e,n){e.modules.frozen.margin=o.rightPadding-o._calcSpace(o.rightColumns,n+1)+"px",n==o.rightColumns.length-1?e.modules.frozen.edge=!0:e.modules.frozen.edge=!1,o.layoutElement(e.getElement(),e),t&&e.cells.forEach(function(t){o.layoutElement(t.getElement(),e)})})},FrozenColumns.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(o){"row"===o.type&&t.layoutRow(o)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},FrozenColumns.prototype.layoutRow=function(t){var o=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)}),this.rightColumns.forEach(function(e){var n=t.getCell(e);n&&o.layoutElement(n.getElement(),e)})},FrozenColumns.prototype.layoutElement=function(t,o){o.modules.frozen&&(t.style.position="absolute",t.style.left=o.modules.frozen.margin,t.classList.add("tabulator-frozen"),o.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+o.modules.frozen.position))},FrozenColumns.prototype._calcSpace=function(t,o){for(var e=0,n=0;n<o;n++)t[n].visible&&(e+=t[n].getWidth());return e},Tabulator.prototype.registerModule("frozenColumns",FrozenColumns);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var FrozenRows = function FrozenRows(table) {
+ this.table = table; //hold Tabulator object
+ this.topElement = document.createElement("div");
+ this.rows = [];
+ this.displayIndex = 0; //index in display pipeline
+};
+
+FrozenRows.prototype.initialize = function () {
+ this.rows = [];
+
+ this.topElement.classList.add("tabulator-frozen-rows-holder");
+
+ // this.table.columnManager.element.append(this.topElement);
+ this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+};
+
+FrozenRows.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+};
+
+FrozenRows.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+};
+
+FrozenRows.prototype.isFrozen = function () {
+ return !!this.rows.length;
+};
+
+//filter frozen rows out of display data
+FrozenRows.prototype.getRows = function (rows) {
+ var self = this,
+ frozen = [],
+ output = rows.slice(0);
+
+ this.rows.forEach(function (row) {
+ var index = output.indexOf(row);
+
+ if (index > -1) {
+ output.splice(index, 1);
+ }
+ });
+
+ return output;
+};
+
+FrozenRows.prototype.freezeRow = function (row) {
+ if (!row.modules.frozen) {
+ row.modules.frozen = true;
+ this.topElement.appendChild(row.getElement());
+ row.initialize();
+ row.normalizeHeight();
+ this.table.rowManager.adjustTableSize();
+
+ this.rows.push(row);
+
+ this.table.rowManager.refreshActiveData("display");
+
+ this.styleRows();
+ } else {
+ console.warn("Freeze Error - Row is already frozen");
+ }
+};
+
+FrozenRows.prototype.unfreezeRow = function (row) {
+ var index = this.rows.indexOf(row);
+
+ if (row.modules.frozen) {
+
+ row.modules.frozen = false;
+
+ var rowEl = row.getElement();
+ rowEl.parentNode.removeChild(rowEl);
+
+ this.table.rowManager.adjustTableSize();
+
+ this.rows.splice(index, 1);
+
+ this.table.rowManager.refreshActiveData("display");
+
+ if (this.rows.length) {
+ this.styleRows();
+ }
+ } else {
+ console.warn("Freeze Error - Row is already unfrozen");
+ }
+};
+
+FrozenRows.prototype.styleRows = function (row) {
+ var self = this;
+
+ this.rows.forEach(function (row, i) {
+ self.table.rowManager.styleRow(row, i);
+ });
+};
+
+Tabulator.prototype.registerModule("frozenRows", FrozenRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var FrozenRows=function(e){this.table=e,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};FrozenRows.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},FrozenRows.prototype.setDisplayIndex=function(e){this.displayIndex=e},FrozenRows.prototype.getDisplayIndex=function(){return this.displayIndex},FrozenRows.prototype.isFrozen=function(){return!!this.rows.length},FrozenRows.prototype.getRows=function(e){var o=e.slice(0);return this.rows.forEach(function(e){var t=o.indexOf(e);t>-1&&o.splice(t,1)}),o},FrozenRows.prototype.freezeRow=function(e){e.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(e.modules.frozen=!0,this.topElement.appendChild(e.getElement()),e.initialize(),e.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(e),this.table.rowManager.refreshActiveData("display"),this.styleRows())},FrozenRows.prototype.unfreezeRow=function(e){var o=this.rows.indexOf(e);if(e.modules.frozen){e.modules.frozen=!1;var t=e.getElement();t.parentNode.removeChild(t),this.table.rowManager.adjustTableSize(),this.rows.splice(o,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},FrozenRows.prototype.styleRows=function(e){var o=this;this.rows.forEach(function(e,t){o.table.rowManager.styleRow(e,t)})},Tabulator.prototype.registerModule("frozenRows",FrozenRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+//public group object
+var GroupComponent = function GroupComponent(group) {
+ this._group = group;
+ this.type = "GroupComponent";
+};
+
+GroupComponent.prototype.getKey = function () {
+ return this._group.key;
+};
+
+GroupComponent.prototype.getField = function () {
+ return this._group.field;
+};
+
+GroupComponent.prototype.getElement = function () {
+ return this._group.element;
+};
+
+GroupComponent.prototype.getRows = function () {
+ return this._group.getRows(true);
+};
+
+GroupComponent.prototype.getSubGroups = function () {
+ return this._group.getSubGroups(true);
+};
+
+GroupComponent.prototype.getParentGroup = function () {
+ return this._group.parent ? this._group.parent.getComponent() : false;
+};
+
+GroupComponent.prototype.getVisibility = function () {
+ return this._group.visible;
+};
+
+GroupComponent.prototype.show = function () {
+ this._group.show();
+};
+
+GroupComponent.prototype.hide = function () {
+ this._group.hide();
+};
+
+GroupComponent.prototype.toggle = function () {
+ this._group.toggleVisibility();
+};
+
+GroupComponent.prototype._getSelf = function () {
+ return this._group;
+};
+
+GroupComponent.prototype.getTable = function () {
+ return this._group.groupManager.table;
+};
+
+//////////////////////////////////////////////////
+//////////////// Group Functions /////////////////
+//////////////////////////////////////////////////
+
+var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
+
+ this.groupManager = groupManager;
+ this.parent = parent;
+ this.key = key;
+ this.level = level;
+ this.field = field;
+ this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
+ this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
+ this.type = "group"; //type of element
+ this.old = oldGroup;
+ this.rows = [];
+ this.groups = [];
+ this.groupList = [];
+ this.generator = generator;
+ this.elementContents = false;
+ this.height = 0;
+ this.outerHeight = 0;
+ this.initialized = false;
+ this.calcs = {};
+ this.initialized = false;
+ this.modules = {};
+ this.arrowElement = false;
+
+ this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
+
+ this.createElements();
+ this.addBindings();
+
+ this.createValueGroups();
+};
+
+Group.prototype.wipe = function () {
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ group.wipe();
+ });
+ } else {
+ this.element = false;
+ this.arrowElement = false;
+ this.elementContents = false;
+ }
+};
+
+Group.prototype.createElements = function () {
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-row");
+ this.element.classList.add("tabulator-group");
+ this.element.classList.add("tabulator-group-level-" + this.level);
+ this.element.setAttribute("role", "rowgroup");
+
+ this.arrowElement = document.createElement("div");
+ this.arrowElement.classList.add("tabulator-arrow");
+
+ //setup movable rows
+ if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
+ this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
+ }
+};
+
+Group.prototype.createValueGroups = function () {
+ var _this = this;
+
+ var level = this.level + 1;
+ if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+ this.groupManager.allowedValues[level].forEach(function (value) {
+ _this._createGroup(value, level);
+ });
+ }
+};
+
+Group.prototype.addBindings = function () {
+ var self = this,
+ dblTap,
+ tapHold,
+ tap,
+ toggleElement;
+
+ //handle group click events
+ if (self.groupManager.table.options.groupClick) {
+ self.element.addEventListener("click", function (e) {
+ self.groupManager.table.options.groupClick(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupDblClick) {
+ self.element.addEventListener("dblclick", function (e) {
+ self.groupManager.table.options.groupDblClick(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupContext) {
+ self.element.addEventListener("contextmenu", function (e) {
+ self.groupManager.table.options.groupContext(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupTap) {
+
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ if (tap) {
+ self.groupManager.table.options.groupTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (self.groupManager.table.options.groupDblTap) {
+
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+ clearTimeout(dblTap);
+ dblTap = null;
+
+ self.groupManager.table.options.groupDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+ clearTimeout(dblTap);
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (self.groupManager.table.options.groupTapHold) {
+
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+ clearTimeout(tapHold);
+ tapHold = null;
+ tap = false;
+ self.groupManager.table.options.groupTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ clearTimeout(tapHold);
+ tapHold = null;
+ });
+ }
+
+ if (self.groupManager.table.options.groupToggleElement) {
+ toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
+
+ toggleElement.addEventListener("click", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ self.toggleVisibility();
+ });
+ }
+};
+
+Group.prototype._createGroup = function (groupID, level) {
+ var groupKey = level + "_" + groupID;
+ var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
+
+ this.groups[groupKey] = group;
+ this.groupList.push(group);
+};
+
+Group.prototype._addRowToGroup = function (row) {
+
+ var level = this.level + 1;
+
+ if (this.hasSubGroups) {
+ var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
+ groupKey = level + "_" + groupID;
+
+ if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+ if (this.groups[groupKey]) {
+ this.groups[groupKey].addRow(row);
+ }
+ } else {
+ if (!this.groups[groupKey]) {
+ this._createGroup(groupID, level);
+ }
+
+ this.groups[groupKey].addRow(row);
+ }
+ }
+};
+
+Group.prototype._addRow = function (row) {
+ this.rows.push(row);
+ row.modules.group = this;
+};
+
+Group.prototype.insertRow = function (row, to, after) {
+ var data = this.conformRowData({});
+
+ row.updateData(data);
+
+ var toIndex = this.rows.indexOf(to);
+
+ if (toIndex > -1) {
+ if (after) {
+ this.rows.splice(toIndex + 1, 0, row);
+ } else {
+ this.rows.splice(toIndex, 0, row);
+ }
+ } else {
+ if (after) {
+ this.rows.push(row);
+ } else {
+ this.rows.unshift(row);
+ }
+ }
+
+ row.modules.group = this;
+
+ this.generateGroupHeaderContents();
+
+ if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+ this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+ }
+
+ this.groupManager.updateGroupRows(true);
+};
+
+Group.prototype.scrollHeader = function (left) {
+ this.arrowElement.style.marginLeft = left;
+
+ this.groupList.forEach(function (child) {
+ child.scrollHeader(left);
+ });
+};
+
+Group.prototype.getRowIndex = function (row) {};
+
+//update row data to match grouping contraints
+Group.prototype.conformRowData = function (data) {
+ if (this.field) {
+ data[this.field] = this.key;
+ } else {
+ console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
+ }
+
+ if (this.parent) {
+ data = this.parent.conformRowData(data);
+ }
+
+ return data;
+};
+
+Group.prototype.removeRow = function (row) {
+ var index = this.rows.indexOf(row);
+ var el = row.getElement();
+
+ if (index > -1) {
+ this.rows.splice(index, 1);
+ }
+
+ if (!this.groupManager.table.options.groupValues && !this.rows.length) {
+ if (this.parent) {
+ this.parent.removeGroup(this);
+ } else {
+ this.groupManager.removeGroup(this);
+ }
+
+ this.groupManager.updateGroupRows(true);
+ } else {
+
+ if (el.parentNode) {
+ el.parentNode.removeChild(el);
+ }
+
+ this.generateGroupHeaderContents();
+
+ if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+ this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+ }
+ }
+};
+
+Group.prototype.removeGroup = function (group) {
+ var groupKey = group.level + "_" + group.key,
+ index;
+
+ if (this.groups[groupKey]) {
+ delete this.groups[groupKey];
+
+ index = this.groupList.indexOf(group);
+
+ if (index > -1) {
+ this.groupList.splice(index, 1);
+ }
+
+ if (!this.groupList.length) {
+ if (this.parent) {
+ this.parent.removeGroup(this);
+ } else {
+ this.groupManager.removeGroup(this);
+ }
+ }
+ }
+};
+
+Group.prototype.getHeadersAndRows = function (noCalc) {
+ var output = [];
+
+ output.push(this);
+
+ this._visSet();
+
+ if (this.visible) {
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ output = output.concat(group.getHeadersAndRows(noCalc));
+ });
+ } else {
+ if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+ if (this.calcs.top) {
+ this.calcs.top.detachElement();
+ this.calcs.top.deleteCells();
+ }
+
+ this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+ output.push(this.calcs.top);
+ }
+
+ output = output.concat(this.rows);
+
+ if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+ if (this.calcs.bottom) {
+ this.calcs.bottom.detachElement();
+ this.calcs.bottom.deleteCells();
+ }
+
+ this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+ output.push(this.calcs.bottom);
+ }
+ }
+ } else {
+ if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
+
+ if (this.groupManager.table.modExists("columnCalcs")) {
+
+ if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+ if (this.calcs.top) {
+ this.calcs.top.detachElement();
+ this.calcs.top.deleteCells();
+ }
+
+ if (this.groupManager.table.options.groupClosedShowCalcs) {
+ this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+ output.push(this.calcs.top);
+ }
+ }
+
+ if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+ if (this.calcs.bottom) {
+ this.calcs.bottom.detachElement();
+ this.calcs.bottom.deleteCells();
+ }
+
+ if (this.groupManager.table.options.groupClosedShowCalcs) {
+ this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+ output.push(this.calcs.bottom);
+ }
+ }
+ }
+ }
+ }
+
+ return output;
+};
+
+Group.prototype.getData = function (visible, transform) {
+ var self = this,
+ output = [];
+
+ this._visSet();
+
+ if (!visible || visible && this.visible) {
+ this.rows.forEach(function (row) {
+ output.push(row.getData(transform || "data"));
+ });
+ }
+
+ return output;
+};
+
+// Group.prototype.getRows = function(){
+// this._visSet();
+
+// return this.visible ? this.rows : [];
+// };
+
+Group.prototype.getRowCount = function () {
+ var count = 0;
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ count += group.getRowCount();
+ });
+ } else {
+ count = this.rows.length;
+ }
+ return count;
+};
+
+Group.prototype.toggleVisibility = function () {
+ if (this.visible) {
+ this.hide();
+ } else {
+ this.show();
+ }
+};
+
+Group.prototype.hide = function () {
+ this.visible = false;
+
+ if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+ this.element.classList.remove("tabulator-group-visible");
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+
+ var rows = group.getHeadersAndRows();
+
+ rows.forEach(function (row) {
+ row.detachElement();
+ });
+ });
+ } else {
+ this.rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.removeChild(rowEl);
+ });
+ }
+
+ this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+ this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+ } else {
+ this.groupManager.updateGroupRows(true);
+ }
+
+ this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
+};
+
+Group.prototype.show = function () {
+ var self = this;
+
+ self.visible = true;
+
+ if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+ this.element.classList.add("tabulator-group-visible");
+
+ var prev = self.getElement();
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ var rows = group.getHeadersAndRows();
+
+ rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+ row.initialize();
+ prev = rowEl;
+ });
+ });
+ } else {
+ self.rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+ row.initialize();
+ prev = rowEl;
+ });
+ }
+
+ this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+ this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+ } else {
+ this.groupManager.updateGroupRows(true);
+ }
+
+ this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
+};
+
+Group.prototype._visSet = function () {
+ var data = [];
+
+ if (typeof this.visible == "function") {
+
+ this.rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
+ }
+};
+
+Group.prototype.getRowGroup = function (row) {
+ var match = false;
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ var result = group.getRowGroup(row);
+
+ if (result) {
+ match = result;
+ }
+ });
+ } else {
+ if (this.rows.find(function (item) {
+ return item === row;
+ })) {
+ match = this;
+ }
+ }
+
+ return match;
+};
+
+Group.prototype.getSubGroups = function (component) {
+ var output = [];
+
+ this.groupList.forEach(function (child) {
+ output.push(component ? child.getComponent() : child);
+ });
+
+ return output;
+};
+
+Group.prototype.getRows = function (compoment) {
+ var output = [];
+
+ this.rows.forEach(function (row) {
+ output.push(compoment ? row.getComponent() : row);
+ });
+
+ return output;
+};
+
+Group.prototype.generateGroupHeaderContents = function () {
+ var data = [];
+
+ this.rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
+
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }if (typeof this.elementContents === "string") {
+ this.element.innerHTML = this.elementContents;
+ } else {
+ this.element.appendChild(this.elementContents);
+ }
+
+ this.element.insertBefore(this.arrowElement, this.element.firstChild);
+};
+
+////////////// Standard Row Functions //////////////
+
+Group.prototype.getElement = function () {
+ this.addBindingsd = false;
+
+ this._visSet();
+
+ if (this.visible) {
+ this.element.classList.add("tabulator-group-visible");
+ } else {
+ this.element.classList.remove("tabulator-group-visible");
+ }
+
+ for (var i = 0; i < this.element.childNodes.length; ++i) {
+ this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
+ }
+
+ this.generateGroupHeaderContents();
+
+ // this.addBindings();
+
+ return this.element;
+};
+
+Group.prototype.detachElement = function () {
+ if (this.element && this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ }
+};
+
+//normalize the height of elements in the row
+Group.prototype.normalizeHeight = function () {
+ this.setHeight(this.element.clientHeight);
+};
+
+Group.prototype.initialize = function (force) {
+ if (!this.initialized || force) {
+ this.normalizeHeight();
+ this.initialized = true;
+ }
+};
+
+Group.prototype.reinitialize = function () {
+ this.initialized = false;
+ this.height = 0;
+
+ if (Tabulator.prototype.helpers.elVisible(this.element)) {
+ this.initialize(true);
+ }
+};
+
+Group.prototype.setHeight = function (height) {
+ if (this.height != height) {
+ this.height = height;
+ this.outerHeight = this.element.offsetHeight;
+ }
+};
+
+//return rows outer height
+Group.prototype.getHeight = function () {
+ return this.outerHeight;
+};
+
+Group.prototype.getGroup = function () {
+ return this;
+};
+
+Group.prototype.reinitializeHeight = function () {};
+Group.prototype.calcHeight = function () {};
+Group.prototype.setCellHeight = function () {};
+Group.prototype.clearCellHeight = function () {};
+
+//////////////// Object Generation /////////////////
+Group.prototype.getComponent = function () {
+ return new GroupComponent(this);
+};
+
+//////////////////////////////////////////////////
+////////////// Group Row Extension ///////////////
+//////////////////////////////////////////////////
+
+var GroupRows = function GroupRows(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.groupIDLookups = false; //enable table grouping and set field to group by
+ this.startOpen = [function () {
+ return false;
+ }]; //starting state of group
+ this.headerGenerator = [function () {
+ return "";
+ }];
+ this.groupList = []; //ordered list of groups
+ this.allowedValues = false;
+ this.groups = {}; //hold row groups
+ this.displayIndex = 0; //index in display pipeline
+};
+
+//initialize group configuration
+GroupRows.prototype.initialize = function () {
+ var self = this,
+ groupBy = self.table.options.groupBy,
+ startOpen = self.table.options.groupStartOpen,
+ groupHeader = self.table.options.groupHeader;
+
+ this.allowedValues = self.table.options.groupValues;
+
+ if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
+ console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
+ }
+
+ self.headerGenerator = [function () {
+ return "";
+ }];
+ this.startOpen = [function () {
+ return false;
+ }]; //starting state of group
+
+ self.table.modules.localize.bind("groups|item", function (langValue, lang) {
+ self.headerGenerator[0] = function (value, count, data) {
+ //header layout function
+ return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
+ };
+ });
+
+ this.groupIDLookups = [];
+
+ if (Array.isArray(groupBy) || groupBy) {
+ if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
+ this.table.modules.columnCalcs.removeCalcs();
+ }
+ } else {
+ if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
+
+ var cols = this.table.columnManager.getRealColumns();
+
+ cols.forEach(function (col) {
+ if (col.definition.topCalc) {
+ self.table.modules.columnCalcs.initializeTopRow();
+ }
+
+ if (col.definition.bottomCalc) {
+ self.table.modules.columnCalcs.initializeBottomRow();
+ }
+ });
+ }
+ }
+
+ if (!Array.isArray(groupBy)) {
+ groupBy = [groupBy];
+ }
+
+ groupBy.forEach(function (group, i) {
+ var lookupFunc, column;
+
+ if (typeof group == "function") {
+ lookupFunc = group;
+ } else {
+ column = self.table.columnManager.getColumnByField(group);
+
+ if (column) {
+ lookupFunc = function lookupFunc(data) {
+ return column.getFieldValue(data);
+ };
+ } else {
+ lookupFunc = function lookupFunc(data) {
+ return data[group];
+ };
+ }
+ }
+
+ self.groupIDLookups.push({
+ field: typeof group === "function" ? false : group,
+ func: lookupFunc,
+ values: self.allowedValues ? self.allowedValues[i] : false
+ });
+ });
+
+ if (startOpen) {
+
+ if (!Array.isArray(startOpen)) {
+ startOpen = [startOpen];
+ }
+
+ startOpen.forEach(function (level) {
+ level = typeof level == "function" ? level : function () {
+ return true;
+ };
+ });
+
+ self.startOpen = startOpen;
+ }
+
+ if (groupHeader) {
+ self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
+ }
+
+ this.initialized = true;
+};
+
+GroupRows.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+};
+
+GroupRows.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+};
+
+//return appropriate rows with group headers
+GroupRows.prototype.getRows = function (rows) {
+ if (this.groupIDLookups.length) {
+
+ this.table.options.dataGrouping.call(this.table);
+
+ this.generateGroups(rows);
+
+ if (this.table.options.dataGrouped) {
+ this.table.options.dataGrouped.call(this.table, this.getGroups(true));
+ }
+
+ return this.updateGroupRows();
+ } else {
+ return rows.slice(0);
+ }
+};
+
+GroupRows.prototype.getGroups = function (compoment) {
+ var groupComponents = [];
+
+ this.groupList.forEach(function (group) {
+ groupComponents.push(compoment ? group.getComponent() : group);
+ });
+
+ return groupComponents;
+};
+
+GroupRows.prototype.wipe = function () {
+ this.groupList.forEach(function (group) {
+ group.wipe();
+ });
+};
+
+GroupRows.prototype.pullGroupListData = function (groupList) {
+ var self = this;
+ var groupListData = [];
+
+ groupList.forEach(function (group) {
+ var groupHeader = {};
+ groupHeader.level = 0;
+ groupHeader.rowCount = 0;
+ groupHeader.headerContent = "";
+ var childData = [];
+
+ if (group.hasSubGroups) {
+ childData = self.pullGroupListData(group.groupList);
+
+ groupHeader.level = group.level;
+ groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
+ groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
+
+ groupListData.push(groupHeader);
+ groupListData = groupListData.concat(childData);
+ } else {
+ groupHeader.level = group.level;
+ groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
+ groupHeader.rowCount = group.getRows().length;
+
+ groupListData.push(groupHeader);
+
+ group.getRows().forEach(function (row) {
+ groupListData.push(row.getData("data"));
+ });
+ }
+ });
+
+ return groupListData;
+};
+
+GroupRows.prototype.getGroupedData = function () {
+
+ return this.pullGroupListData(this.groupList);
+};
+
+GroupRows.prototype.getRowGroup = function (row) {
+ var match = false;
+
+ this.groupList.forEach(function (group) {
+ var result = group.getRowGroup(row);
+
+ if (result) {
+ match = result;
+ }
+ });
+
+ return match;
+};
+
+GroupRows.prototype.countGroups = function () {
+ return this.groupList.length;
+};
+
+GroupRows.prototype.generateGroups = function (rows) {
+ var self = this,
+ oldGroups = self.groups;
+
+ self.groups = {};
+ self.groupList = [];
+
+ if (this.allowedValues && this.allowedValues[0]) {
+ this.allowedValues[0].forEach(function (value) {
+ self.createGroup(value, 0, oldGroups);
+ });
+
+ rows.forEach(function (row) {
+ self.assignRowToExistingGroup(row, oldGroups);
+ });
+ } else {
+ rows.forEach(function (row) {
+ self.assignRowToGroup(row, oldGroups);
+ });
+ }
+};
+
+GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
+ var groupKey = level + "_" + groupID,
+ group;
+
+ oldGroups = oldGroups || [];
+
+ group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
+
+ this.groups[groupKey] = group;
+ this.groupList.push(group);
+};
+
+GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ groupKey = "0_" + groupID;
+
+ if (!this.groups[groupKey]) {
+ this.createGroup(groupID, 0, oldGroups);
+ }
+
+ this.groups[groupKey].addRow(row);
+};
+
+GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ groupKey = "0_" + groupID;
+
+ if (this.groups[groupKey]) {
+ this.groups[groupKey].addRow(row);
+ }
+};
+
+GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ newGroupNeeded = !this.groups["0_" + groupID];
+
+ if (newGroupNeeded) {
+ this.createGroup(groupID, 0, oldGroups);
+ }
+
+ this.groups["0_" + groupID].addRow(row);
+
+ return !newGroupNeeded;
+};
+
+GroupRows.prototype.updateGroupRows = function (force) {
+ var self = this,
+ output = [],
+ oldRowCount;
+
+ self.groupList.forEach(function (group) {
+ output = output.concat(group.getHeadersAndRows());
+ });
+
+ //force update of table display
+ if (force) {
+
+ var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
+
+ if (displayIndex !== true) {
+ this.setDisplayIndex(displayIndex);
+ }
+
+ self.table.rowManager.refreshActiveData("group", true, true);
+ }
+
+ return output;
+};
+
+GroupRows.prototype.scrollHeaders = function (left) {
+ left = left + "px";
+
+ this.groupList.forEach(function (group) {
+ group.scrollHeader(left);
+ });
+};
+
+GroupRows.prototype.removeGroup = function (group) {
+ var groupKey = group.level + "_" + group.key,
+ index;
+
+ if (this.groups[groupKey]) {
+ delete this.groups[groupKey];
+
+ index = this.groupList.indexOf(group);
+
+ if (index > -1) {
+ this.groupList.splice(index, 1);
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("groupRows", GroupRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var GroupComponent=function(t){this._group=t,this.type="GroupComponent"};GroupComponent.prototype.getKey=function(){return this._group.key},GroupComponent.prototype.getField=function(){return this._group.field},GroupComponent.prototype.getElement=function(){return this._group.element},GroupComponent.prototype.getRows=function(){return this._group.getRows(!0)},GroupComponent.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},GroupComponent.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},GroupComponent.prototype.getVisibility=function(){return this._group.visible},GroupComponent.prototype.show=function(){this._group.show()},GroupComponent.prototype.hide=function(){this._group.hide()},GroupComponent.prototype.toggle=function(){this._group.toggleVisibility()},GroupComponent.prototype._getSelf=function(){return this._group},GroupComponent.prototype.getTable=function(){return this._group.groupManager.table};var Group=function(t,o,e,r,s,i,n){this.groupManager=t,this.parent=o,this.key=r,this.level=e,this.field=s,this.hasSubGroups=e<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=n,this.rows=[],this.groups=[],this.groupList=[],this.generator=i,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=n?n.visible:void 0!==t.startOpen[e]?t.startOpen[e]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};Group.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},Group.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},Group.prototype.createValueGroups=function(){var t=this,o=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]&&this.groupManager.allowedValues[o].forEach(function(e){t._createGroup(e,o)})},Group.prototype.addBindings=function(){var t,o,e,r,s=this;s.groupManager.table.options.groupClick&&s.element.addEventListener("click",function(t){s.groupManager.table.options.groupClick(t,s.getComponent())}),s.groupManager.table.options.groupDblClick&&s.element.addEventListener("dblclick",function(t){s.groupManager.table.options.groupDblClick(t,s.getComponent())}),s.groupManager.table.options.groupContext&&s.element.addEventListener("contextmenu",function(t){s.groupManager.table.options.groupContext(t,s.getComponent())}),s.groupManager.table.options.groupTap&&(e=!1,s.element.addEventListener("touchstart",function(t){e=!0},{passive:!0}),s.element.addEventListener("touchend",function(t){e&&s.groupManager.table.options.groupTap(t,s.getComponent()),e=!1})),s.groupManager.table.options.groupDblTap&&(t=null,s.element.addEventListener("touchend",function(o){t?(clearTimeout(t),t=null,s.groupManager.table.options.groupDblTap(o,s.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),s.groupManager.table.options.groupTapHold&&(o=null,s.element.addEventListener("touchstart",function(t){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,e=!1,s.groupManager.table.options.groupTapHold(t,s.getComponent())},1e3)},{passive:!0}),s.element.addEventListener("touchend",function(t){clearTimeout(o),o=null})),s.groupManager.table.options.groupToggleElement&&(r="arrow"==s.groupManager.table.options.groupToggleElement?s.arrowElement:s.element,r.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),s.toggleVisibility()}))},Group.prototype._createGroup=function(t,o){var e=o+"_"+t,r=new Group(this.groupManager,this,o,t,this.groupManager.groupIDLookups[o].field,this.groupManager.headerGenerator[o]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[e]);this.groups[e]=r,this.groupList.push(r)},Group.prototype._addRowToGroup=function(t){var o=this.level+1;if(this.hasSubGroups){var e=this.groupManager.groupIDLookups[o].func(t.getData()),r=o+"_"+e;this.groupManager.allowedValues&&this.groupManager.allowedValues[o]?this.groups[r]&&this.groups[r].addRow(t):(this.groups[r]||this._createGroup(e,o),this.groups[r].addRow(t))}},Group.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},Group.prototype.insertRow=function(t,o,e){var r=this.conformRowData({});t.updateData(r);var s=this.rows.indexOf(o);s>-1?e?this.rows.splice(s+1,0,t):this.rows.splice(s,0,t):e?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},Group.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(o){o.scrollHeader(t)})},Group.prototype.getRowIndex=function(t){},Group.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},Group.prototype.removeRow=function(t){var o=this.rows.indexOf(t),e=t.getElement();o>-1&&this.rows.splice(o,1),this.groupManager.table.options.groupValues||this.rows.length?(e.parentNode&&e.parentNode.removeChild(e),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},Group.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],o=this.groupList.indexOf(t),o>-1&&this.groupList.splice(o,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},Group.prototype.getHeadersAndRows=function(t){var o=[];return o.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(e){o=o.concat(e.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top)),o=o.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),o.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),o.push(this.calcs.bottom)))),o},Group.prototype.getData=function(t,o){var e=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){e.push(t.getData(o||"data"))}),e},Group.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(o){t+=o.getRowCount()}):t=this.rows.length,t},Group.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},Group.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var o=t.getElement();o.parentNode.removeChild(o)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},Group.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var o=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e})}):t.rows.forEach(function(t){var e=t.getElement();o.parentNode.insertBefore(e,o.nextSibling),t.initialize(),o=e}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},Group.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(o){t.push(o.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},Group.prototype.getRowGroup=function(t){var o=!1;return this.groupList.length?this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}):this.rows.find(function(o){return o===t})&&(o=this),o},Group.prototype.getSubGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.getRows=function(t){var o=[];return this.rows.forEach(function(e){o.push(t?e.getComponent():e)}),o},Group.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(o){t.push(o.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},Group.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},Group.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Group.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},Group.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},Group.prototype.reinitialize=function(){this.initialized=!1,this.height=0,Tabulator.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},Group.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},Group.prototype.getHeight=function(){return this.outerHeight},Group.prototype.getGroup=function(){return this},Group.prototype.reinitializeHeight=function(){},Group.prototype.calcHeight=function(){},Group.prototype.setCellHeight=function(){},Group.prototype.clearCellHeight=function(){},Group.prototype.getComponent=function(){return new GroupComponent(this)};var GroupRows=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};GroupRows.prototype.initialize=function(){var t=this,o=t.table.options.groupBy,e=t.table.options.groupStartOpen,r=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(o)&&Array.isArray(r)&&o.length>r.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(o,e){t.headerGenerator[0]=function(t,r,s){return(void 0===t?"":t)+"<span>("+r+" "+(1===r?o:e.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(o)||o)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var s=this.table.columnManager.getRealColumns();s.forEach(function(o){o.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),o.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(o)||(o=[o]),o.forEach(function(o,e){var r,s;"function"==typeof o?r=o:(s=t.table.columnManager.getColumnByField(o),r=s?function(t){return s.getFieldValue(t)}:function(t){return t[o]}),t.groupIDLookups.push({field:"function"!=typeof o&&o,func:r,values:!!t.allowedValues&&t.allowedValues[e]})}),e&&(Array.isArray(e)||(e=[e]),e.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=e),r&&(t.headerGenerator=Array.isArray(r)?r:[r]),this.initialized=!0},GroupRows.prototype.setDisplayIndex=function(t){this.displayIndex=t},GroupRows.prototype.getDisplayIndex=function(){return this.displayIndex},GroupRows.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},GroupRows.prototype.getGroups=function(t){var o=[];return this.groupList.forEach(function(e){o.push(t?e.getComponent():e)}),o},GroupRows.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},GroupRows.prototype.pullGroupListData=function(t){var o=this,e=[];return t.forEach(function(t){var r={};r.level=0,r.rowCount=0,r.headerContent="";var s=[];t.hasSubGroups?(s=o.pullGroupListData(t.groupList),r.level=t.level,r.rowCount=s.length-t.groupList.length,r.headerContent=t.generator(t.key,r.rowCount,t.rows,t),e.push(r),e=e.concat(s)):(r.level=t.level,r.headerContent=t.generator(t.key,t.rows.length,t.rows,t),r.rowCount=t.getRows().length,e.push(r),t.getRows().forEach(function(t){e.push(t.getData("data"))}))}),e},GroupRows.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},GroupRows.prototype.getRowGroup=function(t){var o=!1;return this.groupList.forEach(function(e){var r=e.getRowGroup(t);r&&(o=r)}),o},GroupRows.prototype.countGroups=function(){return this.groupList.length},GroupRows.prototype.generateGroups=function(t){var o=this,e=o.groups;o.groups={},o.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){o.createGroup(t,0,e)}),t.forEach(function(t){o.assignRowToExistingGroup(t,e)})):t.forEach(function(t){o.assignRowToGroup(t,e)})},GroupRows.prototype.createGroup=function(t,o,e){var r,s=o+"_"+t;e=e||[],r=new Group(this,!1,o,t,this.groupIDLookups[0].field,this.headerGenerator[0],e[s]),this.groups[s]=r,this.groupList.push(r)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]||this.createGroup(e,0,o),this.groups[r].addRow(t)},GroupRows.prototype.assignRowToExistingGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r="0_"+e;this.groups[r]&&this.groups[r].addRow(t)},GroupRows.prototype.assignRowToGroup=function(t,o){var e=this.groupIDLookups[0].func(t.getData()),r=!this.groups["0_"+e];return r&&this.createGroup(e,0,o),this.groups["0_"+e].addRow(t),!r},GroupRows.prototype.updateGroupRows=function(t){var o=this,e=[];if(o.groupList.forEach(function(t){e=e.concat(t.getHeadersAndRows())}),t){var r=o.table.rowManager.setDisplayRows(e,this.getDisplayIndex());!0!==r&&this.setDisplayIndex(r),o.table.rowManager.refreshActiveData("group",!0,!0)}return e},GroupRows.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(o){o.scrollHeader(t)})},GroupRows.prototype.removeGroup=function(t){var o,e=t.level+"_"+t.key;this.groups[e]&&(delete this.groups[e],(o=this.groupList.indexOf(t))>-1&&this.groupList.splice(o,1))},Tabulator.prototype.registerModule("groupRows",GroupRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var History = function History(table) {
+ this.table = table; //hold Tabulator object
+
+ this.history = [];
+ this.index = -1;
+};
+
+History.prototype.clear = function () {
+ this.history = [];
+ this.index = -1;
+};
+
+History.prototype.action = function (type, component, data) {
+
+ this.history = this.history.slice(0, this.index + 1);
+
+ this.history.push({
+ type: type,
+ component: component,
+ data: data
+ });
+
+ this.index++;
+};
+
+History.prototype.getHistoryUndoSize = function () {
+ return this.index + 1;
+};
+
+History.prototype.getHistoryRedoSize = function () {
+ return this.history.length - (this.index + 1);
+};
+
+History.prototype.undo = function () {
+
+ if (this.index > -1) {
+ var action = this.history[this.index];
+
+ this.undoers[action.type].call(this, action);
+
+ this.index--;
+
+ this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+ return true;
+ } else {
+ console.warn("History Undo Error - No more history to undo");
+ return false;
+ }
+};
+
+History.prototype.redo = function () {
+ if (this.history.length - 1 > this.index) {
+
+ this.index++;
+
+ var action = this.history[this.index];
+
+ this.redoers[action.type].call(this, action);
+
+ this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+ return true;
+ } else {
+ console.warn("History Redo Error - No more history to redo");
+ return false;
+ }
+};
+
+History.prototype.undoers = {
+ cellEdit: function cellEdit(action) {
+ action.component.setValueProcessData(action.data.oldValue);
+ },
+
+ rowAdd: function rowAdd(action) {
+ action.component.deleteActual();
+ },
+
+ rowDelete: function rowDelete(action) {
+ var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+ this._rebindRow(action.component, newRow);
+ },
+
+ rowMove: function rowMove(action) {
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+ this.table.rowManager.redraw();
+ }
+};
+
+History.prototype.redoers = {
+ cellEdit: function cellEdit(action) {
+ action.component.setValueProcessData(action.data.newValue);
+ },
+
+ rowAdd: function rowAdd(action) {
+ var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+ this._rebindRow(action.component, newRow);
+ },
+
+ rowDelete: function rowDelete(action) {
+ action.component.deleteActual();
+ },
+
+ rowMove: function rowMove(action) {
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+ this.table.rowManager.redraw();
+ }
+};
+
+//rebind rows to new element after deletion
+History.prototype._rebindRow = function (oldRow, newRow) {
+ this.history.forEach(function (action) {
+ if (action.component instanceof Row) {
+ if (action.component === oldRow) {
+ action.component = newRow;
+ }
+ } else if (action.component instanceof Cell) {
+ if (action.component.row === oldRow) {
+ var field = action.component.column.getField();
+
+ if (field) {
+ action.component = newRow.getCell(field);
+ }
+ }
+ }
+ });
+};
+
+Tabulator.prototype.registerModule("history", History);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var History=function(t){this.table=t,this.history=[],this.index=-1};History.prototype.clear=function(){this.history=[],this.index=-1},History.prototype.action=function(t,o,e){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:o,data:e}),this.index++},History.prototype.getHistoryUndoSize=function(){return this.index+1},History.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},History.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},History.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},History.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this._rebindRow(t.component,o)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var o=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this._rebindRow(t.component,o)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},History.prototype._rebindRow=function(t,o){this.history.forEach(function(e){if(e.component instanceof Row)e.component===t&&(e.component=o);else if(e.component instanceof Cell&&e.component.row===t){var n=e.component.column.getField();n&&(e.component=o.getCell(n))}})},Tabulator.prototype.registerModule("history",History);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var HtmlTableExport = function HtmlTableExport(table) {
+ this.table = table; //hold Tabulator object
+ this.config = {};
+ this.cloneTableStyle = true;
+ this.colVisProp = "";
+};
+
+HtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {
+ this.cloneTableStyle = style;
+ this.config = config || {};
+ this.colVisProp = colVisProp;
+
+ var headers = this.generateHeaderElements();
+ var body = this.generateBodyElements(visible);
+
+ var table = document.createElement("table");
+ table.classList.add("tabulator-print-table");
+ table.appendChild(headers);
+ table.appendChild(body);
+
+ this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+ return table;
+};
+
+HtmlTableExport.prototype.generateColumnGroupHeaders = function () {
+ var _this = this;
+
+ var output = [];
+
+ var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
+
+ columns.forEach(function (column) {
+ var colData = _this.processColumnGroup(column);
+
+ if (colData) {
+ output.push(colData);
+ }
+ });
+
+ return output;
+};
+
+HtmlTableExport.prototype.processColumnGroup = function (column) {
+ var _this2 = this;
+
+ var subGroups = column.columns,
+ maxDepth = 0;
+
+ var groupData = {
+ title: column.definition.title,
+ column: column,
+ depth: 1
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this2.processColumnGroup(subGroup);
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+
+ if (subGroupData.depth > maxDepth) {
+ maxDepth = subGroupData.depth;
+ }
+ }
+ });
+
+ groupData.depth += maxDepth;
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && this.columnVisCheck(column)) {
+ groupData.width = 1;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+};
+
+HtmlTableExport.prototype.groupHeadersToRows = function (columns) {
+
+ var headers = [],
+ headerDepth = 0;
+
+ function parseColumnGroup(column, level) {
+
+ var depth = headerDepth - level;
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ column.height = column.subGroups ? 1 : depth - column.depth + 1;
+
+ headers[level].push(column);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ }
+ }
+
+ //calculate maximum header debth
+ columns.forEach(function (column) {
+ if (column.depth > headerDepth) {
+ headerDepth = column.depth;
+ }
+ });
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ return headers;
+};
+
+HtmlTableExport.prototype.generateHeaderElements = function () {
+ var _this3 = this;
+
+ var headerEl = document.createElement("thead");
+
+ var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
+
+ rows.forEach(function (row) {
+ var rowEl = document.createElement("tr");
+
+ _this3.mapElementStyles(_this3.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ row.forEach(function (column) {
+ var cellEl = document.createElement("th");
+
+ cellEl.colSpan = column.width;
+ cellEl.rowSpan = column.height;
+
+ cellEl.innerHTML = column.column.definition.title;
+
+ if (_this3.cloneTableStyle) {
+ cellEl.style.boxSizing = "border-box";
+ }
+
+ _this3.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+ _this3.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+
+ if (column.column.visible) {
+ _this3.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
+ } else {
+ if (column.column.definition.width) {
+ cellEl.style.width = column.column.definition.width + "px";
+ }
+ }
+
+ if (column.column.parent) {
+ _this3.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ headerEl.appendChild(rowEl);
+ });
+
+ return headerEl;
+};
+
+HtmlTableExport.prototype.generateBodyElements = function (visible) {
+ var _this4 = this;
+
+ var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;
+
+ //lookup row styles
+ if (this.cloneTableStyle && window.getComputedStyle) {
+ oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+ evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+ calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+ firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+ firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+ if (firstRow) {
+ styleCells = firstRow.getElementsByClassName("tabulator-cell");
+ firstCell = styleCells[0];
+ lastCell = styleCells[styleCells.length - 1];
+ }
+ }
+
+ var bodyEl = document.createElement("tbody");
+
+ var rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();
+ var columns = [];
+
+ if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
+ if (this.table.modules.columnCalcs.topInitialized) {
+ rows.unshift(this.table.modules.columnCalcs.topRow);
+ }
+
+ if (this.table.modules.columnCalcs.botInitialized) {
+ rows.push(this.table.modules.columnCalcs.botRow);
+ }
+ }
+
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (_this4.columnVisCheck(column)) {
+ columns.push(column);
+ }
+ });
+
+ rows = rows.filter(function (row) {
+ switch (row.type) {
+ case "group":
+ return _this4.config.rowGroups !== false;
+ break;
+
+ case "calc":
+ return _this4.config.columnCalcs !== false;
+ break;
+ }
+
+ return true;
+ });
+
+ if (rows.length > 1000) {
+ console.warn("It may take a long time to render an HTML table with more than 1000 rows");
+ }
+
+ rows.forEach(function (row, i) {
+ var rowData = row.getData();
+
+ var rowEl = document.createElement("tr");
+ rowEl.classList.add("tabulator-print-table-row");
+
+ switch (row.type) {
+ case "group":
+ var cellEl = document.createElement("td");
+ cellEl.colSpan = columns.length;
+ cellEl.innerHTML = row.key;
+
+ rowEl.classList.add("tabulator-print-table-group");
+
+ _this4.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ _this4.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+ rowEl.appendChild(cellEl);
+ break;
+
+ case "calc":
+ rowEl.classList.add("tabulator-print-table-calcs");
+
+ case "row":
+ columns.forEach(function (column) {
+ var cellEl = document.createElement("td");
+
+ var value = column.getFieldValue(rowData);
+
+ var cellWrapper = {
+ getValue: function getValue() {
+ return value;
+ },
+ getField: function getField() {
+ return column.definition.field;
+ },
+ getElement: function getElement() {
+ return cellEl;
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ },
+ getData: function getData() {
+ return rowData;
+ },
+ getRow: function getRow() {
+ return row.getComponent();
+ },
+ getComponent: function getComponent() {
+ return cellWrapper;
+ },
+ column: column
+ };
+
+ if (_this4.table.modExists("format")) {
+ value = _this4.table.modules.format.formatValue(cellWrapper);
+ } else {
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+ }
+
+ if (value instanceof Node) {
+ cellEl.appendChild(value);
+ } else {
+ cellEl.innerHTML = value;
+ }
+
+ if (firstCell) {
+ _this4.mapElementStyles(firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]);
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
+
+ _this4.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ break;
+ }
+
+ bodyEl.appendChild(rowEl);
+ });
+
+ return bodyEl;
+};
+
+HtmlTableExport.prototype.columnVisCheck = function (column) {
+ return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
+};
+
+HtmlTableExport.prototype.getHtml = function (visible, style, config) {
+ var holder = document.createElement("div");
+
+ holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, "htmlOutput"));
+
+ return holder.innerHTML;
+};
+
+HtmlTableExport.prototype.mapElementStyles = function (from, to, props) {
+ if (this.cloneTableStyle && from && to) {
+
+ var lookup = {
+ "background-color": "backgroundColor",
+ "color": "fontColor",
+ "width": "width",
+ "font-weight": "fontWeight",
+ "font-family": "fontFamily",
+ "font-size": "fontSize",
+ "text-align": "textAlign",
+ "border-top": "borderTop",
+ "border-left": "borderLeft",
+ "border-right": "borderRight",
+ "border-bottom": "borderBottom",
+ "padding-top": "paddingTop",
+ "padding-left": "paddingLeft",
+ "padding-right": "paddingRight",
+ "padding-bottom": "paddingBottom"
+ };
+
+ if (window.getComputedStyle) {
+ var fromStyle = window.getComputedStyle(from);
+
+ props.forEach(function (prop) {
+ to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+ });
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("htmlTableExport", HtmlTableExport);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableExport=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};HtmlTableExport.prototype.genereateTable=function(t,e,o,n){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=n;var r=this.generateHeaderElements(),l=this.generateBodyElements(o),a=document.createElement("table");return a.classList.add("tabulator-print-table"),a.appendChild(r),a.appendChild(l),this.mapElementStyles(this.table.element,a,["border-top","border-left","border-right","border-bottom"]),a},HtmlTableExport.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var n=t.processColumnGroup(o);n&&e.push(n)}),e},HtmlTableExport.prototype.processColumnGroup=function(t){var e=this,o=t.columns,n=0,r={title:t.definition.title,column:t,depth:1};if(o.length){if(r.subGroups=[],r.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(r.width+=o.width,r.subGroups.push(o),o.depth>n&&(n=o.depth))}),r.depth+=n,!r.width)return!1}else{if(!t.field||!this.columnVisCheck(t))return!1;r.width=1}return r},HtmlTableExport.prototype.groupHeadersToRows=function(t){function e(t,r){var l=n-r;void 0===o[r]&&(o[r]=[]),t.height=t.subGroups?1:l-t.depth+1,o[r].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,r+1)})}var o=[],n=0;return t.forEach(function(t){t.depth>n&&(n=t.depth)}),t.forEach(function(t){e(t,0)}),o},HtmlTableExport.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var n=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),n.appendChild(o)}),e.appendChild(n)}),e},HtmlTableExport.prototype.generateBodyElements=function(t){var e,o,n,r,l,a,i,d,u=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),n=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),r=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),a=this.table.element.getElementsByClassName("tabulator-group")[0],r&&(i=r.getElementsByClassName("tabulator-cell"),l=i[0],i[i.length-1]));var c=document.createElement("tbody"),s=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),p=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&s.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&s.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){u.columnVisCheck(t)&&p.push(t)}),s=s.filter(function(t){switch(t.type){case"group":return!1!==u.config.rowGroups;case"calc":return!1!==u.config.columnCalcs}return!0}),s.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),s.forEach(function(t,r){var i=t.getData(),s=document.createElement("tr");switch(s.classList.add("tabulator-print-table-row"),t.type){case"group":var m=document.createElement("td");m.colSpan=p.length,m.innerHTML=t.key,s.classList.add("tabulator-print-table-group"),u.mapElementStyles(a,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.mapElementStyles(a,m,["padding-top","padding-left","padding-right","padding-bottom"]),s.appendChild(m);break;case"calc":s.classList.add("tabulator-print-table-calcs");case"row":p.forEach(function(e){var o=document.createElement("td"),n=e.getFieldValue(i),r={getValue:function(){return n},getField:function(){return e.definition.field},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return i},getRow:function(){return t.getComponent()},getComponent:function(){return r},column:e};if(u.table.modExists("format"))n=u.table.modules.format.formatValue(r);else switch(void 0===n?"undefined":_typeof(n)){case"object":n=JSON.stringify(n);break;case"undefined":case"null":n="";break;default:n=n}n instanceof Node?o.appendChild(n):o.innerHTML=n,l&&u.mapElementStyles(l,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),s.appendChild(o)}),d="calc"==t.type?n:r%2&&o?o:e,u.mapElementStyles(d,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}c.appendChild(s)}),c},HtmlTableExport.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},HtmlTableExport.prototype.getHtml=function(t,e,o){var n=document.createElement("div");return n.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),n.innerHTML},HtmlTableExport.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var n={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var r=window.getComputedStyle(t);o.forEach(function(t){e.style[n[t]]=r.getPropertyValue(t)})}}},Tabulator.prototype.registerModule("htmlTableExport",HtmlTableExport);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var HtmlTableImport = function HtmlTableImport(table) {
+ this.table = table; //hold Tabulator object
+ this.fieldIndex = [];
+ this.hasIndex = false;
+};
+
+HtmlTableImport.prototype.parseTable = function () {
+ var self = this,
+ element = self.table.element,
+ options = self.table.options,
+ columns = options.columns,
+ headers = element.getElementsByTagName("th"),
+ rows = element.getElementsByTagName("tbody")[0],
+ data = [],
+ newTable;
+
+ self.hasIndex = false;
+
+ self.table.options.htmlImporting.call(this.table);
+
+ rows = rows ? rows.getElementsByTagName("tr") : [];
+
+ //check for tablator inline options
+ self._extractOptions(element, options);
+
+ if (headers.length) {
+ self._extractHeaders(headers, rows);
+ } else {
+ self._generateBlankHeaders(headers, rows);
+ }
+
+ //iterate through table rows and build data set
+ for (var index = 0; index < rows.length; index++) {
+ var row = rows[index],
+ cells = row.getElementsByTagName("td"),
+ item = {};
+
+ //create index if the dont exist in table
+ if (!self.hasIndex) {
+ item[options.index] = index;
+ }
+
+ for (var i = 0; i < cells.length; i++) {
+ var cell = cells[i];
+ if (typeof this.fieldIndex[i] !== "undefined") {
+ item[this.fieldIndex[i]] = cell.innerHTML;
+ }
+ }
+
+ //add row data to item
+ data.push(item);
+ }
+
+ //create new element
+ var newElement = document.createElement("div");
+
+ //transfer attributes to new element
+ var attributes = element.attributes;
+
+ // loop through attributes and apply them on div
+
+ for (var i in attributes) {
+ if (_typeof(attributes[i]) == "object") {
+ newElement.setAttribute(attributes[i].name, attributes[i].value);
+ }
+ }
+
+ // replace table with div element
+ element.parentNode.replaceChild(newElement, element);
+
+ options.data = data;
+
+ self.table.options.htmlImported.call(this.table);
+
+ // // newElement.tabulator(options);
+
+ this.table.element = newElement;
+};
+
+//extract tabulator attribute options
+HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
+ var attributes = element.attributes;
+ var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
+ var optionsList = {};
+
+ optionsArr.forEach(function (item) {
+ optionsList[item.toLowerCase()] = item;
+ });
+
+ for (var index in attributes) {
+ var attrib = attributes[index];
+ var name;
+
+ if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+ name = attrib.name.replace("tabulator-", "");
+
+ if (typeof optionsList[name] !== "undefined") {
+ options[optionsList[name]] = this._attribValue(attrib.value);
+ }
+ }
+ }
+};
+
+//get value of attribute
+HtmlTableImport.prototype._attribValue = function (value) {
+ if (value === "true") {
+ return true;
+ }
+
+ if (value === "false") {
+ return false;
+ }
+
+ return value;
+};
+
+//find column if it has already been defined
+HtmlTableImport.prototype._findCol = function (title) {
+ var match = this.table.options.columns.find(function (column) {
+ return column.title === title;
+ });
+
+ return match || false;
+};
+
+//extract column from headers
+HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
+ for (var index = 0; index < headers.length; index++) {
+ var header = headers[index],
+ exists = false,
+ col = this._findCol(header.textContent),
+ width,
+ attributes;
+
+ if (col) {
+ exists = true;
+ } else {
+ col = { title: header.textContent.trim() };
+ }
+
+ if (!col.field) {
+ col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
+ }
+
+ width = header.getAttribute("width");
+
+ if (width && !col.width) {
+ col.width = width;
+ }
+
+ //check for tablator inline options
+ attributes = header.attributes;
+
+ // //check for tablator inline options
+ this._extractOptions(header, col, Column.prototype.defaultOptionList);
+
+ for (var i in attributes) {
+ var attrib = attributes[i],
+ name;
+
+ if (attrib && (typeof attrib === "undefined" ? "undefined" : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+
+ name = attrib.name.replace("tabulator-", "");
+
+ col[name] = this._attribValue(attrib.value);
+ }
+ }
+
+ this.fieldIndex[index] = col.field;
+
+ if (col.field == this.table.options.index) {
+ this.hasIndex = true;
+ }
+
+ if (!exists) {
+ this.table.options.columns.push(col);
+ }
+ }
+};
+
+//generate blank headers
+HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
+ for (var index = 0; index < headers.length; index++) {
+ var header = headers[index],
+ col = { title: "", field: "col" + index };
+
+ this.fieldIndex[index] = col.field;
+
+ var width = header.getAttribute("width");
+
+ if (width) {
+ col.width = width;
+ }
+
+ this.table.options.columns.push(col);
+ }
+};
+
+Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},HtmlTableImport=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};HtmlTableImport.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,a=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],r=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),a.length?t._extractHeaders(a,n):t._generateBlankHeaders(a,n);for(var l=0;l<n.length;l++){var i=n[l],s=i.getElementsByTagName("td"),p={};t.hasIndex||(p[o.index]=l);for(var m=0;m<s.length;m++){var d=s[m];void 0!==this.fieldIndex[m]&&(p[this.fieldIndex[m]]=d.innerHTML)}r.push(p)}var f=document.createElement("div"),u=e.attributes;for(var m in u)"object"==_typeof(u[m])&&f.setAttribute(u[m].name,u[m].value);e.parentNode.replaceChild(f,e),o.data=r,t.table.options.htmlImported.call(this.table),this.table.element=f},HtmlTableImport.prototype._extractOptions=function(t,e,o){var a=t.attributes,n=o?Object.assign([],o):Object.keys(e),r={};n.forEach(function(t){r[t.toLowerCase()]=t});for(var l in a){var i,s=a[l];s&&"object"==(void 0===s?"undefined":_typeof(s))&&s.name&&0===s.name.indexOf("tabulator-")&&(i=s.name.replace("tabulator-",""),void 0!==r[i]&&(e[r[i]]=this._attribValue(s.value)))}},HtmlTableImport.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},HtmlTableImport.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},HtmlTableImport.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var a,n,r=t[o],l=!1,i=this._findCol(r.textContent);i?l=!0:i={title:r.textContent.trim()},i.field||(i.field=r.textContent.trim().toLowerCase().replace(" ","_")),a=r.getAttribute("width"),a&&!i.width&&(i.width=a),n=r.attributes,this._extractOptions(r,i,Column.prototype.defaultOptionList);for(var s in n){var p,m=n[s];m&&"object"==(void 0===m?"undefined":_typeof(m))&&m.name&&0===m.name.indexOf("tabulator-")&&(p=m.name.replace("tabulator-",""),i[p]=this._attribValue(m.value))}this.fieldIndex[o]=i.field,i.field==this.table.options.index&&(this.hasIndex=!0),l||this.table.options.columns.push(i)}},HtmlTableImport.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var a=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var r=a.getAttribute("width");r&&(n.width=r),this.table.options.columns.push(n)}},Tabulator.prototype.registerModule("htmlTableImport",HtmlTableImport);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Keybindings = function Keybindings(table) {
+ this.table = table; //hold Tabulator object
+ this.watchKeys = null;
+ this.pressedKeys = null;
+ this.keyupBinding = false;
+ this.keydownBinding = false;
+};
+
+Keybindings.prototype.initialize = function () {
+ var bindings = this.table.options.keybindings,
+ mergedBindings = {};
+
+ this.watchKeys = {};
+ this.pressedKeys = [];
+
+ if (bindings !== false) {
+
+ for (var key in this.bindings) {
+ mergedBindings[key] = this.bindings[key];
+ }
+
+ if (Object.keys(bindings).length) {
+
+ for (var _key in bindings) {
+ mergedBindings[_key] = bindings[_key];
+ }
+ }
+
+ this.mapBindings(mergedBindings);
+ this.bindEvents();
+ }
+};
+
+Keybindings.prototype.mapBindings = function (bindings) {
+ var _this = this;
+
+ var self = this;
+
+ var _loop = function _loop(key) {
+
+ if (_this.actions[key]) {
+
+ if (bindings[key]) {
+
+ if (_typeof(bindings[key]) !== "object") {
+ bindings[key] = [bindings[key]];
+ }
+
+ bindings[key].forEach(function (binding) {
+ self.mapBinding(key, binding);
+ });
+ }
+ } else {
+ console.warn("Key Binding Error - no such action:", key);
+ }
+ };
+
+ for (var key in bindings) {
+ _loop(key);
+ }
+};
+
+Keybindings.prototype.mapBinding = function (action, symbolsList) {
+ var self = this;
+
+ var binding = {
+ action: this.actions[action],
+ keys: [],
+ ctrl: false,
+ shift: false
+ };
+
+ var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
+
+ symbols.forEach(function (symbol) {
+ switch (symbol) {
+ case "ctrl":
+ binding.ctrl = true;
+ break;
+
+ case "shift":
+ binding.shift = true;
+ break;
+
+ default:
+ symbol = parseInt(symbol);
+ binding.keys.push(symbol);
+
+ if (!self.watchKeys[symbol]) {
+ self.watchKeys[symbol] = [];
+ }
+
+ self.watchKeys[symbol].push(binding);
+ }
+ });
+};
+
+Keybindings.prototype.bindEvents = function () {
+ var self = this;
+
+ this.keyupBinding = function (e) {
+ var code = e.keyCode;
+ var bindings = self.watchKeys[code];
+
+ if (bindings) {
+
+ self.pressedKeys.push(code);
+
+ bindings.forEach(function (binding) {
+ self.checkBinding(e, binding);
+ });
+ }
+ };
+
+ this.keydownBinding = function (e) {
+ var code = e.keyCode;
+ var bindings = self.watchKeys[code];
+
+ if (bindings) {
+
+ var index = self.pressedKeys.indexOf(code);
+
+ if (index > -1) {
+ self.pressedKeys.splice(index, 1);
+ }
+ }
+ };
+
+ this.table.element.addEventListener("keydown", this.keyupBinding);
+
+ this.table.element.addEventListener("keyup", this.keydownBinding);
+};
+
+Keybindings.prototype.clearBindings = function () {
+ if (this.keyupBinding) {
+ this.table.element.removeEventListener("keydown", this.keyupBinding);
+ }
+
+ if (this.keydownBinding) {
+ this.table.element.removeEventListener("keyup", this.keydownBinding);
+ }
+};
+
+Keybindings.prototype.checkBinding = function (e, binding) {
+ var self = this,
+ match = true;
+
+ if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {
+ binding.keys.forEach(function (key) {
+ var index = self.pressedKeys.indexOf(key);
+
+ if (index == -1) {
+ match = false;
+ }
+ });
+
+ if (match) {
+ binding.action.call(self, e);
+ }
+
+ return true;
+ }
+
+ return false;
+};
+
+//default bindings
+Keybindings.prototype.bindings = {
+ navPrev: "shift + 9",
+ navNext: 9,
+ navUp: 38,
+ navDown: 40,
+ scrollPageUp: 33,
+ scrollPageDown: 34,
+ scrollToStart: 36,
+ scrollToEnd: 35,
+ undo: "ctrl + 90",
+ redo: "ctrl + 89",
+ copyToClipboard: "ctrl + 67"
+};
+
+//default actions
+Keybindings.prototype.actions = {
+ keyBlock: function keyBlock(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ },
+ scrollPageUp: function scrollPageUp(e) {
+ var rowManager = this.table.rowManager,
+ newPos = rowManager.scrollTop - rowManager.height,
+ scrollMax = rowManager.element.scrollHeight;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ if (newPos >= 0) {
+ rowManager.element.scrollTop = newPos;
+ } else {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+ }
+ }
+
+ this.table.element.focus();
+ },
+ scrollPageDown: function scrollPageDown(e) {
+ var rowManager = this.table.rowManager,
+ newPos = rowManager.scrollTop + rowManager.height,
+ scrollMax = rowManager.element.scrollHeight;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ if (newPos <= scrollMax) {
+ rowManager.element.scrollTop = newPos;
+ } else {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+ }
+ }
+
+ this.table.element.focus();
+ },
+ scrollToStart: function scrollToStart(e) {
+ var rowManager = this.table.rowManager;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+ }
+
+ this.table.element.focus();
+ },
+ scrollToEnd: function scrollToEnd(e) {
+ var rowManager = this.table.rowManager;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+ }
+
+ this.table.element.focus();
+ },
+ navPrev: function navPrev(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().prev();
+ }
+ }
+ },
+
+ navNext: function navNext(e) {
+ var cell = false;
+ var newRow = this.table.options.tabEndNewRow;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ if (!cell.nav().next()) {
+ if (newRow) {
+ if (newRow === true) {
+ newRow = this.table.addRow({});
+ } else {
+ if (typeof newRow == "function") {
+ newRow = this.table.addRow(newRow(cell.row.getComponent()));
+ } else {
+ newRow = this.table.addRow(newRow);
+ }
+ }
+
+ newRow.then(function () {
+ cell.nav().next();
+ });
+ }
+ }
+ }
+ }
+ },
+
+ navLeft: function navLeft(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().left();
+ }
+ }
+ },
+
+ navRight: function navRight(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().right();
+ }
+ }
+ },
+
+ navUp: function navUp(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().up();
+ }
+ }
+ },
+
+ navDown: function navDown(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().down();
+ }
+ }
+ },
+
+ undo: function undo(e) {
+ var cell = false;
+ if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+ cell = this.table.modules.edit.currentCell;
+
+ if (!cell) {
+ e.preventDefault();
+ this.table.modules.history.undo();
+ }
+ }
+ },
+
+ redo: function redo(e) {
+ var cell = false;
+ if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+ cell = this.table.modules.edit.currentCell;
+
+ if (!cell) {
+ e.preventDefault();
+ this.table.modules.history.redo();
+ }
+ }
+ },
+
+ copyToClipboard: function copyToClipboard(e) {
+ if (!this.table.modules.edit.currentCell) {
+ if (this.table.modExists("clipboard", true)) {
+ this.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == "highlight" ? "active" : "selected", null, null, null, true);
+ }
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("keybindings", Keybindings);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Keybindings=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};Keybindings.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var i in this.bindings)e[i]=this.bindings[i];if(Object.keys(t).length)for(var n in t)e[n]=t[n];this.mapBindings(e),this.bindEvents()}},Keybindings.prototype.mapBindings=function(t){var e=this,i=this;for(var n in t)!function(n){e.actions[n]?t[n]&&("object"!==_typeof(t[n])&&(t[n]=[t[n]]),t[n].forEach(function(t){i.mapBinding(n,t)})):console.warn("Key Binding Error - no such action:",n)}(n)},Keybindings.prototype.mapBinding=function(t,e){var i=this,n={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":n.ctrl=!0;break;case"shift":n.shift=!0;break;default:t=parseInt(t),n.keys.push(t),i.watchKeys[t]||(i.watchKeys[t]=[]),i.watchKeys[t].push(n)}})},Keybindings.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var i=e.keyCode,n=t.watchKeys[i];n&&(t.pressedKeys.push(i),n.forEach(function(i){t.checkBinding(e,i)}))},this.keydownBinding=function(e){var i=e.keyCode;if(t.watchKeys[i]){var n=t.pressedKeys.indexOf(i);n>-1&&t.pressedKeys.splice(n,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},Keybindings.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},Keybindings.prototype.checkBinding=function(t,e){var i=this,n=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==i.pressedKeys.indexOf(t)&&(n=!1)}),n&&e.action.call(i,t),!0)},Keybindings.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},Keybindings.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,i=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i>=0?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,i=e.scrollTop+e.height,n=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(i<=n?e.element.scrollTop=i:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e=!1,i=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().next()||i&&(i=!0===i?this.table.addRow({}):"function"==typeof i?this.table.addRow(i(e.row.getComponent())):this.table.addRow(i),i.then(function(){e.nav().next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},Tabulator.prototype.registerModule("keybindings",Keybindings);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var MoveColumns = function MoveColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.placeholderElement = this.createPlaceholderElement();
+ this.hoverElement = false; //floating column header element
+ this.checkTimeout = false; //click check timeout holder
+ this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
+ this.moving = false; //currently moving column
+ this.toCol = false; //destination column
+ this.toColAfter = false; //position of moving column relative to the desitnation column
+ this.startX = 0; //starting position within header element
+ this.autoScrollMargin = 40; //auto scroll on edge when within margin
+ this.autoScrollStep = 5; //auto scroll distance in pixels
+ this.autoScrollTimeout = false; //auto scroll timeout
+ this.touchMove = false;
+
+ this.moveHover = this.moveHover.bind(this);
+ this.endMove = this.endMove.bind(this);
+};
+
+MoveColumns.prototype.createPlaceholderElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col");
+ el.classList.add("tabulator-col-placeholder");
+
+ return el;
+};
+
+MoveColumns.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = {},
+ colEl;
+
+ if (!column.modules.frozen) {
+
+ colEl = column.getElement();
+
+ config.mousemove = function (e) {
+ if (column.parent === self.moving.parent) {
+ if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
+ if (self.toCol !== column || !self.toColAfter) {
+ colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
+ self.moveColumn(column, true);
+ }
+ } else {
+ if (self.toCol !== column || self.toColAfter) {
+ colEl.parentNode.insertBefore(self.placeholderElement, colEl);
+ self.moveColumn(column, false);
+ }
+ }
+ }
+ }.bind(self);
+
+ colEl.addEventListener("mousedown", function (e) {
+ self.touchMove = false;
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, column);
+ }, self.checkPeriod);
+ }
+ });
+
+ colEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ self.bindTouchEvents(column);
+ }
+
+ column.modules.moveColumn = config;
+};
+
+MoveColumns.prototype.bindTouchEvents = function (column) {
+ var self = this,
+ colEl = column.getElement(),
+ startXMove = false,
+ //shifting center position of the cell
+ dir = false,
+ currentCol,
+ nextCol,
+ prevCol,
+ nextColWidth,
+ prevColWidth,
+ nextColWidthLast,
+ prevColWidthLast;
+
+ colEl.addEventListener("touchstart", function (e) {
+ self.checkTimeout = setTimeout(function () {
+ self.touchMove = true;
+ currentCol = column;
+ nextCol = column.nextColumn();
+ nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+ prevCol = column.prevColumn();
+ prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+ nextColWidthLast = 0;
+ prevColWidthLast = 0;
+ startXMove = false;
+
+ self.startMove(e, column);
+ }, self.checkPeriod);
+ }, { passive: true });
+
+ colEl.addEventListener("touchmove", function (e) {
+ var halfCol, diff, moveToCol;
+
+ if (self.moving) {
+ self.moveHover(e);
+
+ if (!startXMove) {
+ startXMove = e.touches[0].pageX;
+ }
+
+ diff = e.touches[0].pageX - startXMove;
+
+ if (diff > 0) {
+ if (nextCol && diff - nextColWidthLast > nextColWidth) {
+ moveToCol = nextCol;
+
+ if (moveToCol !== column) {
+ startXMove = e.touches[0].pageX;
+ moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
+ self.moveColumn(moveToCol, true);
+ }
+ }
+ } else {
+ if (prevCol && -diff - prevColWidthLast > prevColWidth) {
+ moveToCol = prevCol;
+
+ if (moveToCol !== column) {
+ startXMove = e.touches[0].pageX;
+ moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
+ self.moveColumn(moveToCol, false);
+ }
+ }
+ }
+
+ if (moveToCol) {
+ currentCol = moveToCol;
+ nextCol = moveToCol.nextColumn();
+ nextColWidthLast = nextColWidth;
+ nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+ prevCol = moveToCol.prevColumn();
+ prevColWidthLast = prevColWidth;
+ prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+ }
+ }
+ }, { passive: true });
+
+ colEl.addEventListener("touchend", function (e) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ if (self.moving) {
+ self.endMove(e);
+ }
+ });
+};
+
+MoveColumns.prototype.startMove = function (e, column) {
+ var element = column.getElement();
+
+ this.moving = column;
+ this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
+
+ this.table.element.classList.add("tabulator-block-select");
+
+ //create placeholder
+ this.placeholderElement.style.width = column.getWidth() + "px";
+ this.placeholderElement.style.height = column.getHeight() + "px";
+
+ element.parentNode.insertBefore(this.placeholderElement, element);
+ element.parentNode.removeChild(element);
+
+ //create hover element
+ this.hoverElement = element.cloneNode(true);
+ this.hoverElement.classList.add("tabulator-moving");
+
+ this.table.columnManager.getElement().appendChild(this.hoverElement);
+
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.bottom = "0";
+
+ if (!this.touchMove) {
+ this._bindMouseMove();
+
+ document.body.addEventListener("mousemove", this.moveHover);
+ document.body.addEventListener("mouseup", this.endMove);
+ }
+
+ this.moveHover(e);
+};
+
+MoveColumns.prototype._bindMouseMove = function () {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.modules.moveColumn.mousemove) {
+ column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
+ }
+ });
+};
+
+MoveColumns.prototype._unbindMouseMove = function () {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.modules.moveColumn.mousemove) {
+ column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
+ }
+ });
+};
+
+MoveColumns.prototype.moveColumn = function (column, after) {
+ var movingCells = this.moving.getCells();
+
+ this.toCol = column;
+ this.toColAfter = after;
+
+ if (after) {
+ column.getCells().forEach(function (cell, i) {
+ var cellEl = cell.getElement();
+ cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
+ });
+ } else {
+ column.getCells().forEach(function (cell, i) {
+ var cellEl = cell.getElement();
+ cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
+ });
+ }
+};
+
+MoveColumns.prototype.endMove = function (e) {
+ if (e.which === 1 || this.touchMove) {
+ this._unbindMouseMove();
+
+ this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
+ this.placeholderElement.parentNode.removeChild(this.placeholderElement);
+ this.hoverElement.parentNode.removeChild(this.hoverElement);
+
+ this.table.element.classList.remove("tabulator-block-select");
+
+ if (this.toCol) {
+ this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
+ }
+
+ this.moving = false;
+ this.toCol = false;
+ this.toColAfter = false;
+
+ if (!this.touchMove) {
+ document.body.removeEventListener("mousemove", this.moveHover);
+ document.body.removeEventListener("mouseup", this.endMove);
+ }
+ }
+};
+
+MoveColumns.prototype.moveHover = function (e) {
+ var self = this,
+ columnHolder = self.table.columnManager.getElement(),
+ scrollLeft = columnHolder.scrollLeft,
+ xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
+ scrollPos;
+
+ self.hoverElement.style.left = xPos - self.startX + "px";
+
+ if (xPos - scrollLeft < self.autoScrollMargin) {
+ if (!self.autoScrollTimeout) {
+ self.autoScrollTimeout = setTimeout(function () {
+ scrollPos = Math.max(0, scrollLeft - 5);
+ self.table.rowManager.getElement().scrollLeft = scrollPos;
+ self.autoScrollTimeout = false;
+ }, 1);
+ }
+ }
+
+ if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
+ if (!self.autoScrollTimeout) {
+ self.autoScrollTimeout = setTimeout(function () {
+ scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
+ self.table.rowManager.getElement().scrollLeft = scrollPos;
+ self.autoScrollTimeout = false;
+ }, 1);
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("moveColumn", MoveColumns);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var MoveColumns=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};MoveColumns.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-col"),e.classList.add("tabulator-col-placeholder"),e},MoveColumns.prototype.initializeColumn=function(e){var t,o=this,n={};e.modules.frozen||(t=e.getElement(),n.mousemove=function(n){e.parent===o.moving.parent&&((o.touchMove?n.touches[0].pageX:n.pageX)-Tabulator.prototype.helpers.elOffset(t).left+o.table.columnManager.element.scrollLeft>e.getWidth()/2?o.toCol===e&&o.toColAfter||(t.parentNode.insertBefore(o.placeholderElement,t.nextSibling),o.moveColumn(e,!0)):(o.toCol!==e||o.toColAfter)&&(t.parentNode.insertBefore(o.placeholderElement,t),o.moveColumn(e,!1)))}.bind(o),t.addEventListener("mousedown",function(t){o.touchMove=!1,1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(e)),e.modules.moveColumn=n},MoveColumns.prototype.bindTouchEvents=function(e){var t,o,n,l,i,s,m,r=this,u=e.getElement(),h=!1;u.addEventListener("touchstart",function(u){r.checkTimeout=setTimeout(function(){r.touchMove=!0,t=e,o=e.nextColumn(),l=o?o.getWidth()/2:0,n=e.prevColumn(),i=n?n.getWidth()/2:0,s=0,m=0,h=!1,r.startMove(u,e)},r.checkPeriod)},{passive:!0}),u.addEventListener("touchmove",function(u){var a,c;r.moving&&(r.moveHover(u),h||(h=u.touches[0].pageX),a=u.touches[0].pageX-h,a>0?o&&a-s>l&&(c=o)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement().nextSibling),r.moveColumn(c,!0)):n&&-a-m>i&&(c=n)!==e&&(h=u.touches[0].pageX,c.getElement().parentNode.insertBefore(r.placeholderElement,c.getElement()),r.moveColumn(c,!1)),c&&(t=c,o=c.nextColumn(),s=l,l=o?o.getWidth()/2:0,n=c.prevColumn(),m=i,i=n?n.getWidth()/2:0))},{passive:!0}),u.addEventListener("touchend",function(e){r.checkTimeout&&clearTimeout(r.checkTimeout),r.moving&&r.endMove(e)})},MoveColumns.prototype.startMove=function(e,t){var o=t.getElement();this.moving=t,this.startX=(this.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(e)},MoveColumns.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().addEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(e){e.modules.moveColumn.mousemove&&e.getElement().removeEventListener("mousemove",e.modules.moveColumn.mousemove)})},MoveColumns.prototype.moveColumn=function(e,t){var o=this.moving.getCells();this.toCol=e,this.toColAfter=t,t?e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n.nextSibling)}):e.getCells().forEach(function(e,t){var n=e.getElement();n.parentNode.insertBefore(o[t].getElement(),n)})},MoveColumns.prototype.endMove=function(e){(1===e.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},MoveColumns.prototype.moveHover=function(e){var t,o=this,n=o.table.columnManager.getElement(),l=n.scrollLeft,i=(o.touchMove?e.touches[0].pageX:e.pageX)-Tabulator.prototype.helpers.elOffset(n).left+l;o.hoverElement.style.left=i-o.startX+"px",i-l<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.max(0,l-5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1))),l+n.clientWidth-i<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){t=Math.min(n.clientWidth,l+5),o.table.rowManager.getElement().scrollLeft=t,o.autoScrollTimeout=!1},1)))},Tabulator.prototype.registerModule("moveColumn",MoveColumns);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var MoveRows = function MoveRows(table) {
+
+ this.table = table; //hold Tabulator object
+ this.placeholderElement = this.createPlaceholderElement();
+ this.hoverElement = false; //floating row header element
+ this.checkTimeout = false; //click check timeout holder
+ this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
+ this.moving = false; //currently moving row
+ this.toRow = false; //destination row
+ this.toRowAfter = false; //position of moving row relative to the desitnation row
+ this.hasHandle = false; //row has handle instead of fully movable row
+ this.startY = 0; //starting Y position within header element
+ this.startX = 0; //starting X position within header element
+
+ this.moveHover = this.moveHover.bind(this);
+ this.endMove = this.endMove.bind(this);
+ this.tableRowDropEvent = false;
+
+ this.touchMove = false;
+
+ this.connection = false;
+ this.connections = [];
+
+ this.connectedTable = false;
+ this.connectedRow = false;
+};
+
+MoveRows.prototype.createPlaceholderElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-row");
+ el.classList.add("tabulator-row-placeholder");
+
+ return el;
+};
+
+MoveRows.prototype.initialize = function (handle) {
+ this.connection = this.table.options.movableRowsConnectedTables;
+};
+
+MoveRows.prototype.setHandle = function (handle) {
+ this.hasHandle = handle;
+};
+
+MoveRows.prototype.initializeGroupHeader = function (group) {
+ var self = this,
+ config = {},
+ rowEl;
+
+ //inter table drag drop
+ config.mouseup = function (e) {
+ self.tableRowDrop(e, row);
+ }.bind(self);
+
+ //same table drag drop
+ config.mousemove = function (e) {
+ if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
+ if (self.toRow !== group || !self.toRowAfter) {
+ var rowEl = group.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+ self.moveRow(group, true);
+ }
+ } else {
+ if (self.toRow !== group || self.toRowAfter) {
+ var rowEl = group.getElement();
+ if (rowEl.previousSibling) {
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+ self.moveRow(group, false);
+ }
+ }
+ }
+ }.bind(self);
+
+ group.modules.moveRow = config;
+};
+
+MoveRows.prototype.initializeRow = function (row) {
+ var self = this,
+ config = {},
+ rowEl;
+
+ //inter table drag drop
+ config.mouseup = function (e) {
+ self.tableRowDrop(e, row);
+ }.bind(self);
+
+ //same table drag drop
+ config.mousemove = function (e) {
+ if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
+ if (self.toRow !== row || !self.toRowAfter) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+ self.moveRow(row, true);
+ }
+ } else {
+ if (self.toRow !== row || self.toRowAfter) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+ self.moveRow(row, false);
+ }
+ }
+ }.bind(self);
+
+ if (!this.hasHandle) {
+
+ rowEl = row.getElement();
+
+ rowEl.addEventListener("mousedown", function (e) {
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, row);
+ }, self.checkPeriod);
+ }
+ });
+
+ rowEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ this.bindTouchEvents(row, row.getElement());
+ }
+
+ row.modules.moveRow = config;
+};
+
+MoveRows.prototype.initializeCell = function (cell) {
+ var self = this,
+ cellEl = cell.getElement();
+
+ cellEl.addEventListener("mousedown", function (e) {
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, cell.row);
+ }, self.checkPeriod);
+ }
+ });
+
+ cellEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ this.bindTouchEvents(cell.row, cell.getElement());
+};
+
+MoveRows.prototype.bindTouchEvents = function (row, element) {
+ var self = this,
+ startYMove = false,
+ //shifting center position of the cell
+ dir = false,
+ currentRow,
+ nextRow,
+ prevRow,
+ nextRowHeight,
+ prevRowHeight,
+ nextRowHeightLast,
+ prevRowHeightLast;
+
+ element.addEventListener("touchstart", function (e) {
+ self.checkTimeout = setTimeout(function () {
+ self.touchMove = true;
+ currentRow = row;
+ nextRow = row.nextRow();
+ nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+ prevRow = row.prevRow();
+ prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+ nextRowHeightLast = 0;
+ prevRowHeightLast = 0;
+ startYMove = false;
+
+ self.startMove(e, row);
+ }, self.checkPeriod);
+ }, { passive: true });
+ this.moving, this.toRow, this.toRowAfter;
+ element.addEventListener("touchmove", function (e) {
+
+ var halfCol, diff, moveToRow;
+
+ if (self.moving) {
+ e.preventDefault();
+
+ self.moveHover(e);
+
+ if (!startYMove) {
+ startYMove = e.touches[0].pageY;
+ }
+
+ diff = e.touches[0].pageY - startYMove;
+
+ if (diff > 0) {
+ if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
+ moveToRow = nextRow;
+
+ if (moveToRow !== row) {
+ startYMove = e.touches[0].pageY;
+ moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
+ self.moveRow(moveToRow, true);
+ }
+ }
+ } else {
+ if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
+ moveToRow = prevRow;
+
+ if (moveToRow !== row) {
+ startYMove = e.touches[0].pageY;
+ moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
+ self.moveRow(moveToRow, false);
+ }
+ }
+ }
+
+ if (moveToRow) {
+ currentRow = moveToRow;
+ nextRow = moveToRow.nextRow();
+ nextRowHeightLast = nextRowHeight;
+ nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+ prevRow = moveToRow.prevRow();
+ prevRowHeightLast = prevRowHeight;
+ prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+ }
+ }
+ });
+
+ element.addEventListener("touchend", function (e) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ if (self.moving) {
+ self.endMove(e);
+ self.touchMove = false;
+ }
+ });
+};
+
+MoveRows.prototype._bindMouseMove = function () {
+ var self = this;
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+ row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
+ }
+ });
+};
+
+MoveRows.prototype._unbindMouseMove = function () {
+ var self = this;
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+ row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
+ }
+ });
+};
+
+MoveRows.prototype.startMove = function (e, row) {
+ var element = row.getElement();
+
+ this.setStartPosition(e, row);
+
+ this.moving = row;
+
+ this.table.element.classList.add("tabulator-block-select");
+
+ //create placeholder
+ this.placeholderElement.style.width = row.getWidth() + "px";
+ this.placeholderElement.style.height = row.getHeight() + "px";
+
+ if (!this.connection) {
+ element.parentNode.insertBefore(this.placeholderElement, element);
+ element.parentNode.removeChild(element);
+ } else {
+ this.table.element.classList.add("tabulator-movingrow-sending");
+ this.connectToTables(row);
+ }
+
+ //create hover element
+ this.hoverElement = element.cloneNode(true);
+ this.hoverElement.classList.add("tabulator-moving");
+
+ if (this.connection) {
+ document.body.appendChild(this.hoverElement);
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.top = "0";
+ this.hoverElement.style.width = this.table.element.clientWidth + "px";
+ this.hoverElement.style.whiteSpace = "nowrap";
+ this.hoverElement.style.overflow = "hidden";
+ this.hoverElement.style.pointerEvents = "none";
+ } else {
+ this.table.rowManager.getTableElement().appendChild(this.hoverElement);
+
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.top = "0";
+
+ this._bindMouseMove();
+ }
+
+ document.body.addEventListener("mousemove", this.moveHover);
+ document.body.addEventListener("mouseup", this.endMove);
+
+ this.moveHover(e);
+};
+
+MoveRows.prototype.setStartPosition = function (e, row) {
+ var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
+ pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
+ element,
+ position;
+
+ element = row.getElement();
+ if (this.connection) {
+ position = element.getBoundingClientRect();
+
+ this.startX = position.left - pageX + window.pageXOffset;
+ this.startY = position.top - pageY + window.pageYOffset;
+ } else {
+ this.startY = pageY - element.getBoundingClientRect().top;
+ }
+};
+
+MoveRows.prototype.endMove = function (e) {
+ if (!e || e.which === 1 || this.touchMove) {
+ this._unbindMouseMove();
+
+ if (!this.connection) {
+ this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
+ this.placeholderElement.parentNode.removeChild(this.placeholderElement);
+ }
+
+ this.hoverElement.parentNode.removeChild(this.hoverElement);
+
+ this.table.element.classList.remove("tabulator-block-select");
+
+ if (this.toRow) {
+ this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
+ }
+
+ this.moving = false;
+ this.toRow = false;
+ this.toRowAfter = false;
+
+ document.body.removeEventListener("mousemove", this.moveHover);
+ document.body.removeEventListener("mouseup", this.endMove);
+
+ if (this.connection) {
+ this.table.element.classList.remove("tabulator-movingrow-sending");
+ this.disconnectFromTables();
+ }
+ }
+};
+
+MoveRows.prototype.moveRow = function (row, after) {
+ this.toRow = row;
+ this.toRowAfter = after;
+};
+
+MoveRows.prototype.moveHover = function (e) {
+ if (this.connection) {
+ this.moveHoverConnections.call(this, e);
+ } else {
+ this.moveHoverTable.call(this, e);
+ }
+};
+
+MoveRows.prototype.moveHoverTable = function (e) {
+ var rowHolder = this.table.rowManager.getElement(),
+ scrollTop = rowHolder.scrollTop,
+ yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
+ scrollPos;
+
+ this.hoverElement.style.top = yPos - this.startY + "px";
+};
+
+MoveRows.prototype.moveHoverConnections = function (e) {
+ this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
+ this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
+};
+
+//establish connection with other tables
+MoveRows.prototype.connectToTables = function (row) {
+ var self = this,
+ connections = this.table.modules.comms.getConnections(this.connection);
+
+ this.table.options.movableRowsSendingStart.call(this.table, connections);
+
+ this.table.modules.comms.send(this.connection, "moveRow", "connect", {
+ row: row
+ });
+};
+
+//disconnect from other tables
+MoveRows.prototype.disconnectFromTables = function () {
+ var self = this,
+ connections = this.table.modules.comms.getConnections(this.connection);
+
+ this.table.options.movableRowsSendingStop.call(this.table, connections);
+
+ this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
+};
+
+//accept incomming connection
+MoveRows.prototype.connect = function (table, row) {
+ var self = this;
+ if (!this.connectedTable) {
+ this.connectedTable = table;
+ this.connectedRow = row;
+
+ this.table.element.classList.add("tabulator-movingrow-receiving");
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+ row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
+ }
+ });
+
+ self.tableRowDropEvent = self.tableRowDrop.bind(self);
+
+ self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
+
+ this.table.options.movableRowsReceivingStart.call(this.table, row, table);
+
+ return true;
+ } else {
+ console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
+ return false;
+ }
+};
+
+//close incomming connection
+MoveRows.prototype.disconnect = function (table) {
+ var self = this;
+ if (table === this.connectedTable) {
+ this.connectedTable = false;
+ this.connectedRow = false;
+
+ this.table.element.classList.remove("tabulator-movingrow-receiving");
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+ row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
+ }
+ });
+
+ self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
+
+ this.table.options.movableRowsReceivingStop.call(this.table, table);
+ } else {
+ console.warn("Move Row Error - trying to disconnect from non connected table");
+ }
+};
+
+MoveRows.prototype.dropComplete = function (table, row, success) {
+ var sender = false;
+
+ if (success) {
+
+ switch (_typeof(this.table.options.movableRowsSender)) {
+ case "string":
+ sender = this.senders[this.table.options.movableRowsSender];
+ break;
+
+ case "function":
+ sender = this.table.options.movableRowsSender;
+ break;
+ }
+
+ if (sender) {
+ sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ } else {
+ if (this.table.options.movableRowsSender) {
+ console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
+ }
+ }
+
+ this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ } else {
+ this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ }
+
+ this.endMove();
+};
+
+MoveRows.prototype.tableRowDrop = function (e, row) {
+ var receiver = false,
+ success = false;
+
+ e.stopImmediatePropagation();
+
+ switch (_typeof(this.table.options.movableRowsReceiver)) {
+ case "string":
+ receiver = this.receivers[this.table.options.movableRowsReceiver];
+ break;
+
+ case "function":
+ receiver = this.table.options.movableRowsReceiver;
+ break;
+ }
+
+ if (receiver) {
+ success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ } else {
+ console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
+ }
+
+ if (success) {
+ this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ } else {
+ this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ }
+
+ this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
+ row: row,
+ success: success
+ });
+};
+
+MoveRows.prototype.receivers = {
+ insert: function insert(fromRow, toRow, fromTable) {
+ this.table.addRow(fromRow.getData(), undefined, toRow);
+ return true;
+ },
+
+ add: function add(fromRow, toRow, fromTable) {
+ this.table.addRow(fromRow.getData());
+ return true;
+ },
+
+ update: function update(fromRow, toRow, fromTable) {
+ if (toRow) {
+ toRow.update(fromRow.getData());
+ return true;
+ }
+
+ return false;
+ },
+
+ replace: function replace(fromRow, toRow, fromTable) {
+ if (toRow) {
+ this.table.addRow(fromRow.getData(), undefined, toRow);
+ toRow.delete();
+ return true;
+ }
+
+ return false;
+ }
+};
+
+MoveRows.prototype.senders = {
+ delete: function _delete(fromRow, toRow, toTable) {
+ fromRow.delete();
+ }
+};
+
+MoveRows.prototype.commsReceived = function (table, action, data) {
+ switch (action) {
+ case "connect":
+ return this.connect(table, data.row);
+ break;
+
+ case "disconnect":
+ return this.disconnect(table);
+ break;
+
+ case "dropcomplete":
+ return this.dropComplete(table, data.row, data.success);
+ break;
+ }
+};
+
+Tabulator.prototype.registerModule("moveRow", MoveRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},MoveRows=function(e){this.table=e,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};MoveRows.prototype.createPlaceholderElement=function(){var e=document.createElement("div");return e.classList.add("tabulator-row"),e.classList.add("tabulator-row-placeholder"),e},MoveRows.prototype.initialize=function(e){this.connection=this.table.options.movableRowsConnectedTables},MoveRows.prototype.setHandle=function(e){this.hasHandle=e},MoveRows.prototype.initializeGroupHeader=function(e){var t=this,o={};o.mouseup=function(e){t.tableRowDrop(e,row)}.bind(t),o.mousemove=function(o){if(o.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+t.table.rowManager.element.scrollTop>e.getHeight()/2){if(t.toRow!==e||!t.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(t.placeholderElement,n.nextSibling),t.moveRow(e,!0)}}else if(t.toRow!==e||t.toRowAfter){var n=e.getElement();n.previousSibling&&(n.parentNode.insertBefore(t.placeholderElement,n),t.moveRow(e,!1))}}.bind(t),e.modules.moveRow=o},MoveRows.prototype.initializeRow=function(e){var t,o=this,n={};n.mouseup=function(t){o.tableRowDrop(t,e)}.bind(o),n.mousemove=function(t){if(t.pageY-Tabulator.prototype.helpers.elOffset(e.element).top+o.table.rowManager.element.scrollTop>e.getHeight()/2){if(o.toRow!==e||!o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n.nextSibling),o.moveRow(e,!0)}}else if(o.toRow!==e||o.toRowAfter){var n=e.getElement();n.parentNode.insertBefore(o.placeholderElement,n),o.moveRow(e,!1)}}.bind(o),this.hasHandle||(t=e.getElement(),t.addEventListener("mousedown",function(t){1===t.which&&(o.checkTimeout=setTimeout(function(){o.startMove(t,e)},o.checkPeriod))}),t.addEventListener("mouseup",function(e){1===e.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(e,e.getElement())),e.modules.moveRow=n},MoveRows.prototype.initializeCell=function(e){var t=this,o=e.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(t.checkTimeout=setTimeout(function(){t.startMove(o,e.row)},t.checkPeriod))}),o.addEventListener("mouseup",function(e){1===e.which&&t.checkTimeout&&clearTimeout(t.checkTimeout)}),this.bindTouchEvents(e.row,e.getElement())},MoveRows.prototype.bindTouchEvents=function(e,t){var o,n,i,s,l,r,a,c=this,h=!1;t.addEventListener("touchstart",function(t){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=e,n=e.nextRow(),s=n?n.getHeight()/2:0,i=e.prevRow(),l=i?i.getHeight()/2:0,r=0,a=0,h=!1,c.startMove(t,e)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,t.addEventListener("touchmove",function(t){var m,v;c.moving&&(t.preventDefault(),c.moveHover(t),h||(h=t.touches[0].pageY),m=t.touches[0].pageY-h,m>0?n&&m-r>s&&(v=n)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement().nextSibling),c.moveRow(v,!0)):i&&-m-a>l&&(v=i)!==e&&(h=t.touches[0].pageY,v.getElement().parentNode.insertBefore(c.placeholderElement,v.getElement()),c.moveRow(v,!1)),v&&(o=v,n=v.nextRow(),r=s,s=n?n.getHeight()/2:0,i=v.prevRow(),a=l,l=i?i.getHeight()/2:0))}),t.addEventListener("touchend",function(e){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(e),c.touchMove=!1)})},MoveRows.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().addEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(e){"row"!==e.type&&"group"!==e.type||!e.modules.moveRow.mousemove||e.getElement().removeEventListener("mousemove",e.modules.moveRow.mousemove)})},MoveRows.prototype.startMove=function(e,t){var o=t.getElement();this.setStartPosition(e,t),this.moving=t,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=t.getWidth()+"px",this.placeholderElement.style.height=t.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(t)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(e)},MoveRows.prototype.setStartPosition=function(e,t){var o,n,i=this.touchMove?e.touches[0].pageX:e.pageX,s=this.touchMove?e.touches[0].pageY:e.pageY;o=t.getElement(),this.connection?(n=o.getBoundingClientRect(),this.startX=n.left-i+window.pageXOffset,this.startY=n.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},MoveRows.prototype.endMove=function(e){e&&1!==e.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},MoveRows.prototype.moveRow=function(e,t){this.toRow=e,this.toRowAfter=t},MoveRows.prototype.moveHover=function(e){this.connection?this.moveHoverConnections.call(this,e):this.moveHoverTable.call(this,e)},MoveRows.prototype.moveHoverTable=function(e){var t=this.table.rowManager.getElement(),o=t.scrollTop,n=(this.touchMove?e.touches[0].pageY:e.pageY)-t.getBoundingClientRect().top+o;this.hoverElement.style.top=n-this.startY+"px"},MoveRows.prototype.moveHoverConnections=function(e){this.hoverElement.style.left=this.startX+(this.touchMove?e.touches[0].pageX:e.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?e.touches[0].pageY:e.pageY)+"px"},MoveRows.prototype.connectToTables=function(e){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:e})},MoveRows.prototype.disconnectFromTables=function(){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},MoveRows.prototype.connect=function(e,t){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=e,this.connectedRow=t,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().addEventListener("mouseup",e.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,t,e),!0)},MoveRows.prototype.disconnect=function(e){var t=this;e===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&e.modules.moveRow&&e.modules.moveRow.mouseup&&e.getElement().removeEventListener("mouseup",e.modules.moveRow.mouseup)}),t.table.element.removeEventListener("mouseup",t.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,e)):console.warn("Move Row Error - trying to disconnect from non connected table")},MoveRows.prototype.dropComplete=function(e,t,o){var n=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":n=this.senders[this.table.options.movableRowsSender];break;case"function":n=this.table.options.movableRowsSender}n?n.call(this,this.moving.getComponent(),t?t.getComponent():void 0,e):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),t?t.getComponent():void 0,e);this.endMove()},MoveRows.prototype.tableRowDrop=function(e,t){var o=!1,n=!1;switch(e.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?n=o.call(this,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),n?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),t?t.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:t,success:n})},MoveRows.prototype.receivers={insert:function(e,t,o){return this.table.addRow(e.getData(),void 0,t),!0},add:function(e,t,o){return this.table.addRow(e.getData()),!0},update:function(e,t,o){return!!t&&(t.update(e.getData()),!0)},replace:function(e,t,o){return!!t&&(this.table.addRow(e.getData(),void 0,t),t.delete(),!0)}},MoveRows.prototype.senders={delete:function(e,t,o){e.delete()}},MoveRows.prototype.commsReceived=function(e,t,o){switch(t){case"connect":return this.connect(e,o.row);case"disconnect":return this.disconnect(e);case"dropcomplete":return this.dropComplete(e,o.row,o.success)}},Tabulator.prototype.registerModule("moveRow",MoveRows);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Mutator = function Mutator(table) {
+ this.table = table; //hold Tabulator object
+ this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
+ this.enabled = true;
+};
+
+//initialize column mutator
+Mutator.prototype.initializeColumn = function (column) {
+ var self = this,
+ match = false,
+ config = {};
+
+ this.allowedTypes.forEach(function (type) {
+ var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ mutator;
+
+ if (column.definition[key]) {
+ mutator = self.lookupMutator(column.definition[key]);
+
+ if (mutator) {
+ match = true;
+
+ config[key] = {
+ mutator: mutator,
+ params: column.definition[key + "Params"] || {}
+ };
+ }
+ }
+ });
+
+ if (match) {
+ column.modules.mutate = config;
+ }
+};
+
+Mutator.prototype.lookupMutator = function (value) {
+ var mutator = false;
+
+ //set column mutator
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "string":
+ if (this.mutators[value]) {
+ mutator = this.mutators[value];
+ } else {
+ console.warn("Mutator Error - No such mutator found, ignoring: ", value);
+ }
+ break;
+
+ case "function":
+ mutator = value;
+ break;
+ }
+
+ return mutator;
+};
+
+//apply mutator to row
+Mutator.prototype.transformRow = function (data, type, update) {
+ var self = this,
+ key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ value;
+
+ if (this.enabled) {
+
+ self.table.columnManager.traverse(function (column) {
+ var mutator, params, component;
+
+ if (column.modules.mutate) {
+ mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
+
+ if (mutator) {
+ value = column.getFieldValue(data);
+
+ if (!update || update && typeof value !== "undefined") {
+ component = column.getComponent();
+ params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
+ column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
+ }
+ }
+ }
+ });
+ }
+
+ return data;
+};
+
+//apply mutator to new cell value
+Mutator.prototype.transformCell = function (cell, value) {
+ var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+
+ if (mutator) {
+ return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+ } else {
+ return value;
+ }
+};
+
+Mutator.prototype.enable = function () {
+ this.enabled = true;
+};
+
+Mutator.prototype.disable = function () {
+ this.enabled = false;
+};
+
+//default mutators
+Mutator.prototype.mutators = {};
+
+Tabulator.prototype.registerModule("mutator", Mutator);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Mutator=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};Mutator.prototype.initializeColumn=function(t){var o=this,e=!1,a={};this.allowedTypes.forEach(function(r){var u,n="mutator"+(r.charAt(0).toUpperCase()+r.slice(1));t.definition[n]&&(u=o.lookupMutator(t.definition[n]))&&(e=!0,a[n]={mutator:u,params:t.definition[n+"Params"]||{}})}),e&&(t.modules.mutate=a)},Mutator.prototype.lookupMutator=function(t){var o=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?o=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":o=t}return o},Mutator.prototype.transformRow=function(t,o,e){var a,r=this,u="mutator"+(o.charAt(0).toUpperCase()+o.slice(1));return this.enabled&&r.table.columnManager.traverse(function(r){var n,i,s;r.modules.mutate&&(n=r.modules.mutate[u]||r.modules.mutate.mutator||!1)&&(a=r.getFieldValue(t),(!e||e&&void 0!==a)&&(s=r.getComponent(),i="function"==typeof n.params?n.params(a,t,o,s):n.params,r.setFieldValue(t,n.mutator(a,t,o,i,s))))}),t},Mutator.prototype.transformCell=function(t,o){var e=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return e?e.mutator(o,t.row.getData(),"edit",e.params,t.getComponent()):o},Mutator.prototype.enable=function(){this.enabled=!0},Mutator.prototype.disable=function(){this.enabled=!1},Mutator.prototype.mutators={},Tabulator.prototype.registerModule("mutator",Mutator);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Page = function Page(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.mode = "local";
+ this.progressiveLoad = false;
+
+ this.size = 0;
+ this.page = 1;
+ this.count = 5;
+ this.max = 1;
+
+ this.displayIndex = 0; //index in display pipeline
+
+ this.pageSizes = [];
+
+ this.createElements();
+};
+
+Page.prototype.createElements = function () {
+
+ var button;
+
+ this.element = document.createElement("span");
+ this.element.classList.add("tabulator-paginator");
+
+ this.pagesElement = document.createElement("span");
+ this.pagesElement.classList.add("tabulator-pages");
+
+ button = document.createElement("button");
+ button.classList.add("tabulator-page");
+ button.setAttribute("type", "button");
+ button.setAttribute("role", "button");
+ button.setAttribute("aria-label", "");
+ button.setAttribute("title", "");
+
+ this.firstBut = button.cloneNode(true);
+ this.firstBut.setAttribute("data-page", "first");
+
+ this.prevBut = button.cloneNode(true);
+ this.prevBut.setAttribute("data-page", "prev");
+
+ this.nextBut = button.cloneNode(true);
+ this.nextBut.setAttribute("data-page", "next");
+
+ this.lastBut = button.cloneNode(true);
+ this.lastBut.setAttribute("data-page", "last");
+
+ if (this.table.options.paginationSizeSelector) {
+ this.pageSizeSelect = document.createElement("select");
+ this.pageSizeSelect.classList.add("tabulator-page-size");
+ }
+};
+
+Page.prototype.generatePageSizeSelectList = function () {
+ var _this = this;
+
+ var pageSizes = [];
+
+ if (this.pageSizeSelect) {
+
+ if (Array.isArray(this.table.options.paginationSizeSelector)) {
+ pageSizes = this.table.options.paginationSizeSelector;
+ this.pageSizes = pageSizes;
+
+ if (this.pageSizes.indexOf(this.size) == -1) {
+ pageSizes.unshift(this.size);
+ }
+ } else {
+
+ if (this.pageSizes.indexOf(this.size) == -1) {
+ pageSizes = [];
+
+ for (var i = 1; i < 5; i++) {
+ pageSizes.push(this.size * i);
+ }
+
+ this.pageSizes = pageSizes;
+ } else {
+ pageSizes = this.pageSizes;
+ }
+ }
+
+ while (this.pageSizeSelect.firstChild) {
+ this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
+ }pageSizes.forEach(function (item) {
+ var itemEl = document.createElement("option");
+ itemEl.value = item;
+ itemEl.innerHTML = item;
+
+ _this.pageSizeSelect.appendChild(itemEl);
+ });
+
+ this.pageSizeSelect.value = this.size;
+ }
+};
+
+//setup pageination
+Page.prototype.initialize = function (hidden) {
+ var self = this,
+ pageSelectLabel;
+
+ //update param names
+ for (var key in self.table.options.paginationDataSent) {
+ self.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];
+ }
+
+ for (var _key in self.table.options.paginationDataReceived) {
+ self.paginationDataReceivedNames[_key] = self.table.options.paginationDataReceived[_key];
+ }
+
+ //build pagination element
+
+ //bind localizations
+ self.table.modules.localize.bind("pagination|first", function (value) {
+ self.firstBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|first_title", function (value) {
+ self.firstBut.setAttribute("aria-label", value);
+ self.firstBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|prev", function (value) {
+ self.prevBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|prev_title", function (value) {
+ self.prevBut.setAttribute("aria-label", value);
+ self.prevBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|next", function (value) {
+ self.nextBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|next_title", function (value) {
+ self.nextBut.setAttribute("aria-label", value);
+ self.nextBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|last", function (value) {
+ self.lastBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|last_title", function (value) {
+ self.lastBut.setAttribute("aria-label", value);
+ self.lastBut.setAttribute("title", value);
+ });
+
+ //click bindings
+ self.firstBut.addEventListener("click", function () {
+ self.setPage(1);
+ });
+
+ self.prevBut.addEventListener("click", function () {
+ self.previousPage();
+ });
+
+ self.nextBut.addEventListener("click", function () {
+ self.nextPage().then(function () {}).catch(function () {});
+ });
+
+ self.lastBut.addEventListener("click", function () {
+ self.setPage(self.max);
+ });
+
+ if (self.table.options.paginationElement) {
+ self.element = self.table.options.paginationElement;
+ }
+
+ if (this.pageSizeSelect) {
+ pageSelectLabel = document.createElement("label");
+
+ self.table.modules.localize.bind("pagination|page_size", function (value) {
+ self.pageSizeSelect.setAttribute("aria-label", value);
+ self.pageSizeSelect.setAttribute("title", value);
+ pageSelectLabel.innerHTML = value;
+ });
+
+ self.element.appendChild(pageSelectLabel);
+ self.element.appendChild(self.pageSizeSelect);
+
+ self.pageSizeSelect.addEventListener("change", function (e) {
+ self.setPageSize(self.pageSizeSelect.value);
+ self.setPage(1).then(function () {}).catch(function () {});
+ });
+ }
+
+ //append to DOM
+ self.element.appendChild(self.firstBut);
+ self.element.appendChild(self.prevBut);
+ self.element.appendChild(self.pagesElement);
+ self.element.appendChild(self.nextBut);
+ self.element.appendChild(self.lastBut);
+
+ if (!self.table.options.paginationElement && !hidden) {
+ self.table.footerManager.append(self.element, self);
+ }
+
+ //set default values
+ self.mode = self.table.options.pagination;
+ self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+ self.count = self.table.options.paginationButtonCount;
+
+ self.generatePageSizeSelectList();
+};
+
+Page.prototype.initializeProgressive = function (mode) {
+ this.initialize(true);
+ this.mode = "progressive_" + mode;
+ this.progressiveLoad = true;
+};
+
+Page.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+};
+
+Page.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+};
+
+//calculate maximum page from number of rows
+Page.prototype.setMaxRows = function (rowCount) {
+ if (!rowCount) {
+ this.max = 1;
+ } else {
+ this.max = Math.ceil(rowCount / this.size);
+ }
+
+ if (this.page > this.max) {
+ this.page = this.max;
+ }
+};
+
+//reset to first page without triggering action
+Page.prototype.reset = function (force) {
+ if (this.mode == "local" || force) {
+ this.page = 1;
+ }
+ return true;
+};
+
+//set the maxmum page
+Page.prototype.setMaxPage = function (max) {
+
+ max = parseInt(max);
+
+ this.max = max || 1;
+
+ if (this.page > this.max) {
+ this.page = this.max;
+ this.trigger();
+ }
+};
+
+//set current page number
+Page.prototype.setPage = function (page) {
+ var _this2 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ page = parseInt(page);
+
+ if (page > 0 && page <= _this2.max) {
+ _this2.page = page;
+ _this2.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Requested page is out of range of 1 - " + _this2.max + ":", page);
+ reject();
+ }
+ });
+};
+
+Page.prototype.setPageToRow = function (row) {
+ var _this3 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var rows = _this3.table.rowManager.getDisplayRows(_this3.displayIndex - 1);
+ var index = rows.indexOf(row);
+
+ if (index > -1) {
+ var page = Math.ceil((index + 1) / _this3.size);
+
+ _this3.setPage(page).then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Requested row is not visible");
+ reject();
+ }
+ });
+};
+
+Page.prototype.setPageSize = function (size) {
+ size = parseInt(size);
+
+ if (size > 0) {
+ this.size = size;
+ }
+
+ if (this.pageSizeSelect) {
+ // this.pageSizeSelect.value = size;
+ this.generatePageSizeSelectList();
+ }
+};
+
+//setup the pagination buttons
+Page.prototype._setPageButtons = function () {
+ var self = this;
+
+ var leftSize = Math.floor((this.count - 1) / 2);
+ var rightSize = Math.ceil((this.count - 1) / 2);
+ var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
+ var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
+
+ while (self.pagesElement.firstChild) {
+ self.pagesElement.removeChild(self.pagesElement.firstChild);
+ }if (self.page == 1) {
+ self.firstBut.disabled = true;
+ self.prevBut.disabled = true;
+ } else {
+ self.firstBut.disabled = false;
+ self.prevBut.disabled = false;
+ }
+
+ if (self.page == self.max) {
+ self.lastBut.disabled = true;
+ self.nextBut.disabled = true;
+ } else {
+ self.lastBut.disabled = false;
+ self.nextBut.disabled = false;
+ }
+
+ for (var i = min; i <= max; i++) {
+ if (i > 0 && i <= self.max) {
+ self.pagesElement.appendChild(self._generatePageButton(i));
+ }
+ }
+
+ this.footerRedraw();
+};
+
+Page.prototype._generatePageButton = function (page) {
+ var self = this,
+ button = document.createElement("button");
+
+ button.classList.add("tabulator-page");
+ if (page == self.page) {
+ button.classList.add("active");
+ }
+
+ button.setAttribute("type", "button");
+ button.setAttribute("role", "button");
+ button.setAttribute("aria-label", "Show Page " + page);
+ button.setAttribute("title", "Show Page " + page);
+ button.setAttribute("data-page", page);
+ button.textContent = page;
+
+ button.addEventListener("click", function (e) {
+ self.setPage(page);
+ });
+
+ return button;
+};
+
+//previous page
+Page.prototype.previousPage = function () {
+ var _this4 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this4.page > 1) {
+ _this4.page--;
+ _this4.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Previous page would be less than page 1:", 0);
+ reject();
+ }
+ });
+};
+
+//next page
+Page.prototype.nextPage = function () {
+ var _this5 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this5.page < _this5.max) {
+ _this5.page++;
+ _this5.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ if (!_this5.progressiveLoad) {
+ console.warn("Pagination Error - Next page would be greater than maximum page of " + _this5.max + ":", _this5.max + 1);
+ }
+ reject();
+ }
+ });
+};
+
+//return current page number
+Page.prototype.getPage = function () {
+ return this.page;
+};
+
+//return max page number
+Page.prototype.getPageMax = function () {
+ return this.max;
+};
+
+Page.prototype.getPageSize = function (size) {
+ return this.size;
+};
+
+Page.prototype.getMode = function () {
+ return this.mode;
+};
+
+//return appropriate rows for current page
+Page.prototype.getRows = function (data) {
+ var output, start, end;
+
+ if (this.mode == "local") {
+ output = [];
+ start = this.size * (this.page - 1);
+ end = start + parseInt(this.size);
+
+ this._setPageButtons();
+
+ for (var i = start; i < end; i++) {
+ if (data[i]) {
+ output.push(data[i]);
+ }
+ }
+
+ return output;
+ } else {
+
+ this._setPageButtons();
+
+ return data.slice(0);
+ }
+};
+
+Page.prototype.trigger = function () {
+ var _this6 = this;
+
+ var left;
+
+ return new Promise(function (resolve, reject) {
+
+ switch (_this6.mode) {
+ case "local":
+ left = _this6.table.rowManager.scrollLeft;
+
+ _this6.table.rowManager.refreshActiveData("page");
+ _this6.table.rowManager.scrollHorizontal(left);
+
+ _this6.table.options.pageLoaded.call(_this6.table, _this6.getPage());
+ resolve();
+ break;
+
+ case "remote":
+ case "progressive_load":
+ case "progressive_scroll":
+ _this6.table.modules.ajax.blockActiveRequest();
+ _this6._getRemotePage().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ break;
+
+ default:
+ console.warn("Pagination Error - no such pagination mode:", _this6.mode);
+ reject();
+ }
+ });
+};
+
+Page.prototype._getRemotePage = function () {
+ var _this7 = this;
+
+ var self = this,
+ oldParams,
+ pageParams;
+
+ return new Promise(function (resolve, reject) {
+
+ if (!self.table.modExists("ajax", true)) {
+ reject();
+ }
+
+ //record old params and restore after request has been made
+ oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
+ pageParams = self.table.modules.ajax.getParams();
+
+ //configure request params
+ pageParams[_this7.paginationDataSentNames.page] = self.page;
+
+ //set page size if defined
+ if (_this7.size) {
+ pageParams[_this7.paginationDataSentNames.size] = _this7.size;
+ }
+
+ //set sort data if defined
+ if (_this7.table.options.ajaxSorting && _this7.table.modExists("sort")) {
+ var sorters = self.table.modules.sort.getSort();
+
+ sorters.forEach(function (item) {
+ delete item.column;
+ });
+
+ pageParams[_this7.paginationDataSentNames.sorters] = sorters;
+ }
+
+ //set filter data if defined
+ if (_this7.table.options.ajaxFiltering && _this7.table.modExists("filter")) {
+ var filters = self.table.modules.filter.getFilters(true, true);
+ pageParams[_this7.paginationDataSentNames.filters] = filters;
+ }
+
+ self.table.modules.ajax.setParams(pageParams);
+
+ self.table.modules.ajax.sendRequest(_this7.progressiveLoad).then(function (data) {
+ self._parseRemoteData(data);
+ resolve();
+ }).catch(function (e) {
+ reject();
+ });
+
+ self.table.modules.ajax.setParams(oldParams);
+ });
+};
+
+Page.prototype._parseRemoteData = function (data) {
+ var self = this,
+ left,
+ data,
+ margin;
+
+ if (typeof data[this.paginationDataReceivedNames.last_page] === "undefined") {
+ console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.last_page + "' property");
+ }
+
+ if (data[this.paginationDataReceivedNames.data]) {
+ this.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;
+
+ if (this.progressiveLoad) {
+ switch (this.mode) {
+ case "progressive_load":
+ this.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);
+ if (this.page < this.max) {
+ setTimeout(function () {
+ self.nextPage().then(function () {}).catch(function () {});
+ }, self.table.options.ajaxProgressiveLoadDelay);
+ }
+ break;
+
+ case "progressive_scroll":
+ data = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);
+
+ this.table.rowManager.setData(data, true);
+
+ margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
+
+ if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
+ self.nextPage().then(function () {}).catch(function () {});
+ }
+ break;
+ }
+ } else {
+ left = this.table.rowManager.scrollLeft;
+
+ this.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);
+
+ this.table.rowManager.scrollHorizontal(left);
+
+ this.table.columnManager.scrollHorizontal(left);
+
+ this.table.options.pageLoaded.call(this.table, this.getPage());
+ }
+ } else {
+ console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.data + "' property");
+ }
+};
+
+//handle the footer element being redrawn
+Page.prototype.footerRedraw = function () {
+ var footer = this.table.footerManager.element;
+
+ if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+ this.pagesElement.style.display = 'none';
+ } else {
+ this.pagesElement.style.display = '';
+
+ if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+ this.pagesElement.style.display = 'none';
+ }
+ }
+};
+
+//set the paramter names for pagination requests
+Page.prototype.paginationDataSentNames = {
+ "page": "page",
+ "size": "size",
+ "sorters": "sorters",
+ // "sort_dir":"sort_dir",
+ "filters": "filters"
+ // "filter_value":"filter_value",
+ // "filter_type":"filter_type",
+};
+
+//set the property names for pagination responses
+Page.prototype.paginationDataReceivedNames = {
+ "current_page": "current_page",
+ "last_page": "last_page",
+ "data": "data"
+};
+
+Tabulator.prototype.registerModule("page", Page);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var Page=function(e){this.table=e,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};Page.prototype.createElements=function(){var e;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),e=document.createElement("button"),e.classList.add("tabulator-page"),e.setAttribute("type","button"),e.setAttribute("role","button"),e.setAttribute("aria-label",""),e.setAttribute("title",""),this.firstBut=e.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=e.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=e.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=e.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},Page.prototype.generatePageSizeSelectList=function(){var e=this,t=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))t=this.table.options.paginationSizeSelector,this.pageSizes=t,-1==this.pageSizes.indexOf(this.size)&&t.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){t=[];for(var a=1;a<5;a++)t.push(this.size*a);this.pageSizes=t}else t=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);t.forEach(function(t){var a=document.createElement("option");a.value=t,a.innerHTML=t,e.pageSizeSelect.appendChild(a)}),this.pageSizeSelect.value=this.size}},Page.prototype.initialize=function(e){var t,a=this;for(var i in a.table.options.paginationDataSent)a.paginationDataSentNames[i]=a.table.options.paginationDataSent[i];for(var n in a.table.options.paginationDataReceived)a.paginationDataReceivedNames[n]=a.table.options.paginationDataReceived[n];a.table.modules.localize.bind("pagination|first",function(e){a.firstBut.innerHTML=e}),a.table.modules.localize.bind("pagination|first_title",function(e){a.firstBut.setAttribute("aria-label",e),a.firstBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|prev",function(e){a.prevBut.innerHTML=e}),a.table.modules.localize.bind("pagination|prev_title",function(e){a.prevBut.setAttribute("aria-label",e),a.prevBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|next",function(e){a.nextBut.innerHTML=e}),a.table.modules.localize.bind("pagination|next_title",function(e){a.nextBut.setAttribute("aria-label",e),a.nextBut.setAttribute("title",e)}),a.table.modules.localize.bind("pagination|last",function(e){a.lastBut.innerHTML=e}),a.table.modules.localize.bind("pagination|last_title",function(e){a.lastBut.setAttribute("aria-label",e),a.lastBut.setAttribute("title",e)}),a.firstBut.addEventListener("click",function(){a.setPage(1)}),a.prevBut.addEventListener("click",function(){a.previousPage()}),a.nextBut.addEventListener("click",function(){a.nextPage().then(function(){}).catch(function(){})}),a.lastBut.addEventListener("click",function(){a.setPage(a.max)}),a.table.options.paginationElement&&(a.element=a.table.options.paginationElement),this.pageSizeSelect&&(t=document.createElement("label"),a.table.modules.localize.bind("pagination|page_size",function(e){a.pageSizeSelect.setAttribute("aria-label",e),a.pageSizeSelect.setAttribute("title",e),t.innerHTML=e}),a.element.appendChild(t),a.element.appendChild(a.pageSizeSelect),a.pageSizeSelect.addEventListener("change",function(e){a.setPageSize(a.pageSizeSelect.value),a.setPage(1).then(function(){}).catch(function(){})})),a.element.appendChild(a.firstBut),a.element.appendChild(a.prevBut),a.element.appendChild(a.pagesElement),a.element.appendChild(a.nextBut),a.element.appendChild(a.lastBut),a.table.options.paginationElement||e||a.table.footerManager.append(a.element,a),a.mode=a.table.options.pagination,a.size=a.table.options.paginationSize||Math.floor(a.table.rowManager.getElement().clientHeight/24),a.count=a.table.options.paginationButtonCount,a.generatePageSizeSelectList()},Page.prototype.initializeProgressive=function(e){this.initialize(!0),this.mode="progressive_"+e,this.progressiveLoad=!0},Page.prototype.setDisplayIndex=function(e){this.displayIndex=e},Page.prototype.getDisplayIndex=function(){return this.displayIndex},Page.prototype.setMaxRows=function(e){this.max=e?Math.ceil(e/this.size):1,this.page>this.max&&(this.page=this.max)},Page.prototype.reset=function(e){return("local"==this.mode||e)&&(this.page=1),!0},Page.prototype.setMaxPage=function(e){e=parseInt(e),this.max=e||1,this.page>this.max&&(this.page=this.max,this.trigger())},Page.prototype.setPage=function(e){var t=this;return new Promise(function(a,i){e=parseInt(e),e>0&&e<=t.max?(t.page=e,t.trigger().then(function(){a()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+t.max+":",e),i())})},Page.prototype.setPageToRow=function(e){var t=this;return new Promise(function(a,i){var n=t.table.rowManager.getDisplayRows(t.displayIndex-1),s=n.indexOf(e);if(s>-1){var o=Math.ceil((s+1)/t.size);t.setPage(o).then(function(){a()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},Page.prototype.setPageSize=function(e){e=parseInt(e),e>0&&(this.size=e),this.pageSizeSelect&&this.generatePageSizeSelectList()},Page.prototype._setPageButtons=function(){for(var e=this,t=Math.floor((this.count-1)/2),a=Math.ceil((this.count-1)/2),i=this.max-this.page+t+1<this.count?this.max-this.count+1:Math.max(this.page-t,1),n=this.page<=a?Math.min(this.count,this.max):Math.min(this.page+a,this.max);e.pagesElement.firstChild;)e.pagesElement.removeChild(e.pagesElement.firstChild);1==e.page?(e.firstBut.disabled=!0,e.prevBut.disabled=!0):(e.firstBut.disabled=!1,e.prevBut.disabled=!1),e.page==e.max?(e.lastBut.disabled=!0,e.nextBut.disabled=!0):(e.lastBut.disabled=!1,e.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=e.max&&e.pagesElement.appendChild(e._generatePageButton(s));this.footerRedraw()},Page.prototype._generatePageButton=function(e){var t=this,a=document.createElement("button");return a.classList.add("tabulator-page"),e==t.page&&a.classList.add("active"),a.setAttribute("type","button"),a.setAttribute("role","button"),a.setAttribute("aria-label","Show Page "+e),a.setAttribute("title","Show Page "+e),a.setAttribute("data-page",e),a.textContent=e,a.addEventListener("click",function(a){t.setPage(e)}),a},Page.prototype.previousPage=function(){var e=this;return new Promise(function(t,a){e.page>1?(e.page--,e.trigger().then(function(){t()}).catch(function(){a()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),a())})},Page.prototype.nextPage=function(){var e=this;return new Promise(function(t,a){e.page<e.max?(e.page++,e.trigger().then(function(){t()}).catch(function(){a()})):(e.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+e.max+":",e.max+1),a())})},Page.prototype.getPage=function(){return this.page},Page.prototype.getPageMax=function(){return this.max},Page.prototype.getPageSize=function(e){return this.size},Page.prototype.getMode=function(){return this.mode},Page.prototype.getRows=function(e){var t,a,i;if("local"==this.mode){t=[],a=this.size*(this.page-1),i=a+parseInt(this.size),this._setPageButtons();for(var n=a;n<i;n++)e[n]&&t.push(e[n]);return t}return this._setPageButtons(),e.slice(0)},Page.prototype.trigger=function(){var e,t=this;return new Promise(function(a,i){switch(t.mode){case"local":e=t.table.rowManager.scrollLeft,t.table.rowManager.refreshActiveData("page"),t.table.rowManager.scrollHorizontal(e),t.table.options.pageLoaded.call(t.table,t.getPage()),a();break;case"remote":case"progressive_load":case"progressive_scroll":t.table.modules.ajax.blockActiveRequest(),t._getRemotePage().then(function(){a()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",t.mode),i()}})},Page.prototype._getRemotePage=function(){var e,t,a=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),e=Tabulator.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),t=i.table.modules.ajax.getParams(),t[a.paginationDataSentNames.page]=i.page,a.size&&(t[a.paginationDataSentNames.size]=a.size),a.table.options.ajaxSorting&&a.table.modExists("sort")){var o=i.table.modules.sort.getSort();o.forEach(function(e){delete e.column}),t[a.paginationDataSentNames.sorters]=o}if(a.table.options.ajaxFiltering&&a.table.modExists("filter")){var r=i.table.modules.filter.getFilters(!0,!0);t[a.paginationDataSentNames.filters]=r}i.table.modules.ajax.setParams(t),i.table.modules.ajax.sendRequest(a.progressiveLoad).then(function(e){i._parseRemoteData(e),n()}).catch(function(e){s()}),i.table.modules.ajax.setParams(e)})},Page.prototype._parseRemoteData=function(e){var t,e,a,i=this;if(void 0===e[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),e[this.paginationDataReceivedNames.data])if(this.max=parseInt(e[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(e[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":e=this.table.rowManager.getData().concat(e[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(e,!0),a=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+a&&i.nextPage().then(function(){}).catch(function(){})}else t=this.table.rowManager.scrollLeft,this.table.rowManager.setData(e[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(t),this.table.columnManager.scrollHorizontal(t),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},Page.prototype.footerRedraw=function(){var e=this.table.footerManager.element;Math.ceil(e.clientWidth)-e.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(e.clientWidth)-e.scrollWidth<0&&(this.pagesElement.style.display="none"))},Page.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},Page.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},Tabulator.prototype.registerModule("page",Page);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Persistence = function Persistence(table) {
+ this.table = table; //hold Tabulator object
+ this.mode = "";
+ this.id = "";
+ this.persistProps = ["field", "width", "visible"];
+};
+
+// Test for whether localStorage is available for use.
+Persistence.prototype.localStorageTest = function () {
+ var testKey = "_tabulator_test";
+
+ try {
+ window.localStorage.setItem(testKey, testKey);
+ window.localStorage.removeItem(testKey);
+ return true;
+ } catch (e) {
+ return false;
+ }
+};
+
+//setup parameters
+Persistence.prototype.initialize = function (mode, id) {
+ //determine persistent layout storage type
+
+ this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
+
+ //set storage tag
+ this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
+};
+
+//load saved definitions
+Persistence.prototype.load = function (type, current) {
+
+ var data = this.retreiveData(type);
+
+ if (current) {
+ data = data ? this.mergeDefinition(current, data) : current;
+ }
+
+ return data;
+};
+
+//retreive data from memory
+Persistence.prototype.retreiveData = function (type) {
+ var data = "",
+ id = this.id + (type === "columns" ? "" : "-" + type);
+
+ switch (this.mode) {
+ case "local":
+ data = localStorage.getItem(id);
+ break;
+
+ case "cookie":
+
+ //find cookie
+ var cookie = document.cookie,
+ cookiePos = cookie.indexOf(id + "="),
+ end = void 0;
+
+ //if cookie exists, decode and load column data into tabulator
+ if (cookiePos > -1) {
+ cookie = cookie.substr(cookiePos);
+
+ end = cookie.indexOf(";");
+
+ if (end > -1) {
+ cookie = cookie.substr(0, end);
+ }
+
+ data = cookie.replace(id + "=", "");
+ }
+ break;
+
+ default:
+ console.warn("Persistence Load Error - invalid mode selected", this.mode);
+ }
+
+ return data ? JSON.parse(data) : false;
+};
+
+//merge old and new column definitions
+Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
+ var self = this,
+ output = [];
+
+ // oldCols = oldCols || [];
+ newCols = newCols || [];
+
+ newCols.forEach(function (column, to) {
+
+ var from = self._findColumn(oldCols, column);
+
+ if (from) {
+
+ from.width = column.width;
+ from.visible = column.visible;
+
+ if (from.columns) {
+ from.columns = self.mergeDefinition(from.columns, column.columns);
+ }
+
+ output.push(from);
+ }
+ });
+ oldCols.forEach(function (column, i) {
+ var from = self._findColumn(newCols, column);
+ if (!from) {
+ if (output.length > i) {
+ output.splice(i, 0, column);
+ } else {
+ output.push(column);
+ }
+ }
+ });
+
+ return output;
+};
+
+//find matching columns
+Persistence.prototype._findColumn = function (columns, subject) {
+ var type = subject.columns ? "group" : subject.field ? "field" : "object";
+
+ return columns.find(function (col) {
+ switch (type) {
+ case "group":
+ return col.title === subject.title && col.columns.length === subject.columns.length;
+ break;
+
+ case "field":
+ return col.field === subject.field;
+ break;
+
+ case "object":
+ return col === subject;
+ break;
+ }
+ });
+};
+
+//save data
+Persistence.prototype.save = function (type) {
+ var data = {};
+
+ switch (type) {
+ case "columns":
+ data = this.parseColumns(this.table.columnManager.getColumns());
+ break;
+
+ case "filter":
+ data = this.table.modules.filter.getFilters();
+ break;
+
+ case "sort":
+ data = this.validateSorters(this.table.modules.sort.getSort());
+ break;
+ }
+
+ var id = this.id + (type === "columns" ? "" : "-" + type);
+
+ this.saveData(id, data);
+};
+
+//ensure sorters contain no function data
+Persistence.prototype.validateSorters = function (data) {
+ data.forEach(function (item) {
+ item.column = item.field;
+ delete item.field;
+ });
+
+ return data;
+};
+
+//save data to chosed medium
+Persistence.prototype.saveData = function (id, data) {
+
+ data = JSON.stringify(data);
+
+ switch (this.mode) {
+ case "local":
+ localStorage.setItem(id, data);
+ break;
+
+ case "cookie":
+ var expireDate = new Date();
+ expireDate.setDate(expireDate.getDate() + 10000);
+
+ //save cookie
+ document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
+ break;
+
+ default:
+ console.warn("Persistence Save Error - invalid mode selected", this.mode);
+ }
+};
+
+//build permission list
+Persistence.prototype.parseColumns = function (columns) {
+ var self = this,
+ definitions = [];
+
+ columns.forEach(function (column) {
+ var def = {};
+
+ if (column.isGroup) {
+ def.title = column.getDefinition().title;
+ def.columns = self.parseColumns(column.getColumns());
+ } else {
+ def.title = column.getDefinition().title;
+ def.field = column.getField();
+ def.width = column.getWidth();
+ def.visible = column.visible;
+ }
+
+ definitions.push(def);
+ });
+
+ return definitions;
+};
+
+Tabulator.prototype.registerModule("persistence", Persistence);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var Persistence=function(e){this.table=e,this.mode="",this.id="",this.persistProps=["field","width","visible"]};Persistence.prototype.localStorageTest=function(){var e="_tabulator_test";try{return window.localStorage.setItem(e,e),window.localStorage.removeItem(e),!0}catch(e){return!1}},Persistence.prototype.initialize=function(e,t){this.mode=!0!==e?e:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(t||this.table.element.getAttribute("id")||"")},Persistence.prototype.load=function(e,t){var i=this.retreiveData(e);return t&&(i=i?this.mergeDefinition(t,i):t),i},Persistence.prototype.retreiveData=function(e){var t="",i=this.id+("columns"===e?"":"-"+e);switch(this.mode){case"local":t=localStorage.getItem(i);break;case"cookie":var o=document.cookie,s=o.indexOf(i+"="),r=void 0;s>-1&&(o=o.substr(s),r=o.indexOf(";"),r>-1&&(o=o.substr(0,r)),t=o.replace(i+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!t&&JSON.parse(t)},Persistence.prototype.mergeDefinition=function(e,t){var i=this,o=[];return t=t||[],t.forEach(function(t,s){var r=i._findColumn(e,t);r&&(r.width=t.width,r.visible=t.visible,r.columns&&(r.columns=i.mergeDefinition(r.columns,t.columns)),o.push(r))}),e.forEach(function(e,s){i._findColumn(t,e)||(o.length>s?o.splice(s,0,e):o.push(e))}),o},Persistence.prototype._findColumn=function(e,t){var i=t.columns?"group":t.field?"field":"object";return e.find(function(e){switch(i){case"group":return e.title===t.title&&e.columns.length===t.columns.length;case"field":return e.field===t.field;case"object":return e===t}})},Persistence.prototype.save=function(e){var t={};switch(e){case"columns":t=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":t=this.table.modules.filter.getFilters();break;case"sort":t=this.validateSorters(this.table.modules.sort.getSort())}var i=this.id+("columns"===e?"":"-"+e);this.saveData(i,t)},Persistence.prototype.validateSorters=function(e){return e.forEach(function(e){e.column=e.field,delete e.field}),e},Persistence.prototype.saveData=function(e,t){switch(t=JSON.stringify(t),this.mode){case"local":localStorage.setItem(e,t);break;case"cookie":var i=new Date;i.setDate(i.getDate()+1e4),document.cookie=e+"="+t+"; expires="+i.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},Persistence.prototype.parseColumns=function(e){var t=this,i=[];return e.forEach(function(e){var o={};e.isGroup?(o.title=e.getDefinition().title,o.columns=t.parseColumns(e.getColumns())):(o.title=e.getDefinition().title,o.field=e.getField(),o.width=e.getWidth(),o.visible=e.visible),i.push(o)}),i},Tabulator.prototype.registerModule("persistence",Persistence);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Print = function Print(table) {
+ this.table = table; //hold Tabulator object
+ this.element = false;
+ this.manualBlock = false;
+};
+
+Print.prototype.initialize = function () {
+ window.addEventListener("beforeprint", this.replaceTable.bind(this));
+ window.addEventListener("afterprint", this.cleanup.bind(this));
+};
+
+Print.prototype.replaceTable = function () {
+ if (!this.manualBlock) {
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-print-table");
+
+ this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, "print"));
+
+ this.table.element.style.display = "none";
+
+ this.table.element.parentNode.insertBefore(this.element, this.table.element);
+ }
+};
+
+Print.prototype.cleanup = function () {
+ document.body.classList.remove("tabulator-print-fullscreen-hide");
+
+ if (this.element && this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ this.table.element.style.display = "";
+ }
+};
+
+Print.prototype.printFullscreen = function (visible, style, config) {
+ var scrollX = window.scrollX,
+ scrollY = window.scrollY,
+ headerEl = document.createElement("div"),
+ footerEl = document.createElement("div"),
+ tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printCopyStyle, visible, "print"),
+ headerContent,
+ footerContent;
+
+ this.manualBlock = true;
+
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-print-fullscreen");
+
+ if (this.table.options.printHeader) {
+ headerEl.classList.add("tabulator-print-header");
+
+ headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
+
+ if (typeof headerContent == "string") {
+ headerEl.innerHTML = headerContent;
+ } else {
+ headerEl.appendChild(headerContent);
+ }
+
+ this.element.appendChild(headerEl);
+ }
+
+ this.element.appendChild(tableEl);
+
+ if (this.table.options.printFooter) {
+ footerEl.classList.add("tabulator-print-footer");
+
+ footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
+
+ if (typeof footerContent == "string") {
+ footerEl.innerHTML = footerContent;
+ } else {
+ footerEl.appendChild(footerContent);
+ }
+
+ this.element.appendChild(footerEl);
+ }
+
+ document.body.classList.add("tabulator-print-fullscreen-hide");
+ document.body.appendChild(this.element);
+
+ if (this.table.options.printFormatter) {
+ this.table.options.printFormatter(this.element, tableEl);
+ }
+
+ window.print();
+
+ this.cleanup();
+
+ window.scrollTo(scrollX, scrollY);
+
+ this.manualBlock = false;
+};
+
+Tabulator.prototype.registerModule("print", Print);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var Print=function(t){this.table=t,this.element=!1,this.manualBlock=!1};Print.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},Print.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},Print.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},Print.prototype.printFullscreen=function(t,e,i){var n,l,o=window.scrollX,s=window.scrollY,a=document.createElement("div"),r=document.createElement("div"),p=this.table.modules.htmlTableExport.genereateTable(void 0!==i?i:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),n="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof n?a.innerHTML=n:a.appendChild(n),this.element.appendChild(a)),this.element.appendChild(p),this.table.options.printFooter&&(r.classList.add("tabulator-print-footer"),l="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof l?r.innerHTML=l:r.appendChild(l),this.element.appendChild(r)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,p),window.print(),this.cleanup(),window.scrollTo(o,s),this.manualBlock=!1},Tabulator.prototype.registerModule("print",Print);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ReactiveData = function ReactiveData(table) {
+ this.table = table; //hold Tabulator object
+ this.data = false;
+ this.blocked = false; //block reactivity while performing update
+ this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
+ this.currentVersion = 0;
+};
+
+ReactiveData.prototype.watchData = function (data) {
+ var self = this,
+ pushFunc,
+ version;
+
+ this.currentVersion++;
+
+ version = this.currentVersion;
+
+ self.unwatchData();
+
+ self.data = data;
+
+ //override array push function
+ self.origFuncs.push = data.push;
+
+ Object.defineProperty(self.data, "push", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments);
+
+ if (!self.blocked && version === self.currentVersion) {
+ args.forEach(function (arg) {
+ self.table.rowManager.addRowActual(arg, false);
+ });
+ }
+
+ return self.origFuncs.push.apply(data, arguments);
+ }
+ });
+
+ //override array unshift function
+ self.origFuncs.unshift = data.unshift;
+
+ Object.defineProperty(self.data, "unshift", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments);
+
+ if (!self.blocked && version === self.currentVersion) {
+ args.forEach(function (arg) {
+ self.table.rowManager.addRowActual(arg, true);
+ });
+ }
+
+ return self.origFuncs.unshift.apply(data, arguments);
+ }
+ });
+
+ //override array shift function
+ self.origFuncs.shift = data.shift;
+
+ Object.defineProperty(self.data, "shift", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var row;
+
+ if (!self.blocked && version === self.currentVersion) {
+ if (self.data.length) {
+ row = self.table.rowManager.getRowFromDataObject(self.data[0]);
+
+ if (row) {
+ row.deleteActual();
+ }
+ }
+ }
+
+ return self.origFuncs.shift.call(data);
+ }
+ });
+
+ //override array pop function
+ self.origFuncs.pop = data.pop;
+
+ Object.defineProperty(self.data, "pop", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var row;
+ if (!self.blocked && version === self.currentVersion) {
+ if (self.data.length) {
+ row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
+
+ if (row) {
+ row.deleteActual();
+ }
+ }
+ }
+ return self.origFuncs.pop.call(data);
+ }
+ });
+
+ //override array splice function
+ self.origFuncs.splice = data.splice;
+
+ Object.defineProperty(self.data, "splice", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments),
+ start = args[0] < 0 ? data.length + args[0] : args[0],
+ end = args[1],
+ newRows = args[2] ? args.slice(2) : false,
+ startRow;
+
+ if (!self.blocked && version === self.currentVersion) {
+
+ //add new rows
+ if (newRows) {
+ startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
+
+ if (startRow) {
+ newRows.forEach(function (rowData) {
+ self.table.rowManager.addRowActual(rowData, true, startRow, true);
+ });
+ } else {
+ newRows = newRows.slice().reverse();
+
+ newRows.forEach(function (rowData) {
+ self.table.rowManager.addRowActual(rowData, true, false, true);
+ });
+ }
+ }
+
+ //delete removed rows
+ if (end !== 0) {
+ var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
+
+ oldRows.forEach(function (rowData, i) {
+ var row = self.table.rowManager.getRowFromDataObject(rowData);
+
+ if (row) {
+ row.deleteActual(i !== oldRows.length - 1);
+ }
+ });
+ }
+
+ if (newRows || end !== 0) {
+ self.table.rowManager.reRenderInPosition();
+ }
+ }
+
+ return self.origFuncs.splice.apply(data, arguments);
+ }
+ });
+};
+
+ReactiveData.prototype.unwatchData = function () {
+ if (this.data !== false) {
+ for (var key in this.origFuncs) {
+ Object.defineProperty(this.data, key, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: this.origFuncs.key
+ });
+ }
+ }
+};
+
+ReactiveData.prototype.watchRow = function (row) {
+ var self = this,
+ data = row.getData();
+
+ this.blocked = true;
+
+ for (var key in data) {
+ this.watchKey(row, data, key);
+ }
+
+ this.blocked = false;
+};
+
+ReactiveData.prototype.watchKey = function (row, data, key) {
+ var self = this,
+ props = Object.getOwnPropertyDescriptor(data, key),
+ value = data[key],
+ version = this.currentVersion;
+
+ Object.defineProperty(data, key, {
+ set: function set(newValue) {
+ value = newValue;
+ if (!self.blocked && version === self.currentVersion) {
+ var update = {};
+ update[key] = newValue;
+ row.updateData(update);
+ }
+
+ if (props.set) {
+ props.set(newValue);
+ }
+ },
+ get: function get() {
+
+ if (props.get) {
+ props.get();
+ }
+
+ return value;
+ }
+ });
+};
+
+ReactiveData.prototype.unwatchRow = function (row) {
+ var data = row.getData();
+
+ for (var key in data) {
+ Object.defineProperty(data, key, {
+ value: data[key]
+ });
+ }
+};
+
+ReactiveData.prototype.block = function () {
+ this.blocked = true;
+};
+
+ReactiveData.prototype.unblock = function () {
+ this.blocked = false;
+};
+
+Tabulator.prototype.registerModule("reactiveData", ReactiveData);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var ReactiveData=function(e){this.table=e,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};ReactiveData.prototype.watchData=function(e){var t,a=this;this.currentVersion++,t=this.currentVersion,a.unwatchData(),a.data=e,a.origFuncs.push=e.push,Object.defineProperty(a.data,"push",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!1)}),a.origFuncs.push.apply(e,arguments)}}),a.origFuncs.unshift=e.unshift,Object.defineProperty(a.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var r=Array.from(arguments);return a.blocked||t!==a.currentVersion||r.forEach(function(e){a.table.rowManager.addRowActual(e,!0)}),a.origFuncs.unshift.apply(e,arguments)}}),a.origFuncs.shift=e.shift,Object.defineProperty(a.data,"shift",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[0]))&&r.deleteActual(),a.origFuncs.shift.call(e)}}),a.origFuncs.pop=e.pop,Object.defineProperty(a.data,"pop",{enumerable:!1,configurable:!0,value:function(){var r;return a.blocked||t!==a.currentVersion||a.data.length&&(r=a.table.rowManager.getRowFromDataObject(a.data[a.data.length-1]))&&r.deleteActual(),a.origFuncs.pop.call(e)}}),a.origFuncs.splice=e.splice,Object.defineProperty(a.data,"splice",{enumerable:!1,configurable:!0,value:function(){var r,o=Array.from(arguments),n=o[0]<0?e.length+o[0]:o[0],c=o[1],i=!!o[2]&&o.slice(2);if(!a.blocked&&t===a.currentVersion){if(i&&(r=!!e[n]&&a.table.rowManager.getRowFromDataObject(e[n]),r?i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,r,!0)}):(i=i.slice().reverse(),i.forEach(function(e){a.table.rowManager.addRowActual(e,!0,!1,!0)}))),0!==c){var u=e.slice(n,void 0===o[1]?o[1]:n+c);u.forEach(function(e,t){var r=a.table.rowManager.getRowFromDataObject(e);r&&r.deleteActual(t!==u.length-1)})}(i||0!==c)&&a.table.rowManager.reRenderInPosition()}return a.origFuncs.splice.apply(e,arguments)}})},ReactiveData.prototype.unwatchData=function(){if(!1!==this.data)for(var e in this.origFuncs)Object.defineProperty(this.data,e,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},ReactiveData.prototype.watchRow=function(e){var t=e.getData();this.blocked=!0;for(var a in t)this.watchKey(e,t,a);this.blocked=!1},ReactiveData.prototype.watchKey=function(e,t,a){var r=this,o=Object.getOwnPropertyDescriptor(t,a),n=t[a],c=this.currentVersion;Object.defineProperty(t,a,{set:function(t){if(n=t,!r.blocked&&c===r.currentVersion){var i={};i[a]=t,e.updateData(i)}o.set&&o.set(t)},get:function(){return o.get&&o.get(),n}})},ReactiveData.prototype.unwatchRow=function(e){var t=e.getData();for(var a in t)Object.defineProperty(t,a,{value:t[a]})},ReactiveData.prototype.block=function(){this.blocked=!0},ReactiveData.prototype.unblock=function(){this.blocked=!1},Tabulator.prototype.registerModule("reactiveData",ReactiveData);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ResizeColumns = function ResizeColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.startColumn = false;
+ this.startX = false;
+ this.startWidth = false;
+ this.handle = null;
+ this.prevHandle = null;
+};
+
+ResizeColumns.prototype.initializeColumn = function (type, column, element) {
+ var self = this,
+ variableHeight = false,
+ mode = this.table.options.resizableColumns;
+
+ //set column resize mode
+ if (type === "header") {
+ variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
+ column.modules.resize = { variableHeight: variableHeight };
+ }
+
+ if (mode === true || mode == type) {
+
+ var handle = document.createElement('div');
+ handle.className = "tabulator-col-resize-handle";
+
+ var prevHandle = document.createElement('div');
+ prevHandle.className = "tabulator-col-resize-handle prev";
+
+ handle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var handleDown = function handleDown(e) {
+ var nearestColumn = column.getLastColumn();
+
+ if (nearestColumn && self._checkResizability(nearestColumn)) {
+ self.startColumn = column;
+ self._mouseDown(e, nearestColumn, handle);
+ }
+ };
+
+ handle.addEventListener("mousedown", handleDown);
+ handle.addEventListener("touchstart", handleDown, { passive: true });
+
+ //reszie column on double click
+ handle.addEventListener("dblclick", function (e) {
+ var col = column.getLastColumn();
+
+ if (col && self._checkResizability(col)) {
+ col.reinitializeWidth(true);
+ }
+ });
+
+ prevHandle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var prevHandleDown = function prevHandleDown(e) {
+ var nearestColumn, colIndex, prevColumn;
+
+ nearestColumn = column.getFirstColumn();
+
+ if (nearestColumn) {
+ colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+ prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+ if (prevColumn && self._checkResizability(prevColumn)) {
+ self.startColumn = column;
+ self._mouseDown(e, prevColumn, prevHandle);
+ }
+ }
+ };
+
+ prevHandle.addEventListener("mousedown", prevHandleDown);
+ prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+ //resize column on double click
+ prevHandle.addEventListener("dblclick", function (e) {
+ var nearestColumn, colIndex, prevColumn;
+
+ nearestColumn = column.getFirstColumn();
+
+ if (nearestColumn) {
+ colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+ prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+ if (prevColumn && self._checkResizability(prevColumn)) {
+ prevColumn.reinitializeWidth(true);
+ }
+ }
+ });
+
+ element.appendChild(handle);
+ element.appendChild(prevHandle);
+ }
+};
+
+ResizeColumns.prototype._checkResizability = function (column) {
+ return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
+};
+
+ResizeColumns.prototype._mouseDown = function (e, column, handle) {
+ var self = this;
+
+ self.table.element.classList.add("tabulator-block-select");
+
+ function mouseMove(e) {
+ // self.table.columnManager.tempScrollBlock();
+
+ column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
+
+ if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+ column.checkCellHeights();
+ }
+ }
+
+ function mouseUp(e) {
+
+ //block editor from taking action while resizing is taking place
+ if (self.startColumn.modules.edit) {
+ self.startColumn.modules.edit.blocked = false;
+ }
+
+ if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+ column.checkCellHeights();
+ }
+
+ document.body.removeEventListener("mouseup", mouseUp);
+ document.body.removeEventListener("mousemove", mouseMove);
+
+ handle.removeEventListener("touchmove", mouseMove);
+ handle.removeEventListener("touchend", mouseUp);
+
+ self.table.element.classList.remove("tabulator-block-select");
+
+ if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+ self.table.modules.persistence.save("columns");
+ }
+
+ self.table.options.columnResized.call(self.table, column.getComponent());
+ }
+
+ e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+ //block editor from taking action while resizing is taking place
+ if (self.startColumn.modules.edit) {
+ self.startColumn.modules.edit.blocked = true;
+ }
+
+ self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
+ self.startWidth = column.getWidth();
+
+ document.body.addEventListener("mousemove", mouseMove);
+ document.body.addEventListener("mouseup", mouseUp);
+ handle.addEventListener("touchmove", mouseMove, { passive: true });
+ handle.addEventListener("touchend", mouseUp);
+};
+
+Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var ResizeColumns=function(e){this.table=e,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};ResizeColumns.prototype.initializeColumn=function(e,t,n){var i=this,o=!1,s=this.table.options.resizableColumns;if("header"===e&&(o="textarea"==t.definition.formatter||t.definition.variableHeight,t.modules.resize={variableHeight:o}),!0===s||s==e){var a=document.createElement("div");a.className="tabulator-col-resize-handle";var l=document.createElement("div");l.className="tabulator-col-resize-handle prev",a.addEventListener("click",function(e){e.stopPropagation()});var r=function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&(i.startColumn=t,i._mouseDown(e,n,a))};a.addEventListener("mousedown",r),a.addEventListener("touchstart",r,{passive:!0}),a.addEventListener("dblclick",function(e){var n=t.getLastColumn();n&&i._checkResizability(n)&&n.reinitializeWidth(!0)}),l.addEventListener("click",function(e){e.stopPropagation()});var d=function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&(i.startColumn=t,i._mouseDown(e,s,l)))};l.addEventListener("mousedown",d),l.addEventListener("touchstart",d,{passive:!0}),l.addEventListener("dblclick",function(e){var n,o,s;(n=t.getFirstColumn())&&(o=i.table.columnManager.findColumnIndex(n),(s=o>0&&i.table.columnManager.getColumnByIndex(o-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),n.appendChild(a),n.appendChild(l)}},ResizeColumns.prototype._checkResizability=function(e){return void 0!==e.definition.resizable?e.definition.resizable:this.table.options.resizableColumns},ResizeColumns.prototype._mouseDown=function(e,t,n){function i(e){t.setWidth(s.startWidth+((void 0===e.screenX?e.touches[0].screenX:e.screenX)-s.startX)),!s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights()}function o(e){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&t.modules.resize&&t.modules.resize.variableHeight&&t.checkCellHeights(),document.body.removeEventListener("mouseup",o),document.body.removeEventListener("mousemove",i),n.removeEventListener("touchmove",i),n.removeEventListener("touchend",o),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,t.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===e.screenX?e.touches[0].screenX:e.screenX,s.startWidth=t.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",o),n.addEventListener("touchmove",i,{passive:!0}),n.addEventListener("touchend",o)},Tabulator.prototype.registerModule("resizeColumns",ResizeColumns);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ResizeRows = function ResizeRows(table) {
+ this.table = table; //hold Tabulator object
+ this.startColumn = false;
+ this.startY = false;
+ this.startHeight = false;
+ this.handle = null;
+ this.prevHandle = null;
+};
+
+ResizeRows.prototype.initializeRow = function (row) {
+ var self = this,
+ rowEl = row.getElement();
+
+ var handle = document.createElement('div');
+ handle.className = "tabulator-row-resize-handle";
+
+ var prevHandle = document.createElement('div');
+ prevHandle.className = "tabulator-row-resize-handle prev";
+
+ handle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var handleDown = function handleDown(e) {
+ self.startRow = row;
+ self._mouseDown(e, row, handle);
+ };
+
+ handle.addEventListener("mousedown", handleDown, { passive: true });
+ handle.addEventListener("touchstart", handleDown);
+
+ prevHandle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var prevHandleDown = function prevHandleDown(e) {
+ var prevRow = self.table.rowManager.prevDisplayRow(row);
+
+ if (prevRow) {
+ self.startRow = prevRow;
+ self._mouseDown(e, prevRow, prevHandle);
+ }
+ };
+
+ prevHandle.addEventListener("mousedown", prevHandleDown);
+ prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+ rowEl.appendChild(handle);
+ rowEl.appendChild(prevHandle);
+};
+
+ResizeRows.prototype._mouseDown = function (e, row, handle) {
+ var self = this;
+
+ self.table.element.classList.add("tabulator-block-select");
+
+ function mouseMove(e) {
+ row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
+ }
+
+ function mouseUp(e) {
+
+ // //block editor from taking action while resizing is taking place
+ // if(self.startColumn.modules.edit){
+ // self.startColumn.modules.edit.blocked = false;
+ // }
+
+ document.body.removeEventListener("mouseup", mouseMove);
+ document.body.removeEventListener("mousemove", mouseMove);
+
+ handle.removeEventListener("touchmove", mouseMove);
+ handle.removeEventListener("touchend", mouseUp);
+
+ self.table.element.classList.remove("tabulator-block-select");
+
+ self.table.options.rowResized.call(this.table, row.getComponent());
+ }
+
+ e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+ //block editor from taking action while resizing is taking place
+ // if(self.startColumn.modules.edit){
+ // self.startColumn.modules.edit.blocked = true;
+ // }
+
+ self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
+ self.startHeight = row.getHeight();
+
+ document.body.addEventListener("mousemove", mouseMove);
+ document.body.addEventListener("mouseup", mouseUp);
+
+ handle.addEventListener("touchmove", mouseMove, { passive: true });
+ handle.addEventListener("touchend", mouseUp);
+};
+
+Tabulator.prototype.registerModule("resizeRows", ResizeRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var ResizeRows=function(e){this.table=e,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};ResizeRows.prototype.initializeRow=function(e){var t=this,o=e.getElement(),s=document.createElement("div");s.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",s.addEventListener("click",function(e){e.stopPropagation()});var a=function(o){t.startRow=e,t._mouseDown(o,e,s)};s.addEventListener("mousedown",a,{passive:!0}),s.addEventListener("touchstart",a),n.addEventListener("click",function(e){e.stopPropagation()});var r=function(o){var s=t.table.rowManager.prevDisplayRow(e);s&&(t.startRow=s,t._mouseDown(o,s,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(s),o.appendChild(n)},ResizeRows.prototype._mouseDown=function(e,t,o){function s(e){t.setHeight(a.startHeight+((void 0===e.screenY?e.touches[0].screenY:e.screenY)-a.startY))}function n(e){document.body.removeEventListener("mouseup",s),document.body.removeEventListener("mousemove",s),o.removeEventListener("touchmove",s),o.removeEventListener("touchend",n),a.table.element.classList.remove("tabulator-block-select"),a.table.options.rowResized.call(this.table,t.getComponent())}var a=this;a.table.element.classList.add("tabulator-block-select"),e.stopPropagation(),a.startY=void 0===e.screenY?e.touches[0].screenY:e.screenY,a.startHeight=t.getHeight(),document.body.addEventListener("mousemove",s),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",s,{passive:!0}),o.addEventListener("touchend",n)},Tabulator.prototype.registerModule("resizeRows",ResizeRows);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ResizeTable = function ResizeTable(table) {
+ this.table = table; //hold Tabulator object
+ this.binding = false;
+ this.observer = false;
+};
+
+ResizeTable.prototype.initialize = function (row) {
+ var table = this.table,
+ observer;
+
+ if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
+ this.observer = new ResizeObserver(function (entry) {
+ table.redraw();
+ });
+
+ this.observer.observe(table.element);
+ } else {
+ this.binding = function () {
+ table.redraw();
+ };
+
+ window.addEventListener("resize", this.binding);
+ }
+};
+
+ResizeTable.prototype.clearBindings = function (row) {
+ if (this.binding) {
+ window.removeEventListener("resize", this.binding);
+ }
+
+ if (this.observer) {
+ this.observer.unobserve(this.table.element);
+ }
+};
+
+Tabulator.prototype.registerModule("resizeTable", ResizeTable);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var ResizeTable=function(e){this.table=e,this.binding=!1,this.observer=!1};ResizeTable.prototype.initialize=function(e){var i=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===i.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(e){i.redraw()}),this.observer.observe(i.element)):(this.binding=function(){i.redraw()},window.addEventListener("resize",this.binding))},ResizeTable.prototype.clearBindings=function(e){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},Tabulator.prototype.registerModule("resizeTable",ResizeTable);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var ResponsiveLayout = function ResponsiveLayout(table) {
+ this.table = table; //hold Tabulator object
+ this.columns = [];
+ this.hiddenColumns = [];
+ this.mode = "";
+ this.index = 0;
+ this.collapseFormatter = [];
+ this.collapseStartOpen = true;
+};
+
+//generate resposive columns list
+ResponsiveLayout.prototype.initialize = function () {
+ var self = this,
+ columns = [];
+
+ this.mode = this.table.options.responsiveLayout;
+ this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
+ this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
+ this.hiddenColumns = [];
+
+ //detemine level of responsivity for each column
+ this.table.columnManager.columnsByIndex.forEach(function (column, i) {
+ if (column.modules.responsive) {
+ if (column.modules.responsive.order && column.modules.responsive.visible) {
+ column.modules.responsive.index = i;
+ columns.push(column);
+
+ if (!column.visible && self.mode === "collapse") {
+ self.hiddenColumns.push(column);
+ }
+ }
+ }
+ });
+
+ //sort list by responsivity
+ columns = columns.reverse();
+ columns = columns.sort(function (a, b) {
+ var diff = b.modules.responsive.order - a.modules.responsive.order;
+ return diff || b.modules.responsive.index - a.modules.responsive.index;
+ });
+
+ this.columns = columns;
+
+ if (this.mode === "collapse") {
+ this.generateCollapsedContent();
+ }
+};
+
+//define layout information
+ResponsiveLayout.prototype.initializeColumn = function (column) {
+ var def = column.getDefinition();
+
+ column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
+};
+
+ResponsiveLayout.prototype.layoutRow = function (row) {
+ var rowEl = row.getElement(),
+ el = document.createElement("div");
+
+ el.classList.add("tabulator-responsive-collapse");
+
+ if (!rowEl.classList.contains("tabulator-calcs")) {
+ row.modules.responsiveLayout = {
+ element: el
+ };
+
+ if (!this.collapseStartOpen) {
+ el.style.display = 'none';
+ }
+
+ rowEl.appendChild(el);
+
+ this.generateCollapsedRowContent(row);
+ }
+};
+
+//update column visibility
+ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
+ var index;
+ if (column.modules.responsive) {
+ column.modules.responsive.visible = visible;
+ this.initialize();
+ }
+};
+
+ResponsiveLayout.prototype.hideColumn = function (column) {
+ column.hide(false, true);
+
+ if (this.mode === "collapse") {
+ this.hiddenColumns.unshift(column);
+ this.generateCollapsedContent();
+ }
+};
+
+ResponsiveLayout.prototype.showColumn = function (column) {
+ var index;
+
+ column.show(false, true);
+ //set column width to prevent calculation loops on uninitialized columns
+ column.setWidth(column.getWidth());
+
+ if (this.mode === "collapse") {
+ index = this.hiddenColumns.indexOf(column);
+
+ if (index > -1) {
+ this.hiddenColumns.splice(index, 1);
+ }
+
+ this.generateCollapsedContent();
+ }
+};
+
+//redraw columns to fit space
+ResponsiveLayout.prototype.update = function () {
+ var self = this,
+ working = true;
+
+ while (working) {
+
+ var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
+
+ var diff = self.table.columnManager.element.clientWidth - width;
+
+ if (diff < 0) {
+ //table is too wide
+ var column = self.columns[self.index];
+
+ if (column) {
+ self.hideColumn(column);
+ self.index++;
+ } else {
+ working = false;
+ }
+ } else {
+
+ //table has spare space
+ var _column = self.columns[self.index - 1];
+
+ if (_column) {
+ if (diff > 0) {
+ if (diff >= _column.getWidth()) {
+ self.showColumn(_column);
+ self.index--;
+ } else {
+ working = false;
+ }
+ } else {
+ working = false;
+ }
+ } else {
+ working = false;
+ }
+ }
+
+ if (!self.table.rowManager.activeRowsCount) {
+ self.table.rowManager.renderEmptyScroll();
+ }
+ }
+};
+
+ResponsiveLayout.prototype.generateCollapsedContent = function () {
+ var self = this,
+ rows = this.table.rowManager.getDisplayRows();
+
+ rows.forEach(function (row) {
+ self.generateCollapsedRowContent(row);
+ });
+};
+
+ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
+ var el, contents;
+
+ if (row.modules.responsiveLayout) {
+ el = row.modules.responsiveLayout.element;
+
+ while (el.firstChild) {
+ el.removeChild(el.firstChild);
+ }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
+ if (contents) {
+ el.appendChild(contents);
+ }
+ }
+};
+
+ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
+ var self = this,
+ data = row.getData(),
+ output = [],
+ mockCellComponent;
+
+ this.hiddenColumns.forEach(function (column) {
+ var value = column.getFieldValue(data);
+
+ if (column.definition.title && column.field) {
+ if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
+
+ mockCellComponent = {
+ value: false,
+ data: {},
+ getValue: function getValue() {
+ return value;
+ },
+ getData: function getData() {
+ return data;
+ },
+ getElement: function getElement() {
+ return document.createElement("div");
+ },
+ getRow: function getRow() {
+ return row.getComponent();
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ }
+ };
+
+ output.push({
+ title: column.definition.title,
+ value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
+ });
+ } else {
+ output.push({
+ title: column.definition.title,
+ value: value
+ });
+ }
+ }
+ });
+
+ return output;
+};
+
+ResponsiveLayout.prototype.formatCollapsedData = function (data) {
+ var list = document.createElement("table"),
+ listContents = "";
+
+ data.forEach(function (item) {
+ var div = document.createElement("div");
+
+ if (item.value instanceof Node) {
+ div.appendChild(item.value);
+ item.value = div.innerHTML;
+ }
+
+ listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
+ });
+
+ list.innerHTML = listContents;
+
+ return Object.keys(data).length ? list : "";
+};
+
+Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var ResponsiveLayout=function(e){this.table=e,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};ResponsiveLayout.prototype.initialize=function(){var e=this,t=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,n){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=n,t.push(o),o.visible||"collapse"!==e.mode||e.hiddenColumns.push(o))}),t=t.reverse(),t=t.sort(function(e,t){return t.modules.responsive.order-e.modules.responsive.order||t.modules.responsive.index-e.modules.responsive.index}),this.columns=t,"collapse"===this.mode&&this.generateCollapsedContent()},ResponsiveLayout.prototype.initializeColumn=function(e){var t=e.getDefinition();e.modules.responsive={order:void 0===t.responsive?1:t.responsive,visible:!1!==t.visible}},ResponsiveLayout.prototype.layoutRow=function(e){var t=e.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),t.classList.contains("tabulator-calcs")||(e.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),t.appendChild(o),this.generateCollapsedRowContent(e))},ResponsiveLayout.prototype.updateColumnVisibility=function(e,t){e.modules.responsive&&(e.modules.responsive.visible=t,this.initialize())},ResponsiveLayout.prototype.hideColumn=function(e){e.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(e),this.generateCollapsedContent())},ResponsiveLayout.prototype.showColumn=function(e){var t;e.show(!1,!0),e.setWidth(e.getWidth()),"collapse"===this.mode&&(t=this.hiddenColumns.indexOf(e),t>-1&&this.hiddenColumns.splice(t,1),this.generateCollapsedContent())},ResponsiveLayout.prototype.update=function(){for(var e=this,t=!0;t;){var o="fitColumns"==e.table.modules.layout.getMode()?e.table.columnManager.getFlexBaseWidth():e.table.columnManager.getWidth(),n=e.table.columnManager.element.clientWidth-o;if(n<0){var s=e.columns[e.index];s?(e.hideColumn(s),e.index++):t=!1}else{var i=e.columns[e.index-1];i&&n>0&&n>=i.getWidth()?(e.showColumn(i),e.index--):t=!1}e.table.rowManager.activeRowsCount||e.table.rowManager.renderEmptyScroll()}},ResponsiveLayout.prototype.generateCollapsedContent=function(){var e=this;this.table.rowManager.getDisplayRows().forEach(function(t){e.generateCollapsedRowContent(t)})},ResponsiveLayout.prototype.generateCollapsedRowContent=function(e){var t,o;if(e.modules.responsiveLayout){for(t=e.modules.responsiveLayout.element;t.firstChild;)t.removeChild(t.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(e)),o&&t.appendChild(o)}},ResponsiveLayout.prototype.generateCollapsedRowData=function(e){var t,o=this,n=e.getData(),s=[];return this.hiddenColumns.forEach(function(i){var a=i.getFieldValue(n);i.definition.title&&i.field&&(i.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(t={value:!1,data:{},getValue:function(){return a},getData:function(){return n},getElement:function(){return document.createElement("div")},getRow:function(){return e.getComponent()},getColumn:function(){return i.getComponent()}},s.push({title:i.definition.title,value:i.modules.format.formatter.call(o.table.modules.format,t,i.modules.format.params)})):s.push({title:i.definition.title,value:a}))}),s},ResponsiveLayout.prototype.formatCollapsedData=function(e){var t=document.createElement("table"),o="";return e.forEach(function(e){var t=document.createElement("div");e.value instanceof Node&&(t.appendChild(e.value),e.value=t.innerHTML),o+="<tr><td><strong>"+e.title+"</strong></td><td>"+e.value+"</td></tr>"}),t.innerHTML=o,Object.keys(e).length?t:""},Tabulator.prototype.registerModule("responsiveLayout",ResponsiveLayout);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var SelectRow = function SelectRow(table) {
+ this.table = table; //hold Tabulator object
+ this.selecting = false; //flag selecting in progress
+ this.lastClickedRow = false; //last clicked row
+ this.selectPrev = []; //hold previously selected element for drag drop selection
+ this.selectedRows = []; //hold selected rows
+ this.headerCheckboxElement = null; // hold header select element
+};
+
+SelectRow.prototype.clearSelectionData = function (silent) {
+ this.selecting = false;
+ this.lastClickedRow = false;
+ this.selectPrev = [];
+ this.selectedRows = [];
+
+ if (!silent) {
+ this._rowSelectionChanged();
+ }
+};
+
+SelectRow.prototype.initializeRow = function (row) {
+ var self = this,
+ element = row.getElement();
+
+ // trigger end of row selection
+ var endSelect = function endSelect() {
+
+ setTimeout(function () {
+ self.selecting = false;
+ }, 50);
+
+ document.body.removeEventListener("mouseup", endSelect);
+ };
+
+ row.modules.select = { selected: false };
+
+ //set row selection class
+ if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
+ element.classList.add("tabulator-selectable");
+ element.classList.remove("tabulator-unselectable");
+
+ if (self.table.options.selectable && self.table.options.selectable != "highlight") {
+ if (self.table.options.selectableRangeMode === "click") {
+ element.addEventListener("click", function (e) {
+
+ self.table._clearSelection();
+
+ if (e.shiftKey) {
+ self.lastClickedRow = self.lastClickedRow || row;
+
+ var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
+ var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
+
+ var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
+ var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
+
+ var rows = self.table.rowManager.getDisplayRows().slice(0);
+ var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
+
+ if (e.ctrlKey || e.metaKey) {
+ toggledRows.forEach(function (toggledRow) {
+ if (toggledRow !== self.lastClickedRow) {
+
+ if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
+ if (self.selectedRows.length < self.table.options.selectable) {
+ self.toggleRow(toggledRow);
+ }
+ } else {
+ self.toggleRow(toggledRow);
+ }
+ }
+ });
+ self.lastClickedRow = row;
+ } else {
+ self.deselectRows();
+
+ if (self.table.options.selectable !== true) {
+ if (toggledRows.length > self.table.options.selectable) {
+ toggledRows = toggledRows.slice(0, self.table.options.selectable);
+ }
+ }
+
+ self.selectRows(toggledRows);
+ }
+ } else if (e.ctrlKey || e.metaKey) {
+ self.toggleRow(row);
+ self.lastClickedRow = row;
+ } else {
+ self.deselectRows();
+ self.selectRows(row);
+ self.lastClickedRow = row;
+ }
+
+ self.table._clearSelection();
+ });
+ } else {
+ element.addEventListener("click", function (e) {
+ self.table._clearSelection();
+
+ if (!self.selecting) {
+ self.toggleRow(row);
+ }
+ });
+
+ element.addEventListener("mousedown", function (e) {
+ if (e.shiftKey) {
+ self.table._clearSelection();
+
+ self.selecting = true;
+
+ self.selectPrev = [];
+
+ document.body.addEventListener("mouseup", endSelect);
+ document.body.addEventListener("keyup", endSelect);
+
+ self.toggleRow(row);
+
+ return false;
+ }
+ });
+
+ element.addEventListener("mouseenter", function (e) {
+ if (self.selecting) {
+ self.table._clearSelection();
+ self.toggleRow(row);
+
+ if (self.selectPrev[1] == row) {
+ self.toggleRow(self.selectPrev[0]);
+ }
+ }
+ });
+
+ element.addEventListener("mouseout", function (e) {
+ if (self.selecting) {
+ self.table._clearSelection();
+ self.selectPrev.unshift(row);
+ }
+ });
+ }
+ }
+ } else {
+ element.classList.add("tabulator-unselectable");
+ element.classList.remove("tabulator-selectable");
+ }
+};
+
+//toggle row selection
+SelectRow.prototype.toggleRow = function (row) {
+ if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
+ if (row.modules.select && row.modules.select.selected) {
+ this._deselectRow(row);
+ } else {
+ this._selectRow(row);
+ }
+ }
+};
+
+//select a number of rows
+SelectRow.prototype.selectRows = function (rows) {
+ var self = this;
+
+ switch (typeof rows === "undefined" ? "undefined" : _typeof(rows)) {
+ case "undefined":
+ self.table.rowManager.rows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ break;
+
+ case "boolean":
+ if (rows === true) {
+ self.table.rowManager.activeRows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ }
+ break;
+
+ default:
+ if (Array.isArray(rows)) {
+ rows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ } else {
+ self._selectRow(rows, false, true);
+ }
+ break;
+ }
+};
+
+//select an individual row
+SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
+ var index;
+
+ //handle max row count
+ if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
+ if (this.selectedRows.length >= this.table.options.selectable) {
+ if (this.table.options.selectableRollingSelection) {
+ this._deselectRow(this.selectedRows[0]);
+ } else {
+ return false;
+ }
+ }
+ }
+
+ var row = this.table.rowManager.findRow(rowInfo);
+
+ if (row) {
+ if (this.selectedRows.indexOf(row) == -1) {
+ if (!row.modules.select) {
+ row.modules.select = {};
+ }
+
+ row.modules.select.selected = true;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = true;
+ }
+ row.getElement().classList.add("tabulator-selected");
+
+ this.selectedRows.push(row);
+
+ if (!silent) {
+ this.table.options.rowSelected.call(this.table, row.getComponent());
+ this._rowSelectionChanged();
+ }
+ }
+ } else {
+ if (!silent) {
+ console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
+ }
+ }
+};
+
+SelectRow.prototype.isRowSelected = function (row) {
+ return this.selectedRows.indexOf(row) !== -1;
+};
+
+//deselect a number of rows
+SelectRow.prototype.deselectRows = function (rows) {
+ var self = this,
+ rowCount;
+
+ if (typeof rows == "undefined") {
+
+ rowCount = self.selectedRows.length;
+
+ for (var i = 0; i < rowCount; i++) {
+ self._deselectRow(self.selectedRows[0], true);
+ }
+
+ self._rowSelectionChanged();
+ } else {
+ if (Array.isArray(rows)) {
+ rows.forEach(function (row) {
+ self._deselectRow(row, true);
+ });
+
+ self._rowSelectionChanged();
+ } else {
+ self._deselectRow(rows);
+ }
+ }
+};
+
+//deselect an individual row
+SelectRow.prototype._deselectRow = function (rowInfo, silent) {
+ var self = this,
+ row = self.table.rowManager.findRow(rowInfo),
+ index;
+
+ if (row) {
+ index = self.selectedRows.findIndex(function (selectedRow) {
+ return selectedRow == row;
+ });
+
+ if (index > -1) {
+
+ if (!row.modules.select) {
+ row.modules.select = {};
+ }
+
+ row.modules.select.selected = false;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = false;
+ }
+ row.getElement().classList.remove("tabulator-selected");
+ self.selectedRows.splice(index, 1);
+
+ if (!silent) {
+ self.table.options.rowDeselected.call(this.table, row.getComponent());
+ self._rowSelectionChanged();
+ }
+ }
+ } else {
+ if (!silent) {
+ console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
+ }
+ }
+};
+
+SelectRow.prototype.getSelectedData = function () {
+ var data = [];
+
+ this.selectedRows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ return data;
+};
+
+SelectRow.prototype.getSelectedRows = function () {
+
+ var rows = [];
+
+ this.selectedRows.forEach(function (row) {
+ rows.push(row.getComponent());
+ });
+
+ return rows;
+};
+
+SelectRow.prototype._rowSelectionChanged = function () {
+ if (this.headerCheckboxElement) {
+ if (this.selectedRows.length === 0) {
+ this.headerCheckboxElement.checked = false;
+ this.headerCheckboxElement.indeterminate = false;
+ } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
+ this.headerCheckboxElement.checked = true;
+ this.headerCheckboxElement.indeterminate = false;
+ } else {
+ this.headerCheckboxElement.indeterminate = true;
+ this.headerCheckboxElement.checked = false;
+ }
+ }
+
+ this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
+};
+
+SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
+ if (!row._row.modules.select) {
+ row._row.modules.select = {};
+ }
+
+ row._row.modules.select.checkboxEl = element;
+};
+
+SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
+ this.headerCheckboxElement = element;
+};
+
+Tabulator.prototype.registerModule("selectRow", SelectRow);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},SelectRow=function(e){this.table=e,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};SelectRow.prototype.clearSelectionData=function(e){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],e||this._rowSelectionChanged()},SelectRow.prototype.initializeRow=function(e){var t=this,o=e.getElement(),l=function e(){setTimeout(function(){t.selecting=!1},50),document.body.removeEventListener("mouseup",e)};e.modules.select={selected:!1},t.table.options.selectableCheck.call(this.table,e.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),t.table.options.selectable&&"highlight"!=t.table.options.selectable&&("click"===t.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(t.table._clearSelection(),o.shiftKey){t.lastClickedRow=t.lastClickedRow||e;var l=t.table.rowManager.getDisplayRowIndex(t.lastClickedRow),s=t.table.rowManager.getDisplayRowIndex(e),c=l<=s?l:s,n=l>=s?l:s,i=t.table.rowManager.getDisplayRows().slice(0),a=i.splice(c,n-c+1);o.ctrlKey||o.metaKey?(a.forEach(function(o){o!==t.lastClickedRow&&(!0===t.table.options.selectable||t.isRowSelected(e)?t.toggleRow(o):t.selectedRows.length<t.table.options.selectable&&t.toggleRow(o))}),t.lastClickedRow=e):(t.deselectRows(),!0!==t.table.options.selectable&&a.length>t.table.options.selectable&&(a=a.slice(0,t.table.options.selectable)),t.selectRows(a))}else o.ctrlKey||o.metaKey?(t.toggleRow(e),t.lastClickedRow=e):(t.deselectRows(),t.selectRows(e),t.lastClickedRow=e);t.table._clearSelection()}):(o.addEventListener("click",function(o){t.table._clearSelection(),t.selecting||t.toggleRow(e)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return t.table._clearSelection(),t.selecting=!0,t.selectPrev=[],document.body.addEventListener("mouseup",l),document.body.addEventListener("keyup",l),t.toggleRow(e),!1}),o.addEventListener("mouseenter",function(o){t.selecting&&(t.table._clearSelection(),t.toggleRow(e),t.selectPrev[1]==e&&t.toggleRow(t.selectPrev[0]))}),o.addEventListener("mouseout",function(o){t.selecting&&(t.table._clearSelection(),t.selectPrev.unshift(e))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},SelectRow.prototype.toggleRow=function(e){this.table.options.selectableCheck.call(this.table,e.getComponent())&&(e.modules.select&&e.modules.select.selected?this._deselectRow(e):this._selectRow(e))},SelectRow.prototype.selectRows=function(e){var t=this;switch(void 0===e?"undefined":_typeof(e)){case"undefined":t.table.rowManager.rows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged();break;case"boolean":!0===e&&(t.table.rowManager.activeRows.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged());break;default:Array.isArray(e)?(e.forEach(function(e){t._selectRow(e,!0,!0)}),t._rowSelectionChanged()):t._selectRow(e,!1,!0)}},SelectRow.prototype._selectRow=function(e,t,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var l=this.table.rowManager.findRow(e);l?-1==this.selectedRows.indexOf(l)&&(l.modules.select||(l.modules.select={}),l.modules.select.selected=!0,l.modules.select.checkboxEl&&(l.modules.select.checkboxEl.checked=!0),l.getElement().classList.add("tabulator-selected"),this.selectedRows.push(l),t||(this.table.options.rowSelected.call(this.table,l.getComponent()),this._rowSelectionChanged())):t||console.warn("Selection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.isRowSelected=function(e){return-1!==this.selectedRows.indexOf(e)},SelectRow.prototype.deselectRows=function(e){var t,o=this;if(void 0===e){t=o.selectedRows.length;for(var l=0;l<t;l++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(e)?(e.forEach(function(e){o._deselectRow(e,!0)}),o._rowSelectionChanged()):o._deselectRow(e)},SelectRow.prototype._deselectRow=function(e,t){var o,l=this,s=l.table.rowManager.findRow(e);s?(o=l.selectedRows.findIndex(function(e){return e==s}))>-1&&(s.modules.select||(s.modules.select={}),s.modules.select.selected=!1,s.modules.select.checkboxEl&&(s.modules.select.checkboxEl.checked=!1),s.getElement().classList.remove("tabulator-selected"),l.selectedRows.splice(o,1),t||(l.table.options.rowDeselected.call(this.table,s.getComponent()),l._rowSelectionChanged())):t||console.warn("Deselection Error - No such row found, ignoring selection:"+e)},SelectRow.prototype.getSelectedData=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getData())}),e},SelectRow.prototype.getSelectedRows=function(){var e=[];return this.selectedRows.forEach(function(t){e.push(t.getComponent())}),e},SelectRow.prototype._rowSelectionChanged=function(){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},SelectRow.prototype.registerRowSelectCheckbox=function(e,t){e._row.modules.select||(e._row.modules.select={}),e._row.modules.select.checkboxEl=t},SelectRow.prototype.registerHeaderSelectCheckbox=function(e){this.headerCheckboxElement=e},Tabulator.prototype.registerModule("selectRow",SelectRow);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Sort = function Sort(table) {
+ this.table = table; //hold Tabulator object
+ this.sortList = []; //holder current sort
+ this.changed = false; //has the sort changed since last render
+};
+
+//initialize column header for sorting
+Sort.prototype.initializeColumn = function (column, content) {
+ var self = this,
+ sorter = false,
+ colEl,
+ arrowEl;
+
+ switch (_typeof(column.definition.sorter)) {
+ case "string":
+ if (self.sorters[column.definition.sorter]) {
+ sorter = self.sorters[column.definition.sorter];
+ } else {
+ console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
+ }
+ break;
+
+ case "function":
+ sorter = column.definition.sorter;
+ break;
+ }
+
+ column.modules.sort = {
+ sorter: sorter, dir: "none",
+ params: column.definition.sorterParams || {},
+ startingDir: column.definition.headerSortStartingDir || "asc",
+ tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
+ };
+
+ if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
+
+ colEl = column.getElement();
+
+ colEl.classList.add("tabulator-sortable");
+
+ arrowEl = document.createElement("div");
+ arrowEl.classList.add("tabulator-arrow");
+ //create sorter arrow
+ content.appendChild(arrowEl);
+
+ //sort on click
+ colEl.addEventListener("click", function (e) {
+ var dir = "",
+ sorters = [],
+ match = false;
+
+ if (column.modules.sort) {
+ if (column.modules.sort.tristate) {
+ if (column.modules.sort.dir == "none") {
+ dir = column.modules.sort.startingDir;
+ } else {
+ if (column.modules.sort.dir == column.modules.sort.startingDir) {
+ dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
+ } else {
+ dir = "none";
+ }
+ }
+ } else {
+ switch (column.modules.sort.dir) {
+ case "asc":
+ dir = "desc";
+ break;
+
+ case "desc":
+ dir = "asc";
+ break;
+
+ default:
+ dir = column.modules.sort.startingDir;
+ }
+ }
+
+ if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
+ sorters = self.getSort();
+
+ match = sorters.findIndex(function (sorter) {
+ return sorter.field === column.getField();
+ });
+
+ if (match > -1) {
+ sorters[match].dir = dir;
+
+ if (match != sorters.length - 1) {
+ match = sorters.splice(match, 1)[0];
+ if (dir != "none") {
+ sorters.push(match);
+ }
+ }
+ } else {
+ if (dir != "none") {
+ sorters.push({ column: column, dir: dir });
+ }
+ }
+
+ //add to existing sort
+ self.setSort(sorters);
+ } else {
+ if (dir == "none") {
+ self.clear();
+ } else {
+ //sort by column only
+ self.setSort(column, dir);
+ }
+ }
+
+ self.table.rowManager.sorterRefresh(!self.sortList.length);
+ }
+ });
+ }
+};
+
+//check if the sorters have changed since last use
+Sort.prototype.hasChanged = function () {
+ var changed = this.changed;
+ this.changed = false;
+ return changed;
+};
+
+//return current sorters
+Sort.prototype.getSort = function () {
+ var self = this,
+ sorters = [];
+
+ self.sortList.forEach(function (item) {
+ if (item.column) {
+ sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
+ }
+ });
+
+ return sorters;
+};
+
+//change sort list and trigger sort
+Sort.prototype.setSort = function (sortList, dir) {
+ var self = this,
+ newSortList = [];
+
+ if (!Array.isArray(sortList)) {
+ sortList = [{ column: sortList, dir: dir }];
+ }
+
+ sortList.forEach(function (item) {
+ var column;
+
+ column = self.table.columnManager.findColumn(item.column);
+
+ if (column) {
+ item.column = column;
+ newSortList.push(item);
+ self.changed = true;
+ } else {
+ console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
+ }
+ });
+
+ self.sortList = newSortList;
+
+ if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("sort");
+ }
+};
+
+//clear sorters
+Sort.prototype.clear = function () {
+ this.setSort([]);
+};
+
+//find appropriate sorter for column
+Sort.prototype.findSorter = function (column) {
+ var row = this.table.rowManager.activeRows[0],
+ sorter = "string",
+ field,
+ value;
+
+ if (row) {
+ row = row.getData();
+ field = column.getField();
+
+ if (field) {
+
+ value = column.getFieldValue(row);
+
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "undefined":
+ sorter = "string";
+ break;
+
+ case "boolean":
+ sorter = "boolean";
+ break;
+
+ default:
+ if (!isNaN(value) && value !== "") {
+ sorter = "number";
+ } else {
+ if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+ sorter = "alphanum";
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ return this.sorters[sorter];
+};
+
+//work through sort list sorting data
+Sort.prototype.sort = function (data) {
+ var self = this,
+ lastSort,
+ sortList;
+
+ sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;
+
+ if (self.table.options.dataSorting) {
+ self.table.options.dataSorting.call(self.table, self.getSort());
+ }
+
+ self.clearColumnHeaders();
+
+ if (!self.table.options.ajaxSorting) {
+
+ sortList.forEach(function (item, i) {
+
+ if (item.column && item.column.modules.sort) {
+
+ //if no sorter has been defined, take a guess
+ if (!item.column.modules.sort.sorter) {
+ item.column.modules.sort.sorter = self.findSorter(item.column);
+ }
+
+ self._sortItem(data, item.column, item.dir, sortList, i);
+ }
+
+ self.setColumnHeader(item.column, item.dir);
+ });
+ } else {
+ sortList.forEach(function (item, i) {
+ self.setColumnHeader(item.column, item.dir);
+ });
+ }
+
+ if (self.table.options.dataSorted) {
+ self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+ }
+};
+
+//clear sort arrows on columns
+Sort.prototype.clearColumnHeaders = function () {
+ this.table.columnManager.getRealColumns().forEach(function (column) {
+ if (column.modules.sort) {
+ column.modules.sort.dir = "none";
+ column.getElement().setAttribute("aria-sort", "none");
+ }
+ });
+};
+
+//set the column header sort direction
+Sort.prototype.setColumnHeader = function (column, dir) {
+ column.modules.sort.dir = dir;
+ column.getElement().setAttribute("aria-sort", dir);
+};
+
+//sort each item in sort list
+Sort.prototype._sortItem = function (data, column, dir, sortList, i) {
+ var self = this;
+
+ var params = typeof column.modules.sort.params === "function" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;
+
+ data.sort(function (a, b) {
+
+ var result = self._sortRow(a, b, column, dir, params);
+
+ //if results match recurse through previous searchs to be sure
+ if (result === 0 && i) {
+ for (var j = i - 1; j >= 0; j--) {
+ result = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);
+
+ if (result !== 0) {
+ break;
+ }
+ }
+ }
+
+ return result;
+ });
+};
+
+//process individual rows for a sort function on active data
+Sort.prototype._sortRow = function (a, b, column, dir, params) {
+ var el1Comp, el2Comp, colComp;
+
+ //switch elements depending on search direction
+ var el1 = dir == "asc" ? a : b;
+ var el2 = dir == "asc" ? b : a;
+
+ a = column.getFieldValue(el1.getData());
+ b = column.getFieldValue(el2.getData());
+
+ a = typeof a !== "undefined" ? a : "";
+ b = typeof b !== "undefined" ? b : "";
+
+ el1Comp = el1.getComponent();
+ el2Comp = el2.getComponent();
+
+ return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
+};
+
+//default data sorters
+Sort.prototype.sorters = {
+
+ //sort numbers
+ number: function number(a, b, aRow, bRow, column, dir, params) {
+ var alignEmptyValues = params.alignEmptyValues;
+ var decimal = params.decimalSeparator || ".";
+ var thousand = params.thousandSeparator || ",";
+ var emptyAlign = 0;
+
+ a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
+ b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
+
+ //handle non numeric values
+ if (isNaN(a)) {
+ emptyAlign = isNaN(b) ? 0 : -1;
+ } else if (isNaN(b)) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ return a - b;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort strings
+ string: function string(a, b, aRow, bRow, column, dir, params) {
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+ var locale;
+
+ //handle empty values
+ if (!a) {
+ emptyAlign = !b ? 0 : -1;
+ } else if (!b) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ switch (_typeof(params.locale)) {
+ case "boolean":
+ if (params.locale) {
+ locale = this.table.modules.localize.getLocale();
+ }
+ break;
+ case "string":
+ locale = params.locale;
+ break;
+ }
+
+ return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort date
+ date: function date(a, b, aRow, bRow, column, dir, params) {
+ if (!params.format) {
+ params.format = "DD/MM/YYYY";
+ }
+
+ return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+ },
+
+ //sort hh:mm formatted times
+ time: function time(a, b, aRow, bRow, column, dir, params) {
+ if (!params.format) {
+ params.format = "hh:mm";
+ }
+
+ return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+ },
+
+ //sort datetime
+ datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
+ var format = params.format || "DD/MM/YYYY hh:mm:ss",
+ alignEmptyValues = params.alignEmptyValues,
+ emptyAlign = 0;
+
+ if (typeof moment != "undefined") {
+ a = moment(a, format);
+ b = moment(b, format);
+
+ if (!a.isValid()) {
+ emptyAlign = !b.isValid() ? 0 : -1;
+ } else if (!b.isValid()) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ return a - b;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ } else {
+ console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
+ }
+ },
+
+ //sort booleans
+ boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
+ var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
+ var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
+
+ return el1 - el2;
+ },
+
+ //sort if element contains any data
+ array: function array(a, b, aRow, bRow, column, dir, params) {
+ var el1 = 0;
+ var el2 = 0;
+ var type = params.type || "length";
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+
+ function calc(value) {
+
+ switch (type) {
+ case "length":
+ return value.length;
+ break;
+
+ case "sum":
+ return value.reduce(function (c, d) {
+ return c + d;
+ });
+ break;
+
+ case "max":
+ return Math.max.apply(null, value);
+ break;
+
+ case "min":
+ return Math.min.apply(null, value);
+ break;
+
+ case "avg":
+ return value.reduce(function (c, d) {
+ return c + d;
+ }) / value.length;
+ break;
+ }
+ }
+
+ //handle non array values
+ if (!Array.isArray(a)) {
+ alignEmptyValues = !Array.isArray(b) ? 0 : -1;
+ } else if (!Array.isArray(b)) {
+ alignEmptyValues = 1;
+ } else {
+
+ //compare valid values
+ el1 = a ? calc(a) : 0;
+ el2 = b ? calc(b) : 0;
+
+ return el1 - el2;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort if element contains any data
+ exists: function exists(a, b, aRow, bRow, column, dir, params) {
+ var el1 = typeof a == "undefined" ? 0 : 1;
+ var el2 = typeof b == "undefined" ? 0 : 1;
+
+ return el1 - el2;
+ },
+
+ //sort alpha numeric strings
+ alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
+ var a,
+ b,
+ a1,
+ b1,
+ i = 0,
+ L,
+ rx = /(\d+)|(\D+)/g,
+ rd = /\d/;
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+
+ //handle empty values
+ if (!as && as !== 0) {
+ emptyAlign = !bs && bs !== 0 ? 0 : -1;
+ } else if (!bs && bs !== 0) {
+ emptyAlign = 1;
+ } else {
+
+ if (isFinite(as) && isFinite(bs)) return as - bs;
+ a = String(as).toLowerCase();
+ b = String(bs).toLowerCase();
+ if (a === b) return 0;
+ if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
+ a = a.match(rx);
+ b = b.match(rx);
+ L = a.length > b.length ? b.length : a.length;
+ while (i < L) {
+ a1 = a[i];
+ b1 = b[i++];
+ if (a1 !== b1) {
+ if (isFinite(a1) && isFinite(b1)) {
+ if (a1.charAt(0) === "0") a1 = "." + a1;
+ if (b1.charAt(0) === "0") b1 = "." + b1;
+ return a1 - b1;
+ } else return a1 > b1 ? 1 : -1;
+ }
+ }
+
+ return a.length > b.length;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ }
+};
+
+Tabulator.prototype.registerModule("sort", Sort);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Sort=function(t){this.table=t,this.sortList=[],this.changed=!1};Sort.prototype.initializeColumn=function(t,e){var o,r,n=this,i=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?i=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":i=t.definition.sorter}t.modules.sort={sorter:i,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),r=document.createElement("div"),r.classList.add("tabulator-arrow"),e.appendChild(r),o.addEventListener("click",function(e){var o="",r=[],i=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(r=n.getSort(),i=r.findIndex(function(e){return e.field===t.getField()}),i>-1?(r[i].dir=o,i!=r.length-1&&(i=r.splice(i,1)[0],"none"!=o&&r.push(i))):"none"!=o&&r.push({column:t,dir:o}),n.setSort(r)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},Sort.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},Sort.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},Sort.prototype.setSort=function(t,e){var o=this,r=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,r.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=r,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},Sort.prototype.clear=function(){this.setSort([])},Sort.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],r="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":r="string";break;case"boolean":r="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(r="alphanum"):r="number"}return this.sorters[r]},Sort.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(r,n){r.column&&r.column.modules.sort&&(r.column.modules.sort.sorter||(r.column.modules.sort.sorter=o.findSorter(r.column)),o._sortItem(t,r.column,r.dir,e,n)),o.setColumnHeader(r.column,r.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},Sort.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},Sort.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},Sort.prototype._sortItem=function(t,e,o,r,n){var i=this,s="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=i._sortRow(t,a,e,o,s);if(0===l&&n)for(var u=n-1;u>=0&&0===(l=i._sortRow(t,a,r[u].column,r[u].dir,s));u--);return l})},Sort.prototype._sortRow=function(t,e,o,r,n){var i,s,a="asc"==r?t:e,l="asc"==r?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",i=a.getComponent(),s=l.getComponent(),o.modules.sort.sorter.call(this,t,e,i,s,o.getComponent(),r,n)},Sort.prototype.sorters={number:function(t,e,o,r,n,i,s){var a=s.alignEmptyValues,l=s.decimalSeparator||".",u=s.thousandSeparator||",",c=0;if(t=parseFloat(String(t).split(u).join("").split(l).join(".")),e=parseFloat(String(e).split(u).join("").split(l).join(".")),isNaN(t))c=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;c=1}return("top"===a&&"desc"===i||"bottom"===a&&"asc"===i)&&(c*=-1),c},string:function(t,e,o,r,n,i,s){var a,l=s.alignEmptyValues,u=0;if(t){if(e){switch(_typeof(s.locale)){case"boolean":s.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=s.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}u=1}else u=e?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u},date:function(t,e,o,r,n,i,s){return s.format||(s.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},time:function(t,e,o,r,n,i,s){return s.format||(s.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,r,n,i,s)},datetime:function(t,e,o,r,n,i,s){var a=s.format||"DD/MM/YYYY hh:mm:ss",l=s.alignEmptyValues,u=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;u=1}else u=e.isValid()?-1:0;return("top"===l&&"desc"===i||"bottom"===l&&"asc"===i)&&(u*=-1),u}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,r,n,i,s){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,r,n,i,s){function a(t){switch(c){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,u=0,c=s.type||"length",d=s.alignEmptyValues,m=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,u=e?a(e):0,l-u;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===i||"bottom"===d&&"asc"===i)&&(m*=-1),m},exists:function(t,e,o,r,n,i,s){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,r,n,i,s){var a,l,u,c,d,m=0,f=/(\d+)|(\D+)/g,p=/\d/,h=s.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!p.test(a)||!p.test(l))return a>l?1:-1;for(a=a.match(f),l=l.match(f),d=a.length>l.length?l.length:a.length;m<d;)if(u=a[m],c=l[m++],u!==c)return isFinite(u)&&isFinite(c)?("0"===u.charAt(0)&&(u="."+u),"0"===c.charAt(0)&&(c="."+c),u-c):u>c?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===h&&"desc"===i||"bottom"===h&&"asc"===i)&&(g*=-1),g}},Tabulator.prototype.registerModule("sort",Sort);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+var Validate = function Validate(table) {
+ this.table = table;
+};
+
+//validate
+Validate.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = [],
+ validator;
+
+ if (column.definition.validator) {
+
+ if (Array.isArray(column.definition.validator)) {
+ column.definition.validator.forEach(function (item) {
+ validator = self._extractValidator(item);
+
+ if (validator) {
+ config.push(validator);
+ }
+ });
+ } else {
+ validator = this._extractValidator(column.definition.validator);
+
+ if (validator) {
+ config.push(validator);
+ }
+ }
+
+ column.modules.validate = config.length ? config : false;
+ }
+};
+
+Validate.prototype._extractValidator = function (value) {
+ var parts, type, params;
+
+ switch (typeof value === "undefined" ? "undefined" : _typeof(value)) {
+ case "string":
+ parts = value.split(":", 2);
+ type = parts.shift();
+ params = parts[0];
+
+ return this._buildValidator(type, params);
+ break;
+
+ case "function":
+ return this._buildValidator(value);
+ break;
+
+ case "object":
+ return this._buildValidator(value.type, value.parameters);
+ break;
+ }
+};
+
+Validate.prototype._buildValidator = function (type, params) {
+
+ var func = typeof type == "function" ? type : this.validators[type];
+
+ if (!func) {
+ console.warn("Validator Setup Error - No matching validator found:", type);
+ return false;
+ } else {
+ return {
+ type: typeof type == "function" ? "function" : type,
+ func: func,
+ params: params
+ };
+ }
+};
+
+Validate.prototype.validate = function (validators, cell, value) {
+ var self = this,
+ valid = [];
+
+ if (validators) {
+ validators.forEach(function (item) {
+ if (!item.func.call(self, cell, value, item.params)) {
+ valid.push({
+ type: item.type,
+ parameters: item.params
+ });
+ }
+ });
+ }
+
+ return valid.length ? valid : true;
+};
+
+Validate.prototype.validators = {
+
+ //is integer
+ integer: function integer(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ value = Number(value);
+ return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
+ },
+
+ //is float
+ float: function float(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ value = Number(value);
+ return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
+ },
+
+ //must be a number
+ numeric: function numeric(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return !isNaN(value);
+ },
+
+ //must be a string
+ string: function string(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return isNaN(value);
+ },
+
+ //maximum value
+ max: function max(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return parseFloat(value) <= parameters;
+ },
+
+ //minimum value
+ min: function min(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return parseFloat(value) >= parameters;
+ },
+
+ //minimum string length
+ minLength: function minLength(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return String(value).length >= parameters;
+ },
+
+ //maximum string length
+ maxLength: function maxLength(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return String(value).length <= parameters;
+ },
+
+ //in provided value list
+ in: function _in(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ if (typeof parameters == "string") {
+ parameters = parameters.split("|");
+ }
+
+ return value === "" || parameters.indexOf(value) > -1;
+ },
+
+ //must match provided regex
+ regex: function regex(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ var reg = new RegExp(parameters);
+
+ return reg.test(value);
+ },
+
+ //value must be unique in this column
+ unique: function unique(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ var unique = true;
+
+ var cellData = cell.getData();
+ var column = cell.getColumn()._getSelf();
+
+ this.table.rowManager.rows.forEach(function (row) {
+ var data = row.getData();
+
+ if (data !== cellData) {
+ if (value == column.getFieldValue(data)) {
+ unique = false;
+ }
+ }
+ });
+
+ return unique;
+ },
+
+ //must have a value
+ required: function required(cell, value, parameters) {
+ return value !== "" && value !== null && typeof value !== "undefined";
+ }
+};
+
+Tabulator.prototype.registerModule("validate", Validate);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t},Validate=function(t){this.table=t};Validate.prototype.initializeColumn=function(t){var n,i=this,o=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(n=i._extractValidator(t))&&o.push(n)}):(n=this._extractValidator(t.definition.validator))&&o.push(n),t.modules.validate=!!o.length&&o)},Validate.prototype._extractValidator=function(t){var n,i,o;switch(void 0===t?"undefined":_typeof(t)){case"string":return n=t.split(":",2),i=n.shift(),o=n[0],this._buildValidator(i,o);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},Validate.prototype._buildValidator=function(t,n){var i="function"==typeof t?t:this.validators[t];return i?{type:"function"==typeof t?"function":t,func:i,params:n}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},Validate.prototype.validate=function(t,n,i){var o=this,r=[];return t&&t.forEach(function(t){t.func.call(o,n,i,t.params)||r.push({type:t.type,parameters:t.params})}),!r.length||r},Validate.prototype.validators={integer:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&Math.floor(n)===n},float:function(t,n,i){return""===n||null===n||void 0===n||"number"==typeof(n=Number(n))&&isFinite(n)&&n%1!=0},numeric:function(t,n,i){return""===n||null===n||void 0===n||!isNaN(n)},string:function(t,n,i){return""===n||null===n||void 0===n||isNaN(n)},max:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)<=i},min:function(t,n,i){return""===n||null===n||void 0===n||parseFloat(n)>=i},minLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length>=i},maxLength:function(t,n,i){return""===n||null===n||void 0===n||String(n).length<=i},in:function(t,n,i){return""===n||null===n||void 0===n||("string"==typeof i&&(i=i.split("|")),""===n||i.indexOf(n)>-1)},regex:function(t,n,i){return""===n||null===n||void 0===n||new RegExp(i).test(n)},unique:function(t,n,i){if(""===n||null===n||void 0===n)return!0;var o=!0,r=t.getData(),e=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var i=t.getData();i!==r&&n==e.getFieldValue(i)&&(o=!1)}),o},required:function(t,n,i){return""!==n&&null!==n&&void 0!==n}},Tabulator.prototype.registerModule("validate",Validate);
\ No newline at end of file
--- /dev/null
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+;(function (global, factory) {
+ if ((typeof exports === 'undefined' ? 'undefined' : _typeof(exports)) === 'object' && typeof module !== 'undefined') {
+ module.exports = factory();
+ } else if (typeof define === 'function' && define.amd) {
+ define(factory);
+ } else {
+ global.Tabulator = factory();
+ }
+})(this, function () {
+
+ 'use strict';
+
+ // https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+
+
+ if (!Array.prototype.findIndex) {
+
+ Object.defineProperty(Array.prototype, 'findIndex', {
+
+ value: function value(predicate) {
+
+ // 1. Let O be ? ToObject(this value).
+
+
+ if (this == null) {
+
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+
+
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+
+ if (typeof predicate !== 'function') {
+
+ throw new TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+
+
+ var k = 0;
+
+ // 6. Repeat, while k < len
+
+
+ while (k < len) {
+
+ // a. Let Pk be ! ToString(k).
+
+
+ // b. Let kValue be ? Get(O, Pk).
+
+
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+
+
+ // d. If testResult is true, return k.
+
+
+ var kValue = o[k];
+
+ if (predicate.call(thisArg, kValue, k, o)) {
+
+ return k;
+ }
+
+ // e. Increase k by 1.
+
+
+ k++;
+ }
+
+ // 7. Return -1.
+
+
+ return -1;
+ }
+
+ });
+ }
+
+ // https://tc39.github.io/ecma262/#sec-array.prototype.find
+
+
+ if (!Array.prototype.find) {
+
+ Object.defineProperty(Array.prototype, 'find', {
+
+ value: function value(predicate) {
+
+ // 1. Let O be ? ToObject(this value).
+
+
+ if (this == null) {
+
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+
+
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+
+ if (typeof predicate !== 'function') {
+
+ throw new TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+
+
+ var k = 0;
+
+ // 6. Repeat, while k < len
+
+
+ while (k < len) {
+
+ // a. Let Pk be ! ToString(k).
+
+
+ // b. Let kValue be ? Get(O, Pk).
+
+
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+
+
+ // d. If testResult is true, return kValue.
+
+
+ var kValue = o[k];
+
+ if (predicate.call(thisArg, kValue, k, o)) {
+
+ return kValue;
+ }
+
+ // e. Increase k by 1.
+
+
+ k++;
+ }
+
+ // 7. Return undefined.
+
+
+ return undefined;
+ }
+
+ });
+ }
+
+ var ColumnManager = function ColumnManager(table) {
+
+ this.table = table; //hold parent table
+
+
+ this.blockHozScrollEvent = false;
+
+ this.headersElement = this.createHeadersElement();
+
+ this.element = this.createHeaderElement(); //containing element
+
+
+ this.rowManager = null; //hold row manager object
+
+
+ this.columns = []; // column definition object
+
+
+ this.columnsByIndex = []; //columns by index
+
+
+ this.columnsByField = {}; //columns by field
+
+
+ this.scrollLeft = 0;
+
+ this.element.insertBefore(this.headersElement, this.element.firstChild);
+ };
+
+ ////////////// Setup Functions /////////////////
+
+
+ ColumnManager.prototype.createHeadersElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-headers");
+
+ return el;
+ };
+
+ ColumnManager.prototype.createHeaderElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-header");
+
+ if (!this.table.options.headerVisible) {
+
+ el.classList.add("tabulator-header-hidden");
+ }
+
+ return el;
+ };
+
+ ColumnManager.prototype.initialize = function () {
+
+ var self = this;
+
+ //scroll body along with header
+
+
+ // self.element.addEventListener("scroll", function(e){
+
+
+ // if(!self.blockHozScrollEvent){
+
+
+ // self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
+
+
+ // }
+
+
+ // });
+
+ };
+
+ //link to row manager
+
+
+ ColumnManager.prototype.setRowManager = function (manager) {
+
+ this.rowManager = manager;
+ };
+
+ //return containing element
+
+
+ ColumnManager.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ //return header containing element
+
+
+ ColumnManager.prototype.getHeadersElement = function () {
+
+ return this.headersElement;
+ };
+
+ // ColumnManager.prototype.tempScrollBlock = function(){
+
+
+ // clearTimeout(this.blockHozScrollEvent);
+
+
+ // this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
+
+
+ // }
+
+
+ //scroll horizontally to match table body
+
+
+ ColumnManager.prototype.scrollHorizontal = function (left) {
+
+ var hozAdjust = 0,
+ scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
+
+ // this.tempScrollBlock();
+
+
+ this.element.scrollLeft = left;
+
+ //adjust for vertical scrollbar moving table when present
+
+
+ if (left > scrollWidth) {
+
+ hozAdjust = left - scrollWidth;
+
+ this.element.style.marginLeft = -hozAdjust + "px";
+ } else {
+
+ this.element.style.marginLeft = 0;
+ }
+
+ //keep frozen columns fixed in position
+
+
+ //this._calcFrozenColumnsPos(hozAdjust + 3);
+
+
+ this.scrollLeft = left;
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.scrollHorizontal();
+ }
+ };
+
+ ///////////// Column Setup Functions /////////////
+
+
+ ColumnManager.prototype.generateColumnsFromRowData = function (data) {
+
+ var cols = [],
+ row,
+ sorter;
+
+ if (data && data.length) {
+
+ row = data[0];
+
+ for (var key in row) {
+
+ var col = {
+
+ field: key,
+
+ title: key
+
+ };
+
+ var value = row[key];
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+
+ case "undefined":
+
+ sorter = "string";
+
+ break;
+
+ case "boolean":
+
+ sorter = "boolean";
+
+ break;
+
+ case "object":
+
+ if (Array.isArray(value)) {
+
+ sorter = "array";
+ } else {
+
+ sorter = "string";
+ }
+
+ break;
+
+ default:
+
+ if (!isNaN(value) && value !== "") {
+
+ sorter = "number";
+ } else {
+
+ if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+
+ sorter = "alphanum";
+ } else {
+
+ sorter = "string";
+ }
+ }
+
+ break;
+
+ }
+
+ col.sorter = sorter;
+
+ cols.push(col);
+ }
+
+ this.table.options.columns = cols;
+
+ this.setColumns(this.table.options.columns);
+ }
+ };
+
+ ColumnManager.prototype.setColumns = function (cols, row) {
+
+ var self = this;
+
+ while (self.headersElement.firstChild) {
+ self.headersElement.removeChild(self.headersElement.firstChild);
+ }self.columns = [];
+
+ self.columnsByIndex = [];
+
+ self.columnsByField = {};
+
+ //reset frozen columns
+
+
+ if (self.table.modExists("frozenColumns")) {
+
+ self.table.modules.frozenColumns.reset();
+ }
+
+ cols.forEach(function (def, i) {
+
+ self._addColumn(def);
+ });
+
+ self._reIndexColumns();
+
+ if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
+
+ self.table.modules.responsiveLayout.initialize();
+ }
+
+ self.redraw(true);
+ };
+
+ ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
+
+ var column = new Column(definition, this),
+ colEl = column.getElement(),
+ index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
+
+ if (nextToColumn && index > -1) {
+
+ var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
+
+ var nextEl = nextToColumn.getElement();
+
+ if (before) {
+
+ this.columns.splice(parentIndex, 0, column);
+
+ nextEl.parentNode.insertBefore(colEl, nextEl);
+ } else {
+
+ this.columns.splice(parentIndex + 1, 0, column);
+
+ nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
+ }
+ } else {
+
+ if (before) {
+
+ this.columns.unshift(column);
+
+ this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
+ } else {
+
+ this.columns.push(column);
+
+ this.headersElement.appendChild(column.getElement());
+ }
+ }
+
+ return column;
+ };
+
+ ColumnManager.prototype.registerColumnField = function (col) {
+
+ if (col.definition.field) {
+
+ this.columnsByField[col.definition.field] = col;
+ }
+ };
+
+ ColumnManager.prototype.registerColumnPosition = function (col) {
+
+ this.columnsByIndex.push(col);
+ };
+
+ ColumnManager.prototype._reIndexColumns = function () {
+
+ this.columnsByIndex = [];
+
+ this.columns.forEach(function (column) {
+
+ column.reRegisterPosition();
+ });
+ };
+
+ //ensure column headers take up the correct amount of space in column groups
+
+
+ ColumnManager.prototype._verticalAlignHeaders = function () {
+
+ var self = this,
+ minHeight = 0;
+
+ self.columns.forEach(function (column) {
+
+ var height;
+
+ column.clearVerticalAlign();
+
+ height = column.getHeight();
+
+ if (height > minHeight) {
+
+ minHeight = height;
+ }
+ });
+
+ self.columns.forEach(function (column) {
+
+ column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+ });
+
+ self.rowManager.adjustTableSize();
+ };
+
+ //////////////// Column Details /////////////////
+
+
+ ColumnManager.prototype.findColumn = function (subject) {
+
+ var self = this;
+
+ if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+ if (subject instanceof Column) {
+
+ //subject is column element
+
+
+ return subject;
+ } else if (subject instanceof ColumnComponent) {
+
+ //subject is public column component
+
+
+ return subject._getSelf() || false;
+ } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+ //subject is a HTML element of the column header
+
+
+ var match = self.columns.find(function (column) {
+
+ return column.element === subject;
+ });
+
+ return match || false;
+ }
+ } else {
+
+ //subject should be treated as the field name of the column
+
+
+ return this.columnsByField[subject] || false;
+ }
+
+ //catch all for any other type of input
+
+
+ return false;
+ };
+
+ ColumnManager.prototype.getColumnByField = function (field) {
+
+ return this.columnsByField[field];
+ };
+
+ ColumnManager.prototype.getColumnByIndex = function (index) {
+
+ return this.columnsByIndex[index];
+ };
+
+ ColumnManager.prototype.getFirstVisibileColumn = function (index) {
+
+ var index = this.columnsByIndex.findIndex(function (col) {
+
+ return col.visible;
+ });
+
+ return index > -1 ? this.columnsByIndex[index] : false;
+ };
+
+ ColumnManager.prototype.getColumns = function () {
+
+ return this.columns;
+ };
+
+ ColumnManager.prototype.findColumnIndex = function (column) {
+
+ return this.columnsByIndex.findIndex(function (col) {
+
+ return column === col;
+ });
+ };
+
+ //return all columns that are not groups
+
+
+ ColumnManager.prototype.getRealColumns = function () {
+
+ return this.columnsByIndex;
+ };
+
+ //travers across columns and call action
+
+
+ ColumnManager.prototype.traverse = function (callback) {
+
+ var self = this;
+
+ self.columnsByIndex.forEach(function (column, i) {
+
+ callback(column, i);
+ });
+ };
+
+ //get defintions of actual columns
+
+
+ ColumnManager.prototype.getDefinitions = function (active) {
+
+ var self = this,
+ output = [];
+
+ self.columnsByIndex.forEach(function (column) {
+
+ if (!active || active && column.visible) {
+
+ output.push(column.getDefinition());
+ }
+ });
+
+ return output;
+ };
+
+ //get full nested definition tree
+
+
+ ColumnManager.prototype.getDefinitionTree = function () {
+
+ var self = this,
+ output = [];
+
+ self.columns.forEach(function (column) {
+
+ output.push(column.getDefinition(true));
+ });
+
+ return output;
+ };
+
+ ColumnManager.prototype.getComponents = function (structured) {
+
+ var self = this,
+ output = [],
+ columns = structured ? self.columns : self.columnsByIndex;
+
+ columns.forEach(function (column) {
+
+ output.push(column.getComponent());
+ });
+
+ return output;
+ };
+
+ ColumnManager.prototype.getWidth = function () {
+
+ var width = 0;
+
+ this.columnsByIndex.forEach(function (column) {
+
+ if (column.visible) {
+
+ width += column.getWidth();
+ }
+ });
+
+ return width;
+ };
+
+ ColumnManager.prototype.moveColumn = function (from, to, after) {
+
+ this.moveColumnActual(from, to, after);
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ to.element.parentNode.insertBefore(from.element, to.element);
+
+ if (after) {
+
+ to.element.parentNode.insertBefore(to.element, from.element);
+ }
+
+ this._verticalAlignHeaders();
+
+ this.table.rowManager.reinitialize();
+ };
+
+ ColumnManager.prototype.moveColumnActual = function (from, to, after) {
+
+ this._moveColumnInArray(this.columns, from, to, after);
+
+ this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.options.columnMoved) {
+
+ this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
+ }
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+ };
+
+ ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
+
+ var fromIndex = columns.indexOf(from),
+ toIndex;
+
+ if (fromIndex > -1) {
+
+ columns.splice(fromIndex, 1);
+
+ toIndex = columns.indexOf(to);
+
+ if (toIndex > -1) {
+
+ if (after) {
+
+ toIndex = toIndex + 1;
+ }
+ } else {
+
+ toIndex = fromIndex;
+ }
+
+ columns.splice(toIndex, 0, from);
+
+ if (updateRows) {
+
+ this.table.rowManager.rows.forEach(function (row) {
+
+ if (row.cells.length) {
+
+ var cell = row.cells.splice(fromIndex, 1)[0];
+
+ row.cells.splice(toIndex, 0, cell);
+ }
+ });
+ }
+ }
+ };
+
+ ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
+ var _this = this;
+
+ var left = 0,
+ offset = 0,
+ adjust = 0,
+ colEl = column.getElement();
+
+ return new Promise(function (resolve, reject) {
+
+ if (typeof position === "undefined") {
+
+ position = _this.table.options.scrollToColumnPosition;
+ }
+
+ if (typeof ifVisible === "undefined") {
+
+ ifVisible = _this.table.options.scrollToColumnIfVisible;
+ }
+
+ if (column.visible) {
+
+ //align to correct position
+
+
+ switch (position) {
+
+ case "middle":
+
+ case "center":
+
+ adjust = -_this.element.clientWidth / 2;
+
+ break;
+
+ case "right":
+
+ adjust = colEl.clientWidth - _this.headersElement.clientWidth;
+
+ break;
+
+ }
+
+ //check column visibility
+
+
+ if (!ifVisible) {
+
+ offset = colEl.offsetLeft;
+
+ if (offset > 0 && offset + colEl.offsetWidth < _this.element.clientWidth) {
+
+ return false;
+ }
+ }
+
+ //calculate scroll position
+
+
+ left = colEl.offsetLeft + _this.element.scrollLeft + adjust;
+
+ left = Math.max(Math.min(left, _this.table.rowManager.element.scrollWidth - _this.table.rowManager.element.clientWidth), 0);
+
+ _this.table.rowManager.scrollHorizontal(left);
+
+ _this.scrollHorizontal(left);
+
+ resolve();
+ } else {
+
+ console.warn("Scroll Error - Column not visible");
+
+ reject("Scroll Error - Column not visible");
+ }
+ });
+ };
+
+ //////////////// Cell Management /////////////////
+
+
+ ColumnManager.prototype.generateCells = function (row) {
+
+ var self = this;
+
+ var cells = [];
+
+ self.columnsByIndex.forEach(function (column) {
+
+ cells.push(column.generateCell(row));
+ });
+
+ return cells;
+ };
+
+ //////////////// Column Management /////////////////
+
+
+ ColumnManager.prototype.getFlexBaseWidth = function () {
+
+ var self = this,
+ totalWidth = self.table.element.clientWidth,
+ //table element width
+
+
+ fixedWidth = 0;
+
+ //adjust for vertical scrollbar if present
+
+
+ if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
+
+ totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
+ }
+
+ this.columnsByIndex.forEach(function (column) {
+
+ var width, minWidth, colWidth;
+
+ if (column.visible) {
+
+ width = column.definition.width || 0;
+
+ minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
+
+ if (typeof width == "string") {
+
+ if (width.indexOf("%") > -1) {
+
+ colWidth = totalWidth / 100 * parseInt(width);
+ } else {
+
+ colWidth = parseInt(width);
+ }
+ } else {
+
+ colWidth = width;
+ }
+
+ fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+ }
+ });
+
+ return fixedWidth;
+ };
+
+ ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+
+ var column = this._addColumn(definition, before, nextToColumn);
+
+ this._reIndexColumns();
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ this.redraw();
+
+ if (this.table.modules.layout.getMode() != "fitColumns") {
+
+ column.reinitializeWidth();
+ }
+
+ this._verticalAlignHeaders();
+
+ this.table.rowManager.reinitialize();
+ };
+
+ //remove column from system
+
+
+ ColumnManager.prototype.deregisterColumn = function (column) {
+
+ var field = column.getField(),
+ index;
+
+ //remove from field list
+
+
+ if (field) {
+
+ delete this.columnsByField[field];
+ }
+
+ //remove from index list
+
+
+ index = this.columnsByIndex.indexOf(column);
+
+ if (index > -1) {
+
+ this.columnsByIndex.splice(index, 1);
+ }
+
+ //remove from column list
+
+
+ index = this.columns.indexOf(column);
+
+ if (index > -1) {
+
+ this.columns.splice(index, 1);
+ }
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ this.redraw();
+ };
+
+ //redraw columns
+
+
+ ColumnManager.prototype.redraw = function (force) {
+
+ if (force) {
+
+ if (Tabulator.prototype.helpers.elVisible(this.element)) {
+
+ this._verticalAlignHeaders();
+ }
+
+ this.table.rowManager.resetScroll();
+
+ this.table.rowManager.reinitialize();
+ }
+
+ if (this.table.modules.layout.getMode() == "fitColumns") {
+
+ this.table.modules.layout.layout();
+ } else {
+
+ if (force) {
+
+ this.table.modules.layout.layout();
+ } else {
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ }
+ }
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.layout();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ if (force) {
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.redraw();
+ }
+ }
+
+ this.table.footerManager.redraw();
+ };
+
+ //public column object
+
+ var ColumnComponent = function ColumnComponent(column) {
+
+ this._column = column;
+
+ this.type = "ColumnComponent";
+ };
+
+ ColumnComponent.prototype.getElement = function () {
+
+ return this._column.getElement();
+ };
+
+ ColumnComponent.prototype.getDefinition = function () {
+
+ return this._column.getDefinition();
+ };
+
+ ColumnComponent.prototype.getField = function () {
+
+ return this._column.getField();
+ };
+
+ ColumnComponent.prototype.getCells = function () {
+
+ var cells = [];
+
+ this._column.cells.forEach(function (cell) {
+
+ cells.push(cell.getComponent());
+ });
+
+ return cells;
+ };
+
+ ColumnComponent.prototype.getVisibility = function () {
+
+ return this._column.visible;
+ };
+
+ ColumnComponent.prototype.show = function () {
+
+ if (this._column.isGroup) {
+
+ this._column.columns.forEach(function (column) {
+
+ column.show();
+ });
+ } else {
+
+ this._column.show();
+ }
+ };
+
+ ColumnComponent.prototype.hide = function () {
+
+ if (this._column.isGroup) {
+
+ this._column.columns.forEach(function (column) {
+
+ column.hide();
+ });
+ } else {
+
+ this._column.hide();
+ }
+ };
+
+ ColumnComponent.prototype.toggle = function () {
+
+ if (this._column.visible) {
+
+ this.hide();
+ } else {
+
+ this.show();
+ }
+ };
+
+ ColumnComponent.prototype.delete = function () {
+
+ this._column.delete();
+ };
+
+ ColumnComponent.prototype.getSubColumns = function () {
+
+ var output = [];
+
+ if (this._column.columns.length) {
+
+ this._column.columns.forEach(function (column) {
+
+ output.push(column.getComponent());
+ });
+ }
+
+ return output;
+ };
+
+ ColumnComponent.prototype.getParentColumn = function () {
+
+ return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
+ };
+
+ ColumnComponent.prototype._getSelf = function () {
+
+ return this._column;
+ };
+
+ ColumnComponent.prototype.scrollTo = function () {
+
+ return this._column.table.columnManager.scrollToColumn(this._column);
+ };
+
+ ColumnComponent.prototype.getTable = function () {
+
+ return this._column.table;
+ };
+
+ ColumnComponent.prototype.headerFilterFocus = function () {
+
+ if (this._column.table.modExists("filter", true)) {
+
+ this._column.table.modules.filter.setHeaderFilterFocus(this._column);
+ }
+ };
+
+ ColumnComponent.prototype.reloadHeaderFilter = function () {
+
+ if (this._column.table.modExists("filter", true)) {
+
+ this._column.table.modules.filter.reloadHeaderFilter(this._column);
+ }
+ };
+
+ ColumnComponent.prototype.setHeaderFilterValue = function (value) {
+
+ if (this._column.table.modExists("filter", true)) {
+
+ this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
+ }
+ };
+
+ ColumnComponent.prototype.move = function (to, after) {
+
+ var toColumn = this._column.table.columnManager.findColumn(to);
+
+ if (toColumn) {
+
+ this._column.table.columnManager.moveColumn(this._column, toColumn, after);
+ } else {
+
+ console.warn("Move Error - No matching column found:", toColumn);
+ }
+ };
+
+ ColumnComponent.prototype.getNextColumn = function () {
+
+ var nextCol = this._column.nextColumn();
+
+ return nextCol ? nextCol.getComponent() : false;
+ };
+
+ ColumnComponent.prototype.getPrevColumn = function () {
+
+ var prevCol = this._column.prevColumn();
+
+ return prevCol ? prevCol.getComponent() : false;
+ };
+
+ var Column = function Column(def, parent) {
+
+ var self = this;
+
+ this.table = parent.table;
+
+ this.definition = def; //column definition
+
+ this.parent = parent; //hold parent object
+
+ this.type = "column"; //type of element
+
+ this.columns = []; //child columns
+
+ this.cells = []; //cells bound to this column
+
+ this.element = this.createElement(); //column header element
+
+ this.contentElement = false;
+
+ this.groupElement = this.createGroupElement(); //column group holder element
+
+ this.isGroup = false;
+
+ this.tooltip = false; //hold column tooltip
+
+ this.hozAlign = ""; //horizontal text alignment
+
+
+ //multi dimensional filed handling
+
+ this.field = "";
+
+ this.fieldStructure = "";
+
+ this.getFieldValue = "";
+
+ this.setFieldValue = "";
+
+ this.setField(this.definition.field);
+
+ if (this.table.options.invalidOptionWarnings) {
+
+ this.checkDefinition();
+ }
+
+ this.modules = {}; //hold module variables;
+
+
+ this.cellEvents = {
+
+ cellClick: false,
+
+ cellDblClick: false,
+
+ cellContext: false,
+
+ cellTap: false,
+
+ cellDblTap: false,
+
+ cellTapHold: false,
+
+ cellMouseEnter: false,
+
+ cellMouseLeave: false,
+
+ cellMouseOver: false,
+
+ cellMouseOut: false,
+
+ cellMouseMove: false
+
+ };
+
+ this.width = null; //column width
+
+ this.widthStyled = ""; //column width prestyled to improve render efficiency
+
+ this.minWidth = null; //column minimum width
+
+ this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
+
+ this.widthFixed = false; //user has specified a width for this column
+
+
+ this.visible = true; //default visible state
+
+
+ this._mapDepricatedFunctionality();
+
+ //initialize column
+
+ if (def.columns) {
+
+ this.isGroup = true;
+
+ def.columns.forEach(function (def, i) {
+
+ var newCol = new Column(def, self);
+
+ self.attachColumn(newCol);
+ });
+
+ self.checkColumnVisibility();
+ } else {
+
+ parent.registerColumnField(this);
+ }
+
+ if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
+
+ this.table.modules.moveRow.setHandle(true);
+ }
+
+ this._buildHeader();
+ };
+
+ Column.prototype.createElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col");
+
+ el.setAttribute("role", "columnheader");
+
+ el.setAttribute("aria-sort", "none");
+
+ return el;
+ };
+
+ Column.prototype.createGroupElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col-group-cols");
+
+ return el;
+ };
+
+ Column.prototype.checkDefinition = function () {
+ var _this2 = this;
+
+ Object.keys(this.definition).forEach(function (key) {
+
+ if (_this2.defaultOptionList.indexOf(key) === -1) {
+
+ console.warn("Invalid column definition option in '" + (_this2.field || _this2.definition.title) + "' column:", key);
+ }
+ });
+ };
+
+ Column.prototype.setField = function (field) {
+
+ this.field = field;
+
+ this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
+
+ this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
+
+ this.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;
+ };
+
+ //register column position with column manager
+
+ Column.prototype.registerColumnPosition = function (column) {
+
+ this.parent.registerColumnPosition(column);
+ };
+
+ //register column position with column manager
+
+ Column.prototype.registerColumnField = function (column) {
+
+ this.parent.registerColumnField(column);
+ };
+
+ //trigger position registration
+
+ Column.prototype.reRegisterPosition = function () {
+
+ if (this.isGroup) {
+
+ this.columns.forEach(function (column) {
+
+ column.reRegisterPosition();
+ });
+ } else {
+
+ this.registerColumnPosition(this);
+ }
+ };
+
+ Column.prototype._mapDepricatedFunctionality = function () {
+
+ if (typeof this.definition.hideInHtml !== "undefined") {
+
+ this.definition.htmlOutput = !this.definition.hideInHtml;
+
+ console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
+ }
+ };
+
+ Column.prototype.setTooltip = function () {
+
+ var self = this,
+ def = self.definition;
+
+ //set header tooltips
+
+ var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
+
+ if (tooltip) {
+
+ if (tooltip === true) {
+
+ if (def.field) {
+
+ self.table.modules.localize.bind("columns|" + def.field, function (value) {
+
+ self.element.setAttribute("title", value || def.title);
+ });
+ } else {
+
+ self.element.setAttribute("title", def.title);
+ }
+ } else {
+
+ if (typeof tooltip == "function") {
+
+ tooltip = tooltip(self.getComponent());
+
+ if (tooltip === false) {
+
+ tooltip = "";
+ }
+ }
+
+ self.element.setAttribute("title", tooltip);
+ }
+ } else {
+
+ self.element.setAttribute("title", "");
+ }
+ };
+
+ //build header element
+
+ Column.prototype._buildHeader = function () {
+
+ var self = this,
+ def = self.definition;
+
+ while (self.element.firstChild) {
+ self.element.removeChild(self.element.firstChild);
+ }if (def.headerVertical) {
+
+ self.element.classList.add("tabulator-col-vertical");
+
+ if (def.headerVertical === "flip") {
+
+ self.element.classList.add("tabulator-col-vertical-flip");
+ }
+ }
+
+ self.contentElement = self._bindEvents();
+
+ self.contentElement = self._buildColumnHeaderContent();
+
+ self.element.appendChild(self.contentElement);
+
+ if (self.isGroup) {
+
+ self._buildGroupHeader();
+ } else {
+
+ self._buildColumnHeader();
+ }
+
+ self.setTooltip();
+
+ //set resizable handles
+
+ if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
+
+ self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
+ }
+
+ //set resizable handles
+
+ if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
+
+ if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
+
+ self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
+ }
+
+ self.table.modules.filter.initializeColumn(self);
+ }
+
+ //set resizable handles
+
+ if (self.table.modExists("frozenColumns")) {
+
+ self.table.modules.frozenColumns.initializeColumn(self);
+ }
+
+ //set movable column
+
+ if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
+
+ self.table.modules.moveColumn.initializeColumn(self);
+ }
+
+ //set calcs column
+
+ if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
+
+ self.table.modules.columnCalcs.initializeColumn(self);
+ }
+
+ //update header tooltip on mouse enter
+
+ self.element.addEventListener("mouseenter", function (e) {
+
+ self.setTooltip();
+ });
+ };
+
+ Column.prototype._bindEvents = function () {
+
+ var self = this,
+ def = self.definition,
+ dblTap,
+ tapHold,
+ tap;
+
+ //setup header click event bindings
+
+ if (typeof def.headerClick == "function") {
+
+ self.element.addEventListener("click", function (e) {
+ def.headerClick(e, self.getComponent());
+ });
+ }
+
+ if (typeof def.headerDblClick == "function") {
+
+ self.element.addEventListener("dblclick", function (e) {
+ def.headerDblClick(e, self.getComponent());
+ });
+ }
+
+ if (typeof def.headerContext == "function") {
+
+ self.element.addEventListener("contextmenu", function (e) {
+ def.headerContext(e, self.getComponent());
+ });
+ }
+
+ //setup header tap event bindings
+
+ if (typeof def.headerTap == "function") {
+
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (tap) {
+
+ def.headerTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (typeof def.headerDblTap == "function") {
+
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+
+ def.headerDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (typeof def.headerTapHold == "function") {
+
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+
+ tap = false;
+
+ def.headerTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+ });
+ }
+
+ //store column cell click event bindings
+
+ if (typeof def.cellClick == "function") {
+
+ self.cellEvents.cellClick = def.cellClick;
+ }
+
+ if (typeof def.cellDblClick == "function") {
+
+ self.cellEvents.cellDblClick = def.cellDblClick;
+ }
+
+ if (typeof def.cellContext == "function") {
+
+ self.cellEvents.cellContext = def.cellContext;
+ }
+
+ //store column mouse event bindings
+
+ if (typeof def.cellMouseEnter == "function") {
+
+ self.cellEvents.cellMouseEnter = def.cellMouseEnter;
+ }
+
+ if (typeof def.cellMouseLeave == "function") {
+
+ self.cellEvents.cellMouseLeave = def.cellMouseLeave;
+ }
+
+ if (typeof def.cellMouseOver == "function") {
+
+ self.cellEvents.cellMouseOver = def.cellMouseOver;
+ }
+
+ if (typeof def.cellMouseOut == "function") {
+
+ self.cellEvents.cellMouseOut = def.cellMouseOut;
+ }
+
+ if (typeof def.cellMouseMove == "function") {
+
+ self.cellEvents.cellMouseMove = def.cellMouseMove;
+ }
+
+ //setup column cell tap event bindings
+
+ if (typeof def.cellTap == "function") {
+
+ self.cellEvents.cellTap = def.cellTap;
+ }
+
+ if (typeof def.cellDblTap == "function") {
+
+ self.cellEvents.cellDblTap = def.cellDblTap;
+ }
+
+ if (typeof def.cellTapHold == "function") {
+
+ self.cellEvents.cellTapHold = def.cellTapHold;
+ }
+
+ //setup column cell edit callbacks
+
+ if (typeof def.cellEdited == "function") {
+
+ self.cellEvents.cellEdited = def.cellEdited;
+ }
+
+ if (typeof def.cellEditing == "function") {
+
+ self.cellEvents.cellEditing = def.cellEditing;
+ }
+
+ if (typeof def.cellEditCancelled == "function") {
+
+ self.cellEvents.cellEditCancelled = def.cellEditCancelled;
+ }
+ };
+
+ //build header element for header
+
+ Column.prototype._buildColumnHeader = function () {
+
+ var self = this,
+ def = self.definition,
+ table = self.table,
+ sortable;
+
+ //set column sorter
+
+ if (table.modExists("sort")) {
+
+ table.modules.sort.initializeColumn(self, self.contentElement);
+ }
+
+ //set column formatter
+
+ if (table.modExists("format")) {
+
+ table.modules.format.initializeColumn(self);
+ }
+
+ //set column editor
+
+ if (typeof def.editor != "undefined" && table.modExists("edit")) {
+
+ table.modules.edit.initializeColumn(self);
+ }
+
+ //set colum validator
+
+ if (typeof def.validator != "undefined" && table.modExists("validate")) {
+
+ table.modules.validate.initializeColumn(self);
+ }
+
+ //set column mutator
+
+ if (table.modExists("mutator")) {
+
+ table.modules.mutator.initializeColumn(self);
+ }
+
+ //set column accessor
+
+ if (table.modExists("accessor")) {
+
+ table.modules.accessor.initializeColumn(self);
+ }
+
+ //set respoviveLayout
+
+ if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
+
+ table.modules.responsiveLayout.initializeColumn(self);
+ }
+
+ //set column visibility
+
+ if (typeof def.visible != "undefined") {
+
+ if (def.visible) {
+
+ self.show(true);
+ } else {
+
+ self.hide(true);
+ }
+ }
+
+ //asign additional css classes to column header
+
+ if (def.cssClass) {
+
+ var classeNames = def.cssClass.split(" ");
+
+ classeNames.forEach(function (className) {
+
+ self.element.classList.add(className);
+ });
+ }
+
+ if (def.field) {
+
+ this.element.setAttribute("tabulator-field", def.field);
+ }
+
+ //set min width if present
+
+ self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
+
+ self.reinitializeWidth();
+
+ //set tooltip if present
+
+ self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
+
+ //set orizontal text alignment
+
+ self.hozAlign = typeof self.definition.align == "undefined" ? "" : self.definition.align;
+ };
+
+ Column.prototype._buildColumnHeaderContent = function () {
+
+ var self = this,
+ def = self.definition,
+ table = self.table;
+
+ var contentElement = document.createElement("div");
+
+ contentElement.classList.add("tabulator-col-content");
+
+ contentElement.appendChild(self._buildColumnHeaderTitle());
+
+ return contentElement;
+ };
+
+ //build title element of column
+
+ Column.prototype._buildColumnHeaderTitle = function () {
+
+ var self = this,
+ def = self.definition,
+ table = self.table,
+ title;
+
+ var titleHolderElement = document.createElement("div");
+
+ titleHolderElement.classList.add("tabulator-col-title");
+
+ if (def.editableTitle) {
+
+ var titleElement = document.createElement("input");
+
+ titleElement.classList.add("tabulator-title-editor");
+
+ titleElement.addEventListener("click", function (e) {
+
+ e.stopPropagation();
+
+ titleElement.focus();
+ });
+
+ titleElement.addEventListener("change", function () {
+
+ def.title = titleElement.value;
+
+ table.options.columnTitleChanged.call(self.table, self.getComponent());
+ });
+
+ titleHolderElement.appendChild(titleElement);
+
+ if (def.field) {
+
+ table.modules.localize.bind("columns|" + def.field, function (text) {
+
+ titleElement.value = text || def.title || " ";
+ });
+ } else {
+
+ titleElement.value = def.title || " ";
+ }
+ } else {
+
+ if (def.field) {
+
+ table.modules.localize.bind("columns|" + def.field, function (text) {
+
+ self._formatColumnHeaderTitle(titleHolderElement, text || def.title || " ");
+ });
+ } else {
+
+ self._formatColumnHeaderTitle(titleHolderElement, def.title || " ");
+ }
+ }
+
+ return titleHolderElement;
+ };
+
+ Column.prototype._formatColumnHeaderTitle = function (el, title) {
+
+ var formatter, contents, params, mockCell;
+
+ if (this.definition.titleFormatter && this.table.modExists("format")) {
+
+ formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
+
+ mockCell = {
+
+ getValue: function getValue() {
+
+ return title;
+ },
+
+ getElement: function getElement() {
+
+ return el;
+ }
+
+ };
+
+ params = this.definition.titleFormatterParams || {};
+
+ params = typeof params === "function" ? params() : params;
+
+ contents = formatter.call(this.table.modules.format, mockCell, params);
+
+ switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
+
+ case "object":
+
+ if (contents instanceof Node) {
+
+ el.appendChild(contents);
+ } else {
+
+ el.innerHTML = "";
+
+ console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
+ }
+
+ break;
+
+ case "undefined":
+
+ case "null":
+
+ el.innerHTML = "";
+
+ break;
+
+ default:
+
+ el.innerHTML = contents;
+
+ }
+ } else {
+
+ el.innerHTML = title;
+ }
+ };
+
+ //build header element for column group
+
+ Column.prototype._buildGroupHeader = function () {
+
+ this.element.classList.add("tabulator-col-group");
+
+ this.element.setAttribute("role", "columngroup");
+
+ this.element.setAttribute("aria-title", this.definition.title);
+
+ this.element.appendChild(this.groupElement);
+ };
+
+ //flat field lookup
+
+ Column.prototype._getFlatData = function (data) {
+
+ return data[this.field];
+ };
+
+ //nested field lookup
+
+ Column.prototype._getNestedData = function (data) {
+
+ var dataObj = data,
+ structure = this.fieldStructure,
+ length = structure.length,
+ output;
+
+ for (var i = 0; i < length; i++) {
+
+ dataObj = dataObj[structure[i]];
+
+ output = dataObj;
+
+ if (!dataObj) {
+
+ break;
+ }
+ }
+
+ return output;
+ };
+
+ //flat field set
+
+ Column.prototype._setFlatData = function (data, value) {
+
+ if (this.field) {
+
+ data[this.field] = value;
+ }
+ };
+
+ //nested field set
+
+ Column.prototype._setNesteData = function (data, value) {
+
+ var dataObj = data,
+ structure = this.fieldStructure,
+ length = structure.length;
+
+ for (var i = 0; i < length; i++) {
+
+ if (i == length - 1) {
+
+ dataObj[structure[i]] = value;
+ } else {
+
+ if (!dataObj[structure[i]]) {
+
+ dataObj[structure[i]] = {};
+ }
+
+ dataObj = dataObj[structure[i]];
+ }
+ }
+ };
+
+ //attach column to this group
+
+ Column.prototype.attachColumn = function (column) {
+
+ var self = this;
+
+ if (self.groupElement) {
+
+ self.columns.push(column);
+
+ self.groupElement.appendChild(column.getElement());
+ } else {
+
+ console.warn("Column Warning - Column being attached to another column instead of column group");
+ }
+ };
+
+ //vertically align header in column
+
+ Column.prototype.verticalAlign = function (alignment, height) {
+
+ //calculate height of column header and group holder element
+
+ var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
+
+ // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
+
+
+ this.element.style.height = parentHeight + "px";
+
+ if (this.isGroup) {
+
+ this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
+ }
+
+ //vertically align cell contents
+
+ if (!this.isGroup && alignment !== "top") {
+
+ if (alignment === "bottom") {
+
+ this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
+ } else {
+
+ this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
+ }
+ }
+
+ this.columns.forEach(function (column) {
+
+ column.verticalAlign(alignment);
+ });
+ };
+
+ //clear vertical alignmenet
+
+ Column.prototype.clearVerticalAlign = function () {
+
+ this.element.style.paddingTop = "";
+
+ this.element.style.height = "";
+
+ this.element.style.minHeight = "";
+
+ this.groupElement.style.minHeight = "";
+
+ this.columns.forEach(function (column) {
+
+ column.clearVerticalAlign();
+ });
+ };
+
+ //// Retreive Column Information ////
+
+
+ //return column header element
+
+ Column.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ //return colunm group element
+
+ Column.prototype.getGroupElement = function () {
+
+ return this.groupElement;
+ };
+
+ //return field name
+
+ Column.prototype.getField = function () {
+
+ return this.field;
+ };
+
+ //return the first column in a group
+
+ Column.prototype.getFirstColumn = function () {
+
+ if (!this.isGroup) {
+
+ return this;
+ } else {
+
+ if (this.columns.length) {
+
+ return this.columns[0].getFirstColumn();
+ } else {
+
+ return false;
+ }
+ }
+ };
+
+ //return the last column in a group
+
+ Column.prototype.getLastColumn = function () {
+
+ if (!this.isGroup) {
+
+ return this;
+ } else {
+
+ if (this.columns.length) {
+
+ return this.columns[this.columns.length - 1].getLastColumn();
+ } else {
+
+ return false;
+ }
+ }
+ };
+
+ //return all columns in a group
+
+ Column.prototype.getColumns = function () {
+
+ return this.columns;
+ };
+
+ //return all columns in a group
+
+ Column.prototype.getCells = function () {
+
+ return this.cells;
+ };
+
+ //retreive the top column in a group of columns
+
+ Column.prototype.getTopColumn = function () {
+
+ if (this.parent.isGroup) {
+
+ return this.parent.getTopColumn();
+ } else {
+
+ return this;
+ }
+ };
+
+ //return column definition object
+
+ Column.prototype.getDefinition = function (updateBranches) {
+
+ var colDefs = [];
+
+ if (this.isGroup && updateBranches) {
+
+ this.columns.forEach(function (column) {
+
+ colDefs.push(column.getDefinition(true));
+ });
+
+ this.definition.columns = colDefs;
+ }
+
+ return this.definition;
+ };
+
+ //////////////////// Actions ////////////////////
+
+
+ Column.prototype.checkColumnVisibility = function () {
+
+ var visible = false;
+
+ this.columns.forEach(function (column) {
+
+ if (column.visible) {
+
+ visible = true;
+ }
+ });
+
+ if (visible) {
+
+ this.show();
+
+ this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+ } else {
+
+ this.hide();
+ }
+ };
+
+ //show column
+
+ Column.prototype.show = function (silent, responsiveToggle) {
+
+ if (!this.visible) {
+
+ this.visible = true;
+
+ this.element.style.display = "";
+
+ if (this.parent.isGroup) {
+
+ this.parent.checkColumnVisibility();
+ }
+
+ this.cells.forEach(function (cell) {
+
+ cell.show();
+ });
+
+ if (!this.isGroup && this.width === null) {
+
+ this.reinitializeWidth();
+ }
+
+ this.table.columnManager._verticalAlignHeaders();
+
+ if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+ }
+
+ if (!silent) {
+
+ this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
+ }
+
+ if (this.parent.isGroup) {
+
+ this.parent.matchChildWidths();
+ }
+ }
+ };
+
+ //hide column
+
+ Column.prototype.hide = function (silent, responsiveToggle) {
+
+ if (this.visible) {
+
+ this.visible = false;
+
+ this.element.style.display = "none";
+
+ this.table.columnManager._verticalAlignHeaders();
+
+ if (this.parent.isGroup) {
+
+ this.parent.checkColumnVisibility();
+ }
+
+ this.cells.forEach(function (cell) {
+
+ cell.hide();
+ });
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+ }
+
+ if (!silent) {
+
+ this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+ }
+
+ if (this.parent.isGroup) {
+
+ this.parent.matchChildWidths();
+ }
+ }
+ };
+
+ Column.prototype.matchChildWidths = function () {
+
+ var childWidth = 0;
+
+ if (this.contentElement && this.columns.length) {
+
+ this.columns.forEach(function (column) {
+
+ if (column.visible) {
+
+ childWidth += column.getWidth();
+ }
+ });
+
+ this.contentElement.style.maxWidth = childWidth - 1 + "px";
+ }
+ };
+
+ Column.prototype.setWidth = function (width) {
+
+ this.widthFixed = true;
+
+ this.setWidthActual(width);
+ };
+
+ Column.prototype.setWidthActual = function (width) {
+
+ if (isNaN(width)) {
+
+ width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
+ }
+
+ width = Math.max(this.minWidth, width);
+
+ this.width = width;
+
+ this.widthStyled = width ? width + "px" : "";
+
+ this.element.style.width = this.widthStyled;
+
+ if (!this.isGroup) {
+
+ this.cells.forEach(function (cell) {
+
+ cell.setWidth();
+ });
+ }
+
+ if (this.parent.isGroup) {
+
+ this.parent.matchChildWidths();
+ }
+
+ //set resizable handles
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.layout();
+ }
+ };
+
+ Column.prototype.checkCellHeights = function () {
+
+ var rows = [];
+
+ this.cells.forEach(function (cell) {
+
+ if (cell.row.heightInitialized) {
+
+ if (cell.row.getElement().offsetParent !== null) {
+
+ rows.push(cell.row);
+
+ cell.row.clearCellHeight();
+ } else {
+
+ cell.row.heightInitialized = false;
+ }
+ }
+ });
+
+ rows.forEach(function (row) {
+
+ row.calcHeight();
+ });
+
+ rows.forEach(function (row) {
+
+ row.setCellHeight();
+ });
+ };
+
+ Column.prototype.getWidth = function () {
+
+ // return this.element.offsetWidth;
+
+ return this.width;
+ };
+
+ Column.prototype.getHeight = function () {
+
+ return this.element.offsetHeight;
+ };
+
+ Column.prototype.setMinWidth = function (minWidth) {
+
+ this.minWidth = minWidth;
+
+ this.minWidthStyled = minWidth ? minWidth + "px" : "";
+
+ this.element.style.minWidth = this.minWidthStyled;
+
+ this.cells.forEach(function (cell) {
+
+ cell.setMinWidth();
+ });
+ };
+
+ Column.prototype.delete = function () {
+
+ if (this.isGroup) {
+
+ this.columns.forEach(function (column) {
+
+ column.delete();
+ });
+ }
+
+ var cellCount = this.cells.length;
+
+ for (var i = 0; i < cellCount; i++) {
+
+ this.cells[0].delete();
+ }
+
+ this.element.parentNode.removeChild(this.element);
+
+ this.table.columnManager.deregisterColumn(this);
+ };
+
+ //////////////// Cell Management /////////////////
+
+
+ //generate cell for this column
+
+ Column.prototype.generateCell = function (row) {
+
+ var self = this;
+
+ var cell = new Cell(self, row);
+
+ this.cells.push(cell);
+
+ return cell;
+ };
+
+ Column.prototype.nextColumn = function () {
+
+ var index = this.table.columnManager.findColumnIndex(this);
+
+ return index > -1 ? this._nextVisibleColumn(index + 1) : false;
+ };
+
+ Column.prototype._nextVisibleColumn = function (index) {
+
+ var column = this.table.columnManager.getColumnByIndex(index);
+
+ return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
+ };
+
+ Column.prototype.prevColumn = function () {
+
+ var index = this.table.columnManager.findColumnIndex(this);
+
+ return index > -1 ? this._prevVisibleColumn(index - 1) : false;
+ };
+
+ Column.prototype._prevVisibleColumn = function (index) {
+
+ var column = this.table.columnManager.getColumnByIndex(index);
+
+ return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
+ };
+
+ Column.prototype.reinitializeWidth = function (force) {
+
+ this.widthFixed = false;
+
+ //set width if present
+
+ if (typeof this.definition.width !== "undefined" && !force) {
+
+ this.setWidth(this.definition.width);
+ }
+
+ //hide header filters to prevent them altering column width
+
+ if (this.table.modExists("filter")) {
+
+ this.table.modules.filter.hideHeaderFilterElements();
+ }
+
+ this.fitToData();
+
+ //show header filters again after layout is complete
+
+ if (this.table.modExists("filter")) {
+
+ this.table.modules.filter.showHeaderFilterElements();
+ }
+ };
+
+ //set column width to maximum cell width
+
+ Column.prototype.fitToData = function () {
+
+ var self = this;
+
+ if (!this.widthFixed) {
+
+ this.element.style.width = "";
+
+ self.cells.forEach(function (cell) {
+
+ cell.clearWidth();
+ });
+ }
+
+ var maxWidth = this.element.offsetWidth;
+
+ if (!self.width || !this.widthFixed) {
+
+ self.cells.forEach(function (cell) {
+
+ var width = cell.getWidth();
+
+ if (width > maxWidth) {
+
+ maxWidth = width;
+ }
+ });
+
+ if (maxWidth) {
+
+ self.setWidthActual(maxWidth + 1);
+ }
+ }
+ };
+
+ Column.prototype.deleteCell = function (cell) {
+
+ var index = this.cells.indexOf(cell);
+
+ if (index > -1) {
+
+ this.cells.splice(index, 1);
+ }
+ };
+
+ Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print"];
+
+ //////////////// Event Bindings /////////////////
+
+
+ //////////////// Object Generation /////////////////
+
+ Column.prototype.getComponent = function () {
+
+ return new ColumnComponent(this);
+ };
+
+ var RowManager = function RowManager(table) {
+
+ this.table = table;
+
+ this.element = this.createHolderElement(); //containing element
+
+ this.tableElement = this.createTableElement(); //table element
+
+ this.columnManager = null; //hold column manager object
+
+ this.height = 0; //hold height of table element
+
+
+ this.firstRender = false; //handle first render
+
+ this.renderMode = "classic"; //current rendering mode
+
+
+ this.rows = []; //hold row data objects
+
+ this.activeRows = []; //rows currently available to on display in the table
+
+ this.activeRowsCount = 0; //count of active rows
+
+
+ this.displayRows = []; //rows currently on display in the table
+
+ this.displayRowsCount = 0; //count of display rows
+
+
+ this.scrollTop = 0;
+
+ this.scrollLeft = 0;
+
+ this.vDomRowHeight = 20; //approximation of row heights for padding
+
+
+ this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
+
+ this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
+
+
+ this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
+
+ this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
+
+
+ this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
+
+ this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
+
+
+ this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
+
+
+ this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
+
+
+ this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
+
+ this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
+
+
+ this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
+
+ this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+ };
+
+ //////////////// Setup Functions /////////////////
+
+
+ RowManager.prototype.createHolderElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-tableHolder");
+
+ el.setAttribute("tabindex", 0);
+
+ return el;
+ };
+
+ RowManager.prototype.createTableElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-table");
+
+ return el;
+ };
+
+ //return containing element
+
+ RowManager.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ //return table element
+
+ RowManager.prototype.getTableElement = function () {
+
+ return this.tableElement;
+ };
+
+ //return position of row in table
+
+ RowManager.prototype.getRowPosition = function (row, active) {
+
+ if (active) {
+
+ return this.activeRows.indexOf(row);
+ } else {
+
+ return this.rows.indexOf(row);
+ }
+ };
+
+ //link to column manager
+
+ RowManager.prototype.setColumnManager = function (manager) {
+
+ this.columnManager = manager;
+ };
+
+ RowManager.prototype.initialize = function () {
+
+ var self = this;
+
+ self.setRenderMode();
+
+ //initialize manager
+
+ self.element.appendChild(self.tableElement);
+
+ self.firstRender = true;
+
+ //scroll header along with table body
+
+ self.element.addEventListener("scroll", function () {
+
+ var left = self.element.scrollLeft;
+
+ //handle horizontal scrolling
+
+ if (self.scrollLeft != left) {
+
+ self.columnManager.scrollHorizontal(left);
+
+ if (self.table.options.groupBy) {
+
+ self.table.modules.groupRows.scrollHeaders(left);
+ }
+
+ if (self.table.modExists("columnCalcs")) {
+
+ self.table.modules.columnCalcs.scrollHorizontal(left);
+ }
+ }
+
+ self.scrollLeft = left;
+ });
+
+ //handle virtual dom scrolling
+
+ if (this.renderMode === "virtual") {
+
+ self.element.addEventListener("scroll", function () {
+
+ var top = self.element.scrollTop;
+
+ var dir = self.scrollTop > top;
+
+ //handle verical scrolling
+
+ if (self.scrollTop != top) {
+
+ self.scrollTop = top;
+
+ self.scrollVertical(dir);
+
+ if (self.table.options.ajaxProgressiveLoad == "scroll") {
+
+ self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
+ }
+ } else {
+
+ self.scrollTop = top;
+ }
+ });
+ }
+ };
+
+ ////////////////// Row Manipulation //////////////////
+
+
+ RowManager.prototype.findRow = function (subject) {
+
+ var self = this;
+
+ if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+ if (subject instanceof Row) {
+
+ //subject is row element
+
+ return subject;
+ } else if (subject instanceof RowComponent) {
+
+ //subject is public row component
+
+ return subject._getSelf() || false;
+ } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+ //subject is a HTML element of the row
+
+ var match = self.rows.find(function (row) {
+
+ return row.element === subject;
+ });
+
+ return match || false;
+ }
+ } else if (typeof subject == "undefined" || subject === null) {
+
+ return false;
+ } else {
+
+ //subject should be treated as the index of the row
+
+ var _match = self.rows.find(function (row) {
+
+ return row.data[self.table.options.index] == subject;
+ });
+
+ return _match || false;
+ }
+
+ //catch all for any other type of input
+
+
+ return false;
+ };
+
+ RowManager.prototype.getRowFromDataObject = function (data) {
+
+ var match = this.rows.find(function (row) {
+
+ return row.data === data;
+ });
+
+ return match || false;
+ };
+
+ RowManager.prototype.getRowFromPosition = function (position, active) {
+
+ if (active) {
+
+ return this.activeRows[position];
+ } else {
+
+ return this.rows[position];
+ }
+ };
+
+ RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
+ var _this3 = this;
+
+ var rowIndex = this.getDisplayRows().indexOf(row),
+ rowEl = row.getElement(),
+ rowTop,
+ offset = 0;
+
+ return new Promise(function (resolve, reject) {
+
+ if (rowIndex > -1) {
+
+ if (typeof position === "undefined") {
+
+ position = _this3.table.options.scrollToRowPosition;
+ }
+
+ if (typeof ifVisible === "undefined") {
+
+ ifVisible = _this3.table.options.scrollToRowIfVisible;
+ }
+
+ if (position === "nearest") {
+
+ switch (_this3.renderMode) {
+
+ case "classic":
+
+ rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
+
+ position = Math.abs(_this3.element.scrollTop - rowTop) > Math.abs(_this3.element.scrollTop + _this3.element.clientHeight - rowTop) ? "bottom" : "top";
+
+ break;
+
+ case "virtual":
+
+ position = Math.abs(_this3.vDomTop - rowIndex) > Math.abs(_this3.vDomBottom - rowIndex) ? "bottom" : "top";
+
+ break;
+
+ }
+ }
+
+ //check row visibility
+
+ if (!ifVisible) {
+
+ if (Tabulator.prototype.helpers.elVisible(rowEl)) {
+
+ offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top;
+
+ if (offset > 0 && offset < _this3.element.clientHeight - rowEl.offsetHeight) {
+
+ return false;
+ }
+ }
+ }
+
+ //scroll to row
+
+ switch (_this3.renderMode) {
+
+ case "classic":
+
+ _this3.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top + _this3.element.scrollTop;
+
+ break;
+
+ case "virtual":
+
+ _this3._virtualRenderFill(rowIndex, true);
+
+ break;
+
+ }
+
+ //align to correct position
+
+ switch (position) {
+
+ case "middle":
+
+ case "center":
+
+ _this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight / 2;
+
+ break;
+
+ case "bottom":
+
+ _this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight + rowEl.offsetHeight;
+
+ break;
+
+ }
+
+ resolve();
+ } else {
+
+ console.warn("Scroll Error - Row not visible");
+
+ reject("Scroll Error - Row not visible");
+ }
+ });
+ };
+
+ ////////////////// Data Handling //////////////////
+
+
+ RowManager.prototype.setData = function (data, renderInPosition) {
+ var _this4 = this;
+
+ var self = this;
+
+ return new Promise(function (resolve, reject) {
+
+ if (renderInPosition && _this4.getDisplayRows().length) {
+
+ if (self.table.options.pagination) {
+
+ self._setDataActual(data, true);
+ } else {
+
+ _this4.reRenderInPosition(function () {
+
+ self._setDataActual(data);
+ });
+ }
+ } else {
+
+ if (_this4.table.options.autoColumns) {
+
+ _this4.table.columnManager.generateColumnsFromRowData(data);
+ }
+
+ _this4.resetScroll();
+
+ _this4._setDataActual(data);
+ }
+
+ resolve();
+ });
+ };
+
+ RowManager.prototype._setDataActual = function (data, renderInPosition) {
+
+ var self = this;
+
+ self.table.options.dataLoading.call(this.table, data);
+
+ this._wipeElements();
+
+ if (this.table.options.history && this.table.modExists("history")) {
+
+ this.table.modules.history.clear();
+ }
+
+ if (Array.isArray(data)) {
+
+ if (this.table.modExists("selectRow")) {
+
+ this.table.modules.selectRow.clearSelectionData();
+ }
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+
+ this.table.modules.reactiveData.watchData(data);
+ }
+
+ data.forEach(function (def, i) {
+
+ if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
+
+ var row = new Row(def, self);
+
+ self.rows.push(row);
+ } else {
+
+ console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
+ }
+ });
+
+ self.table.options.dataLoaded.call(this.table, data);
+
+ self.refreshActiveData(false, false, renderInPosition);
+ } else {
+
+ console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData: ", data);
+ }
+ };
+
+ RowManager.prototype._wipeElements = function () {
+
+ this.rows.forEach(function (row) {
+
+ row.wipe();
+ });
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ this.table.modules.groupRows.wipe();
+ }
+
+ this.rows = [];
+ };
+
+ RowManager.prototype.deleteRow = function (row, blockRedraw) {
+
+ var allIndex = this.rows.indexOf(row),
+ activeIndex = this.activeRows.indexOf(row);
+
+ if (activeIndex > -1) {
+
+ this.activeRows.splice(activeIndex, 1);
+ }
+
+ if (allIndex > -1) {
+
+ this.rows.splice(allIndex, 1);
+ }
+
+ this.setActiveRows(this.activeRows);
+
+ this.displayRowIterator(function (rows) {
+
+ var displayIndex = rows.indexOf(row);
+
+ if (displayIndex > -1) {
+
+ rows.splice(displayIndex, 1);
+ }
+ });
+
+ if (!blockRedraw) {
+
+ this.reRenderInPosition();
+ }
+
+ this.table.options.rowDeleted.call(this.table, row.getComponent());
+
+ this.table.options.dataEdited.call(this.table, this.getData());
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ this.table.modules.groupRows.updateGroupRows(true);
+ } else if (this.table.options.pagination && this.table.modExists("page")) {
+
+ this.refreshActiveData(false, false, true);
+ } else {
+
+ if (this.table.options.pagination && this.table.modExists("page")) {
+
+ this.refreshActiveData("page");
+ }
+ }
+ };
+
+ RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
+
+ var row = this.addRowActual(data, pos, index, blockRedraw);
+
+ if (this.table.options.history && this.table.modExists("history")) {
+
+ this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
+ }
+
+ return row;
+ };
+
+ //add multiple rows
+
+ RowManager.prototype.addRows = function (data, pos, index) {
+ var _this5 = this;
+
+ var self = this,
+ length = 0,
+ rows = [];
+
+ return new Promise(function (resolve, reject) {
+
+ pos = _this5.findAddRowPos(pos);
+
+ if (!Array.isArray(data)) {
+
+ data = [data];
+ }
+
+ length = data.length - 1;
+
+ if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
+
+ data.reverse();
+ }
+
+ data.forEach(function (item, i) {
+
+ var row = self.addRow(item, pos, index, true);
+
+ rows.push(row);
+ });
+
+ if (_this5.table.options.groupBy && _this5.table.modExists("groupRows")) {
+
+ _this5.table.modules.groupRows.updateGroupRows(true);
+ } else if (_this5.table.options.pagination && _this5.table.modExists("page")) {
+
+ _this5.refreshActiveData(false, false, true);
+ } else {
+
+ _this5.reRenderInPosition();
+ }
+
+ //recalc column calculations if present
+
+ if (_this5.table.modExists("columnCalcs")) {
+
+ _this5.table.modules.columnCalcs.recalc(_this5.table.rowManager.activeRows);
+ }
+
+ resolve(rows);
+ });
+ };
+
+ RowManager.prototype.findAddRowPos = function (pos) {
+
+ if (typeof pos === "undefined") {
+
+ pos = this.table.options.addRowPos;
+ }
+
+ if (pos === "pos") {
+
+ pos = true;
+ }
+
+ if (pos === "bottom") {
+
+ pos = false;
+ }
+
+ return pos;
+ };
+
+ RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
+
+ var row = data instanceof Row ? data : new Row(data || {}, this),
+ top = this.findAddRowPos(pos),
+ dispRows;
+
+ if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
+
+ dispRows = this.getDisplayRows();
+
+ if (top) {
+
+ if (dispRows.length) {
+
+ index = dispRows[0];
+ } else {
+
+ if (this.activeRows.length) {
+
+ index = this.activeRows[this.activeRows.length - 1];
+
+ top = false;
+ }
+ }
+ } else {
+
+ if (dispRows.length) {
+
+ index = dispRows[dispRows.length - 1];
+
+ top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
+ }
+ }
+ }
+
+ if (index) {
+
+ index = this.findRow(index);
+ }
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ this.table.modules.groupRows.assignRowToGroup(row);
+
+ var groupRows = row.getGroup().rows;
+
+ if (groupRows.length > 1) {
+
+ if (!index || index && groupRows.indexOf(index) == -1) {
+
+ if (top) {
+
+ if (groupRows[0] !== row) {
+
+ index = groupRows[0];
+
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ } else {
+
+ if (groupRows[groupRows.length - 1] !== row) {
+
+ index = groupRows[groupRows.length - 1];
+
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ }
+ } else {
+
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ }
+ }
+
+ if (index) {
+
+ var allIndex = this.rows.indexOf(index),
+ activeIndex = this.activeRows.indexOf(index);
+
+ this.displayRowIterator(function (rows) {
+
+ var displayIndex = rows.indexOf(index);
+
+ if (displayIndex > -1) {
+
+ rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
+ }
+ });
+
+ if (activeIndex > -1) {
+
+ this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
+ }
+
+ if (allIndex > -1) {
+
+ this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
+ }
+ } else {
+
+ if (top) {
+
+ this.displayRowIterator(function (rows) {
+
+ rows.unshift(row);
+ });
+
+ this.activeRows.unshift(row);
+
+ this.rows.unshift(row);
+ } else {
+
+ this.displayRowIterator(function (rows) {
+
+ rows.push(row);
+ });
+
+ this.activeRows.push(row);
+
+ this.rows.push(row);
+ }
+ }
+
+ this.setActiveRows(this.activeRows);
+
+ this.table.options.rowAdded.call(this.table, row.getComponent());
+
+ this.table.options.dataEdited.call(this.table, this.getData());
+
+ if (!blockRedraw) {
+
+ this.reRenderInPosition();
+ }
+
+ return row;
+ };
+
+ RowManager.prototype.moveRow = function (from, to, after) {
+
+ if (this.table.options.history && this.table.modExists("history")) {
+
+ this.table.modules.history.action("rowMove", from, { pos: this.getRowPosition(from), to: to, after: after });
+ }
+
+ this.moveRowActual(from, to, after);
+
+ this.table.options.rowMoved.call(this.table, from.getComponent());
+ };
+
+ RowManager.prototype.moveRowActual = function (from, to, after) {
+
+ var self = this;
+
+ this._moveRowInArray(this.rows, from, to, after);
+
+ this._moveRowInArray(this.activeRows, from, to, after);
+
+ this.displayRowIterator(function (rows) {
+
+ self._moveRowInArray(rows, from, to, after);
+ });
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ var toGroup = to.getGroup();
+
+ var fromGroup = from.getGroup();
+
+ if (toGroup === fromGroup) {
+
+ this._moveRowInArray(toGroup.rows, from, to, after);
+ } else {
+
+ if (fromGroup) {
+
+ fromGroup.removeRow(from);
+ }
+
+ toGroup.insertRow(from, to, after);
+ }
+ }
+ };
+
+ RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
+
+ var fromIndex, toIndex, start, end;
+
+ if (from !== to) {
+
+ fromIndex = rows.indexOf(from);
+
+ if (fromIndex > -1) {
+
+ rows.splice(fromIndex, 1);
+
+ toIndex = rows.indexOf(to);
+
+ if (toIndex > -1) {
+
+ if (after) {
+
+ rows.splice(toIndex + 1, 0, from);
+ } else {
+
+ rows.splice(toIndex, 0, from);
+ }
+ } else {
+
+ rows.splice(fromIndex, 0, from);
+ }
+ }
+
+ //restyle rows
+
+ if (rows === this.getDisplayRows()) {
+
+ start = fromIndex < toIndex ? fromIndex : toIndex;
+
+ end = toIndex > fromIndex ? toIndex : fromIndex + 1;
+
+ for (var i = start; i <= end; i++) {
+
+ if (rows[i]) {
+
+ this.styleRow(rows[i], i);
+ }
+ }
+ }
+ }
+ };
+
+ RowManager.prototype.clearData = function () {
+
+ this.setData([]);
+ };
+
+ RowManager.prototype.getRowIndex = function (row) {
+
+ return this.findRowIndex(row, this.rows);
+ };
+
+ RowManager.prototype.getDisplayRowIndex = function (row) {
+
+ var index = this.getDisplayRows().indexOf(row);
+
+ return index > -1 ? index : false;
+ };
+
+ RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
+
+ var index = this.getDisplayRowIndex(row),
+ nextRow = false;
+
+ if (index !== false && index < this.displayRowsCount - 1) {
+
+ nextRow = this.getDisplayRows()[index + 1];
+ }
+
+ if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
+
+ return this.nextDisplayRow(nextRow, rowOnly);
+ }
+
+ return nextRow;
+ };
+
+ RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
+
+ var index = this.getDisplayRowIndex(row),
+ prevRow = false;
+
+ if (index) {
+
+ prevRow = this.getDisplayRows()[index - 1];
+ }
+
+ if (prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
+
+ return this.prevDisplayRow(prevRow, rowOnly);
+ }
+
+ return prevRow;
+ };
+
+ RowManager.prototype.findRowIndex = function (row, list) {
+
+ var rowIndex;
+
+ row = this.findRow(row);
+
+ if (row) {
+
+ rowIndex = list.indexOf(row);
+
+ if (rowIndex > -1) {
+
+ return rowIndex;
+ }
+ }
+
+ return false;
+ };
+
+ RowManager.prototype.getData = function (active, transform) {
+
+ var self = this,
+ output = [];
+
+ var rows = active ? self.activeRows : self.rows;
+
+ rows.forEach(function (row) {
+
+ output.push(row.getData(transform || "data"));
+ });
+
+ return output;
+ };
+
+ RowManager.prototype.getComponents = function (active) {
+
+ var self = this,
+ output = [];
+
+ var rows = active ? self.activeRows : self.rows;
+
+ rows.forEach(function (row) {
+
+ output.push(row.getComponent());
+ });
+
+ return output;
+ };
+
+ RowManager.prototype.getDataCount = function (active) {
+
+ return active ? this.activeRows.length : this.rows.length;
+ };
+
+ RowManager.prototype._genRemoteRequest = function () {
+
+ var self = this,
+ table = self.table,
+ options = table.options,
+ params = {};
+
+ if (table.modExists("page")) {
+
+ //set sort data if defined
+
+ if (options.ajaxSorting) {
+
+ var sorters = self.table.modules.sort.getSort();
+
+ sorters.forEach(function (item) {
+
+ delete item.column;
+ });
+
+ params[self.table.modules.page.paginationDataSentNames.sorters] = sorters;
+ }
+
+ //set filter data if defined
+
+ if (options.ajaxFiltering) {
+
+ var filters = self.table.modules.filter.getFilters(true, true);
+
+ params[self.table.modules.page.paginationDataSentNames.filters] = filters;
+ }
+
+ self.table.modules.ajax.setParams(params, true);
+ }
+
+ table.modules.ajax.sendRequest().then(function (data) {
+
+ self.setData(data);
+ }).catch(function (e) {});
+ };
+
+ //choose the path to refresh data after a filter update
+
+ RowManager.prototype.filterRefresh = function () {
+
+ var table = this.table,
+ options = table.options,
+ left = this.scrollLeft;
+
+ if (options.ajaxFiltering) {
+
+ if (options.pagination == "remote" && table.modExists("page")) {
+
+ table.modules.page.reset(true);
+
+ table.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else if (options.ajaxProgressiveLoad) {
+
+ table.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+
+ //assume data is url, make ajax call to url to get data
+
+ this._genRemoteRequest();
+ }
+ } else {
+
+ this.refreshActiveData("filter");
+ }
+
+ this.scrollHorizontal(left);
+ };
+
+ //choose the path to refresh data after a sorter update
+
+ RowManager.prototype.sorterRefresh = function (loadOrignalData) {
+
+ var table = this.table,
+ options = this.table.options,
+ left = this.scrollLeft;
+
+ if (options.ajaxSorting) {
+
+ if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
+
+ table.modules.page.reset(true);
+
+ table.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else if (options.ajaxProgressiveLoad) {
+
+ table.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+
+ //assume data is url, make ajax call to url to get data
+
+ this._genRemoteRequest();
+ }
+ } else {
+
+ this.refreshActiveData(loadOrignalData ? "filter" : "sort");
+ }
+
+ this.scrollHorizontal(left);
+ };
+
+ RowManager.prototype.scrollHorizontal = function (left) {
+
+ this.scrollLeft = left;
+
+ this.element.scrollLeft = left;
+
+ if (this.table.options.groupBy) {
+
+ this.table.modules.groupRows.scrollHeaders(left);
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.scrollHorizontal(left);
+ }
+ };
+
+ //set active data set
+
+ RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+
+ var self = this,
+ table = this.table,
+ displayIndex;
+
+ if (self.table.modExists("edit")) {
+
+ self.table.modules.edit.cancelEdit();
+ }
+
+ if (!stage) {
+
+ stage = "all";
+ }
+
+ if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+
+ table.modules.selectRow.deselectRows();
+ }
+
+ //cascade through data refresh stages
+
+ switch (stage) {
+
+ case "all":
+
+ case "filter":
+
+ if (!skipStage) {
+
+ if (table.modExists("filter")) {
+
+ self.setActiveRows(table.modules.filter.filter(self.rows));
+ } else {
+
+ self.setActiveRows(self.rows.slice(0));
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ case "sort":
+
+ if (!skipStage) {
+
+ if (table.modExists("sort")) {
+
+ table.modules.sort.sort(this.activeRows);
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ //generic stage to allow for pipeline trigger after the data manipulation stage
+
+ case "display":
+
+ this.resetDisplayRows();
+
+ case "freeze":
+
+ if (!skipStage) {
+
+ if (this.table.modExists("frozenRows")) {
+
+ if (table.modules.frozenRows.isFrozen()) {
+
+ if (!table.modules.frozenRows.getDisplayIndex()) {
+
+ table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.frozenRows.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+
+ table.modules.frozenRows.setDisplayIndex(displayIndex);
+ }
+ }
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ case "group":
+
+ if (!skipStage) {
+
+ if (table.options.groupBy && table.modExists("groupRows")) {
+
+ if (!table.modules.groupRows.getDisplayIndex()) {
+
+ table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.groupRows.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+
+ table.modules.groupRows.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ case "tree":
+
+ if (!skipStage) {
+
+ if (table.options.dataTree && table.modExists("dataTree")) {
+
+ if (!table.modules.dataTree.getDisplayIndex()) {
+
+ table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.dataTree.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+
+ table.modules.dataTree.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+
+ if (table.modules.page.getMode() == "local") {
+
+ table.modules.page.reset();
+ }
+ }
+
+ case "page":
+
+ if (!skipStage) {
+
+ if (table.options.pagination && table.modExists("page")) {
+
+ if (!table.modules.page.getDisplayIndex()) {
+
+ table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.page.getDisplayIndex();
+
+ if (table.modules.page.getMode() == "local") {
+
+ table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+ }
+
+ displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+
+ table.modules.page.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+
+ skipStage = false;
+ }
+
+ }
+
+ if (Tabulator.prototype.helpers.elVisible(self.element)) {
+
+ if (renderInPosition) {
+
+ self.reRenderInPosition();
+ } else {
+
+ self.renderTable();
+
+ if (table.options.layoutColumnsOnNewData) {
+
+ self.table.columnManager.redraw(true);
+ }
+ }
+ }
+
+ if (table.modExists("columnCalcs")) {
+
+ table.modules.columnCalcs.recalc(this.activeRows);
+ }
+ };
+
+ RowManager.prototype.setActiveRows = function (activeRows) {
+
+ this.activeRows = activeRows;
+
+ this.activeRowsCount = this.activeRows.length;
+ };
+
+ //reset display rows array
+
+ RowManager.prototype.resetDisplayRows = function () {
+
+ this.displayRows = [];
+
+ this.displayRows.push(this.activeRows.slice(0));
+
+ this.displayRowsCount = this.displayRows[0].length;
+
+ if (this.table.modExists("frozenRows")) {
+
+ this.table.modules.frozenRows.setDisplayIndex(0);
+ }
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ this.table.modules.groupRows.setDisplayIndex(0);
+ }
+
+ if (this.table.options.pagination && this.table.modExists("page")) {
+
+ this.table.modules.page.setDisplayIndex(0);
+ }
+ };
+
+ RowManager.prototype.getNextDisplayIndex = function () {
+
+ return this.displayRows.length;
+ };
+
+ //set display row pipeline data
+
+ RowManager.prototype.setDisplayRows = function (displayRows, index) {
+
+ var output = true;
+
+ if (index && typeof this.displayRows[index] != "undefined") {
+
+ this.displayRows[index] = displayRows;
+
+ output = true;
+ } else {
+
+ this.displayRows.push(displayRows);
+
+ output = index = this.displayRows.length - 1;
+ }
+
+ if (index == this.displayRows.length - 1) {
+
+ this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+ }
+
+ return output;
+ };
+
+ RowManager.prototype.getDisplayRows = function (index) {
+
+ if (typeof index == "undefined") {
+
+ return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
+ } else {
+
+ return this.displayRows[index] || [];
+ }
+ };
+
+ RowManager.prototype.getVisibleRows = function (viewable) {
+
+ var topEdge = this.element.scrollTop,
+ bottomEdge = this.element.clientHeight + topEdge,
+ topFound = false,
+ topRow = 0,
+ bottomRow = 0,
+ rows = this.getDisplayRows();
+
+ if (viewable) {
+
+ this.getDisplayRows();
+
+ for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+ if (rows[i]) {
+
+ if (!topFound) {
+
+ if (topEdge - rows[i].getElement().offsetTop >= 0) {
+
+ topRow = i;
+ } else {
+
+ topFound = true;
+ }
+ } else {
+
+ if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+
+ bottomRow = i;
+ } else {
+
+ break;
+ }
+ }
+ }
+ }
+ } else {
+
+ topRow = this.vDomTop;
+
+ bottomRow = this.vDomBottom;
+ }
+
+ return rows.slice(topRow, bottomRow + 1);
+ };
+
+ //repeat action accross display rows
+
+ RowManager.prototype.displayRowIterator = function (callback) {
+
+ this.displayRows.forEach(callback);
+
+ this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+ };
+
+ //return only actual rows (not group headers etc)
+
+ RowManager.prototype.getRows = function () {
+
+ return this.rows;
+ };
+
+ ///////////////// Table Rendering /////////////////
+
+
+ //trigger rerender of table in current position
+
+ RowManager.prototype.reRenderInPosition = function (callback) {
+
+ if (this.getRenderMode() == "virtual") {
+
+ var scrollTop = this.element.scrollTop;
+
+ var topRow = false;
+
+ var topOffset = false;
+
+ var left = this.scrollLeft;
+
+ var rows = this.getDisplayRows();
+
+ for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+ if (rows[i]) {
+
+ var diff = scrollTop - rows[i].getElement().offsetTop;
+
+ if (topOffset === false || Math.abs(diff) < topOffset) {
+
+ topOffset = diff;
+
+ topRow = i;
+ } else {
+
+ break;
+ }
+ }
+ }
+
+ if (callback) {
+
+ callback();
+ }
+
+ this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+
+ this.scrollHorizontal(left);
+ } else {
+
+ this.renderTable();
+
+ if (callback) {
+
+ callback();
+ }
+ }
+ };
+
+ RowManager.prototype.setRenderMode = function () {
+
+ if ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {
+
+ this.renderMode = "virtual";
+ } else {
+
+ this.renderMode = "classic";
+ }
+ };
+
+ RowManager.prototype.getRenderMode = function () {
+
+ return this.renderMode;
+ };
+
+ RowManager.prototype.renderTable = function () {
+
+ var self = this;
+
+ self.table.options.renderStarted.call(this.table);
+
+ self.element.scrollTop = 0;
+
+ switch (self.renderMode) {
+
+ case "classic":
+
+ self._simpleRender();
+
+ break;
+
+ case "virtual":
+
+ self._virtualRenderFill();
+
+ break;
+
+ }
+
+ if (self.firstRender) {
+
+ if (self.displayRowsCount) {
+
+ self.firstRender = false;
+
+ self.table.modules.layout.layout();
+ } else {
+
+ self.renderEmptyScroll();
+ }
+ }
+
+ if (self.table.modExists("frozenColumns")) {
+
+ self.table.modules.frozenColumns.layout();
+ }
+
+ if (!self.displayRowsCount) {
+
+ if (self.table.options.placeholder) {
+
+ if (this.renderMode) {
+
+ self.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
+ }
+
+ self.getElement().appendChild(self.table.options.placeholder);
+ }
+ }
+
+ self.table.options.renderComplete.call(this.table);
+ };
+
+ //simple render on heightless table
+
+ RowManager.prototype._simpleRender = function () {
+
+ this._clearVirtualDom();
+
+ if (this.displayRowsCount) {
+
+ this.checkClassicModeGroupHeaderWidth();
+ } else {
+
+ this.renderEmptyScroll();
+ }
+ };
+
+ RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
+
+ var self = this,
+ element = this.tableElement,
+ onlyGroupHeaders = true;
+
+ self.getDisplayRows().forEach(function (row, index) {
+
+ self.styleRow(row, index);
+
+ element.appendChild(row.getElement());
+
+ row.initialize(true);
+
+ if (row.type !== "group") {
+
+ onlyGroupHeaders = false;
+ }
+ });
+
+ if (onlyGroupHeaders) {
+
+ element.style.minWidth = self.table.columnManager.getWidth() + "px";
+ } else {
+
+ element.style.minWidth = "";
+ }
+ };
+
+ //show scrollbars on empty table div
+
+ RowManager.prototype.renderEmptyScroll = function () {
+
+ this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
+
+ this.tableElement.style.minHeight = "1px";
+
+ this.tableElement.style.visibility = "hidden";
+ };
+
+ RowManager.prototype._clearVirtualDom = function () {
+
+ var element = this.tableElement;
+
+ if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
+
+ this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
+ }
+
+ // element.children.detach();
+
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.style.paddingTop = "";
+
+ element.style.paddingBottom = "";
+
+ element.style.minWidth = "";
+
+ element.style.minHeight = "";
+
+ element.style.visibility = "";
+
+ this.scrollTop = 0;
+
+ this.scrollLeft = 0;
+
+ this.vDomTop = 0;
+
+ this.vDomBottom = 0;
+
+ this.vDomTopPad = 0;
+
+ this.vDomBottomPad = 0;
+ };
+
+ RowManager.prototype.styleRow = function (row, index) {
+
+ var rowEl = row.getElement();
+
+ if (index % 2) {
+
+ rowEl.classList.add("tabulator-row-even");
+
+ rowEl.classList.remove("tabulator-row-odd");
+ } else {
+
+ rowEl.classList.add("tabulator-row-odd");
+
+ rowEl.classList.remove("tabulator-row-even");
+ }
+ };
+
+ //full virtual render
+
+ RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
+
+ var self = this,
+ element = self.tableElement,
+ holder = self.element,
+ topPad = 0,
+ rowsHeight = 0,
+ topPadHeight = 0,
+ i = 0,
+ onlyGroupHeaders = true,
+ rows = self.getDisplayRows();
+
+ position = position || 0;
+
+ offset = offset || 0;
+
+ if (!position) {
+
+ self._clearVirtualDom();
+ } else {
+
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ } //check if position is too close to bottom of table
+
+ var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
+
+ if (heightOccupied < self.height) {
+
+ position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
+
+ if (position < 0) {
+
+ position = 0;
+ }
+ }
+
+ //calculate initial pad
+
+ topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
+
+ position -= topPad;
+ }
+
+ if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
+
+ self.vDomTop = position;
+
+ self.vDomBottom = position - 1;
+
+ while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
+
+ var index = self.vDomBottom + 1,
+ row = rows[index],
+ rowHeight = 0;
+
+ self.styleRow(row, index);
+
+ element.appendChild(row.getElement());
+
+ if (!row.initialized) {
+
+ row.initialize(true);
+ } else {
+
+ if (!row.heightInitialized) {
+
+ row.normalizeHeight(true);
+ }
+ }
+
+ rowHeight = row.getHeight();
+
+ if (i < topPad) {
+
+ topPadHeight += rowHeight;
+ } else {
+
+ rowsHeight += rowHeight;
+ }
+
+ if (rowHeight > this.vDomWindowBuffer) {
+
+ this.vDomWindowBuffer = rowHeight * 2;
+ }
+
+ if (row.type !== "group") {
+
+ onlyGroupHeaders = false;
+ }
+
+ self.vDomBottom++;
+
+ i++;
+ }
+
+ if (!position) {
+
+ this.vDomTopPad = 0;
+
+ //adjust rowheight to match average of rendered elements
+
+ self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
+
+ self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
+
+ self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
+ } else {
+
+ self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
+
+ self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
+ }
+
+ element.style.paddingTop = self.vDomTopPad + "px";
+
+ element.style.paddingBottom = self.vDomBottomPad + "px";
+
+ if (forceMove) {
+
+ this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
+ }
+
+ this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
+
+ //adjust for horizontal scrollbar if present (and not at top of table)
+
+ if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
+
+ this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
+ }
+
+ this.vDomScrollPosTop = this.scrollTop;
+
+ this.vDomScrollPosBottom = this.scrollTop;
+
+ holder.scrollTop = this.scrollTop;
+
+ element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
+
+ if (self.table.options.groupBy) {
+
+ if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
+
+ self.tableElement.style.minWidth = self.table.columnManager.getWidth();
+ }
+ }
+ } else {
+
+ this.renderEmptyScroll();
+ }
+ };
+
+ //handle vertical scrolling
+
+ RowManager.prototype.scrollVertical = function (dir) {
+
+ var topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+ var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+ var margin = this.vDomWindowBuffer * 2;
+
+ if (-topDiff > margin || bottomDiff > margin) {
+
+ //if big scroll redraw table;
+
+ var left = this.scrollLeft;
+
+ this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
+
+ this.scrollHorizontal(left);
+ } else {
+
+ if (dir) {
+
+ //scrolling up
+
+ if (topDiff < 0) {
+
+ this._addTopRow(-topDiff);
+ }
+
+ if (bottomDiff < 0) {
+
+ //hide bottom row if needed
+
+ if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
+
+ this._removeBottomRow(-bottomDiff);
+ }
+ }
+ } else {
+
+ //scrolling down
+
+ if (topDiff >= 0) {
+
+ //hide top row if needed
+
+ if (this.scrollTop > this.vDomWindowBuffer) {
+
+ this._removeTopRow(topDiff);
+ }
+ }
+
+ if (bottomDiff >= 0) {
+
+ this._addBottomRow(bottomDiff);
+ }
+ }
+ }
+ };
+
+ RowManager.prototype._addTopRow = function (topDiff) {
+ var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+
+ var table = this.tableElement,
+ rows = this.getDisplayRows();
+
+ if (this.vDomTop) {
+
+ var index = this.vDomTop - 1,
+ topRow = rows[index],
+ topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+ //hide top row if needed
+
+ if (topDiff >= topRowHeight) {
+
+ this.styleRow(topRow, index);
+
+ table.insertBefore(topRow.getElement(), table.firstChild);
+
+ if (!topRow.initialized || !topRow.heightInitialized) {
+
+ this.vDomTopNewRows.push(topRow);
+
+ if (!topRow.heightInitialized) {
+
+ topRow.clearCellHeight();
+ }
+ }
+
+ topRow.initialize();
+
+ this.vDomTopPad -= topRowHeight;
+
+ if (this.vDomTopPad < 0) {
+
+ this.vDomTopPad = index * this.vDomRowHeight;
+ }
+
+ if (!index) {
+
+ this.vDomTopPad = 0;
+ }
+
+ table.style.paddingTop = this.vDomTopPad + "px";
+
+ this.vDomScrollPosTop -= topRowHeight;
+
+ this.vDomTop--;
+ }
+
+ topDiff = -(this.scrollTop - this.vDomScrollPosTop);
+
+ if (topRow.getHeight() > this.vDomWindowBuffer) {
+
+ this.vDomWindowBuffer = topRow.getHeight() * 2;
+ }
+
+ if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
+
+ this._addTopRow(topDiff, i + 1);
+ } else {
+
+ this._quickNormalizeRowHeight(this.vDomTopNewRows);
+ }
+ }
+ };
+
+ RowManager.prototype._removeTopRow = function (topDiff) {
+
+ var table = this.tableElement,
+ topRow = this.getDisplayRows()[this.vDomTop],
+ topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+ if (topDiff >= topRowHeight) {
+
+ var rowEl = topRow.getElement();
+
+ rowEl.parentNode.removeChild(rowEl);
+
+ this.vDomTopPad += topRowHeight;
+
+ table.style.paddingTop = this.vDomTopPad + "px";
+
+ this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
+
+ this.vDomTop++;
+
+ topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+ this._removeTopRow(topDiff);
+ }
+ };
+
+ RowManager.prototype._addBottomRow = function (bottomDiff) {
+ var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+
+ var table = this.tableElement,
+ rows = this.getDisplayRows();
+
+ if (this.vDomBottom < this.displayRowsCount - 1) {
+
+ var index = this.vDomBottom + 1,
+ bottomRow = rows[index],
+ bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+ //hide bottom row if needed
+
+ if (bottomDiff >= bottomRowHeight) {
+
+ this.styleRow(bottomRow, index);
+
+ table.appendChild(bottomRow.getElement());
+
+ if (!bottomRow.initialized || !bottomRow.heightInitialized) {
+
+ this.vDomBottomNewRows.push(bottomRow);
+
+ if (!bottomRow.heightInitialized) {
+
+ bottomRow.clearCellHeight();
+ }
+ }
+
+ bottomRow.initialize();
+
+ this.vDomBottomPad -= bottomRowHeight;
+
+ if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
+
+ this.vDomBottomPad = 0;
+ }
+
+ table.style.paddingBottom = this.vDomBottomPad + "px";
+
+ this.vDomScrollPosBottom += bottomRowHeight;
+
+ this.vDomBottom++;
+ }
+
+ bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+ if (bottomRow.getHeight() > this.vDomWindowBuffer) {
+
+ this.vDomWindowBuffer = bottomRow.getHeight() * 2;
+ }
+
+ if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
+
+ this._addBottomRow(bottomDiff, i + 1);
+ } else {
+
+ this._quickNormalizeRowHeight(this.vDomBottomNewRows);
+ }
+ }
+ };
+
+ RowManager.prototype._removeBottomRow = function (bottomDiff) {
+
+ var table = this.tableElement,
+ bottomRow = this.getDisplayRows()[this.vDomBottom],
+ bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+ if (bottomDiff >= bottomRowHeight) {
+
+ var rowEl = bottomRow.getElement();
+
+ if (rowEl.parentNode) {
+
+ rowEl.parentNode.removeChild(rowEl);
+ }
+
+ this.vDomBottomPad += bottomRowHeight;
+
+ if (this.vDomBottomPad < 0) {
+
+ this.vDomBottomPad = 0;
+ }
+
+ table.style.paddingBottom = this.vDomBottomPad + "px";
+
+ this.vDomScrollPosBottom -= bottomRowHeight;
+
+ this.vDomBottom--;
+
+ bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
+
+ this._removeBottomRow(bottomDiff);
+ }
+ };
+
+ RowManager.prototype._quickNormalizeRowHeight = function (rows) {
+
+ rows.forEach(function (row) {
+
+ row.calcHeight();
+ });
+
+ rows.forEach(function (row) {
+
+ row.setCellHeight();
+ });
+
+ rows.length = 0;
+ };
+
+ //normalize height of active rows
+
+ RowManager.prototype.normalizeHeight = function () {
+
+ this.activeRows.forEach(function (row) {
+
+ row.normalizeHeight();
+ });
+ };
+
+ //adjust the height of the table holder to fit in the Tabulator element
+
+ RowManager.prototype.adjustTableSize = function () {
+
+ if (this.renderMode === "virtual") {
+
+ this.height = this.element.clientHeight;
+
+ this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
+
+ var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
+
+ this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
+
+ this.element.style.height = "calc(100% - " + otherHeight + "px)";
+
+ this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
+ }
+ };
+
+ //renitialize all rows
+
+ RowManager.prototype.reinitialize = function () {
+
+ this.rows.forEach(function (row) {
+
+ row.reinitialize();
+ });
+ };
+
+ //redraw table
+
+ RowManager.prototype.redraw = function (force) {
+
+ var pos = 0,
+ left = this.scrollLeft;
+
+ this.adjustTableSize();
+
+ this.table.tableWidth = this.table.element.clientWidth;
+
+ if (!force) {
+
+ if (this.renderMode == "classic") {
+
+ if (this.table.options.groupBy) {
+
+ this.refreshActiveData("group", false, false);
+ } else {
+
+ this._simpleRender();
+ }
+ } else {
+
+ this.reRenderInPosition();
+
+ this.scrollHorizontal(left);
+ }
+
+ if (!this.displayRowsCount) {
+
+ if (this.table.options.placeholder) {
+
+ this.getElement().appendChild(this.table.options.placeholder);
+ }
+ }
+ } else {
+
+ this.renderTable();
+ }
+ };
+
+ RowManager.prototype.resetScroll = function () {
+
+ this.element.scrollLeft = 0;
+
+ this.element.scrollTop = 0;
+
+ if (this.table.browser === "ie") {
+
+ var event = document.createEvent("Event");
+
+ event.initEvent("scroll", false, true);
+
+ this.element.dispatchEvent(event);
+ } else {
+
+ this.element.dispatchEvent(new Event('scroll'));
+ }
+ };
+
+ //public row object
+
+ var RowComponent = function RowComponent(row) {
+
+ this._row = row;
+ };
+
+ RowComponent.prototype.getData = function (transform) {
+
+ return this._row.getData(transform);
+ };
+
+ RowComponent.prototype.getElement = function () {
+
+ return this._row.getElement();
+ };
+
+ RowComponent.prototype.getCells = function () {
+
+ var cells = [];
+
+ this._row.getCells().forEach(function (cell) {
+
+ cells.push(cell.getComponent());
+ });
+
+ return cells;
+ };
+
+ RowComponent.prototype.getCell = function (column) {
+
+ var cell = this._row.getCell(column);
+
+ return cell ? cell.getComponent() : false;
+ };
+
+ RowComponent.prototype.getIndex = function () {
+
+ return this._row.getData("data")[this._row.table.options.index];
+ };
+
+ RowComponent.prototype.getPosition = function (active) {
+
+ return this._row.table.rowManager.getRowPosition(this._row, active);
+ };
+
+ RowComponent.prototype.delete = function () {
+
+ return this._row.delete();
+ };
+
+ RowComponent.prototype.scrollTo = function () {
+
+ return this._row.table.rowManager.scrollToRow(this._row);
+ };
+
+ RowComponent.prototype.pageTo = function () {
+
+ if (this._row.table.modExists("page", true)) {
+
+ return this._row.table.modules.page.setPageToRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.move = function (to, after) {
+
+ this._row.moveToRow(to, after);
+ };
+
+ RowComponent.prototype.update = function (data) {
+
+ return this._row.updateData(data);
+ };
+
+ RowComponent.prototype.normalizeHeight = function () {
+
+ this._row.normalizeHeight(true);
+ };
+
+ RowComponent.prototype.select = function () {
+
+ this._row.table.modules.selectRow.selectRows(this._row);
+ };
+
+ RowComponent.prototype.deselect = function () {
+
+ this._row.table.modules.selectRow.deselectRows(this._row);
+ };
+
+ RowComponent.prototype.toggleSelect = function () {
+
+ this._row.table.modules.selectRow.toggleRow(this._row);
+ };
+
+ RowComponent.prototype.isSelected = function () {
+
+ return this._row.table.modules.selectRow.isRowSelected(this._row);
+ };
+
+ RowComponent.prototype._getSelf = function () {
+
+ return this._row;
+ };
+
+ RowComponent.prototype.freeze = function () {
+
+ if (this._row.table.modExists("frozenRows", true)) {
+
+ this._row.table.modules.frozenRows.freezeRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.unfreeze = function () {
+
+ if (this._row.table.modExists("frozenRows", true)) {
+
+ this._row.table.modules.frozenRows.unfreezeRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.treeCollapse = function () {
+
+ if (this._row.table.modExists("dataTree", true)) {
+
+ this._row.table.modules.dataTree.collapseRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.treeExpand = function () {
+
+ if (this._row.table.modExists("dataTree", true)) {
+
+ this._row.table.modules.dataTree.expandRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.treeToggle = function () {
+
+ if (this._row.table.modExists("dataTree", true)) {
+
+ this._row.table.modules.dataTree.toggleRow(this._row);
+ }
+ };
+
+ RowComponent.prototype.getTreeParent = function () {
+
+ if (this._row.table.modExists("dataTree", true)) {
+
+ return this._row.table.modules.dataTree.getTreeParent(this._row);
+ }
+
+ return false;
+ };
+
+ RowComponent.prototype.getTreeChildren = function () {
+
+ if (this._row.table.modExists("dataTree", true)) {
+
+ return this._row.table.modules.dataTree.getTreeChildren(this._row);
+ }
+
+ return false;
+ };
+
+ RowComponent.prototype.reformat = function () {
+
+ return this._row.reinitialize();
+ };
+
+ RowComponent.prototype.getGroup = function () {
+
+ return this._row.getGroup().getComponent();
+ };
+
+ RowComponent.prototype.getTable = function () {
+
+ return this._row.table;
+ };
+
+ RowComponent.prototype.getNextRow = function () {
+
+ var row = this._row.nextRow();
+
+ return row ? row.getComponent() : row;
+ };
+
+ RowComponent.prototype.getPrevRow = function () {
+
+ var row = this._row.prevRow();
+
+ return row ? row.getComponent() : row;
+ };
+
+ var Row = function Row(data, parent) {
+
+ this.table = parent.table;
+
+ this.parent = parent;
+
+ this.data = {};
+
+ this.type = "row"; //type of element
+
+ this.element = this.createElement();
+
+ this.modules = {}; //hold module variables;
+
+ this.cells = [];
+
+ this.height = 0; //hold element height
+
+ this.heightStyled = ""; //hold element height prestyled to improve render efficiency
+
+ this.manualHeight = false; //user has manually set row height
+
+ this.outerHeight = 0; //holde lements outer height
+
+ this.initialized = false; //element has been rendered
+
+ this.heightInitialized = false; //element has resized cells to fit
+
+
+ this.setData(data);
+
+ this.generateElement();
+ };
+
+ Row.prototype.createElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-row");
+
+ el.setAttribute("role", "row");
+
+ return el;
+ };
+
+ Row.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ Row.prototype.detachElement = function () {
+
+ if (this.element && this.element.parentNode) {
+
+ this.element.parentNode.removeChild(this.element);
+ }
+ };
+
+ Row.prototype.generateElement = function () {
+
+ var self = this,
+ dblTap,
+ tapHold,
+ tap;
+
+ //set row selection characteristics
+
+ if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
+
+ self.table.modules.selectRow.initializeRow(this);
+ }
+
+ //setup movable rows
+
+ if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+
+ self.table.modules.moveRow.initializeRow(this);
+ }
+
+ //setup data tree
+
+ if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
+
+ self.table.modules.dataTree.initializeRow(this);
+ }
+
+ //handle row click events
+
+ if (self.table.options.rowClick) {
+
+ self.element.addEventListener("click", function (e) {
+
+ self.table.options.rowClick(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowDblClick) {
+
+ self.element.addEventListener("dblclick", function (e) {
+
+ self.table.options.rowDblClick(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowContext) {
+
+ self.element.addEventListener("contextmenu", function (e) {
+
+ self.table.options.rowContext(e, self.getComponent());
+ });
+ }
+
+ //handle mouse events
+
+ if (self.table.options.rowMouseEnter) {
+
+ self.element.addEventListener("mouseenter", function (e) {
+
+ self.table.options.rowMouseEnter(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseLeave) {
+
+ self.element.addEventListener("mouseleave", function (e) {
+
+ self.table.options.rowMouseLeave(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseOver) {
+
+ self.element.addEventListener("mouseover", function (e) {
+
+ self.table.options.rowMouseOver(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseOut) {
+
+ self.element.addEventListener("mouseout", function (e) {
+
+ self.table.options.rowMouseOut(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseMove) {
+
+ self.element.addEventListener("mousemove", function (e) {
+
+ self.table.options.rowMouseMove(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowTap) {
+
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (tap) {
+
+ self.table.options.rowTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (self.table.options.rowDblTap) {
+
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+
+ self.table.options.rowDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (self.table.options.rowTapHold) {
+
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+
+ tap = false;
+
+ self.table.options.rowTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+ });
+ }
+ };
+
+ Row.prototype.generateCells = function () {
+
+ this.cells = this.table.columnManager.generateCells(this);
+ };
+
+ //functions to setup on first render
+
+ Row.prototype.initialize = function (force) {
+
+ var self = this;
+
+ if (!self.initialized || force) {
+
+ self.deleteCells();
+
+ while (self.element.firstChild) {
+ self.element.removeChild(self.element.firstChild);
+ } //handle frozen cells
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.layoutRow(this);
+ }
+
+ this.generateCells();
+
+ self.cells.forEach(function (cell) {
+
+ self.element.appendChild(cell.getElement());
+
+ cell.cellRendered();
+ });
+
+ if (force) {
+
+ self.normalizeHeight();
+ }
+
+ //setup movable rows
+
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+
+ self.table.modules.dataTree.layoutRow(this);
+ }
+
+ //setup movable rows
+
+ if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+
+ self.table.modules.responsiveLayout.layoutRow(this);
+ }
+
+ if (self.table.options.rowFormatter) {
+
+ self.table.options.rowFormatter(self.getComponent());
+ }
+
+ //set resizable handles
+
+ if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
+
+ self.table.modules.resizeRows.initializeRow(self);
+ }
+
+ self.initialized = true;
+ }
+ };
+
+ Row.prototype.reinitializeHeight = function () {
+
+ this.heightInitialized = false;
+
+ if (this.element.offsetParent !== null) {
+
+ this.normalizeHeight(true);
+ }
+ };
+
+ Row.prototype.reinitialize = function () {
+
+ this.initialized = false;
+
+ this.heightInitialized = false;
+
+ if (!this.manualHeight) {
+
+ this.height = 0;
+
+ this.heightStyled = "";
+ }
+
+ if (this.element.offsetParent !== null) {
+
+ this.initialize(true);
+ }
+ };
+
+ //get heights when doing bulk row style calcs in virtual DOM
+
+ Row.prototype.calcHeight = function (force) {
+
+ var maxHeight = 0,
+ minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
+
+ this.cells.forEach(function (cell) {
+
+ var height = cell.getHeight();
+
+ if (height > maxHeight) {
+
+ maxHeight = height;
+ }
+ });
+
+ if (force) {
+
+ this.height = Math.max(maxHeight, minHeight);
+ } else {
+
+ this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
+ }
+
+ this.heightStyled = this.height ? this.height + "px" : "";
+
+ this.outerHeight = this.element.offsetHeight;
+ };
+
+ //set of cells
+
+ Row.prototype.setCellHeight = function () {
+
+ this.cells.forEach(function (cell) {
+
+ cell.setHeight();
+ });
+
+ this.heightInitialized = true;
+ };
+
+ Row.prototype.clearCellHeight = function () {
+
+ this.cells.forEach(function (cell) {
+
+ cell.clearHeight();
+ });
+ };
+
+ //normalize the height of elements in the row
+
+ Row.prototype.normalizeHeight = function (force) {
+
+ if (force) {
+
+ this.clearCellHeight();
+ }
+
+ this.calcHeight(force);
+
+ this.setCellHeight();
+ };
+
+ // Row.prototype.setHeight = function(height){
+
+ // this.height = height;
+
+
+ // this.setCellHeight();
+
+ // };
+
+
+ //set height of rows
+
+ Row.prototype.setHeight = function (height, force) {
+
+ if (this.height != height || force) {
+
+ this.manualHeight = true;
+
+ this.height = height;
+
+ this.heightStyled = height ? height + "px" : "";
+
+ this.setCellHeight();
+
+ // this.outerHeight = this.element.outerHeight();
+
+ this.outerHeight = this.element.offsetHeight;
+ }
+ };
+
+ //return rows outer height
+
+ Row.prototype.getHeight = function () {
+
+ return this.outerHeight;
+ };
+
+ //return rows outer Width
+
+ Row.prototype.getWidth = function () {
+
+ return this.element.offsetWidth;
+ };
+
+ //////////////// Cell Management /////////////////
+
+
+ Row.prototype.deleteCell = function (cell) {
+
+ var index = this.cells.indexOf(cell);
+
+ if (index > -1) {
+
+ this.cells.splice(index, 1);
+ }
+ };
+
+ //////////////// Data Management /////////////////
+
+
+ Row.prototype.setData = function (data) {
+
+ if (this.table.modExists("mutator")) {
+
+ data = this.table.modules.mutator.transformRow(data, "data");
+ }
+
+ this.data = data;
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+
+ this.table.modules.reactiveData.watchRow(this);
+ }
+ };
+
+ //update the rows data
+
+ Row.prototype.updateData = function (data) {
+ var _this6 = this;
+
+ var self = this,
+ visible = Tabulator.prototype.helpers.elVisible(this.element);
+
+ return new Promise(function (resolve, reject) {
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (_this6.table.options.reactiveData && _this6.table.modExists("reactiveData", true)) {
+
+ _this6.table.modules.reactiveData.block();
+ }
+
+ //mutate incomming data if needed
+
+ if (self.table.modExists("mutator")) {
+
+ data = self.table.modules.mutator.transformRow(data, "data", true);
+ }
+
+ //set data
+
+ for (var attrname in data) {
+
+ self.data[attrname] = data[attrname];
+ }
+
+ if (_this6.table.options.reactiveData && _this6.table.modExists("reactiveData", true)) {
+
+ _this6.table.modules.reactiveData.unblock();
+ }
+
+ //update affected cells only
+
+ for (var attrname in data) {
+
+ var cell = _this6.getCell(attrname);
+
+ if (cell) {
+
+ if (cell.getValue() != data[attrname]) {
+
+ cell.setValueProcessData(data[attrname]);
+
+ if (visible) {
+
+ cell.cellRendered();
+ }
+ }
+ }
+ }
+
+ //Partial reinitialization if visible
+
+ if (visible) {
+
+ self.normalizeHeight();
+
+ if (self.table.options.rowFormatter) {
+
+ self.table.options.rowFormatter(self.getComponent());
+ }
+ } else {
+
+ _this6.initialized = false;
+
+ _this6.height = 0;
+
+ _this6.heightStyled = "";
+ }
+
+ if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && typeof data[_this6.table.modules.dataTree.getChildField()] !== "undefined") {
+
+ _this6.table.modules.dataTree.initializeRow(_this6);
+
+ _this6.table.rowManager.refreshActiveData("tree", false, true);
+ }
+
+ //self.reinitialize();
+
+
+ self.table.options.rowUpdated.call(_this6.table, self.getComponent());
+
+ resolve();
+ });
+ };
+
+ Row.prototype.getData = function (transform) {
+
+ var self = this;
+
+ if (transform) {
+
+ if (self.table.modExists("accessor")) {
+
+ return self.table.modules.accessor.transformRow(self.data, transform);
+ }
+ } else {
+
+ return this.data;
+ }
+ };
+
+ Row.prototype.getCell = function (column) {
+
+ var match = false;
+
+ column = this.table.columnManager.findColumn(column);
+
+ match = this.cells.find(function (cell) {
+
+ return cell.column === column;
+ });
+
+ return match;
+ };
+
+ Row.prototype.getCellIndex = function (findCell) {
+
+ return this.cells.findIndex(function (cell) {
+
+ return cell === findCell;
+ });
+ };
+
+ Row.prototype.findNextEditableCell = function (index) {
+
+ var nextCell = false;
+
+ if (index < this.cells.length - 1) {
+
+ for (var i = index + 1; i < this.cells.length; i++) {
+
+ var cell = this.cells[i];
+
+ if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+
+ var allowEdit = true;
+
+ if (typeof cell.column.modules.edit.check == "function") {
+
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ }
+
+ if (allowEdit) {
+
+ nextCell = cell;
+
+ break;
+ }
+ }
+ }
+ }
+
+ return nextCell;
+ };
+
+ Row.prototype.findPrevEditableCell = function (index) {
+
+ var prevCell = false;
+
+ if (index > 0) {
+
+ for (var i = index - 1; i >= 0; i--) {
+
+ var cell = this.cells[i],
+ allowEdit = true;
+
+ if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+
+ if (typeof cell.column.modules.edit.check == "function") {
+
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ }
+
+ if (allowEdit) {
+
+ prevCell = cell;
+
+ break;
+ }
+ }
+ }
+ }
+
+ return prevCell;
+ };
+
+ Row.prototype.getCells = function () {
+
+ return this.cells;
+ };
+
+ Row.prototype.nextRow = function () {
+
+ var row = this.table.rowManager.nextDisplayRow(this, true);
+
+ return row || false;
+ };
+
+ Row.prototype.prevRow = function () {
+
+ var row = this.table.rowManager.prevDisplayRow(this, true);
+
+ return row || false;
+ };
+
+ Row.prototype.moveToRow = function (to, before) {
+
+ var toRow = this.table.rowManager.findRow(to);
+
+ if (toRow) {
+
+ this.table.rowManager.moveRowActual(this, toRow, !before);
+
+ this.table.rowManager.refreshActiveData("display", false, true);
+ } else {
+
+ console.warn("Move Error - No matching row found:", to);
+ }
+ };
+
+ ///////////////////// Actions /////////////////////
+
+
+ Row.prototype.delete = function () {
+ var _this7 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var index = _this7.table.rowManager.getRowIndex(_this7);
+
+ _this7.deleteActual();
+
+ if (_this7.table.options.history && _this7.table.modExists("history")) {
+
+ if (index) {
+
+ index = _this7.table.rowManager.rows[index - 1];
+ }
+
+ _this7.table.modules.history.action("rowDelete", _this7, { data: _this7.getData(), pos: !index, index: index });
+ }
+
+ resolve();
+ });
+ };
+
+ Row.prototype.deleteActual = function (blockRedraw) {
+
+ var index = this.table.rowManager.getRowIndex(this);
+
+ //deselect row if it is selected
+
+ if (this.table.modExists("selectRow")) {
+
+ this.table.modules.selectRow._deselectRow(this, true);
+ }
+
+ // if(this.table.options.dataTree && this.table.modExists("dataTree")){
+
+ // this.table.modules.dataTree.collapseRow(this, true);
+
+ // }
+
+
+ //remove any reactive data watchers from row object
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
+
+ // this.table.modules.reactiveData.unwatchRow(this);
+
+ //remove from group
+
+ if (this.modules.group) {
+
+ this.modules.group.removeRow(this);
+ }
+
+ this.table.rowManager.deleteRow(this, blockRedraw);
+
+ this.deleteCells();
+
+ this.initialized = false;
+
+ this.heightInitialized = false;
+
+ //recalc column calculations if present
+
+ if (this.table.modExists("columnCalcs")) {
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ this.table.modules.columnCalcs.recalcRowGroup(this);
+ } else {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+ }
+ };
+
+ Row.prototype.deleteCells = function () {
+
+ var cellCount = this.cells.length;
+
+ for (var i = 0; i < cellCount; i++) {
+
+ this.cells[0].delete();
+ }
+ };
+
+ Row.prototype.wipe = function () {
+
+ this.deleteCells();
+
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }this.element = false;
+
+ this.modules = {};
+
+ if (this.element.parentNode) {
+
+ this.element.parentNode.removeChild(this.element);
+ }
+ };
+
+ Row.prototype.getGroup = function () {
+
+ return this.modules.group || false;
+ };
+
+ //////////////// Object Generation /////////////////
+
+ Row.prototype.getComponent = function () {
+
+ return new RowComponent(this);
+ };
+
+ //public row object
+
+ var CellComponent = function CellComponent(cell) {
+
+ this._cell = cell;
+ };
+
+ CellComponent.prototype.getValue = function () {
+
+ return this._cell.getValue();
+ };
+
+ CellComponent.prototype.getOldValue = function () {
+
+ return this._cell.getOldValue();
+ };
+
+ CellComponent.prototype.getElement = function () {
+
+ return this._cell.getElement();
+ };
+
+ CellComponent.prototype.getRow = function () {
+
+ return this._cell.row.getComponent();
+ };
+
+ CellComponent.prototype.getData = function () {
+
+ return this._cell.row.getData();
+ };
+
+ CellComponent.prototype.getField = function () {
+
+ return this._cell.column.getField();
+ };
+
+ CellComponent.prototype.getColumn = function () {
+
+ return this._cell.column.getComponent();
+ };
+
+ CellComponent.prototype.setValue = function (value, mutate) {
+
+ if (typeof mutate == "undefined") {
+
+ mutate = true;
+ }
+
+ this._cell.setValue(value, mutate);
+ };
+
+ CellComponent.prototype.restoreOldValue = function () {
+
+ this._cell.setValueActual(this._cell.getOldValue());
+ };
+
+ CellComponent.prototype.edit = function (force) {
+
+ return this._cell.edit(force);
+ };
+
+ CellComponent.prototype.cancelEdit = function () {
+
+ this._cell.cancelEdit();
+ };
+
+ CellComponent.prototype.nav = function () {
+
+ return this._cell.nav();
+ };
+
+ CellComponent.prototype.checkHeight = function () {
+
+ this._cell.checkHeight();
+ };
+
+ CellComponent.prototype.getTable = function () {
+
+ return this._cell.table;
+ };
+
+ CellComponent.prototype._getSelf = function () {
+
+ return this._cell;
+ };
+
+ var Cell = function Cell(column, row) {
+
+ this.table = column.table;
+
+ this.column = column;
+
+ this.row = row;
+
+ this.element = null;
+
+ this.value = null;
+
+ this.oldValue = null;
+
+ this.height = null;
+
+ this.width = null;
+
+ this.minWidth = null;
+
+ this.build();
+ };
+
+ //////////////// Setup Functions /////////////////
+
+
+ //generate element
+
+ Cell.prototype.build = function () {
+
+ this.generateElement();
+
+ this.setWidth();
+
+ this._configureCell();
+
+ this.setValueActual(this.column.getFieldValue(this.row.data));
+ };
+
+ Cell.prototype.generateElement = function () {
+
+ this.element = document.createElement('div');
+
+ this.element.className = "tabulator-cell";
+
+ this.element.setAttribute("role", "gridcell");
+
+ this.element = this.element;
+ };
+
+ Cell.prototype._configureCell = function () {
+
+ var self = this,
+ cellEvents = self.column.cellEvents,
+ element = self.element,
+ field = this.column.getField();
+
+ //set text alignment
+
+ element.style.textAlign = self.column.hozAlign;
+
+ if (field) {
+
+ element.setAttribute("tabulator-field", field);
+ }
+
+ //add class to cell if needed
+
+ if (self.column.definition.cssClass) {
+
+ var classNames = self.column.definition.cssClass.split(" ");
+
+ classNames.forEach(function (className) {
+
+ element.classList.add(className);
+ });
+ }
+
+ //update tooltip on mouse enter
+
+ if (this.table.options.tooltipGenerationMode === "hover") {
+
+ element.addEventListener("mouseenter", function (e) {
+
+ self._generateTooltip();
+ });
+ }
+
+ self._bindClickEvents(cellEvents);
+
+ self._bindTouchEvents(cellEvents);
+
+ self._bindMouseEvents(cellEvents);
+
+ if (self.column.modules.edit) {
+
+ self.table.modules.edit.bindEditor(self);
+ }
+
+ if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+
+ self.table.modules.moveRow.initializeCell(self);
+ }
+
+ //hide cell if not visible
+
+ if (!self.column.visible) {
+
+ self.hide();
+ }
+ };
+
+ Cell.prototype._bindClickEvents = function (cellEvents) {
+
+ var self = this,
+ element = self.element;
+
+ //set event bindings
+
+ if (cellEvents.cellClick || self.table.options.cellClick) {
+
+ element.addEventListener("click", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellClick) {
+
+ cellEvents.cellClick.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellClick) {
+
+ self.table.options.cellClick.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
+
+ element.addEventListener("dblclick", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellDblClick) {
+
+ cellEvents.cellDblClick.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellDblClick) {
+
+ self.table.options.cellDblClick.call(self.table, e, component);
+ }
+ });
+ } else {
+
+ element.addEventListener("dblclick", function (e) {
+
+ e.preventDefault();
+
+ if (document.selection) {
+ // IE
+
+ var range = document.body.createTextRange();
+
+ range.moveToElementText(self.element);
+
+ range.select();
+ } else if (window.getSelection) {
+
+ var range = document.createRange();
+
+ range.selectNode(self.element);
+
+ window.getSelection().removeAllRanges();
+
+ window.getSelection().addRange(range);
+ }
+ });
+ }
+
+ if (cellEvents.cellContext || this.table.options.cellContext) {
+
+ element.addEventListener("contextmenu", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellContext) {
+
+ cellEvents.cellContext.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellContext) {
+
+ self.table.options.cellContext.call(self.table, e, component);
+ }
+ });
+ }
+ };
+
+ Cell.prototype._bindMouseEvents = function (cellEvents) {
+
+ var self = this,
+ element = self.element;
+
+ if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
+
+ element.addEventListener("mouseenter", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseEnter) {
+
+ cellEvents.cellMouseEnter.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseEnter) {
+
+ self.table.options.cellMouseEnter.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
+
+ element.addEventListener("mouseleave", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseLeave) {
+
+ cellEvents.cellMouseLeave.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseLeave) {
+
+ self.table.options.cellMouseLeave.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
+
+ element.addEventListener("mouseover", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseOver) {
+
+ cellEvents.cellMouseOver.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseOver) {
+
+ self.table.options.cellMouseOver.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
+
+ element.addEventListener("mouseout", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseOut) {
+
+ cellEvents.cellMouseOut.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseOut) {
+
+ self.table.options.cellMouseOut.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
+
+ element.addEventListener("mousemove", function (e) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseMove) {
+
+ cellEvents.cellMouseMove.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseMove) {
+
+ self.table.options.cellMouseMove.call(self.table, e, component);
+ }
+ });
+ }
+ };
+
+ Cell.prototype._bindTouchEvents = function (cellEvents) {
+
+ var self = this,
+ element = self.element,
+ dblTap,
+ tapHold,
+ tap;
+
+ if (cellEvents.cellTap || this.table.options.cellTap) {
+
+ tap = false;
+
+ element.addEventListener("touchstart", function (e) {
+
+ tap = true;
+ }, { passive: true });
+
+ element.addEventListener("touchend", function (e) {
+
+ if (tap) {
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellTap) {
+
+ cellEvents.cellTap.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellTap) {
+
+ self.table.options.cellTap.call(self.table, e, component);
+ }
+ }
+
+ tap = false;
+ });
+ }
+
+ if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
+
+ dblTap = null;
+
+ element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellDblTap) {
+
+ cellEvents.cellDblTap.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellDblTap) {
+
+ self.table.options.cellDblTap.call(self.table, e, component);
+ }
+ } else {
+
+ dblTap = setTimeout(function () {
+
+ clearTimeout(dblTap);
+
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
+
+ tapHold = null;
+
+ element.addEventListener("touchstart", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+
+ tap = false;
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellTapHold) {
+
+ cellEvents.cellTapHold.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellTapHold) {
+
+ self.table.options.cellTapHold.call(self.table, e, component);
+ }
+ }, 1000);
+ }, { passive: true });
+
+ element.addEventListener("touchend", function (e) {
+
+ clearTimeout(tapHold);
+
+ tapHold = null;
+ });
+ }
+ };
+
+ //generate cell contents
+
+ Cell.prototype._generateContents = function () {
+
+ var val;
+
+ if (this.table.modExists("format")) {
+
+ val = this.table.modules.format.formatValue(this);
+ } else {
+
+ val = this.element.innerHTML = this.value;
+ }
+
+ switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
+
+ case "object":
+
+ if (val instanceof Node) {
+
+ //clear previous cell contents
+
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }this.element.appendChild(val);
+ } else {
+
+ this.element.innerHTML = "";
+
+ if (val != null) {
+
+ console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
+ }
+ }
+
+ break;
+
+ case "undefined":
+
+ case "null":
+
+ this.element.innerHTML = "";
+
+ break;
+
+ default:
+
+ this.element.innerHTML = val;
+
+ }
+ };
+
+ Cell.prototype.cellRendered = function () {
+
+ if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
+
+ this.table.modules.format.cellRendered(this);
+ }
+ };
+
+ //generate tooltip text
+
+ Cell.prototype._generateTooltip = function () {
+
+ var tooltip = this.column.tooltip;
+
+ if (tooltip) {
+
+ if (tooltip === true) {
+
+ tooltip = this.value;
+ } else if (typeof tooltip == "function") {
+
+ tooltip = tooltip(this.getComponent());
+
+ if (tooltip === false) {
+
+ tooltip = "";
+ }
+ }
+
+ if (typeof tooltip === "undefined") {
+
+ tooltip = "";
+ }
+
+ this.element.setAttribute("title", tooltip);
+ } else {
+
+ this.element.setAttribute("title", "");
+ }
+ };
+
+ //////////////////// Getters ////////////////////
+
+ Cell.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ Cell.prototype.getValue = function () {
+
+ return this.value;
+ };
+
+ Cell.prototype.getOldValue = function () {
+
+ return this.oldValue;
+ };
+
+ //////////////////// Actions ////////////////////
+
+
+ Cell.prototype.setValue = function (value, mutate) {
+
+ var changed = this.setValueProcessData(value, mutate),
+ component;
+
+ if (changed) {
+
+ if (this.table.options.history && this.table.modExists("history")) {
+
+ this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
+ }
+
+ component = this.getComponent();
+
+ if (this.column.cellEvents.cellEdited) {
+
+ this.column.cellEvents.cellEdited.call(this.table, component);
+ }
+
+ this.table.options.cellEdited.call(this.table, component);
+
+ this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
+ }
+ };
+
+ Cell.prototype.setValueProcessData = function (value, mutate) {
+
+ var changed = false;
+
+ if (this.value != value) {
+
+ changed = true;
+
+ if (mutate) {
+
+ if (this.column.modules.mutate) {
+
+ value = this.table.modules.mutator.transformCell(this, value);
+ }
+ }
+ }
+
+ this.setValueActual(value);
+
+ if (changed && this.table.modExists("columnCalcs")) {
+
+ if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ if (this.table.options.columnCalcs != "table") {
+
+ this.table.modules.columnCalcs.recalcRowGroup(this.row);
+ }
+ } else {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+ }
+ }
+
+ return changed;
+ };
+
+ Cell.prototype.setValueActual = function (value) {
+
+ this.oldValue = this.value;
+
+ this.value = value;
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+
+ this.table.modules.reactiveData.block();
+ }
+
+ this.column.setFieldValue(this.row.data, value);
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+
+ this.table.modules.reactiveData.unblock();
+ }
+
+ this._generateContents();
+
+ this._generateTooltip();
+
+ //set resizable handles
+
+ if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
+
+ this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
+ }
+
+ //handle frozen cells
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.layoutElement(this.element, this.column);
+ }
+ };
+
+ Cell.prototype.setWidth = function () {
+
+ this.width = this.column.width;
+
+ this.element.style.width = this.column.widthStyled;
+ };
+
+ Cell.prototype.clearWidth = function () {
+
+ this.width = "";
+
+ this.element.style.width = "";
+ };
+
+ Cell.prototype.getWidth = function () {
+
+ return this.width || this.element.offsetWidth;
+ };
+
+ Cell.prototype.setMinWidth = function () {
+
+ this.minWidth = this.column.minWidth;
+
+ this.element.style.minWidth = this.column.minWidthStyled;
+ };
+
+ Cell.prototype.checkHeight = function () {
+
+ // var height = this.element.css("height");
+
+ this.row.reinitializeHeight();
+ };
+
+ Cell.prototype.clearHeight = function () {
+
+ this.element.style.height = "";
+
+ this.height = null;
+ };
+
+ Cell.prototype.setHeight = function () {
+
+ this.height = this.row.height;
+
+ this.element.style.height = this.row.heightStyled;
+ };
+
+ Cell.prototype.getHeight = function () {
+
+ return this.height || this.element.offsetHeight;
+ };
+
+ Cell.prototype.show = function () {
+
+ this.element.style.display = "";
+ };
+
+ Cell.prototype.hide = function () {
+
+ this.element.style.display = "none";
+ };
+
+ Cell.prototype.edit = function (force) {
+
+ if (this.table.modExists("edit", true)) {
+
+ return this.table.modules.edit.editCell(this, force);
+ }
+ };
+
+ Cell.prototype.cancelEdit = function () {
+
+ if (this.table.modExists("edit", true)) {
+
+ var editing = this.table.modules.edit.getCurrentCell();
+
+ if (editing && editing._getSelf() === this) {
+
+ this.table.modules.edit.cancelEdit();
+ } else {
+
+ console.warn("Cancel Editor Error - This cell is not currently being edited ");
+ }
+ }
+ };
+
+ Cell.prototype.delete = function () {
+
+ this.element.parentNode.removeChild(this.element);
+
+ this.element = false;
+
+ this.column.deleteCell(this);
+
+ this.row.deleteCell(this);
+
+ this.calcs = {};
+ };
+
+ //////////////// Navigation /////////////////
+
+
+ Cell.prototype.nav = function () {
+
+ var self = this,
+ nextCell = false,
+ index = this.row.getCellIndex(this);
+
+ return {
+
+ next: function next() {
+
+ var nextCell = this.right(),
+ nextRow;
+
+ if (!nextCell) {
+
+ nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+ if (nextRow) {
+
+ nextCell = nextRow.findNextEditableCell(-1);
+
+ if (nextCell) {
+
+ nextCell.edit();
+
+ return true;
+ }
+ }
+ } else {
+
+ return true;
+ }
+
+ return false;
+ },
+
+ prev: function prev() {
+
+ var nextCell = this.left(),
+ prevRow;
+
+ if (!nextCell) {
+
+ prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+ if (prevRow) {
+
+ nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
+
+ if (nextCell) {
+
+ nextCell.edit();
+
+ return true;
+ }
+ }
+ } else {
+
+ return true;
+ }
+
+ return false;
+ },
+
+ left: function left() {
+
+ nextCell = self.row.findPrevEditableCell(index);
+
+ if (nextCell) {
+
+ nextCell.edit();
+
+ return true;
+ } else {
+
+ return false;
+ }
+ },
+
+ right: function right() {
+
+ nextCell = self.row.findNextEditableCell(index);
+
+ if (nextCell) {
+
+ nextCell.edit();
+
+ return true;
+ } else {
+
+ return false;
+ }
+ },
+
+ up: function up() {
+
+ var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+ if (nextRow) {
+
+ nextRow.cells[index].edit();
+ }
+ },
+
+ down: function down() {
+
+ var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+ if (nextRow) {
+
+ nextRow.cells[index].edit();
+ }
+ }
+
+ };
+ };
+
+ Cell.prototype.getIndex = function () {
+
+ this.row.getCellIndex(this);
+ };
+
+ //////////////// Object Generation /////////////////
+
+ Cell.prototype.getComponent = function () {
+
+ return new CellComponent(this);
+ };
+
+ var FooterManager = function FooterManager(table) {
+
+ this.table = table;
+
+ this.active = false;
+
+ this.element = this.createElement(); //containing element
+
+ this.external = false;
+
+ this.links = [];
+
+ this._initialize();
+ };
+
+ FooterManager.prototype.createElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-footer");
+
+ return el;
+ };
+
+ FooterManager.prototype._initialize = function (element) {
+
+ if (this.table.options.footerElement) {
+
+ switch (_typeof(this.table.options.footerElement)) {
+
+ case "string":
+
+ if (this.table.options.footerElement[0] === "<") {
+
+ this.element.innerHTML = this.table.options.footerElement;
+ } else {
+
+ this.external = true;
+
+ this.element = document.querySelector(this.table.options.footerElement);
+ }
+
+ break;
+
+ default:
+
+ this.element = this.table.options.footerElement;
+
+ break;
+
+ }
+ }
+ };
+
+ FooterManager.prototype.getElement = function () {
+
+ return this.element;
+ };
+
+ FooterManager.prototype.append = function (element, parent) {
+
+ this.activate(parent);
+
+ this.element.appendChild(element);
+
+ this.table.rowManager.adjustTableSize();
+ };
+
+ FooterManager.prototype.prepend = function (element, parent) {
+
+ this.activate(parent);
+
+ this.element.insertBefore(element, this.element.firstChild);
+
+ this.table.rowManager.adjustTableSize();
+ };
+
+ FooterManager.prototype.remove = function (element) {
+
+ element.parentNode.removeChild(element);
+
+ this.deactivate();
+ };
+
+ FooterManager.prototype.deactivate = function (force) {
+
+ if (!this.element.firstChild || force) {
+
+ if (!this.external) {
+
+ this.element.parentNode.removeChild(this.element);
+ }
+
+ this.active = false;
+ }
+
+ // this.table.rowManager.adjustTableSize();
+ };
+
+ FooterManager.prototype.activate = function (parent) {
+
+ if (!this.active) {
+
+ this.active = true;
+
+ if (!this.external) {
+
+ this.table.element.appendChild(this.getElement());
+
+ this.table.element.style.display = '';
+ }
+ }
+
+ if (parent) {
+
+ this.links.push(parent);
+ }
+ };
+
+ FooterManager.prototype.redraw = function () {
+
+ this.links.forEach(function (link) {
+
+ link.footerRedraw();
+ });
+ };
+
+ var Tabulator = function Tabulator(element, options) {
+
+ this.options = {};
+
+ this.columnManager = null; // hold Column Manager
+
+ this.rowManager = null; //hold Row Manager
+
+ this.footerManager = null; //holder Footer Manager
+
+ this.browser = ""; //hold current browser type
+
+ this.browserSlow = false; //handle reduced functionality for slower browsers
+
+
+ this.modules = {}; //hold all modules bound to this table
+
+
+ this.initializeElement(element);
+
+ this.initializeOptions(options || {});
+
+ this._create();
+
+ Tabulator.prototype.comms.register(this); //register table for inderdevice communication
+ };
+
+ //default setup options
+
+ Tabulator.prototype.defaultOptions = {
+
+ height: false, //height of tabulator
+
+
+ layout: "fitData", ///layout type "fitColumns" | "fitData"
+
+ layoutColumnsOnNewData: false, //update column widths on setData
+
+
+ columnMinWidth: 40, //minimum global width for a column
+
+ columnVertAlign: "top", //vertical alignment of column headers
+
+
+ resizableColumns: true, //resizable columns
+
+ resizableRows: false, //resizable rows
+
+ autoResize: true, //auto resize table
+
+
+ columns: [], //store for colum header info
+
+
+ data: [], //default starting data
+
+
+ autoColumns: false, //build columns from data row structure
+
+
+ reactiveData: false, //enable data reactivity
+
+
+ nestedFieldSeparator: ".", //seperatpr for nested data
+
+
+ tooltips: false, //Tool tip value
+
+ tooltipsHeader: false, //Tool tip for headers
+
+ tooltipGenerationMode: "load", //when to generate tooltips
+
+
+ initialSort: false, //initial sorting criteria
+
+ initialFilter: false, //initial filtering criteria
+
+ initialHeaderFilter: false, //initial header filtering criteria
+
+
+ columnHeaderSortMulti: true, //multiple or single column sorting
+
+
+ sortOrderReverse: false, //reverse internal sort ordering
+
+
+ headerSort: true, //set default global header sort
+
+ headerSortTristate: false, //set default tristate header sorting
+
+
+ footerElement: false, //hold footer element
+
+
+ index: "id", //filed for row index
+
+
+ keybindings: [], //array for keybindings
+
+
+ tabEndNewRow: false, //create new row when tab to end of table
+
+
+ invalidOptionWarnings: true, //allow toggling of invalid option warnings
+
+
+ clipboard: false, //enable clipboard
+
+ clipboardCopyStyled: true, //formatted table data
+
+ clipboardCopySelector: "active", //method of chosing which data is coppied to the clipboard
+
+ clipboardCopyFormatter: "table", //convert data to a clipboard string
+
+ clipboardPasteParser: "table", //convert pasted clipboard data to rows
+
+ clipboardPasteAction: "insert", //how to insert pasted data into the table
+
+ clipboardCopyConfig: false, //clipboard config
+
+
+ clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
+
+ clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
+
+ clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
+
+
+ downloadDataFormatter: false, //function to manipulate table data before it is downloaded
+
+ downloadReady: function downloadReady(data, blob) {
+ return blob;
+ }, //function to manipulate download data
+
+ downloadComplete: false, //function to manipulate download data
+
+ downloadConfig: false, //download config
+
+
+ dataTree: false, //enable data tree
+
+ dataTreeElementColumn: false,
+
+ dataTreeBranchElement: true, //show data tree branch element
+
+ dataTreeChildIndent: 9, //data tree child indent in px
+
+ dataTreeChildField: "_children", //data tre column field to look for child rows
+
+ dataTreeCollapseElement: false, //data tree row collapse element
+
+ dataTreeExpandElement: false, //data tree row expand element
+
+ dataTreeStartExpanded: false,
+
+ dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
+
+ dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
+
+
+ printAsHtml: false, //enable print as html
+
+ printFormatter: false, //printing page formatter
+
+ printHeader: false, //page header contents
+
+ printFooter: false, //page footer contents
+
+ printCopyStyle: true, //enable print as html styling
+
+ printVisibleRows: true, //restrict print to visible rows only
+
+ printConfig: {}, //print config options
+
+
+ addRowPos: "bottom", //position to insert blank rows, top|bottom
+
+
+ selectable: "highlight", //highlight rows on hover
+
+ selectableRangeMode: "drag", //highlight rows on hover
+
+ selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
+
+ selectablePersistence: true, // maintain selection when table view is updated
+
+ selectableCheck: function selectableCheck(data, row) {
+ return true;
+ }, //check wheather row is selectable
+
+
+ headerFilterPlaceholder: false, //placeholder text to display in header filters
+
+
+ headerVisible: true, //hide header
+
+
+ history: false, //enable edit history
+
+
+ locale: false, //current system language
+
+ langs: {},
+
+ virtualDom: true, //enable DOM virtualization
+
+ virtualDomBuffer: 0, // set virtual DOM buffer size
+
+
+ persistentLayout: false, //store column layout in memory
+
+ persistentSort: false, //store sorting in memory
+
+ persistentFilter: false, //store filters in memory
+
+ persistenceID: "", //key for persistent storage
+
+ persistenceMode: true, //mode for storing persistence information
+
+
+ responsiveLayout: false, //responsive layout flags
+
+ responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
+
+ responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
+
+ responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
+
+
+ pagination: false, //set pagination type
+
+ paginationSize: false, //set number of rows to a page
+
+ paginationButtonCount: 5, // set count of page button
+
+ paginationSizeSelector: false, //add pagination size selector element
+
+ paginationElement: false, //element to hold pagination numbers
+
+ paginationDataSent: {}, //pagination data sent to the server
+
+ paginationDataReceived: {}, //pagination data received from the server
+
+ paginationAddRow: "page", //add rows on table or page
+
+
+ ajaxURL: false, //url for ajax loading
+
+ ajaxURLGenerator: false,
+
+ ajaxParams: {}, //params for ajax loading
+
+ ajaxConfig: "get", //ajax request type
+
+ ajaxContentType: "form", //ajax request type
+
+ ajaxRequestFunc: false, //promise function
+
+ ajaxLoader: true, //show loader
+
+ ajaxLoaderLoading: false, //loader element
+
+ ajaxLoaderError: false, //loader element
+
+ ajaxFiltering: false,
+
+ ajaxSorting: false,
+
+ ajaxProgressiveLoad: false, //progressive loading
+
+ ajaxProgressiveLoadDelay: 0, //delay between requests
+
+ ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
+
+
+ groupBy: false, //enable table grouping and set field to group by
+
+ groupStartOpen: true, //starting state of group
+
+ groupValues: false,
+
+ groupHeader: false, //header generation function
+
+
+ htmlOutputConfig: false, //html outypu config
+
+
+ movableColumns: false, //enable movable columns
+
+
+ movableRows: false, //enable movable rows
+
+ movableRowsConnectedTables: false, //tables for movable rows to be connected to
+
+ movableRowsSender: false,
+
+ movableRowsReceiver: "insert",
+
+ movableRowsSendingStart: function movableRowsSendingStart() {},
+
+ movableRowsSent: function movableRowsSent() {},
+
+ movableRowsSentFailed: function movableRowsSentFailed() {},
+
+ movableRowsSendingStop: function movableRowsSendingStop() {},
+
+ movableRowsReceivingStart: function movableRowsReceivingStart() {},
+
+ movableRowsReceived: function movableRowsReceived() {},
+
+ movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
+
+ movableRowsReceivingStop: function movableRowsReceivingStop() {},
+
+ scrollToRowPosition: "top",
+
+ scrollToRowIfVisible: true,
+
+ scrollToColumnPosition: "left",
+
+ scrollToColumnIfVisible: true,
+
+ rowFormatter: false,
+
+ placeholder: false,
+
+ //table building callbacks
+
+ tableBuilding: function tableBuilding() {},
+
+ tableBuilt: function tableBuilt() {},
+
+ //render callbacks
+
+ renderStarted: function renderStarted() {},
+
+ renderComplete: function renderComplete() {},
+
+ //row callbacks
+
+ rowClick: false,
+
+ rowDblClick: false,
+
+ rowContext: false,
+
+ rowTap: false,
+
+ rowDblTap: false,
+
+ rowTapHold: false,
+
+ rowMouseEnter: false,
+
+ rowMouseLeave: false,
+
+ rowMouseOver: false,
+
+ rowMouseOut: false,
+
+ rowMouseMove: false,
+
+ rowAdded: function rowAdded() {},
+
+ rowDeleted: function rowDeleted() {},
+
+ rowMoved: function rowMoved() {},
+
+ rowUpdated: function rowUpdated() {},
+
+ rowSelectionChanged: function rowSelectionChanged() {},
+
+ rowSelected: function rowSelected() {},
+
+ rowDeselected: function rowDeselected() {},
+
+ rowResized: function rowResized() {},
+
+ //cell callbacks
+
+ //row callbacks
+
+ cellClick: false,
+
+ cellDblClick: false,
+
+ cellContext: false,
+
+ cellTap: false,
+
+ cellDblTap: false,
+
+ cellTapHold: false,
+
+ cellMouseEnter: false,
+
+ cellMouseLeave: false,
+
+ cellMouseOver: false,
+
+ cellMouseOut: false,
+
+ cellMouseMove: false,
+
+ cellEditing: function cellEditing() {},
+
+ cellEdited: function cellEdited() {},
+
+ cellEditCancelled: function cellEditCancelled() {},
+
+ //column callbacks
+
+ columnMoved: false,
+
+ columnResized: function columnResized() {},
+
+ columnTitleChanged: function columnTitleChanged() {},
+
+ columnVisibilityChanged: function columnVisibilityChanged() {},
+
+ //HTML iport callbacks
+
+ htmlImporting: function htmlImporting() {},
+
+ htmlImported: function htmlImported() {},
+
+ //data callbacks
+
+ dataLoading: function dataLoading() {},
+
+ dataLoaded: function dataLoaded() {},
+
+ dataEdited: function dataEdited() {},
+
+ //ajax callbacks
+
+ ajaxRequesting: function ajaxRequesting() {},
+
+ ajaxResponse: false,
+
+ ajaxError: function ajaxError() {},
+
+ //filtering callbacks
+
+ dataFiltering: false,
+
+ dataFiltered: false,
+
+ //sorting callbacks
+
+ dataSorting: function dataSorting() {},
+
+ dataSorted: function dataSorted() {},
+
+ //grouping callbacks
+
+ groupToggleElement: "arrow",
+
+ groupClosedShowCalcs: false,
+
+ dataGrouping: function dataGrouping() {},
+
+ dataGrouped: false,
+
+ groupVisibilityChanged: function groupVisibilityChanged() {},
+
+ groupClick: false,
+
+ groupDblClick: false,
+
+ groupContext: false,
+
+ groupTap: false,
+
+ groupDblTap: false,
+
+ groupTapHold: false,
+
+ columnCalcs: true,
+
+ //pagination callbacks
+
+ pageLoaded: function pageLoaded() {},
+
+ //localization callbacks
+
+ localized: function localized() {},
+
+ //validation has failed
+
+ validationFailed: function validationFailed() {},
+
+ //history callbacks
+
+ historyUndo: function historyUndo() {},
+
+ historyRedo: function historyRedo() {}
+
+ };
+
+ Tabulator.prototype.initializeOptions = function (options) {
+
+ //warn user if option is not available
+
+ if (options.invalidOptionWarnings !== false) {
+
+ for (var key in options) {
+
+ if (typeof this.defaultOptions[key] === "undefined") {
+
+ console.warn("Invalid table constructor option:", key);
+ }
+ }
+ }
+
+ //assign options to table
+
+ for (var key in this.defaultOptions) {
+
+ if (key in options) {
+
+ this.options[key] = options[key];
+ } else {
+
+ if (Array.isArray(this.defaultOptions[key])) {
+
+ this.options[key] = [];
+ } else if (_typeof(this.defaultOptions[key]) === "object") {
+
+ this.options[key] = {};
+ } else {
+
+ this.options[key] = this.defaultOptions[key];
+ }
+ }
+ }
+ };
+
+ Tabulator.prototype.initializeElement = function (element) {
+
+ if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
+
+ this.element = element;
+
+ return true;
+ } else if (typeof element === "string") {
+
+ this.element = document.querySelector(element);
+
+ if (this.element) {
+
+ return true;
+ } else {
+
+ console.error("Tabulator Creation Error - no element found matching selector: ", element);
+
+ return false;
+ }
+ } else {
+
+ console.error("Tabulator Creation Error - Invalid element provided:", element);
+
+ return false;
+ }
+ };
+
+ //convert depricated functionality to new functions
+
+ Tabulator.prototype._mapDepricatedFunctionality = function () {};
+
+ Tabulator.prototype._clearSelection = function () {
+
+ this.element.classList.add("tabulator-block-select");
+
+ if (window.getSelection) {
+
+ if (window.getSelection().empty) {
+ // Chrome
+
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) {
+ // Firefox
+
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) {
+ // IE?
+
+ document.selection.empty();
+ }
+
+ this.element.classList.remove("tabulator-block-select");
+ };
+
+ //concreate table
+
+ Tabulator.prototype._create = function () {
+
+ this._clearObjectPointers();
+
+ this._mapDepricatedFunctionality();
+
+ this.bindModules();
+
+ if (this.element.tagName === "TABLE") {
+
+ if (this.modExists("htmlTableImport", true)) {
+
+ this.modules.htmlTableImport.parseTable();
+ }
+ }
+
+ this.columnManager = new ColumnManager(this);
+
+ this.rowManager = new RowManager(this);
+
+ this.footerManager = new FooterManager(this);
+
+ this.columnManager.setRowManager(this.rowManager);
+
+ this.rowManager.setColumnManager(this.columnManager);
+
+ this._buildElement();
+
+ this._loadInitialData();
+ };
+
+ //clear pointers to objects in default config object
+
+ Tabulator.prototype._clearObjectPointers = function () {
+
+ this.options.columns = this.options.columns.slice(0);
+
+ if (!this.options.reactiveData) {
+
+ this.options.data = this.options.data.slice(0);
+ }
+ };
+
+ //build tabulator element
+
+ Tabulator.prototype._buildElement = function () {
+ var _this8 = this;
+
+ var element = this.element,
+ mod = this.modules,
+ options = this.options;
+
+ options.tableBuilding.call(this);
+
+ element.classList.add("tabulator");
+
+ element.setAttribute("role", "grid");
+
+ //empty element
+
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ } //set table height
+
+ if (options.height) {
+
+ options.height = isNaN(options.height) ? options.height : options.height + "px";
+
+ element.style.height = options.height;
+ }
+
+ this.columnManager.initialize();
+
+ this.rowManager.initialize();
+
+ this._detectBrowser();
+
+ if (this.modExists("layout", true)) {
+
+ mod.layout.initialize(options.layout);
+ }
+
+ //set localization
+
+ if (options.headerFilterPlaceholder !== false) {
+
+ mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
+ }
+
+ for (var locale in options.langs) {
+
+ mod.localize.installLang(locale, options.langs[locale]);
+ }
+
+ mod.localize.setLocale(options.locale);
+
+ //configure placeholder element
+
+ if (typeof options.placeholder == "string") {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-placeholder");
+
+ var span = document.createElement("span");
+
+ span.innerHTML = options.placeholder;
+
+ el.appendChild(span);
+
+ options.placeholder = el;
+ }
+
+ //build table elements
+
+ element.appendChild(this.columnManager.getElement());
+
+ element.appendChild(this.rowManager.getElement());
+
+ if (options.footerElement) {
+
+ this.footerManager.activate();
+ }
+
+ if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
+
+ mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+ }
+
+ if (options.persistentLayout && this.modExists("persistence", true)) {
+
+ options.columns = mod.persistence.load("columns", options.columns);
+ }
+
+ if (options.movableRows && this.modExists("moveRow")) {
+
+ mod.moveRow.initialize();
+ }
+
+ if (options.autoColumns && this.options.data) {
+
+ this.columnManager.generateColumnsFromRowData(this.options.data);
+ }
+
+ if (this.modExists("columnCalcs")) {
+
+ mod.columnCalcs.initialize();
+ }
+
+ this.columnManager.setColumns(options.columns);
+
+ if (options.dataTree && this.modExists("dataTree", true)) {
+
+ mod.dataTree.initialize();
+ }
+
+ if (this.modExists("frozenRows")) {
+
+ this.modules.frozenRows.initialize();
+ }
+
+ if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+
+ var sorters = [];
+
+ if (options.persistentSort && this.modExists("persistence", true)) {
+
+ sorters = mod.persistence.load("sort");
+
+ if (sorters === false && options.initialSort) {
+
+ sorters = options.initialSort;
+ }
+ } else if (options.initialSort) {
+
+ sorters = options.initialSort;
+ }
+
+ mod.sort.setSort(sorters);
+ }
+
+ if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+
+ var filters = [];
+
+ if (options.persistentFilter && this.modExists("persistence", true)) {
+
+ filters = mod.persistence.load("filter");
+
+ if (filters === false && options.initialFilter) {
+
+ filters = options.initialFilter;
+ }
+ } else if (options.initialFilter) {
+
+ filters = options.initialFilter;
+ }
+
+ mod.filter.setFilter(filters);
+ }
+
+ if (options.initialHeaderFilter && this.modExists("filter", true)) {
+
+ options.initialHeaderFilter.forEach(function (item) {
+
+ var column = _this8.columnManager.findColumn(item.field);
+
+ if (column) {
+
+ mod.filter.setHeaderFilterValue(column, item.value);
+ } else {
+
+ console.warn("Column Filter Error - No matching column found:", item.field);
+
+ return false;
+ }
+ });
+ }
+
+ if (this.modExists("ajax")) {
+
+ mod.ajax.initialize();
+ }
+
+ if (options.pagination && this.modExists("page", true)) {
+
+ mod.page.initialize();
+ }
+
+ if (options.groupBy && this.modExists("groupRows", true)) {
+
+ mod.groupRows.initialize();
+ }
+
+ if (this.modExists("keybindings")) {
+
+ mod.keybindings.initialize();
+ }
+
+ if (this.modExists("selectRow")) {
+
+ mod.selectRow.clearSelectionData(true);
+ }
+
+ if (options.autoResize && this.modExists("resizeTable")) {
+
+ mod.resizeTable.initialize();
+ }
+
+ if (this.modExists("clipboard")) {
+
+ mod.clipboard.initialize();
+ }
+
+ if (options.printAsHtml && this.modExists("print")) {
+
+ mod.print.initialize();
+ }
+
+ options.tableBuilt.call(this);
+ };
+
+ Tabulator.prototype._loadInitialData = function () {
+
+ var self = this;
+
+ if (self.options.pagination && self.modExists("page")) {
+
+ self.modules.page.reset(true);
+
+ if (self.options.pagination == "local") {
+
+ if (self.options.data.length) {
+
+ self.rowManager.setData(self.options.data);
+ } else {
+
+ if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+
+ self.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+
+ self.rowManager.setData(self.options.data);
+ }
+ }
+ } else {
+
+ if (self.options.ajaxURL) {
+
+ self.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else {
+
+ self.rowManager.setData([]);
+ }
+ }
+ } else {
+
+ if (self.options.data.length) {
+
+ self.rowManager.setData(self.options.data);
+ } else {
+
+ if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+
+ self.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+
+ self.rowManager.setData(self.options.data);
+ }
+ }
+ }
+ };
+
+ //deconstructor
+
+ Tabulator.prototype.destroy = function () {
+
+ var element = this.element;
+
+ Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
+
+
+ if (this.options.reactiveData && this.modExists("reactiveData", true)) {
+
+ this.modules.reactiveData.unwatchData();
+ }
+
+ //clear row data
+
+ this.rowManager.rows.forEach(function (row) {
+
+ row.wipe();
+ });
+
+ this.rowManager.rows = [];
+
+ this.rowManager.activeRows = [];
+
+ this.rowManager.displayRows = [];
+
+ //clear event bindings
+
+ if (this.options.autoResize && this.modExists("resizeTable")) {
+
+ this.modules.resizeTable.clearBindings();
+ }
+
+ if (this.modExists("keybindings")) {
+
+ this.modules.keybindings.clearBindings();
+ }
+
+ //clear DOM
+
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.classList.remove("tabulator");
+ };
+
+ Tabulator.prototype._detectBrowser = function () {
+
+ var ua = navigator.userAgent;
+
+ if (ua.indexOf("Trident") > -1) {
+
+ this.browser = "ie";
+
+ this.browserSlow = true;
+ } else if (ua.indexOf("Edge") > -1) {
+
+ this.browser = "edge";
+
+ this.browserSlow = true;
+ } else if (ua.indexOf("Firefox") > -1) {
+
+ this.browser = "firefox";
+
+ this.browserSlow = false;
+ } else {
+
+ this.browser = "other";
+
+ this.browserSlow = false;
+ }
+ };
+
+ ////////////////// Data Handling //////////////////
+
+
+ //loca data from local file
+
+ Tabulator.prototype.setDataFromLocalFile = function (extensions) {
+ var _this9 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var input = document.createElement("input");
+
+ input.type = "file";
+
+ input.accept = extensions || ".json,application/json";
+
+ input.addEventListener("change", function (e) {
+
+ var file = input.files[0],
+ reader = new FileReader(),
+ data;
+
+ reader.readAsText(file);
+
+ reader.onload = function (e) {
+
+ try {
+
+ data = JSON.parse(reader.result);
+ } catch (e) {
+
+ console.warn("File Load Error - File contents is invalid JSON", e);
+
+ reject(e);
+
+ return;
+ }
+
+ _this9._setData(data).then(function (data) {
+
+ resolve(data);
+ }).catch(function (err) {
+
+ resolve(err);
+ });
+ };
+
+ reader.onerror = function (e) {
+
+ console.warn("File Load Error - Unable to read file");
+
+ reject();
+ };
+ });
+
+ input.click();
+ });
+ };
+
+ //load data
+
+ Tabulator.prototype.setData = function (data, params, config) {
+
+ if (this.modExists("ajax")) {
+
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ return this._setData(data, params, config);
+ };
+
+ Tabulator.prototype._setData = function (data, params, config, inPosition) {
+
+ var self = this;
+
+ if (typeof data === "string") {
+
+ if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
+
+ //data is a json encoded string
+
+ return self.rowManager.setData(JSON.parse(data), inPosition);
+ } else {
+
+ if (self.modExists("ajax", true)) {
+
+ if (params) {
+
+ self.modules.ajax.setParams(params);
+ }
+
+ if (config) {
+
+ self.modules.ajax.setConfig(config);
+ }
+
+ self.modules.ajax.setUrl(data);
+
+ if (self.options.pagination == "remote" && self.modExists("page", true)) {
+
+ self.modules.page.reset(true);
+
+ return self.modules.page.setPage(1);
+ } else {
+
+ //assume data is url, make ajax call to url to get data
+
+ return self.modules.ajax.loadData(inPosition);
+ }
+ }
+ }
+ } else {
+
+ if (data) {
+
+ //asume data is already an object
+
+ return self.rowManager.setData(data, inPosition);
+ } else {
+
+ //no data provided, check if ajaxURL is present;
+
+ if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
+
+ if (self.options.pagination == "remote" && self.modExists("page", true)) {
+
+ self.modules.page.reset(true);
+
+ return self.modules.page.setPage(1);
+ } else {
+
+ return self.modules.ajax.loadData(inPosition);
+ }
+ } else {
+
+ //empty data
+
+ return self.rowManager.setData([], inPosition);
+ }
+ }
+ }
+ };
+
+ //clear data
+
+ Tabulator.prototype.clearData = function () {
+
+ if (this.modExists("ajax")) {
+
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ this.rowManager.clearData();
+ };
+
+ //get table data array
+
+ Tabulator.prototype.getData = function (active) {
+
+ return this.rowManager.getData(active);
+ };
+
+ //get table data array count
+
+ Tabulator.prototype.getDataCount = function (active) {
+
+ return this.rowManager.getDataCount(active);
+ };
+
+ //search for specific row components
+
+ Tabulator.prototype.searchRows = function (field, type, value) {
+
+ if (this.modExists("filter", true)) {
+
+ return this.modules.filter.search("rows", field, type, value);
+ }
+ };
+
+ //search for specific data
+
+ Tabulator.prototype.searchData = function (field, type, value) {
+
+ if (this.modExists("filter", true)) {
+
+ return this.modules.filter.search("data", field, type, value);
+ }
+ };
+
+ //get table html
+
+ Tabulator.prototype.getHtml = function (visible, style, config) {
+
+ if (this.modExists("htmlTableExport", true)) {
+
+ return this.modules.htmlTableExport.getHtml(visible, style, config);
+ }
+ };
+
+ //get print html
+
+ Tabulator.prototype.print = function (visible, style, config) {
+
+ if (this.modExists("print", true)) {
+
+ return this.modules.print.printFullscreen(visible, style, config);
+ }
+ };
+
+ //retrieve Ajax URL
+
+ Tabulator.prototype.getAjaxUrl = function () {
+
+ if (this.modExists("ajax", true)) {
+
+ return this.modules.ajax.getUrl();
+ }
+ };
+
+ //replace data, keeping table in position with same sort
+
+ Tabulator.prototype.replaceData = function (data, params, config) {
+
+ if (this.modExists("ajax")) {
+
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ return this._setData(data, params, config, true);
+ };
+
+ //update table data
+
+ Tabulator.prototype.updateData = function (data) {
+ var _this10 = this;
+
+ var self = this;
+
+ var responses = 0;
+
+ return new Promise(function (resolve, reject) {
+
+ if (_this10.modExists("ajax")) {
+
+ _this10.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+
+ data.forEach(function (item) {
+
+ var row = self.rowManager.findRow(item[self.options.index]);
+
+ if (row) {
+
+ responses++;
+
+ row.updateData(item).then(function () {
+
+ responses--;
+
+ if (!responses) {
+
+ resolve();
+ }
+ });
+ }
+ });
+ } else {
+
+ console.warn("Update Error - No data provided");
+
+ reject("Update Error - No data provided");
+ }
+ });
+ };
+
+ Tabulator.prototype.addData = function (data, pos, index) {
+ var _this11 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ if (_this11.modExists("ajax")) {
+
+ _this11.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+
+ _this11.rowManager.addRows(data, pos, index).then(function (rows) {
+
+ var output = [];
+
+ rows.forEach(function (row) {
+
+ output.push(row.getComponent());
+ });
+
+ resolve(output);
+ });
+ } else {
+
+ console.warn("Update Error - No data provided");
+
+ reject("Update Error - No data provided");
+ }
+ });
+ };
+
+ //update table data
+
+ Tabulator.prototype.updateOrAddData = function (data) {
+ var _this12 = this;
+
+ var self = this,
+ rows = [],
+ responses = 0;
+
+ return new Promise(function (resolve, reject) {
+
+ if (_this12.modExists("ajax")) {
+
+ _this12.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+
+ data.forEach(function (item) {
+
+ var row = self.rowManager.findRow(item[self.options.index]);
+
+ responses++;
+
+ if (row) {
+
+ row.updateData(item).then(function () {
+
+ responses--;
+
+ rows.push(row.getComponent());
+
+ if (!responses) {
+
+ resolve(rows);
+ }
+ });
+ } else {
+
+ self.rowManager.addRows(item).then(function (newRows) {
+
+ responses--;
+
+ rows.push(newRows[0].getComponent());
+
+ if (!responses) {
+
+ resolve(rows);
+ }
+ });
+ }
+ });
+ } else {
+
+ console.warn("Update Error - No data provided");
+
+ reject("Update Error - No data provided");
+ }
+ });
+ };
+
+ //get row object
+
+ Tabulator.prototype.getRow = function (index) {
+
+ var row = this.rowManager.findRow(index);
+
+ if (row) {
+
+ return row.getComponent();
+ } else {
+
+ console.warn("Find Error - No matching row found:", index);
+
+ return false;
+ }
+ };
+
+ //get row object
+
+ Tabulator.prototype.getRowFromPosition = function (position, active) {
+
+ var row = this.rowManager.getRowFromPosition(position, active);
+
+ if (row) {
+
+ return row.getComponent();
+ } else {
+
+ console.warn("Find Error - No matching row found:", position);
+
+ return false;
+ }
+ };
+
+ //delete row from table
+
+ Tabulator.prototype.deleteRow = function (index) {
+ var _this13 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var row = _this13.rowManager.findRow(index);
+
+ if (row) {
+
+ row.delete().then(function () {
+
+ resolve();
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ } else {
+
+ console.warn("Delete Error - No matching row found:", index);
+
+ reject("Delete Error - No matching row found");
+ }
+ });
+ };
+
+ //add row to table
+
+ Tabulator.prototype.addRow = function (data, pos, index) {
+ var _this14 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ _this14.rowManager.addRows(data, pos, index).then(function (rows) {
+
+ //recalc column calculations if present
+
+ if (_this14.modExists("columnCalcs")) {
+
+ _this14.modules.columnCalcs.recalc(_this14.rowManager.activeRows);
+ }
+
+ resolve(rows[0].getComponent());
+ });
+ });
+ };
+
+ //update a row if it exitsts otherwise create it
+
+ Tabulator.prototype.updateOrAddRow = function (index, data) {
+ var _this15 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var row = _this15.rowManager.findRow(index);
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (row) {
+
+ row.updateData(data).then(function () {
+
+ //recalc column calculations if present
+
+ if (_this15.modExists("columnCalcs")) {
+
+ _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+ }
+
+ resolve(row.getComponent());
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ } else {
+
+ row = _this15.rowManager.addRows(data).then(function (rows) {
+
+ //recalc column calculations if present
+
+ if (_this15.modExists("columnCalcs")) {
+
+ _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+ }
+
+ resolve(rows[0].getComponent());
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ }
+ });
+ };
+
+ //update row data
+
+ Tabulator.prototype.updateRow = function (index, data) {
+ var _this16 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var row = _this16.rowManager.findRow(index);
+
+ if (typeof data === "string") {
+
+ data = JSON.parse(data);
+ }
+
+ if (row) {
+
+ row.updateData(data).then(function () {
+
+ resolve(row.getComponent());
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ } else {
+
+ console.warn("Update Error - No matching row found:", index);
+
+ reject("Update Error - No matching row found");
+ }
+ });
+ };
+
+ //scroll to row in DOM
+
+ Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
+ var _this17 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var row = _this17.rowManager.findRow(index);
+
+ if (row) {
+
+ _this17.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+
+ resolve();
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ } else {
+
+ console.warn("Scroll Error - No matching row found:", index);
+
+ reject("Scroll Error - No matching row found");
+ }
+ });
+ };
+
+ Tabulator.prototype.moveRow = function (from, to, after) {
+
+ var fromRow = this.rowManager.findRow(from);
+
+ if (fromRow) {
+
+ fromRow.moveToRow(to, after);
+ } else {
+
+ console.warn("Move Error - No matching row found:", from);
+ }
+ };
+
+ Tabulator.prototype.getRows = function (active) {
+
+ return this.rowManager.getComponents(active);
+ };
+
+ //get position of row in table
+
+ Tabulator.prototype.getRowPosition = function (index, active) {
+
+ var row = this.rowManager.findRow(index);
+
+ if (row) {
+
+ return this.rowManager.getRowPosition(row, active);
+ } else {
+
+ console.warn("Position Error - No matching row found:", index);
+
+ return false;
+ }
+ };
+
+ //copy table data to clipboard
+
+ Tabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {
+
+ if (this.modExists("clipboard", true)) {
+
+ this.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);
+ }
+ };
+
+ /////////////// Column Functions ///////////////
+
+
+ Tabulator.prototype.setColumns = function (definition) {
+
+ this.columnManager.setColumns(definition);
+ };
+
+ Tabulator.prototype.getColumns = function (structured) {
+
+ return this.columnManager.getComponents(structured);
+ };
+
+ Tabulator.prototype.getColumn = function (field) {
+
+ var col = this.columnManager.findColumn(field);
+
+ if (col) {
+
+ return col.getComponent();
+ } else {
+
+ console.warn("Find Error - No matching column found:", field);
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getColumnDefinitions = function () {
+
+ return this.columnManager.getDefinitionTree();
+ };
+
+ Tabulator.prototype.getColumnLayout = function () {
+
+ if (this.modExists("persistence", true)) {
+
+ return this.modules.persistence.parseColumns(this.columnManager.getColumns());
+ }
+ };
+
+ Tabulator.prototype.setColumnLayout = function (layout) {
+
+ if (this.modExists("persistence", true)) {
+
+ this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
+
+ return true;
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.showColumn = function (field) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ column.show();
+
+ if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+
+ this.modules.responsiveLayout.update();
+ }
+ } else {
+
+ console.warn("Column Show Error - No matching column found:", field);
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.hideColumn = function (field) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ column.hide();
+
+ if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+
+ this.modules.responsiveLayout.update();
+ }
+ } else {
+
+ console.warn("Column Hide Error - No matching column found:", field);
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.toggleColumn = function (field) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ if (column.visible) {
+
+ column.hide();
+ } else {
+
+ column.show();
+ }
+ } else {
+
+ console.warn("Column Visibility Toggle Error - No matching column found:", field);
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.addColumn = function (definition, before, field) {
+
+ var column = this.columnManager.findColumn(field);
+
+ this.columnManager.addColumn(definition, before, column);
+ };
+
+ Tabulator.prototype.deleteColumn = function (field) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ column.delete();
+ } else {
+
+ console.warn("Column Delete Error - No matching column found:", field);
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.moveColumn = function (from, to, after) {
+
+ var fromColumn = this.columnManager.findColumn(from);
+
+ var toColumn = this.columnManager.findColumn(to);
+
+ if (fromColumn) {
+
+ if (toColumn) {
+
+ this.columnManager.moveColumn(fromColumn, toColumn, after);
+ } else {
+
+ console.warn("Move Error - No matching column found:", toColumn);
+ }
+ } else {
+
+ console.warn("Move Error - No matching column found:", from);
+ }
+ };
+
+ //scroll to column in DOM
+
+ Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
+ var _this18 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var column = _this18.columnManager.findColumn(field);
+
+ if (column) {
+
+ _this18.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+
+ resolve();
+ }).catch(function (err) {
+
+ reject(err);
+ });
+ } else {
+
+ console.warn("Scroll Error - No matching column found:", field);
+
+ reject("Scroll Error - No matching column found");
+ }
+ });
+ };
+
+ //////////// Localization Functions ////////////
+
+ Tabulator.prototype.setLocale = function (locale) {
+
+ this.modules.localize.setLocale(locale);
+ };
+
+ Tabulator.prototype.getLocale = function () {
+
+ return this.modules.localize.getLocale();
+ };
+
+ Tabulator.prototype.getLang = function (locale) {
+
+ return this.modules.localize.getLang(locale);
+ };
+
+ //////////// General Public Functions ////////////
+
+
+ //redraw list without updating data
+
+ Tabulator.prototype.redraw = function (force) {
+
+ this.columnManager.redraw(force);
+
+ this.rowManager.redraw(force);
+ };
+
+ Tabulator.prototype.setHeight = function (height) {
+
+ this.options.height = isNaN(height) ? height : height + "px";
+
+ this.element.style.height = this.options.height;
+
+ this.rowManager.redraw();
+ };
+
+ ///////////////////// Sorting ////////////////////
+
+
+ //trigger sort
+
+ Tabulator.prototype.setSort = function (sortList, dir) {
+
+ if (this.modExists("sort", true)) {
+
+ this.modules.sort.setSort(sortList, dir);
+
+ this.rowManager.sorterRefresh();
+ }
+ };
+
+ Tabulator.prototype.getSorters = function () {
+
+ if (this.modExists("sort", true)) {
+
+ return this.modules.sort.getSort();
+ }
+ };
+
+ Tabulator.prototype.clearSort = function () {
+
+ if (this.modExists("sort", true)) {
+
+ this.modules.sort.clear();
+
+ this.rowManager.sorterRefresh();
+ }
+ };
+
+ ///////////////////// Filtering ////////////////////
+
+
+ //set standard filters
+
+ Tabulator.prototype.setFilter = function (field, type, value) {
+
+ if (this.modExists("filter", true)) {
+
+ this.modules.filter.setFilter(field, type, value);
+
+ this.rowManager.filterRefresh();
+ }
+ };
+
+ //add filter to array
+
+ Tabulator.prototype.addFilter = function (field, type, value) {
+
+ if (this.modExists("filter", true)) {
+
+ this.modules.filter.addFilter(field, type, value);
+
+ this.rowManager.filterRefresh();
+ }
+ };
+
+ //get all filters
+
+ Tabulator.prototype.getFilters = function (all) {
+
+ if (this.modExists("filter", true)) {
+
+ return this.modules.filter.getFilters(all);
+ }
+ };
+
+ Tabulator.prototype.setHeaderFilterFocus = function (field) {
+
+ if (this.modExists("filter", true)) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ this.modules.filter.setHeaderFilterFocus(column);
+ } else {
+
+ console.warn("Column Filter Focus Error - No matching column found:", field);
+
+ return false;
+ }
+ }
+ };
+
+ Tabulator.prototype.setHeaderFilterValue = function (field, value) {
+
+ if (this.modExists("filter", true)) {
+
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+
+ this.modules.filter.setHeaderFilterValue(column, value);
+ } else {
+
+ console.warn("Column Filter Error - No matching column found:", field);
+
+ return false;
+ }
+ }
+ };
+
+ Tabulator.prototype.getHeaderFilters = function () {
+
+ if (this.modExists("filter", true)) {
+
+ return this.modules.filter.getHeaderFilters();
+ }
+ };
+
+ //remove filter from array
+
+ Tabulator.prototype.removeFilter = function (field, type, value) {
+
+ if (this.modExists("filter", true)) {
+
+ this.modules.filter.removeFilter(field, type, value);
+
+ this.rowManager.filterRefresh();
+ }
+ };
+
+ //clear filters
+
+ Tabulator.prototype.clearFilter = function (all) {
+
+ if (this.modExists("filter", true)) {
+
+ this.modules.filter.clearFilter(all);
+
+ this.rowManager.filterRefresh();
+ }
+ };
+
+ //clear header filters
+
+ Tabulator.prototype.clearHeaderFilter = function () {
+
+ if (this.modExists("filter", true)) {
+
+ this.modules.filter.clearHeaderFilter();
+
+ this.rowManager.filterRefresh();
+ }
+ };
+
+ ///////////////////// Filtering ////////////////////
+
+ Tabulator.prototype.selectRow = function (rows) {
+
+ if (this.modExists("selectRow", true)) {
+
+ this.modules.selectRow.selectRows(rows);
+ }
+ };
+
+ Tabulator.prototype.deselectRow = function (rows) {
+
+ if (this.modExists("selectRow", true)) {
+
+ this.modules.selectRow.deselectRows(rows);
+ }
+ };
+
+ Tabulator.prototype.toggleSelectRow = function (row) {
+
+ if (this.modExists("selectRow", true)) {
+
+ this.modules.selectRow.toggleRow(row);
+ }
+ };
+
+ Tabulator.prototype.getSelectedRows = function () {
+
+ if (this.modExists("selectRow", true)) {
+
+ return this.modules.selectRow.getSelectedRows();
+ }
+ };
+
+ Tabulator.prototype.getSelectedData = function () {
+
+ if (this.modExists("selectRow", true)) {
+
+ return this.modules.selectRow.getSelectedData();
+ }
+ };
+
+ //////////// Pagination Functions ////////////
+
+
+ Tabulator.prototype.setMaxPage = function (max) {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ this.modules.page.setMaxPage(max);
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.setPage = function (page) {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ return this.modules.page.setPage(page);
+ } else {
+
+ return new Promise(function (resolve, reject) {
+ reject();
+ });
+ }
+ };
+
+ Tabulator.prototype.setPageToRow = function (row) {
+ var _this19 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ if (_this19.options.pagination && _this19.modExists("page")) {
+
+ row = _this19.rowManager.findRow(row);
+
+ if (row) {
+
+ _this19.modules.page.setPageToRow(row).then(function () {
+
+ resolve();
+ }).catch(function () {
+
+ reject();
+ });
+ } else {
+
+ reject();
+ }
+ } else {
+
+ reject();
+ }
+ });
+ };
+
+ Tabulator.prototype.setPageSize = function (size) {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ this.modules.page.setPageSize(size);
+
+ this.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getPageSize = function () {
+
+ if (this.options.pagination && this.modExists("page", true)) {
+
+ return this.modules.page.getPageSize();
+ }
+ };
+
+ Tabulator.prototype.previousPage = function () {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ this.modules.page.previousPage();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.nextPage = function () {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ this.modules.page.nextPage();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getPage = function () {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ return this.modules.page.getPage();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getPageMax = function () {
+
+ if (this.options.pagination && this.modExists("page")) {
+
+ return this.modules.page.getPageMax();
+ } else {
+
+ return false;
+ }
+ };
+
+ ///////////////// Grouping Functions ///////////////
+
+
+ Tabulator.prototype.setGroupBy = function (groups) {
+
+ if (this.modExists("groupRows", true)) {
+
+ this.options.groupBy = groups;
+
+ this.modules.groupRows.initialize();
+
+ this.rowManager.refreshActiveData("display");
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.setGroupStartOpen = function (values) {
+
+ if (this.modExists("groupRows", true)) {
+
+ this.options.groupStartOpen = values;
+
+ this.modules.groupRows.initialize();
+
+ if (this.options.groupBy) {
+
+ this.rowManager.refreshActiveData("group");
+ } else {
+
+ console.warn("Grouping Update - cant refresh view, no groups have been set");
+ }
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.setGroupHeader = function (values) {
+
+ if (this.modExists("groupRows", true)) {
+
+ this.options.groupHeader = values;
+
+ this.modules.groupRows.initialize();
+
+ if (this.options.groupBy) {
+
+ this.rowManager.refreshActiveData("group");
+ } else {
+
+ console.warn("Grouping Update - cant refresh view, no groups have been set");
+ }
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getGroups = function (values) {
+
+ if (this.modExists("groupRows", true)) {
+
+ return this.modules.groupRows.getGroups(true);
+ } else {
+
+ return false;
+ }
+ };
+
+ // get grouped table data in the same format as getData()
+
+ Tabulator.prototype.getGroupedData = function () {
+
+ if (this.modExists("groupRows", true)) {
+
+ return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
+ }
+ };
+
+ ///////////////// Column Calculation Functions ///////////////
+
+ Tabulator.prototype.getCalcResults = function () {
+
+ if (this.modExists("columnCalcs", true)) {
+
+ return this.modules.columnCalcs.getResults();
+ } else {
+
+ return false;
+ }
+ };
+
+ /////////////// Navigation Management //////////////
+
+
+ Tabulator.prototype.navigatePrev = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ return cell.nav().prev();
+ }
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.navigateNext = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ return cell.nav().next();
+ }
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.navigateLeft = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ e.preventDefault();
+
+ return cell.nav().left();
+ }
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.navigateRight = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ e.preventDefault();
+
+ return cell.nav().right();
+ }
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.navigateUp = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ e.preventDefault();
+
+ return cell.nav().up();
+ }
+ }
+
+ return false;
+ };
+
+ Tabulator.prototype.navigateDown = function () {
+
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+
+ e.preventDefault();
+
+ return cell.nav().down();
+ }
+ }
+
+ return false;
+ };
+
+ /////////////// History Management //////////////
+
+ Tabulator.prototype.undo = function () {
+
+ if (this.options.history && this.modExists("history", true)) {
+
+ return this.modules.history.undo();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.redo = function () {
+
+ if (this.options.history && this.modExists("history", true)) {
+
+ return this.modules.history.redo();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getHistoryUndoSize = function () {
+
+ if (this.options.history && this.modExists("history", true)) {
+
+ return this.modules.history.getHistoryUndoSize();
+ } else {
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.getHistoryRedoSize = function () {
+
+ if (this.options.history && this.modExists("history", true)) {
+
+ return this.modules.history.getHistoryRedoSize();
+ } else {
+
+ return false;
+ }
+ };
+
+ /////////////// Download Management //////////////
+
+
+ Tabulator.prototype.download = function (type, filename, options) {
+
+ if (this.modExists("download", true)) {
+
+ this.modules.download.download(type, filename, options);
+ }
+ };
+
+ Tabulator.prototype.downloadToTab = function (type, filename, options) {
+
+ if (this.modExists("download", true)) {
+
+ this.modules.download.download(type, filename, options, true);
+ }
+ };
+
+ /////////// Inter Table Communications ///////////
+
+
+ Tabulator.prototype.tableComms = function (table, module, action, data) {
+
+ this.modules.comms.receive(table, module, action, data);
+ };
+
+ ////////////// Extension Management //////////////
+
+
+ //object to hold module
+
+ Tabulator.prototype.moduleBindings = {};
+
+ //extend module
+
+ Tabulator.prototype.extendModule = function (name, property, values) {
+
+ if (Tabulator.prototype.moduleBindings[name]) {
+
+ var source = Tabulator.prototype.moduleBindings[name].prototype[property];
+
+ if (source) {
+
+ if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
+
+ for (var key in values) {
+
+ source[key] = values[key];
+ }
+ } else {
+
+ console.warn("Module Error - Invalid value type, it must be an object");
+ }
+ } else {
+
+ console.warn("Module Error - property does not exist:", property);
+ }
+ } else {
+
+ console.warn("Module Error - module does not exist:", name);
+ }
+ };
+
+ //add module to tabulator
+
+ Tabulator.prototype.registerModule = function (name, module) {
+
+ var self = this;
+
+ Tabulator.prototype.moduleBindings[name] = module;
+ };
+
+ //ensure that module are bound to instantiated function
+
+ Tabulator.prototype.bindModules = function () {
+
+ this.modules = {};
+
+ for (var name in Tabulator.prototype.moduleBindings) {
+
+ this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
+ }
+ };
+
+ //Check for module
+
+ Tabulator.prototype.modExists = function (plugin, required) {
+
+ if (this.modules[plugin]) {
+
+ return true;
+ } else {
+
+ if (required) {
+
+ console.error("Tabulator Module Not Installed: " + plugin);
+ }
+
+ return false;
+ }
+ };
+
+ Tabulator.prototype.helpers = {
+
+ elVisible: function elVisible(el) {
+
+ return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
+ },
+
+ elOffset: function elOffset(el) {
+
+ var box = el.getBoundingClientRect();
+
+ return {
+
+ top: box.top + window.pageYOffset - document.documentElement.clientTop,
+
+ left: box.left + window.pageXOffset - document.documentElement.clientLeft
+
+ };
+ },
+
+ deepClone: function deepClone(obj) {
+
+ var clone = Array.isArray(obj) ? [] : {};
+
+ for (var i in obj) {
+
+ if (obj[i] != null && _typeof(obj[i]) === "object") {
+
+ if (obj[i] instanceof Date) {
+
+ clone[i] = new Date(obj[i]);
+ } else {
+
+ clone[i] = this.deepClone(obj[i]);
+ }
+ } else {
+
+ clone[i] = obj[i];
+ }
+ }
+
+ return clone;
+ }
+
+ };
+
+ Tabulator.prototype.comms = {
+
+ tables: [],
+
+ register: function register(table) {
+
+ Tabulator.prototype.comms.tables.push(table);
+ },
+
+ deregister: function deregister(table) {
+
+ var index = Tabulator.prototype.comms.tables.indexOf(table);
+
+ if (index > -1) {
+
+ Tabulator.prototype.comms.tables.splice(index, 1);
+ }
+ },
+
+ lookupTable: function lookupTable(query) {
+
+ var results = [],
+ matches,
+ match;
+
+ if (typeof query === "string") {
+
+ matches = document.querySelectorAll(query);
+
+ if (matches.length) {
+
+ for (var i = 0; i < matches.length; i++) {
+
+ match = Tabulator.prototype.comms.matchElement(matches[i]);
+
+ if (match) {
+
+ results.push(match);
+ }
+ }
+ }
+ } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
+
+ match = Tabulator.prototype.comms.matchElement(query);
+
+ if (match) {
+
+ results.push(match);
+ }
+ } else if (Array.isArray(query)) {
+
+ query.forEach(function (item) {
+
+ results = results.concat(Tabulator.prototype.comms.lookupTable(item));
+ });
+ } else {
+
+ console.warn("Table Connection Error - Invalid Selector", query);
+ }
+
+ return results;
+ },
+
+ matchElement: function matchElement(element) {
+
+ return Tabulator.prototype.comms.tables.find(function (table) {
+
+ return element instanceof Tabulator ? table === element : table.element === element;
+ });
+ }
+
+ };
+
+ var Layout = function Layout(table) {
+
+ this.table = table;
+
+ this.mode = null;
+ };
+
+ //initialize layout system
+
+
+ Layout.prototype.initialize = function (layout) {
+
+ if (this.modes[layout]) {
+
+ this.mode = layout;
+ } else {
+
+ console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
+
+ this.mode = 'fitData';
+ }
+
+ this.table.element.setAttribute("tabulator-layout", this.mode);
+ };
+
+ Layout.prototype.getMode = function () {
+
+ return this.mode;
+ };
+
+ //trigger table layout
+
+
+ Layout.prototype.layout = function () {
+
+ this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
+ };
+
+ //layout render functions
+
+
+ Layout.prototype.modes = {
+
+ //resize columns to fit data the contain
+
+
+ "fitData": function fitData(columns) {
+
+ columns.forEach(function (column) {
+
+ column.reinitializeWidth();
+ });
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ },
+
+ //resize columns to fit data the contain
+
+
+ "fitDataFill": function fitDataFill(columns) {
+
+ columns.forEach(function (column) {
+
+ column.reinitializeWidth();
+ });
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ },
+
+ //resize columns to fit
+
+
+ "fitColumns": function fitColumns(columns) {
+
+ var self = this;
+
+ var totalWidth = self.table.element.clientWidth; //table element width
+
+
+ var fixedWidth = 0; //total width of columns with a defined width
+
+
+ var flexWidth = 0; //total width available to flexible columns
+
+
+ var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
+
+
+ var flexColWidth = 0; //desired width of flexible columns
+
+
+ var flexColumns = []; //array of flexible width columns
+
+
+ var fixedShrinkColumns = []; //array of fixed width columns that can shrink
+
+
+ var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
+
+
+ var overflowWidth = 0; //horizontal overflow width
+
+
+ var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
+
+
+ function calcWidth(width) {
+
+ var colWidth;
+
+ if (typeof width == "string") {
+
+ if (width.indexOf("%") > -1) {
+
+ colWidth = totalWidth / 100 * parseInt(width);
+ } else {
+
+ colWidth = parseInt(width);
+ }
+ } else {
+
+ colWidth = width;
+ }
+
+ return colWidth;
+ }
+
+ //ensure columns resize to take up the correct amount of space
+
+
+ function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
+
+ var oversizeCols = [],
+ oversizeSpace = 0,
+ remainingSpace = 0,
+ nextColWidth = 0,
+ gap = 0,
+ changeUnits = 0,
+ undersizeCols = [];
+
+ function calcGrow(col) {
+
+ return colWidth * (col.column.definition.widthGrow || 1);
+ }
+
+ function calcShrink(col) {
+
+ return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
+ }
+
+ columns.forEach(function (col, i) {
+
+ var width = shrinkCols ? calcShrink(col) : calcGrow(col);
+
+ if (col.column.minWidth >= width) {
+
+ oversizeCols.push(col);
+ } else {
+
+ undersizeCols.push(col);
+
+ changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
+ }
+ });
+
+ if (oversizeCols.length) {
+
+ oversizeCols.forEach(function (col) {
+
+ oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
+
+ col.width = col.column.minWidth;
+ });
+
+ remainingSpace = freeSpace - oversizeSpace;
+
+ nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
+
+ gap = remainingSpace - nextColWidth * changeUnits;
+
+ gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
+ } else {
+
+ gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
+
+ undersizeCols.forEach(function (column) {
+
+ column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
+ });
+ }
+
+ return gap;
+ }
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+
+ //adjust for vertical scrollbar if present
+
+
+ if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
+
+ totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
+ }
+
+ columns.forEach(function (column) {
+
+ var width, minWidth, colWidth;
+
+ if (column.visible) {
+
+ width = column.definition.width;
+
+ minWidth = parseInt(column.minWidth);
+
+ if (width) {
+
+ colWidth = calcWidth(width);
+
+ fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+
+ if (column.definition.widthShrink) {
+
+ fixedShrinkColumns.push({
+
+ column: column,
+
+ width: colWidth > minWidth ? colWidth : minWidth
+
+ });
+
+ flexShrinkUnits += column.definition.widthShrink;
+ }
+ } else {
+
+ flexColumns.push({
+
+ column: column,
+
+ width: 0
+
+ });
+
+ flexGrowUnits += column.definition.widthGrow || 1;
+ }
+ }
+ });
+
+ //calculate available space
+
+
+ flexWidth = totalWidth - fixedWidth;
+
+ //calculate correct column size
+
+
+ flexColWidth = Math.floor(flexWidth / flexGrowUnits);
+
+ //generate column widths
+
+
+ var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
+
+ //increase width of last column to account for rounding errors
+
+
+ if (flexColumns.length && gapFill > 0) {
+
+ flexColumns[flexColumns.length - 1].width += +gapFill;
+ }
+
+ //caculate space for columns to be shrunk into
+
+
+ flexColumns.forEach(function (col) {
+
+ flexWidth -= col.width;
+ });
+
+ overflowWidth = Math.abs(gapFill) + flexWidth;
+
+ //shrink oversize columns if there is no available space
+
+
+ if (overflowWidth > 0 && flexShrinkUnits) {
+
+ gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
+ }
+
+ //decrease width of last column to account for rounding errors
+
+
+ if (fixedShrinkColumns.length) {
+
+ fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
+ }
+
+ flexColumns.forEach(function (col) {
+
+ col.column.setWidth(col.width);
+ });
+
+ fixedShrinkColumns.forEach(function (col) {
+
+ col.column.setWidth(col.width);
+ });
+ }
+
+ };
+
+ Tabulator.prototype.registerModule("layout", Layout);
+
+ var Localize = function Localize(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.locale = "default"; //current locale
+
+ this.lang = false; //current language
+
+ this.bindings = {}; //update events to call when locale is changed
+ };
+
+ //set header placehoder
+
+ Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
+
+ this.langs.default.headerFilters.default = placeholder;
+ };
+
+ //set header filter placeholder by column
+
+ Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
+
+ this.langs.default.headerFilters.columns[column] = placeholder;
+
+ if (this.lang && !this.lang.headerFilters.columns[column]) {
+
+ this.lang.headerFilters.columns[column] = placeholder;
+ }
+ };
+
+ //setup a lang description object
+
+ Localize.prototype.installLang = function (locale, lang) {
+
+ if (this.langs[locale]) {
+
+ this._setLangProp(this.langs[locale], lang);
+ } else {
+
+ this.langs[locale] = lang;
+ }
+ };
+
+ Localize.prototype._setLangProp = function (lang, values) {
+
+ for (var key in values) {
+
+ if (lang[key] && _typeof(lang[key]) == "object") {
+
+ this._setLangProp(lang[key], values[key]);
+ } else {
+
+ lang[key] = values[key];
+ }
+ }
+ };
+
+ //set current locale
+
+ Localize.prototype.setLocale = function (desiredLocale) {
+
+ var self = this;
+
+ desiredLocale = desiredLocale || "default";
+
+ //fill in any matching languge values
+
+ function traverseLang(trans, path) {
+
+ for (var prop in trans) {
+
+ if (_typeof(trans[prop]) == "object") {
+
+ if (!path[prop]) {
+
+ path[prop] = {};
+ }
+
+ traverseLang(trans[prop], path[prop]);
+ } else {
+
+ path[prop] = trans[prop];
+ }
+ }
+ }
+
+ //determing correct locale to load
+
+ if (desiredLocale === true && navigator.language) {
+
+ //get local from system
+
+ desiredLocale = navigator.language.toLowerCase();
+ }
+
+ if (desiredLocale) {
+
+ //if locale is not set, check for matching top level locale else use default
+
+ if (!self.langs[desiredLocale]) {
+
+ var prefix = desiredLocale.split("-")[0];
+
+ if (self.langs[prefix]) {
+
+ console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
+
+ desiredLocale = prefix;
+ } else {
+
+ console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
+
+ desiredLocale = "default";
+ }
+ }
+ }
+
+ self.locale = desiredLocale;
+
+ //load default lang template
+
+ self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
+
+ if (desiredLocale != "default") {
+
+ traverseLang(self.langs[desiredLocale], self.lang);
+ }
+
+ self.table.options.localized.call(self.table, self.locale, self.lang);
+
+ self._executeBindings();
+ };
+
+ //get current locale
+
+ Localize.prototype.getLocale = function (locale) {
+
+ return self.locale;
+ };
+
+ //get lang object for given local or current if none provided
+
+ Localize.prototype.getLang = function (locale) {
+
+ return locale ? this.langs[locale] : this.lang;
+ };
+
+ //get text for current locale
+
+ Localize.prototype.getText = function (path, value) {
+
+ var path = value ? path + "|" + value : path,
+ pathArray = path.split("|"),
+ text = this._getLangElement(pathArray, this.locale);
+
+ // if(text === false){
+
+ // console.warn("Localization Error - Matching localized text not found for given path: ", path);
+
+ // }
+
+
+ return text || "";
+ };
+
+ //traverse langs object and find localized copy
+
+ Localize.prototype._getLangElement = function (path, locale) {
+
+ var self = this;
+
+ var root = self.lang;
+
+ path.forEach(function (level) {
+
+ var rootPath;
+
+ if (root) {
+
+ rootPath = root[level];
+
+ if (typeof rootPath != "undefined") {
+
+ root = rootPath;
+ } else {
+
+ root = false;
+ }
+ }
+ });
+
+ return root;
+ };
+
+ //set update binding
+
+ Localize.prototype.bind = function (path, callback) {
+
+ if (!this.bindings[path]) {
+
+ this.bindings[path] = [];
+ }
+
+ this.bindings[path].push(callback);
+
+ callback(this.getText(path), this.lang);
+ };
+
+ //itterate through bindings and trigger updates
+
+ Localize.prototype._executeBindings = function () {
+
+ var self = this;
+
+ var _loop = function _loop(path) {
+
+ self.bindings[path].forEach(function (binding) {
+
+ binding(self.getText(path), self.lang);
+ });
+ };
+
+ for (var path in self.bindings) {
+ _loop(path);
+ }
+ };
+
+ //Localized text listings
+
+ Localize.prototype.langs = {
+
+ "default": { //hold default locale text
+
+ "groups": {
+
+ "item": "item",
+
+ "items": "items"
+
+ },
+
+ "columns": {},
+
+ "ajax": {
+
+ "loading": "Loading",
+
+ "error": "Error"
+
+ },
+
+ "pagination": {
+
+ "page_size": "Page Size",
+
+ "first": "First",
+
+ "first_title": "First Page",
+
+ "last": "Last",
+
+ "last_title": "Last Page",
+
+ "prev": "Prev",
+
+ "prev_title": "Prev Page",
+
+ "next": "Next",
+
+ "next_title": "Next Page"
+
+ },
+
+ "headerFilters": {
+
+ "default": "filter column...",
+
+ "columns": {}
+
+ }
+
+ }
+
+ };
+
+ Tabulator.prototype.registerModule("localize", Localize);
+
+ var Comms = function Comms(table) {
+
+ this.table = table;
+ };
+
+ Comms.prototype.getConnections = function (selectors) {
+
+ var self = this,
+ connections = [],
+ connection;
+
+ connection = Tabulator.prototype.comms.lookupTable(selectors);
+
+ connection.forEach(function (con) {
+
+ if (self.table !== con) {
+
+ connections.push(con);
+ }
+ });
+
+ return connections;
+ };
+
+ Comms.prototype.send = function (selectors, module, action, data) {
+
+ var self = this,
+ connections = this.getConnections(selectors);
+
+ connections.forEach(function (connection) {
+
+ connection.tableComms(self.table.element, module, action, data);
+ });
+
+ if (!connections.length && selectors) {
+
+ console.warn("Table Connection Error - No tables matching selector found", selectors);
+ }
+ };
+
+ Comms.prototype.receive = function (table, module, action, data) {
+
+ if (this.table.modExists(module)) {
+
+ return this.table.modules[module].commsReceived(table, action, data);
+ } else {
+
+ console.warn("Inter-table Comms Error - no such module:", module);
+ }
+ };
+
+ Tabulator.prototype.registerModule("comms", Comms);
+
+ var Accessor = function Accessor(table) {
+ this.table = table; //hold Tabulator object
+ this.allowedTypes = ["", "data", "download", "clipboard"]; //list of accessor types
+ };
+
+ //initialize column accessor
+ Accessor.prototype.initializeColumn = function (column) {
+ var self = this,
+ match = false,
+ config = {};
+
+ this.allowedTypes.forEach(function (type) {
+ var key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ accessor;
+
+ if (column.definition[key]) {
+ accessor = self.lookupAccessor(column.definition[key]);
+
+ if (accessor) {
+ match = true;
+
+ config[key] = {
+ accessor: accessor,
+ params: column.definition[key + "Params"] || {}
+ };
+ }
+ }
+ });
+
+ if (match) {
+ column.modules.accessor = config;
+ }
+ }, Accessor.prototype.lookupAccessor = function (value) {
+ var accessor = false;
+
+ //set column accessor
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "string":
+ if (this.accessors[value]) {
+ accessor = this.accessors[value];
+ } else {
+ console.warn("Accessor Error - No such accessor found, ignoring: ", value);
+ }
+ break;
+
+ case "function":
+ accessor = value;
+ break;
+ }
+
+ return accessor;
+ };
+
+ //apply accessor to row
+ Accessor.prototype.transformRow = function (dataIn, type) {
+ var self = this,
+ key = "accessor" + (type.charAt(0).toUpperCase() + type.slice(1));
+
+ //clone data object with deep copy to isolate internal data from returned result
+ var data = Tabulator.prototype.helpers.deepClone(dataIn || {});
+
+ self.table.columnManager.traverse(function (column) {
+ var value, accessor, params, component;
+
+ if (column.modules.accessor) {
+
+ accessor = column.modules.accessor[key] || column.modules.accessor.accessor || false;
+
+ if (accessor) {
+ value = column.getFieldValue(data);
+
+ if (value != "undefined") {
+ component = column.getComponent();
+ params = typeof accessor.params === "function" ? accessor.params(value, data, type, component) : accessor.params;
+ column.setFieldValue(data, accessor.accessor(value, data, type, params, component));
+ }
+ }
+ }
+ });
+
+ return data;
+ },
+
+ //default accessors
+ Accessor.prototype.accessors = {};
+
+ Tabulator.prototype.registerModule("accessor", Accessor);
+ var Ajax = function Ajax(table) {
+
+ this.table = table; //hold Tabulator object
+ this.config = false; //hold config object for ajax request
+ this.url = ""; //request URL
+ this.urlGenerator = false;
+ this.params = false; //request parameters
+
+ this.loaderElement = this.createLoaderElement(); //loader message div
+ this.msgElement = this.createMsgElement(); //message element
+ this.loadingElement = false;
+ this.errorElement = false;
+ this.loaderPromise = false;
+
+ this.progressiveLoad = false;
+ this.loading = false;
+
+ this.requestOrder = 0; //prevent requests comming out of sequence if overridden by another load request
+ };
+
+ //initialize setup options
+ Ajax.prototype.initialize = function () {
+ var template;
+
+ this.loaderElement.appendChild(this.msgElement);
+
+ if (this.table.options.ajaxLoaderLoading) {
+ if (typeof this.table.options.ajaxLoaderLoading == "string") {
+ template = document.createElement('template');
+ template.innerHTML = this.table.options.ajaxLoaderLoading.trim();
+ this.loadingElement = template.content.firstChild;
+ } else {
+ this.loadingElement = this.table.options.ajaxLoaderLoading;
+ }
+ }
+
+ this.loaderPromise = this.table.options.ajaxRequestFunc || this.defaultLoaderPromise;
+
+ this.urlGenerator = this.table.options.ajaxURLGenerator || this.defaultURLGenerator;
+
+ if (this.table.options.ajaxLoaderError) {
+ if (typeof this.table.options.ajaxLoaderError == "string") {
+ template = document.createElement('template');
+ template.innerHTML = this.table.options.ajaxLoaderError.trim();
+ this.errorElement = template.content.firstChild;
+ } else {
+ this.errorElement = this.table.options.ajaxLoaderError;
+ }
+ }
+
+ if (this.table.options.ajaxParams) {
+ this.setParams(this.table.options.ajaxParams);
+ }
+
+ if (this.table.options.ajaxConfig) {
+ this.setConfig(this.table.options.ajaxConfig);
+ }
+
+ if (this.table.options.ajaxURL) {
+ this.setUrl(this.table.options.ajaxURL);
+ }
+
+ if (this.table.options.ajaxProgressiveLoad) {
+ if (this.table.options.pagination) {
+ this.progressiveLoad = false;
+ console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time");
+ } else {
+ if (this.table.modExists("page")) {
+ this.progressiveLoad = this.table.options.ajaxProgressiveLoad;
+ this.table.modules.page.initializeProgressive(this.progressiveLoad);
+ } else {
+ console.error("Pagination plugin is required for progressive ajax loading");
+ }
+ }
+ }
+ };
+
+ Ajax.prototype.createLoaderElement = function () {
+ var el = document.createElement("div");
+ el.classList.add("tabulator-loader");
+ return el;
+ };
+
+ Ajax.prototype.createMsgElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-loader-msg");
+ el.setAttribute("role", "alert");
+
+ return el;
+ };
+
+ //set ajax params
+ Ajax.prototype.setParams = function (params, update) {
+ if (update) {
+ this.params = this.params || {};
+
+ for (var key in params) {
+ this.params[key] = params[key];
+ }
+ } else {
+ this.params = params;
+ }
+ };
+
+ Ajax.prototype.getParams = function () {
+ return this.params || {};
+ };
+
+ //load config object
+ Ajax.prototype.setConfig = function (config) {
+ this._loadDefaultConfig();
+
+ if (typeof config == "string") {
+ this.config.method = config;
+ } else {
+ for (var key in config) {
+ this.config[key] = config[key];
+ }
+ }
+ };
+
+ //create config object from default
+ Ajax.prototype._loadDefaultConfig = function (force) {
+ var self = this;
+ if (!self.config || force) {
+
+ self.config = {};
+
+ //load base config from defaults
+ for (var key in self.defaultConfig) {
+ self.config[key] = self.defaultConfig[key];
+ }
+ }
+ };
+
+ //set request url
+ Ajax.prototype.setUrl = function (url) {
+ this.url = url;
+ };
+
+ //get request url
+ Ajax.prototype.getUrl = function () {
+ return this.url;
+ };
+
+ //lstandard loading function
+ Ajax.prototype.loadData = function (inPosition) {
+ var self = this;
+
+ if (this.progressiveLoad) {
+ return this._loadDataProgressive();
+ } else {
+ return this._loadDataStandard(inPosition);
+ }
+ };
+
+ Ajax.prototype.nextPage = function (diff) {
+ var margin;
+
+ if (!this.loading) {
+
+ margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.getElement().clientHeight * 2;
+
+ if (diff < margin) {
+ this.table.modules.page.nextPage().then(function () {}).catch(function () {});
+ }
+ }
+ };
+
+ Ajax.prototype.blockActiveRequest = function () {
+ this.requestOrder++;
+ };
+
+ Ajax.prototype._loadDataProgressive = function () {
+ this.table.rowManager.setData([]);
+ return this.table.modules.page.setPage(1);
+ };
+
+ Ajax.prototype._loadDataStandard = function (inPosition) {
+ var _this20 = this;
+
+ return new Promise(function (resolve, reject) {
+ _this20.sendRequest(inPosition).then(function (data) {
+ _this20.table.rowManager.setData(data, inPosition).then(function () {
+ resolve();
+ }).catch(function (e) {
+ reject(e);
+ });
+ }).catch(function (e) {
+ reject(e);
+ });
+ });
+ };
+
+ Ajax.prototype.generateParamsList = function (data, prefix) {
+ var self = this,
+ output = [];
+
+ prefix = prefix || "";
+
+ if (Array.isArray(data)) {
+ data.forEach(function (item, i) {
+ output = output.concat(self.generateParamsList(item, prefix ? prefix + "[" + i + "]" : i));
+ });
+ } else if ((typeof data === 'undefined' ? 'undefined' : _typeof(data)) === "object") {
+ for (var key in data) {
+ output = output.concat(self.generateParamsList(data[key], prefix ? prefix + "[" + key + "]" : key));
+ }
+ } else {
+ output.push({ key: prefix, value: data });
+ }
+
+ return output;
+ };
+
+ Ajax.prototype.serializeParams = function (params) {
+ var output = this.generateParamsList(params),
+ encoded = [];
+
+ output.forEach(function (item) {
+ encoded.push(encodeURIComponent(item.key) + "=" + encodeURIComponent(item.value));
+ });
+
+ return encoded.join("&");
+ };
+
+ //send ajax request
+ Ajax.prototype.sendRequest = function (silent) {
+ var _this21 = this;
+
+ var self = this,
+ url = self.url,
+ requestNo,
+ esc,
+ query;
+
+ self.requestOrder++;
+ requestNo = self.requestOrder;
+
+ self._loadDefaultConfig();
+
+ return new Promise(function (resolve, reject) {
+ if (self.table.options.ajaxRequesting.call(_this21.table, self.url, self.params) !== false) {
+
+ self.loading = true;
+
+ if (!silent) {
+ self.showLoader();
+ }
+
+ _this21.loaderPromise(url, self.config, self.params).then(function (data) {
+ if (requestNo === self.requestOrder) {
+ if (self.table.options.ajaxResponse) {
+ data = self.table.options.ajaxResponse.call(self.table, self.url, self.params, data);
+ }
+ resolve(data);
+ } else {
+ console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made");
+ }
+
+ self.hideLoader();
+
+ self.loading = false;
+ }).catch(function (error) {
+ console.error("Ajax Load Error: ", error);
+ self.table.options.ajaxError.call(self.table, error);
+
+ self.showError();
+
+ setTimeout(function () {
+ self.hideLoader();
+ }, 3000);
+
+ self.loading = false;
+
+ reject();
+ });
+ } else {
+ reject();
+ }
+ });
+ };
+
+ Ajax.prototype.showLoader = function () {
+ var shouldLoad = typeof this.table.options.ajaxLoader === "function" ? this.table.options.ajaxLoader() : this.table.options.ajaxLoader;
+
+ if (shouldLoad) {
+
+ this.hideLoader();
+
+ while (this.msgElement.firstChild) {
+ this.msgElement.removeChild(this.msgElement.firstChild);
+ }this.msgElement.classList.remove("tabulator-error");
+ this.msgElement.classList.add("tabulator-loading");
+
+ if (this.loadingElement) {
+ this.msgElement.appendChild(this.loadingElement);
+ } else {
+ this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|loading");
+ }
+
+ this.table.element.appendChild(this.loaderElement);
+ }
+ };
+
+ Ajax.prototype.showError = function () {
+ this.hideLoader();
+
+ while (this.msgElement.firstChild) {
+ this.msgElement.removeChild(this.msgElement.firstChild);
+ }this.msgElement.classList.remove("tabulator-loading");
+ this.msgElement.classList.add("tabulator-error");
+
+ if (this.errorElement) {
+ this.msgElement.appendChild(this.errorElement);
+ } else {
+ this.msgElement.innerHTML = this.table.modules.localize.getText("ajax|error");
+ }
+
+ this.table.element.appendChild(this.loaderElement);
+ };
+
+ Ajax.prototype.hideLoader = function () {
+ if (this.loaderElement.parentNode) {
+ this.loaderElement.parentNode.removeChild(this.loaderElement);
+ }
+ };
+
+ //default ajax config object
+ Ajax.prototype.defaultConfig = {
+ method: "GET"
+ };
+
+ Ajax.prototype.defaultURLGenerator = function (url, config, params) {
+
+ if (url) {
+ if (params && Object.keys(params).length) {
+ if (!config.method || config.method.toLowerCase() == "get") {
+ config.method = "get";
+ url += "?" + this.serializeParams(params);
+ }
+ }
+ }
+
+ return url;
+ };
+
+ Ajax.prototype.defaultLoaderPromise = function (url, config, params) {
+ var self = this,
+ contentType;
+
+ return new Promise(function (resolve, reject) {
+
+ //set url
+ url = self.urlGenerator(url, config, params);
+
+ //set body content if not GET request
+ if (config.method.toUpperCase() != "GET") {
+ contentType = _typeof(self.table.options.ajaxContentType) === "object" ? self.table.options.ajaxContentType : self.contentTypeFormatters[self.table.options.ajaxContentType];
+ if (contentType) {
+
+ for (var key in contentType.headers) {
+ if (!config.headers) {
+ config.headers = {};
+ }
+
+ if (typeof config.headers[key] === "undefined") {
+ config.headers[key] = contentType.headers[key];
+ }
+ }
+
+ config.body = contentType.body.call(self, url, config, params);
+ } else {
+ console.warn("Ajax Error - Invalid ajaxContentType value:", self.table.options.ajaxContentType);
+ }
+ }
+
+ if (url) {
+
+ //configure headers
+ if (typeof config.headers === "undefined") {
+ config.headers = {};
+ }
+
+ if (typeof config.headers.Accept === "undefined") {
+ config.headers.Accept = "application/json";
+ }
+
+ if (typeof config.headers["X-Requested-With"] === "undefined") {
+ config.headers["X-Requested-With"] = "XMLHttpRequest";
+ }
+
+ if (typeof config.mode === "undefined") {
+ config.mode = "cors";
+ }
+
+ if (config.mode == "cors") {
+
+ if (typeof config.headers["Access-Control-Allow-Origin"] === "undefined") {
+ config.headers["Access-Control-Allow-Origin"] = window.location.origin;
+ }
+
+ if (typeof config.credentials === "undefined") {
+ config.credentials = 'same-origin';
+ }
+ } else {
+ if (typeof config.credentials === "undefined") {
+ config.credentials = 'include';
+ }
+ }
+
+ //send request
+ fetch(url, config).then(function (response) {
+ if (response.ok) {
+ response.json().then(function (data) {
+ resolve(data);
+ }).catch(function (error) {
+ reject(error);
+ console.warn("Ajax Load Error - Invalid JSON returned", error);
+ });
+ } else {
+ console.error("Ajax Load Error - Connection Error: " + response.status, response.statusText);
+ reject(response);
+ }
+ }).catch(function (error) {
+ console.error("Ajax Load Error - Connection Error: ", error);
+ reject(error);
+ });
+ } else {
+ console.warn("Ajax Load Error - No URL Set");
+ resolve([]);
+ }
+ });
+ };
+
+ Ajax.prototype.contentTypeFormatters = {
+ "json": {
+ headers: {
+ 'Content-Type': 'application/json'
+ },
+ body: function body(url, config, params) {
+ return JSON.stringify(params);
+ }
+ },
+ "form": {
+ headers: {},
+ body: function body(url, config, params) {
+ var output = this.generateParamsList(params),
+ form = new FormData();
+
+ output.forEach(function (item) {
+ form.append(item.key, item.value);
+ });
+
+ return form;
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("ajax", Ajax);
+
+ var ColumnCalcs = function ColumnCalcs(table) {
+ this.table = table; //hold Tabulator object
+ this.topCalcs = [];
+ this.botCalcs = [];
+ this.genColumn = false;
+ this.topElement = this.createElement();
+ this.botElement = this.createElement();
+ this.topRow = false;
+ this.botRow = false;
+ this.topInitialized = false;
+ this.botInitialized = false;
+
+ this.initialize();
+ };
+
+ ColumnCalcs.prototype.createElement = function () {
+ var el = document.createElement("div");
+ el.classList.add("tabulator-calcs-holder");
+ return el;
+ };
+
+ ColumnCalcs.prototype.initialize = function () {
+ this.genColumn = new Column({ field: "value" }, this);
+ };
+
+ //dummy functions to handle being mock column manager
+ ColumnCalcs.prototype.registerColumnField = function () {};
+
+ //initialize column calcs
+ ColumnCalcs.prototype.initializeColumn = function (column) {
+ var def = column.definition;
+
+ var config = {
+ topCalcParams: def.topCalcParams || {},
+ botCalcParams: def.bottomCalcParams || {}
+ };
+
+ if (def.topCalc) {
+
+ switch (_typeof(def.topCalc)) {
+ case "string":
+ if (this.calculations[def.topCalc]) {
+ config.topCalc = this.calculations[def.topCalc];
+ } else {
+ console.warn("Column Calc Error - No such calculation found, ignoring: ", def.topCalc);
+ }
+ break;
+
+ case "function":
+ config.topCalc = def.topCalc;
+ break;
+
+ }
+
+ if (config.topCalc) {
+ column.modules.columnCalcs = config;
+ this.topCalcs.push(column);
+
+ if (this.table.options.columnCalcs != "group") {
+ this.initializeTopRow();
+ }
+ }
+ }
+
+ if (def.bottomCalc) {
+ switch (_typeof(def.bottomCalc)) {
+ case "string":
+ if (this.calculations[def.bottomCalc]) {
+ config.botCalc = this.calculations[def.bottomCalc];
+ } else {
+ console.warn("Column Calc Error - No such calculation found, ignoring: ", def.bottomCalc);
+ }
+ break;
+
+ case "function":
+ config.botCalc = def.bottomCalc;
+ break;
+
+ }
+
+ if (config.botCalc) {
+ column.modules.columnCalcs = config;
+ this.botCalcs.push(column);
+
+ if (this.table.options.columnCalcs != "group") {
+ this.initializeBottomRow();
+ }
+ }
+ }
+ };
+
+ ColumnCalcs.prototype.removeCalcs = function () {
+ var changed = false;
+
+ if (this.topInitialized) {
+ this.topInitialized = false;
+ this.topElement.parentNode.removeChild(this.topElement);
+ changed = true;
+ }
+
+ if (this.botInitialized) {
+ this.botInitialized = false;
+ this.table.footerManager.remove(this.botElement);
+ changed = true;
+ }
+
+ if (changed) {
+ this.table.rowManager.adjustTableSize();
+ }
+ };
+
+ ColumnCalcs.prototype.initializeTopRow = function () {
+ if (!this.topInitialized) {
+ // this.table.columnManager.headersElement.after(this.topElement);
+ this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+ this.topInitialized = true;
+ }
+ };
+
+ ColumnCalcs.prototype.initializeBottomRow = function () {
+ if (!this.botInitialized) {
+ this.table.footerManager.prepend(this.botElement);
+ this.botInitialized = true;
+ }
+ };
+
+ ColumnCalcs.prototype.scrollHorizontal = function (left) {
+ var hozAdjust = 0,
+ scrollWidth = this.table.columnManager.getElement().scrollWidth - this.table.element.clientWidth;
+
+ if (this.botInitialized) {
+ this.botRow.getElement().style.marginLeft = -left + "px";
+ }
+ };
+
+ ColumnCalcs.prototype.recalc = function (rows) {
+ var data, row;
+
+ if (this.topInitialized || this.botInitialized) {
+ data = this.rowsToData(rows);
+
+ if (this.topInitialized) {
+ if (this.topRow) {
+ this.topRow.deleteCells();
+ }
+
+ row = this.generateRow("top", this.rowsToData(rows));
+ this.topRow = row;
+ while (this.topElement.firstChild) {
+ this.topElement.removeChild(this.topElement.firstChild);
+ }this.topElement.appendChild(row.getElement());
+ row.initialize(true);
+ }
+
+ if (this.botInitialized) {
+ if (this.botRow) {
+ this.botRow.deleteCells();
+ }
+
+ row = this.generateRow("bottom", this.rowsToData(rows));
+ this.botRow = row;
+ while (this.botElement.firstChild) {
+ this.botElement.removeChild(this.botElement.firstChild);
+ }this.botElement.appendChild(row.getElement());
+ row.initialize(true);
+ }
+
+ this.table.rowManager.adjustTableSize();
+
+ //set resizable handles
+ if (this.table.modExists("frozenColumns")) {
+ this.table.modules.frozenColumns.layout();
+ }
+ }
+ };
+
+ ColumnCalcs.prototype.recalcRowGroup = function (row) {
+ this.recalcGroup(this.table.modules.groupRows.getRowGroup(row));
+ };
+
+ ColumnCalcs.prototype.recalcGroup = function (group) {
+ var data, rowData;
+
+ if (group) {
+ if (group.calcs) {
+ if (group.calcs.bottom) {
+ data = this.rowsToData(group.rows);
+ rowData = this.generateRowData("bottom", data);
+
+ group.calcs.bottom.updateData(rowData);
+ group.calcs.bottom.reinitialize();
+ }
+
+ if (group.calcs.top) {
+ data = this.rowsToData(group.rows);
+ rowData = this.generateRowData("top", data);
+
+ group.calcs.top.updateData(rowData);
+ group.calcs.top.reinitialize();
+ }
+ }
+ }
+ };
+
+ //generate top stats row
+ ColumnCalcs.prototype.generateTopRow = function (rows) {
+ return this.generateRow("top", this.rowsToData(rows));
+ };
+ //generate bottom stats row
+ ColumnCalcs.prototype.generateBottomRow = function (rows) {
+ return this.generateRow("bottom", this.rowsToData(rows));
+ };
+
+ ColumnCalcs.prototype.rowsToData = function (rows) {
+ var data = [];
+
+ rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ return data;
+ };
+
+ //generate stats row
+ ColumnCalcs.prototype.generateRow = function (pos, data) {
+ var self = this,
+ rowData = this.generateRowData(pos, data),
+ row;
+
+ if (self.table.modExists("mutator")) {
+ self.table.modules.mutator.disable();
+ }
+
+ row = new Row(rowData, this);
+
+ if (self.table.modExists("mutator")) {
+ self.table.modules.mutator.enable();
+ }
+
+ row.getElement().classList.add("tabulator-calcs", "tabulator-calcs-" + pos);
+ row.type = "calc";
+
+ row.generateCells = function () {
+
+ var cells = [];
+
+ self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+ //set field name of mock column
+ self.genColumn.setField(column.getField());
+ self.genColumn.hozAlign = column.hozAlign;
+
+ if (column.definition[pos + "CalcFormatter"] && self.table.modExists("format")) {
+
+ self.genColumn.modules.format = {
+ formatter: self.table.modules.format.getFormatter(column.definition[pos + "CalcFormatter"]),
+ params: column.definition[pos + "CalcFormatterParams"]
+ };
+ } else {
+ self.genColumn.modules.format = {
+ formatter: self.table.modules.format.getFormatter("plaintext"),
+ params: {}
+ };
+ }
+
+ //ensure css class defintion is replicated to calculation cell
+ self.genColumn.definition.cssClass = column.definition.cssClass;
+
+ //generate cell and assign to correct column
+ var cell = new Cell(self.genColumn, row);
+ cell.column = column;
+ cell.setWidth();
+
+ column.cells.push(cell);
+ cells.push(cell);
+
+ if (!column.visible) {
+ cell.hide();
+ }
+ });
+
+ this.cells = cells;
+ };
+
+ return row;
+ };
+
+ //generate stats row
+ ColumnCalcs.prototype.generateRowData = function (pos, data) {
+ var rowData = {},
+ calcs = pos == "top" ? this.topCalcs : this.botCalcs,
+ type = pos == "top" ? "topCalc" : "botCalc",
+ params,
+ paramKey;
+
+ calcs.forEach(function (column) {
+ var values = [];
+
+ if (column.modules.columnCalcs && column.modules.columnCalcs[type]) {
+ data.forEach(function (item) {
+ values.push(column.getFieldValue(item));
+ });
+
+ paramKey = type + "Params";
+ params = typeof column.modules.columnCalcs[paramKey] === "function" ? column.modules.columnCalcs[paramKey](values, data) : column.modules.columnCalcs[paramKey];
+
+ column.setFieldValue(rowData, column.modules.columnCalcs[type](values, data, params));
+ }
+ });
+
+ return rowData;
+ };
+
+ ColumnCalcs.prototype.hasTopCalcs = function () {
+ return !!this.topCalcs.length;
+ };
+
+ ColumnCalcs.prototype.hasBottomCalcs = function () {
+ return !!this.botCalcs.length;
+ };
+
+ //handle table redraw
+ ColumnCalcs.prototype.redraw = function () {
+ if (this.topRow) {
+ this.topRow.normalizeHeight(true);
+ }
+ if (this.botRow) {
+ this.botRow.normalizeHeight(true);
+ }
+ };
+
+ //return the calculated
+ ColumnCalcs.prototype.getResults = function () {
+ var self = this,
+ results = {},
+ groups;
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ groups = this.table.modules.groupRows.getGroups(true);
+
+ groups.forEach(function (group) {
+ results[group.getKey()] = self.getGroupResults(group);
+ });
+ } else {
+ results = {
+ top: this.topRow ? this.topRow.getData() : {},
+ bottom: this.botRow ? this.botRow.getData() : {}
+ };
+ }
+
+ return results;
+ };
+
+ //get results from a group
+ ColumnCalcs.prototype.getGroupResults = function (group) {
+ var self = this,
+ groupObj = group._getSelf(),
+ subGroups = group.getSubGroups(),
+ subGroupResults = {},
+ results = {};
+
+ subGroups.forEach(function (subgroup) {
+ subGroupResults[subgroup.getKey()] = self.getGroupResults(subgroup);
+ });
+
+ results = {
+ top: groupObj.calcs.top ? groupObj.calcs.top.getData() : {},
+ bottom: groupObj.calcs.bottom ? groupObj.calcs.bottom.getData() : {},
+ groups: subGroupResults
+ };
+
+ return results;
+ };
+
+ //default calculations
+ ColumnCalcs.prototype.calculations = {
+ "avg": function avg(values, data, calcParams) {
+ var output = 0,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : 2;
+
+ if (values.length) {
+ output = values.reduce(function (sum, value) {
+ value = Number(value);
+ return sum + value;
+ });
+
+ output = output / values.length;
+
+ output = precision !== false ? output.toFixed(precision) : output;
+ }
+
+ return parseFloat(output).toString();
+ },
+ "max": function max(values, data, calcParams) {
+ var output = null,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ values.forEach(function (value) {
+
+ value = Number(value);
+
+ if (value > output || output === null) {
+ output = value;
+ }
+ });
+
+ return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+ },
+ "min": function min(values, data, calcParams) {
+ var output = null,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ values.forEach(function (value) {
+
+ value = Number(value);
+
+ if (value < output || output === null) {
+ output = value;
+ }
+ });
+
+ return output !== null ? precision !== false ? output.toFixed(precision) : output : "";
+ },
+ "sum": function sum(values, data, calcParams) {
+ var output = 0,
+ precision = typeof calcParams.precision !== "undefined" ? calcParams.precision : false;
+
+ if (values.length) {
+ values.forEach(function (value) {
+ value = Number(value);
+
+ output += !isNaN(value) ? Number(value) : 0;
+ });
+ }
+
+ return precision !== false ? output.toFixed(precision) : output;
+ },
+ "concat": function concat(values, data, calcParams) {
+ var output = 0;
+
+ if (values.length) {
+ output = values.reduce(function (sum, value) {
+ return String(sum) + String(value);
+ });
+ }
+
+ return output;
+ },
+ "count": function count(values, data, calcParams) {
+ var output = 0;
+
+ if (values.length) {
+ values.forEach(function (value) {
+ if (value) {
+ output++;
+ }
+ });
+ }
+
+ return output;
+ }
+ };
+
+ Tabulator.prototype.registerModule("columnCalcs", ColumnCalcs);
+
+ var Clipboard = function Clipboard(table) {
+ this.table = table;
+ this.mode = true;
+ this.copySelector = false;
+ this.copySelectorParams = {};
+ this.copyFormatter = false;
+ this.copyFormatterParams = {};
+ this.pasteParser = function () {};
+ this.pasteAction = function () {};
+ this.htmlElement = false;
+ this.config = {};
+
+ this.blocked = true; //block copy actions not originating from this command
+ };
+
+ Clipboard.prototype.initialize = function () {
+ var self = this;
+
+ this.mode = this.table.options.clipboard;
+
+ if (this.mode === true || this.mode === "copy") {
+ this.table.element.addEventListener("copy", function (e) {
+ var data;
+
+ self.processConfig();
+
+ if (!self.blocked) {
+ e.preventDefault();
+
+ data = self.generateContent();
+
+ if (window.clipboardData && window.clipboardData.setData) {
+ window.clipboardData.setData('Text', data);
+ } else if (e.clipboardData && e.clipboardData.setData) {
+ e.clipboardData.setData('text/plain', data);
+ if (self.htmlElement) {
+ e.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+ }
+ } else if (e.originalEvent && e.originalEvent.clipboardData.setData) {
+ e.originalEvent.clipboardData.setData('text/plain', data);
+ if (self.htmlElement) {
+ e.originalEvent.clipboardData.setData('text/html', self.htmlElement.outerHTML);
+ }
+ }
+
+ self.table.options.clipboardCopied.call(this.table, data);
+
+ self.reset();
+ }
+ });
+ }
+
+ if (this.mode === true || this.mode === "paste") {
+ this.table.element.addEventListener("paste", function (e) {
+ self.paste(e);
+ });
+ }
+
+ this.setPasteParser(this.table.options.clipboardPasteParser);
+ this.setPasteAction(this.table.options.clipboardPasteAction);
+ };
+
+ Clipboard.prototype.processConfig = function () {
+ var config = {
+ columnHeaders: "groups",
+ rowGroups: true,
+ columnCalcs: true
+ };
+
+ if (typeof this.table.options.clipboardCopyHeader !== "undefined") {
+ config.columnHeaders = this.table.options.clipboardCopyHeader;
+ console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option");
+ }
+
+ if (this.table.options.clipboardCopyConfig) {
+ for (var key in this.table.options.clipboardCopyConfig) {
+ config[key] = this.table.options.clipboardCopyConfig[key];
+ }
+ }
+
+ if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.config.rowGroups = true;
+ }
+
+ if (config.columnHeaders) {
+ if ((config.columnHeaders === "groups" || config === true) && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+ this.config.columnHeaders = "groups";
+ } else {
+ this.config.columnHeaders = "columns";
+ }
+ } else {
+ this.config.columnHeaders = false;
+ }
+
+ if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+ this.config.columnCalcs = true;
+ }
+ };
+
+ Clipboard.prototype.reset = function () {
+ this.blocked = false;
+ this.originalSelectionText = "";
+ };
+
+ Clipboard.prototype.setPasteAction = function (action) {
+
+ switch (typeof action === 'undefined' ? 'undefined' : _typeof(action)) {
+ case "string":
+ this.pasteAction = this.pasteActions[action];
+
+ if (!this.pasteAction) {
+ console.warn("Clipboard Error - No such paste action found:", action);
+ }
+ break;
+
+ case "function":
+ this.pasteAction = action;
+ break;
+ }
+ };
+
+ Clipboard.prototype.setPasteParser = function (parser) {
+ switch (typeof parser === 'undefined' ? 'undefined' : _typeof(parser)) {
+ case "string":
+ this.pasteParser = this.pasteParsers[parser];
+
+ if (!this.pasteParser) {
+ console.warn("Clipboard Error - No such paste parser found:", parser);
+ }
+ break;
+
+ case "function":
+ this.pasteParser = parser;
+ break;
+ }
+ };
+
+ Clipboard.prototype.paste = function (e) {
+ var data, rowData, rows;
+
+ if (this.checkPaseOrigin(e)) {
+
+ data = this.getPasteData(e);
+
+ rowData = this.pasteParser.call(this, data);
+
+ if (rowData) {
+ e.preventDefault();
+
+ if (this.table.modExists("mutator")) {
+ rowData = this.mutateData(rowData);
+ }
+
+ rows = this.pasteAction.call(this, rowData);
+ this.table.options.clipboardPasted.call(this.table, data, rowData, rows);
+ } else {
+ this.table.options.clipboardPasteError.call(this.table, data);
+ }
+ }
+ };
+
+ Clipboard.prototype.mutateData = function (data) {
+ var self = this,
+ output = [];
+
+ if (Array.isArray(data)) {
+ data.forEach(function (row) {
+ output.push(self.table.modules.mutator.transformRow(row, "clipboard"));
+ });
+ } else {
+ output = data;
+ }
+
+ return output;
+ };
+
+ Clipboard.prototype.checkPaseOrigin = function (e) {
+ var valid = true;
+
+ if (e.target.tagName != "DIV" || this.table.modules.edit.currentCell) {
+ valid = false;
+ }
+
+ return valid;
+ };
+
+ Clipboard.prototype.getPasteData = function (e) {
+ var data;
+
+ if (window.clipboardData && window.clipboardData.getData) {
+ data = window.clipboardData.getData('Text');
+ } else if (e.clipboardData && e.clipboardData.getData) {
+ data = e.clipboardData.getData('text/plain');
+ } else if (e.originalEvent && e.originalEvent.clipboardData.getData) {
+ data = e.originalEvent.clipboardData.getData('text/plain');
+ }
+
+ return data;
+ };
+
+ Clipboard.prototype.copy = function (selector, selectorParams, formatter, formatterParams, internal) {
+ var range, sel, textRange;
+ this.blocked = false;
+
+ if (this.mode === true || this.mode === "copy") {
+
+ if (typeof window.getSelection != "undefined" && typeof document.createRange != "undefined") {
+ range = document.createRange();
+ range.selectNodeContents(this.table.element);
+ sel = window.getSelection();
+
+ if (sel.toString() && internal) {
+ selector = "userSelection";
+ formatter = "raw";
+ selectorParams = sel.toString();
+ }
+
+ sel.removeAllRanges();
+ sel.addRange(range);
+ } else if (typeof document.selection != "undefined" && typeof document.body.createTextRange != "undefined") {
+ textRange = document.body.createTextRange();
+ textRange.moveToElementText(this.table.element);
+ textRange.select();
+ }
+
+ this.setSelector(selector);
+ this.copySelectorParams = typeof selectorParams != "undefined" && selectorParams != null ? selectorParams : this.config.columnHeaders;
+ this.setFormatter(formatter);
+ this.copyFormatterParams = typeof formatterParams != "undefined" && formatterParams != null ? formatterParams : {};
+
+ document.execCommand('copy');
+
+ if (sel) {
+ sel.removeAllRanges();
+ }
+ }
+ };
+
+ Clipboard.prototype.setSelector = function (selector) {
+ selector = selector || this.table.options.clipboardCopySelector;
+
+ switch (typeof selector === 'undefined' ? 'undefined' : _typeof(selector)) {
+ case "string":
+ if (this.copySelectors[selector]) {
+ this.copySelector = this.copySelectors[selector];
+ } else {
+ console.warn("Clipboard Error - No such selector found:", selector);
+ }
+ break;
+
+ case "function":
+ this.copySelector = selector;
+ break;
+ }
+ };
+
+ Clipboard.prototype.setFormatter = function (formatter) {
+
+ formatter = formatter || this.table.options.clipboardCopyFormatter;
+
+ switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
+ case "string":
+ if (this.copyFormatters[formatter]) {
+ this.copyFormatter = this.copyFormatters[formatter];
+ } else {
+ console.warn("Clipboard Error - No such formatter found:", formatter);
+ }
+ break;
+
+ case "function":
+ this.copyFormatter = formatter;
+ break;
+ }
+ };
+
+ Clipboard.prototype.generateContent = function () {
+ var data;
+
+ this.htmlElement = false;
+ data = this.copySelector.call(this, this.config, this.copySelectorParams);
+
+ return this.copyFormatter.call(this, data, this.config, this.copyFormatterParams);
+ };
+
+ Clipboard.prototype.generateSimpleHeaders = function (columns) {
+ var headers = [];
+
+ columns.forEach(function (column) {
+ headers.push(column.definition.title);
+ });
+
+ return headers;
+ };
+
+ Clipboard.prototype.generateColumnGroupHeaders = function (columns) {
+ var _this22 = this;
+
+ var output = [];
+
+ this.table.columnManager.columns.forEach(function (column) {
+ var colData = _this22.processColumnGroup(column);
+
+ if (colData) {
+ output.push(colData);
+ }
+ });
+
+ return output;
+ };
+
+ Clipboard.prototype.processColumnGroup = function (column) {
+ var _this23 = this;
+
+ var subGroups = column.columns;
+
+ var groupData = {
+ type: "group",
+ title: column.definition.title,
+ column: column
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this23.processColumnGroup(subGroup);
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+ }
+ });
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && (column.definition.clipboard || column.visible && column.definition.clipboard !== false)) {
+ groupData.width = 1;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+ };
+
+ Clipboard.prototype.groupHeadersToRows = function (columns) {
+
+ var headers = [];
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ headers[level].push(column.title);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ padColumnheaders();
+ }
+ }
+
+ function padColumnheaders() {
+ var max = 0;
+
+ headers.forEach(function (title) {
+ var len = title.length;
+ if (len > max) {
+ max = len;
+ }
+ });
+
+ headers.forEach(function (title) {
+ var len = title.length;
+ if (len < max) {
+ for (var i = len; i < max; i++) {
+ title.push("");
+ }
+ }
+ });
+ }
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ return headers;
+ };
+
+ Clipboard.prototype.rowsToData = function (rows, columns, config, params) {
+ var data = [];
+
+ rows.forEach(function (row) {
+ var rowArray = [],
+ rowData = row instanceof RowComponent ? row.getData("clipboard") : row;
+
+ columns.forEach(function (column) {
+ var value = column.getFieldValue(rowData);
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ rowArray.push(value);
+ });
+
+ data.push(rowArray);
+ });
+
+ return data;
+ };
+
+ Clipboard.prototype.buildComplexRows = function (config) {
+ var _this24 = this;
+
+ var output = [],
+ groups = this.table.modules.groupRows.getGroups();
+
+ groups.forEach(function (group) {
+ output.push(_this24.processGroupData(group));
+ });
+
+ return output;
+ };
+
+ Clipboard.prototype.processGroupData = function (group) {
+ var _this25 = this;
+
+ var subGroups = group.getSubGroups();
+
+ var groupData = {
+ type: "group",
+ key: group.key
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+
+ subGroups.forEach(function (subGroup) {
+ groupData.subGroups.push(_this25.processGroupData(subGroup));
+ });
+ } else {
+ groupData.rows = group.getRows(true);
+ }
+
+ return groupData;
+ };
+
+ Clipboard.prototype.getCalcRow = function (calcs, columns, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ return this.rowsToData([calcData], columns);
+ }
+ }
+
+ return [];
+ };
+
+ Clipboard.prototype.buildOutput = function (rows, config, params) {
+ var _this26 = this;
+
+ var output = [],
+ calcs,
+ columns = [];
+
+ if (config.columnHeaders) {
+
+ if (config.columnHeaders == "groups") {
+ columns = this.generateColumnGroupHeaders(this.table.columnManager.columns);
+
+ output = output.concat(this.groupHeadersToRows(columns));
+ } else {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.definition.clipboard || column.visible && column.definition.clipboard !== false) {
+ columns.push(column);
+ }
+ });
+
+ output.push(this.generateSimpleHeaders(columns));
+ }
+ }
+
+ if (this.config.columnCalcs) {
+ calcs = this.table.getCalcResults();
+ }
+
+ //generate styled content
+ if (this.table.options.clipboardCopyStyled) {
+ this.generateHTML(rows, columns, calcs, config, params);
+ }
+
+ //generate unstyled content
+ if (config.rowGroups) {
+ rows.forEach(function (row) {
+ output = output.concat(_this26.parseRowGroupData(row, columns, config, params, calcs || {}));
+ });
+ } else {
+ if (config.columnCalcs) {
+ output = output.concat(this.getCalcRow(calcs, columns, "top"));
+ }
+
+ output = output.concat(this.rowsToData(rows, columns, config, params));
+
+ if (config.columnCalcs) {
+ output = output.concat(this.getCalcRow(calcs, columns, "bottom"));
+ }
+ }
+
+ return output;
+ };
+
+ Clipboard.prototype.parseRowGroupData = function (group, columns, config, params, calcObj) {
+ var _this27 = this;
+
+ var groupData = [];
+
+ groupData.push([group.key]);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ groupData = groupData.concat(_this27.parseRowGroupData(subGroup, config, params, calcObj[group.key] ? calcObj[group.key].groups || {} : {}));
+ });
+ } else {
+ if (config.columnCalcs) {
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "top"));
+ }
+
+ groupData = groupData.concat(this.rowsToData(group.rows, columns, config, params));
+
+ if (config.columnCalcs) {
+ groupData = groupData.concat(this.getCalcRow(calcObj, columns, group.key, "bottom"));
+ }
+ }
+
+ return groupData;
+ };
+
+ Clipboard.prototype.generateHTML = function (rows, columns, calcs, config, params) {
+ var self = this,
+ data = [],
+ headers = [],
+ body,
+ oddRow,
+ evenRow,
+ calcRow,
+ firstRow,
+ firstCell,
+ firstGroup,
+ lastCell,
+ styleCells;
+
+ //create table element
+ this.htmlElement = document.createElement("table");
+ self.mapElementStyles(this.table.element, this.htmlElement, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+ function generateSimpleHeaders() {
+ var headerEl = document.createElement("tr");
+
+ columns.forEach(function (column) {
+ var columnEl = document.createElement("th");
+ columnEl.innerHTML = column.definition.title;
+
+ self.mapElementStyles(column.getElement(), columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerEl.appendChild(columnEl);
+ });
+
+ self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ self.htmlElement.appendChild(document.createElement("thead").appendChild(headerEl));
+ }
+
+ function generateHeaders(headers) {
+
+ var headerHolderEl = document.createElement("thead");
+
+ headers.forEach(function (columns) {
+ var headerEl = document.createElement("tr");
+
+ columns.forEach(function (column) {
+ var columnEl = document.createElement("th");
+
+ if (column.width > 1) {
+ columnEl.colSpan = column.width;
+ }
+
+ if (column.height > 1) {
+ columnEl.rowSpan = column.height;
+ }
+
+ columnEl.innerHTML = column.title;
+
+ self.mapElementStyles(column.element, columnEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerEl.appendChild(columnEl);
+ });
+
+ self.mapElementStyles(self.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ headerHolderEl.appendChild(headerEl);
+ });
+
+ self.htmlElement.appendChild(headerHolderEl);
+ }
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ headers[level].push({
+ title: column.title,
+ width: column.width,
+ height: 1,
+ children: !!column.subGroups,
+ element: column.column.getElement()
+ });
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ }
+ }
+
+ function padVerticalColumnheaders() {
+ headers.forEach(function (row, index) {
+ row.forEach(function (header) {
+ if (!header.children) {
+ header.height = headers.length - index;
+ }
+ });
+ });
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ // calcRowIndexs.push(body.length);
+ processRows([calcData]);
+ }
+ }
+ }
+
+ //create headers if needed
+ if (config.columnHeaders) {
+ if (config.columnHeaders == "groups") {
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ padVerticalColumnheaders();
+ generateHeaders(headers);
+ } else {
+ generateSimpleHeaders();
+ }
+ }
+
+ // columns = this.table.columnManager.columnsByIndex;
+
+ //create table body
+ body = document.createElement("tbody");
+
+ //lookup row styles
+ if (window.getComputedStyle) {
+ oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+ evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+ calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+ firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+ firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+ if (firstRow) {
+ styleCells = firstRow.getElementsByClassName("tabulator-cell");
+ firstCell = styleCells[0];
+ lastCell = styleCells[styleCells.length - 1];
+ }
+ }
+
+ function processRows(rowArray) {
+ //add rows to table
+ rowArray.forEach(function (row, i) {
+ var rowEl = document.createElement("tr"),
+ styleRow = firstRow,
+ isCalc = false,
+ rowData;
+
+ if (row instanceof RowComponent) {
+ rowData = row.getData("clipboard");
+ } else {
+ rowData = row;
+ isCalc = true;
+ }
+
+ columns.forEach(function (column, j) {
+ var cellEl = document.createElement("td"),
+ value = column.getFieldValue(rowData);
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ cellEl.innerHTML = value;
+
+ if (column.definition.align) {
+ cellEl.style.textAlign = column.definition.align;
+ }
+
+ if (j < columns.length - 1) {
+ if (firstCell) {
+ self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+ }
+ } else {
+ if (firstCell) {
+ self.mapElementStyles(firstCell, cellEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size"]);
+ }
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ if (isCalc) {
+ styleRow = calcRow;
+ } else {
+ if (!(i % 2) && oddRow) {
+ styleRow = oddRow;
+ }
+
+ if (i % 2 && evenRow) {
+ styleRow = evenRow;
+ }
+ }
+
+ if (styleRow) {
+ self.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ }
+
+ body.appendChild(rowEl);
+ });
+ }
+
+ function processGroup(group, calcObj) {
+ var groupEl = document.createElement("tr"),
+ groupCellEl = document.createElement("td");
+
+ groupCellEl.colSpan = columns.length;
+
+ groupCellEl.innerHTML = group.key;
+
+ groupEl.appendChild(groupCellEl);
+ body.appendChild(groupEl);
+
+ self.mapElementStyles(firstGroup, groupEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ processGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ processRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ rows.forEach(function (group) {
+ processGroup(group, calcs || {});
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ processRows(rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ this.htmlElement.appendChild(body);
+ };
+
+ Clipboard.prototype.mapElementStyles = function (from, to, props) {
+
+ var lookup = {
+ "background-color": "backgroundColor",
+ "color": "fontColor",
+ "font-weight": "fontWeight",
+ "font-family": "fontFamily",
+ "font-size": "fontSize",
+ "border-top": "borderTop",
+ "border-left": "borderLeft",
+ "border-right": "borderRight",
+ "border-bottom": "borderBottom"
+ };
+
+ if (window.getComputedStyle) {
+ var fromStyle = window.getComputedStyle(from);
+
+ props.forEach(function (prop) {
+ to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+ });
+ }
+
+ // return window.getComputedStyle ? window.getComputedStyle(element, null).getPropertyValue(property) : element.style[property.replace(/-([a-z])/g, function (g) { return g[1].toUpperCase(); })];
+ };
+
+ Clipboard.prototype.copySelectors = {
+ userSelection: function userSelection(config, params) {
+ return params;
+ },
+ selected: function selected(config, params) {
+ var rows = [];
+
+ if (this.table.modExists("selectRow", true)) {
+ rows = this.table.modules.selectRow.getSelectedRows();
+ }
+
+ if (config.rowGroups) {
+ console.warn("Clipboard Warning - select coptSelector does not support row groups");
+ }
+
+ return this.buildOutput(rows, config, params);
+ },
+ table: function table(config, params) {
+ if (config.rowGroups) {
+ console.warn("Clipboard Warning - table coptSelector does not support row groups");
+ }
+
+ return this.buildOutput(this.table.rowManager.getComponents(), config, params);
+ },
+ active: function active(config, params) {
+ var rows;
+
+ if (config.rowGroups) {
+ rows = this.buildComplexRows(config);
+ } else {
+ rows = this.table.rowManager.getComponents(true);
+ }
+
+ return this.buildOutput(rows, config, params);
+ }
+ };
+
+ Clipboard.prototype.copyFormatters = {
+ raw: function raw(data, params) {
+ return data;
+ },
+ table: function table(data, params) {
+ var output = [];
+
+ data.forEach(function (row) {
+ row.forEach(function (value) {
+ if (typeof value == "undefined") {
+ value = "";
+ }
+
+ value = typeof value == "undefined" || value === null ? "" : value.toString();
+
+ if (value.match(/\r|\n/)) {
+ value = value.split('"').join('""');
+ value = '"' + value + '"';
+ }
+ });
+
+ output.push(row.join("\t"));
+ });
+
+ return output.join("\n");
+ }
+ };
+
+ Clipboard.prototype.pasteParsers = {
+ table: function table(clipboard) {
+ var data = [],
+ success = false,
+ headerFindSuccess = true,
+ columns = this.table.columnManager.columns,
+ columnMap = [],
+ rows = [];
+
+ //get data from clipboard into array of columns and rows.
+ clipboard = clipboard.split("\n");
+
+ clipboard.forEach(function (row) {
+ data.push(row.split("\t"));
+ });
+
+ if (data.length && !(data.length === 1 && data[0].length < 2)) {
+ success = true;
+
+ //check if headers are present by title
+ data[0].forEach(function (value) {
+ var column = columns.find(function (column) {
+ return value && column.definition.title && value.trim() && column.definition.title.trim() === value.trim();
+ });
+
+ if (column) {
+ columnMap.push(column);
+ } else {
+ headerFindSuccess = false;
+ }
+ });
+
+ //check if column headers are present by field
+ if (!headerFindSuccess) {
+ headerFindSuccess = true;
+ columnMap = [];
+
+ data[0].forEach(function (value) {
+ var column = columns.find(function (column) {
+ return value && column.field && value.trim() && column.field.trim() === value.trim();
+ });
+
+ if (column) {
+ columnMap.push(column);
+ } else {
+ headerFindSuccess = false;
+ }
+ });
+
+ if (!headerFindSuccess) {
+ columnMap = this.table.columnManager.columnsByIndex;
+ }
+ }
+
+ //remove header row if found
+ if (headerFindSuccess) {
+ data.shift();
+ }
+
+ data.forEach(function (item) {
+ var row = {};
+
+ item.forEach(function (value, i) {
+ if (columnMap[i]) {
+ row[columnMap[i].field] = value;
+ }
+ });
+
+ rows.push(row);
+ });
+
+ return rows;
+ } else {
+ return false;
+ }
+ }
+ };
+
+ Clipboard.prototype.pasteActions = {
+ replace: function replace(rows) {
+ return this.table.setData(rows);
+ },
+ update: function update(rows) {
+ return this.table.updateOrAddData(rows);
+ },
+ insert: function insert(rows) {
+ return this.table.addData(rows);
+ }
+ };
+
+ Tabulator.prototype.registerModule("clipboard", Clipboard);
+
+ var DataTree = function DataTree(table) {
+ this.table = table;
+ this.indent = 10;
+ this.field = "";
+ this.collapseEl = null;
+ this.expandEl = null;
+ this.branchEl = null;
+ this.elementField = false;
+
+ this.startOpen = function () {};
+
+ this.displayIndex = 0;
+ };
+
+ DataTree.prototype.initialize = function () {
+ var dummyEl = null,
+ firstCol = this.table.columnManager.getFirstVisibileColumn(),
+ options = this.table.options;
+
+ this.field = options.dataTreeChildField;
+ this.indent = options.dataTreeChildIndent;
+ this.elementField = options.dataTreeElementColumn || (firstCol ? firstCol.field : false);
+
+ if (options.dataTreeBranchElement) {
+
+ if (options.dataTreeBranchElement === true) {
+ this.branchEl = document.createElement("div");
+ this.branchEl.classList.add("tabulator-data-tree-branch");
+ } else {
+ if (typeof options.dataTreeBranchElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeBranchElement;
+ this.branchEl = dummyEl.firstChild;
+ } else {
+ this.branchEl = options.dataTreeBranchElement;
+ }
+ }
+ }
+
+ if (options.dataTreeCollapseElement) {
+ if (typeof options.dataTreeCollapseElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeCollapseElement;
+ this.collapseEl = dummyEl.firstChild;
+ } else {
+ this.collapseEl = options.dataTreeCollapseElement;
+ }
+ } else {
+ this.collapseEl = document.createElement("div");
+ this.collapseEl.classList.add("tabulator-data-tree-control");
+ this.collapseEl.innerHTML = "<div class='tabulator-data-tree-control-collapse'></div>";
+ }
+
+ if (options.dataTreeExpandElement) {
+ if (typeof options.dataTreeExpandElement === "string") {
+ dummyEl = document.createElement("div");
+ dummyEl.innerHTML = options.dataTreeExpandElement;
+ this.expandEl = dummyEl.firstChild;
+ } else {
+ this.expandEl = options.dataTreeExpandElement;
+ }
+ } else {
+ this.expandEl = document.createElement("div");
+ this.expandEl.classList.add("tabulator-data-tree-control");
+ this.expandEl.innerHTML = "<div class='tabulator-data-tree-control-expand'></div>";
+ }
+
+ switch (_typeof(options.dataTreeStartExpanded)) {
+ case "boolean":
+ this.startOpen = function (row, index) {
+ return options.dataTreeStartExpanded;
+ };
+ break;
+
+ case "function":
+ this.startOpen = options.dataTreeStartExpanded;
+ break;
+
+ default:
+ this.startOpen = function (row, index) {
+ return options.dataTreeStartExpanded[index];
+ };
+ break;
+ }
+ };
+
+ DataTree.prototype.initializeRow = function (row) {
+ var childArray = row.getData()[this.field];
+ var isArray = Array.isArray(childArray);
+
+ var children = isArray || !isArray && (typeof childArray === 'undefined' ? 'undefined' : _typeof(childArray)) === "object" && childArray !== null;
+
+ row.modules.dataTree = {
+ index: 0,
+ open: children ? this.startOpen(row.getComponent(), 0) : false,
+ controlEl: false,
+ branchEl: false,
+ parent: false,
+ children: children
+ };
+ };
+
+ DataTree.prototype.layoutRow = function (row) {
+ var cell = this.elementField ? row.getCell(this.elementField) : row.getCells()[0],
+ el = cell.getElement(),
+ config = row.modules.dataTree;
+
+ if (config.branchEl) {
+ config.branchEl.parentNode.removeChild(config.branchEl);
+ }
+
+ this.generateControlElement(row, el);
+
+ if (config.index) {
+ if (this.branchEl) {
+ config.branchEl = this.branchEl.cloneNode(true);
+ el.insertBefore(config.branchEl, el.firstChild);
+ config.branchEl.style.marginLeft = (config.branchEl.offsetWidth + config.branchEl.style.marginRight) * (config.index - 1) + config.index * this.indent + "px";
+ } else {
+ el.style.paddingLeft = parseInt(window.getComputedStyle(el, null).getPropertyValue('padding-left')) + config.index * this.indent + "px";
+ }
+ }
+ };
+
+ DataTree.prototype.generateControlElement = function (row, el) {
+ var _this28 = this;
+
+ var config = row.modules.dataTree,
+ el = el || row.getCells()[0].getElement(),
+ oldControl = config.controlEl;
+
+ if (config.children !== false) {
+
+ if (config.open) {
+ config.controlEl = this.collapseEl.cloneNode(true);
+ config.controlEl.addEventListener("click", function (e) {
+ e.stopPropagation();
+ _this28.collapseRow(row);
+ });
+ } else {
+ config.controlEl = this.expandEl.cloneNode(true);
+ config.controlEl.addEventListener("click", function (e) {
+ e.stopPropagation();
+ _this28.expandRow(row);
+ });
+ }
+
+ config.controlEl.addEventListener("mousedown", function (e) {
+ e.stopPropagation();
+ });
+
+ if (oldControl && oldControl.parentNode === el) {
+ oldControl.parentNode.replaceChild(config.controlEl, oldControl);
+ } else {
+ el.insertBefore(config.controlEl, el.firstChild);
+ }
+ }
+ };
+
+ DataTree.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+ };
+
+ DataTree.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+ };
+
+ DataTree.prototype.getRows = function (rows) {
+ var _this29 = this;
+
+ var output = [];
+
+ rows.forEach(function (row, i) {
+ var config, children;
+
+ output.push(row);
+
+ if (row instanceof Row) {
+
+ config = row.modules.dataTree.children;
+
+ if (!config.index && config.children !== false) {
+ children = _this29.getChildren(row);
+
+ children.forEach(function (child) {
+ output.push(child);
+ });
+ }
+ }
+ });
+
+ return output;
+ };
+
+ DataTree.prototype.getChildren = function (row) {
+ var _this30 = this;
+
+ var config = row.modules.dataTree,
+ children = [],
+ output = [];
+
+ if (config.children !== false && config.open) {
+ if (!Array.isArray(config.children)) {
+ config.children = this.generateChildren(row);
+ }
+
+ if (this.table.modExists("filter")) {
+ children = this.table.modules.filter.filter(config.children);
+ } else {
+ children = config.children;
+ }
+
+ if (this.table.modExists("sort")) {
+ this.table.modules.sort.sort(children);
+ }
+
+ children.forEach(function (child) {
+ output.push(child);
+
+ var subChildren = _this30.getChildren(child);
+
+ subChildren.forEach(function (sub) {
+ output.push(sub);
+ });
+ });
+ }
+
+ return output;
+ };
+
+ DataTree.prototype.generateChildren = function (row) {
+ var _this31 = this;
+
+ var children = [];
+
+ var childArray = row.getData()[this.field];
+
+ if (!Array.isArray(childArray)) {
+ childArray = [childArray];
+ }
+
+ childArray.forEach(function (childData) {
+ var childRow = new Row(childData || {}, _this31.table.rowManager);
+ childRow.modules.dataTree.index = row.modules.dataTree.index + 1;
+ childRow.modules.dataTree.parent = row;
+ if (childRow.modules.dataTree.children) {
+ childRow.modules.dataTree.open = _this31.startOpen(childRow.getComponent(), childRow.modules.dataTree.index);
+ }
+ children.push(childRow);
+ });
+
+ return children;
+ };
+
+ DataTree.prototype.expandRow = function (row, silent) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ config.open = true;
+
+ row.reinitialize();
+
+ this.table.rowManager.refreshActiveData("tree", false, true);
+
+ this.table.options.dataTreeRowExpanded(row.getComponent(), row.modules.dataTree.index);
+ }
+ };
+
+ DataTree.prototype.collapseRow = function (row) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ config.open = false;
+
+ row.reinitialize();
+
+ this.table.rowManager.refreshActiveData("tree", false, true);
+
+ this.table.options.dataTreeRowCollapsed(row.getComponent(), row.modules.dataTree.index);
+ }
+ };
+
+ DataTree.prototype.toggleRow = function (row) {
+ var config = row.modules.dataTree;
+
+ if (config.children !== false) {
+ if (config.open) {
+ this.collapseRow(row);
+ } else {
+ this.expandRow(row);
+ }
+ }
+ };
+
+ DataTree.prototype.getTreeParent = function (row) {
+ return row.modules.dataTree.parent ? row.modules.dataTree.parent.getComponent() : false;
+ };
+
+ DataTree.prototype.getTreeChildren = function (row) {
+ var config = row.modules.dataTree,
+ output = [];
+
+ if (config.children) {
+
+ if (!Array.isArray(config.children)) {
+ config.children = this.generateChildren(row);
+ }
+
+ config.children.forEach(function (childRow) {
+ if (childRow instanceof Row) {
+ output.push(childRow.getComponent());
+ }
+ });
+ }
+
+ return output;
+ };
+
+ DataTree.prototype.checkForRestyle = function (cell) {
+ if (!cell.row.cells.indexOf(cell)) {
+ if (cell.row.modules.dataTree.children !== false) {
+ cell.row.reinitialize();
+ }
+ }
+ };
+
+ DataTree.prototype.getChildField = function () {
+ return this.field;
+ };
+
+ Tabulator.prototype.registerModule("dataTree", DataTree);
+ var Download = function Download(table) {
+ this.table = table; //hold Tabulator object
+ this.fields = {}; //hold filed multi dimension arrays
+ this.columnsByIndex = []; //hold columns in their order in the table
+ this.columnsByField = {}; //hold columns with lookup by field name
+ this.config = {};
+ };
+
+ //trigger file download
+ Download.prototype.download = function (type, filename, options, interceptCallback) {
+ var self = this,
+ downloadFunc = false;
+ this.processConfig();
+
+ function buildLink(data, mime) {
+ if (interceptCallback) {
+ if (interceptCallback === true) {
+ self.triggerDownload(data, mime, type, filename, true);
+ } else {
+ interceptCallback(data);
+ }
+ } else {
+ self.triggerDownload(data, mime, type, filename);
+ }
+ }
+
+ if (typeof type == "function") {
+ downloadFunc = type;
+ } else {
+ if (self.downloaders[type]) {
+ downloadFunc = self.downloaders[type];
+ } else {
+ console.warn("Download Error - No such download type found: ", type);
+ }
+ }
+
+ this.processColumns();
+
+ if (downloadFunc) {
+ downloadFunc.call(this, self.processDefinitions(), self.processData(), options || {}, buildLink, this.config);
+ }
+ };
+
+ Download.prototype.processConfig = function () {
+ var config = { //download config
+ columnGroups: true,
+ rowGroups: true,
+ columnCalcs: true
+ };
+
+ if (this.table.options.downloadConfig) {
+ for (var key in this.table.options.downloadConfig) {
+ config[key] = this.table.options.downloadConfig[key];
+ }
+ }
+
+ if (config.rowGroups && this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.config.rowGroups = true;
+ }
+
+ if (config.columnGroups && this.table.columnManager.columns.length != this.table.columnManager.columnsByIndex.length) {
+ this.config.columnGroups = true;
+ }
+
+ if (config.columnCalcs && this.table.modExists("columnCalcs")) {
+ this.config.columnCalcs = true;
+ }
+ };
+
+ Download.prototype.processColumns = function () {
+ var self = this;
+
+ self.columnsByIndex = [];
+ self.columnsByField = {};
+
+ self.table.columnManager.columnsByIndex.forEach(function (column) {
+
+ if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+ self.columnsByIndex.push(column);
+ self.columnsByField[column.field] = column;
+ }
+ });
+ };
+
+ Download.prototype.processDefinitions = function () {
+ var self = this,
+ processedDefinitions = [];
+
+ if (this.config.columnGroups) {
+ self.table.columnManager.columns.forEach(function (column) {
+ var colData = self.processColumnGroup(column);
+
+ if (colData) {
+ processedDefinitions.push(colData);
+ }
+ });
+ } else {
+ self.columnsByIndex.forEach(function (column) {
+ if (column.download !== false) {
+ //isolate definiton from defintion object
+ processedDefinitions.push(self.processDefinition(column));
+ }
+ });
+ }
+
+ return processedDefinitions;
+ };
+
+ Download.prototype.processColumnGroup = function (column) {
+ var _this32 = this;
+
+ var subGroups = column.columns,
+ maxDepth = 0;
+ var processedColumn = this.processDefinition(column);
+ var groupData = {
+ type: "group",
+ title: processedColumn.title,
+ depth: 1
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this32.processColumnGroup(subGroup);
+
+ if (subGroupData.depth > maxDepth) {
+ maxDepth = subGroupData.depth;
+ }
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+ }
+ });
+
+ groupData.depth += maxDepth;
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && column.definition.download !== false && (column.visible || !column.visible && column.definition.download)) {
+ groupData.width = 1;
+ groupData.definition = processedColumn;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+ };
+
+ Download.prototype.processDefinition = function (column) {
+ var def = {};
+
+ for (var key in column.definition) {
+ def[key] = column.definition[key];
+ }
+
+ if (typeof column.definition.downloadTitle != "undefined") {
+ def.title = column.definition.downloadTitle;
+ }
+
+ return def;
+ };
+
+ Download.prototype.processData = function () {
+ var _this33 = this;
+
+ var self = this,
+ data = [],
+ groups = [],
+ calcs = {};
+
+ if (this.config.rowGroups) {
+ groups = this.table.modules.groupRows.getGroups();
+
+ groups.forEach(function (group) {
+ data.push(_this33.processGroupData(group));
+ });
+ } else {
+ data = self.table.rowManager.getData(true, "download");
+ }
+
+ if (this.config.columnCalcs) {
+ calcs = this.table.getCalcResults();
+
+ data = {
+ calcs: calcs,
+ data: data
+ };
+ }
+
+ //bulk data processing
+ if (typeof self.table.options.downloadDataFormatter == "function") {
+ data = self.table.options.downloadDataFormatter(data);
+ }
+
+ return data;
+ };
+
+ Download.prototype.processGroupData = function (group) {
+ var _this34 = this;
+
+ var subGroups = group.getSubGroups();
+
+ var groupData = {
+ type: "group",
+ key: group.key
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+
+ subGroups.forEach(function (subGroup) {
+ groupData.subGroups.push(_this34.processGroupData(subGroup));
+ });
+ } else {
+ groupData.rows = group.getData(true, "download");
+ }
+
+ return groupData;
+ };
+
+ Download.prototype.triggerDownload = function (data, mime, type, filename, newTab) {
+ var element = document.createElement('a'),
+ blob = new Blob([data], { type: mime }),
+ filename = filename || "Tabulator." + (typeof type === "function" ? "txt" : type);
+
+ blob = this.table.options.downloadReady.call(this.table, data, blob);
+
+ if (blob) {
+
+ if (newTab) {
+ window.open(window.URL.createObjectURL(blob));
+ } else {
+ if (navigator.msSaveOrOpenBlob) {
+ navigator.msSaveOrOpenBlob(blob, filename);
+ } else {
+ element.setAttribute('href', window.URL.createObjectURL(blob));
+
+ //set file title
+ element.setAttribute('download', filename);
+
+ //trigger download
+ element.style.display = 'none';
+ document.body.appendChild(element);
+ element.click();
+
+ //remove temporary link element
+ document.body.removeChild(element);
+ }
+ }
+
+ if (this.table.options.downloadComplete) {
+ this.table.options.downloadComplete();
+ }
+ }
+ };
+
+ //nested field lookup
+ Download.prototype.getFieldValue = function (field, data) {
+ var column = this.columnsByField[field];
+
+ if (column) {
+ return column.getFieldValue(data);
+ }
+
+ return false;
+ };
+
+ Download.prototype.commsReceived = function (table, action, data) {
+ switch (action) {
+ case "intercept":
+ this.download(data.type, "", data.options, data.intercept);
+ break;
+ }
+ };
+
+ //downloaders
+ Download.prototype.downloaders = {
+ csv: function csv(columns, data, options, setFileContents, config) {
+ var self = this,
+ titles = [],
+ fields = [],
+ delimiter = options && options.delimiter ? options.delimiter : ",",
+ fileContents,
+ output;
+
+ //build column headers
+ function parseSimpleTitles() {
+ columns.forEach(function (column) {
+ titles.push('"' + String(column.title).split('"').join('""') + '"');
+ fields.push(column.field);
+ });
+ }
+
+ function parseColumnGroup(column, level) {
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ titles.push('"' + String(column.title).split('"').join('""') + '"');
+ fields.push(column.definition.field);
+ }
+ }
+
+ if (config.columnGroups) {
+ console.warn("Download Warning - CSV downloader cannot process column groups");
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ //generate header row
+ fileContents = [titles.join(delimiter)];
+
+ function parseRows(data) {
+ //generate each row of the table
+ data.forEach(function (row) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ //escape quotation marks
+ rowData.push('"' + String(value).split('"').join('""') + '"');
+ });
+
+ fileContents.push(rowData.join(delimiter));
+ });
+ }
+
+ function parseGroup(group) {
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup);
+ });
+ } else {
+ parseRows(group.rows);
+ }
+ }
+
+ if (config.columnCalcs) {
+ console.warn("Download Warning - CSV downloader cannot process column calculations");
+ data = data.data;
+ }
+
+ if (config.rowGroups) {
+ console.warn("Download Warning - CSV downloader cannot process row groups");
+
+ data.forEach(function (group) {
+ parseGroup(group);
+ });
+ } else {
+ parseRows(data);
+ }
+
+ output = fileContents.join("\n");
+
+ if (options.bom) {
+ output = '\uFEFF' + output;
+ }
+
+ setFileContents(output, "text/csv");
+ },
+
+ json: function json(columns, data, options, setFileContents, config) {
+ var fileContents;
+
+ if (config.columnCalcs) {
+ console.warn("Download Warning - CSV downloader cannot process column calculations");
+ data = data.data;
+ }
+
+ fileContents = JSON.stringify(data, null, '\t');
+
+ setFileContents(fileContents, "application/json");
+ },
+
+ pdf: function pdf(columns, data, options, setFileContents, config) {
+ var self = this,
+ fields = [],
+ header = [],
+ body = [],
+ calcs = {},
+ headerDepth = 1,
+ table = "",
+ autoTableParams = {},
+ rowGroupStyles = options.rowGroupStyles || {
+ fontStyle: "bold",
+ fontSize: 12,
+ cellPadding: 6,
+ fillColor: 220
+ },
+ rowCalcStyles = options.rowCalcStyles || {
+ fontStyle: "bold",
+ fontSize: 10,
+ cellPadding: 4,
+ fillColor: 232
+ },
+ jsPDFParams = options.jsPDF || {},
+ title = options && options.title ? options.title : "";
+
+ if (config.columnCalcs) {
+ calcs = data.calcs;
+ data = data.data;
+ }
+
+ if (!jsPDFParams.orientation) {
+ jsPDFParams.orientation = options.orientation || "landscape";
+ }
+
+ if (!jsPDFParams.unit) {
+ jsPDFParams.unit = "pt";
+ }
+
+ //build column headers
+ function parseSimpleTitles() {
+ columns.forEach(function (column) {
+ if (column.field) {
+ header.push(column.title || "");
+ fields.push(column.field);
+ }
+ });
+
+ header = [header];
+ }
+
+ function parseColumnGroup(column, level) {
+ var colSpan = column.width,
+ rowSpan = 1,
+ col = {
+ content: column.title || ""
+ };
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ rowSpan = 1;
+ } else {
+ fields.push(column.definition.field);
+ rowSpan = headerDepth - level;
+ }
+
+ col.rowSpan = rowSpan;
+ // col.colSpan = colSpan;
+
+ header[level].push(col);
+
+ colSpan--;
+
+ if (rowSpan > 1) {
+ for (var i = level + 1; i < headerDepth; i++) {
+ header[i].push("");
+ }
+ }
+
+ for (var i = 0; i < colSpan; i++) {
+ header[level].push("");
+ }
+ }
+
+ if (config.columnGroups) {
+ columns.forEach(function (column) {
+ if (column.depth > headerDepth) {
+ headerDepth = column.depth;
+ }
+ });
+
+ for (var i = 0; i < headerDepth; i++) {
+ header.push([]);
+ }
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ function parseValue(value) {
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+
+ return value;
+ }
+
+ function parseRows(data) {
+ //build table rows
+ data.forEach(function (row) {
+ body.push(parseRow(row));
+ });
+ }
+
+ function parseRow(row, styles) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+ value = parseValue(value);
+
+ if (styles) {
+ rowData.push({
+ content: value,
+ styles: styles
+ });
+ } else {
+ rowData.push(value);
+ }
+ });
+
+ return rowData;
+ }
+
+ function parseGroup(group, calcObj) {
+ var groupData = [];
+
+ groupData.push({ content: parseValue(group.key), colSpan: fields.length, styles: rowGroupStyles });
+
+ body.push(groupData);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ parseRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ body.push(parseRow(calcData, rowCalcStyles));
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ data.forEach(function (group) {
+ parseGroup(group, calcs);
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ parseRows(data);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ var doc = new jsPDF(jsPDFParams); //set document to landscape, better for most tables
+
+ if (options && options.autoTable) {
+ if (typeof options.autoTable === "function") {
+ autoTableParams = options.autoTable(doc) || {};
+ } else {
+ autoTableParams = options.autoTable;
+ }
+ }
+
+ if (title) {
+ autoTableParams.addPageContent = function (data) {
+ doc.text(title, 40, 30);
+ };
+ }
+
+ autoTableParams.head = header;
+ autoTableParams.body = body;
+
+ doc.autoTable(autoTableParams);
+
+ if (options && options.documentProcessing) {
+ options.documentProcessing(doc);
+ }
+
+ setFileContents(doc.output("arraybuffer"), "application/pdf");
+ },
+
+ xlsx: function xlsx(columns, data, options, setFileContents, config) {
+ var self = this,
+ sheetName = options.sheetName || "Sheet1",
+ workbook = { SheetNames: [], Sheets: {} },
+ calcs = {},
+ groupRowIndexs = [],
+ groupColumnIndexs = [],
+ calcRowIndexs = [],
+ output;
+
+ if (config.columnCalcs) {
+ calcs = data.calcs;
+ data = data.data;
+ }
+
+ function generateSheet() {
+ var titles = [],
+ fields = [],
+ rows = [],
+ worksheet;
+
+ //convert rows to worksheet
+ function rowsToSheet() {
+ var sheet = {};
+ var range = { s: { c: 0, r: 0 }, e: { c: fields.length, r: rows.length } };
+
+ XLSX.utils.sheet_add_aoa(sheet, rows);
+
+ sheet['!ref'] = XLSX.utils.encode_range(range);
+
+ var merges = generateMerges();
+
+ if (merges.length) {
+ sheet["!merges"] = merges;
+ }
+
+ return sheet;
+ }
+
+ function parseSimpleTitles() {
+ //get field lists
+ columns.forEach(function (column) {
+ titles.push(column.title);
+ fields.push(column.field);
+ });
+
+ rows.push(titles);
+ }
+
+ function parseColumnGroup(column, level) {
+
+ if (typeof titles[level] === "undefined") {
+ titles[level] = [];
+ }
+
+ if (typeof groupColumnIndexs[level] === "undefined") {
+ groupColumnIndexs[level] = [];
+ }
+
+ if (column.width > 1) {
+
+ groupColumnIndexs[level].push({
+ type: "hoz",
+ start: titles[level].length,
+ end: titles[level].length + column.width - 1
+ });
+ }
+
+ titles[level].push(column.title);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ } else {
+ fields.push(column.definition.field);
+ padColumnTitles(fields.length - 1, level);
+
+ groupColumnIndexs[level].push({
+ type: "vert",
+ start: fields.length - 1
+ });
+ }
+ }
+
+ function padColumnTitles() {
+ var max = 0;
+
+ titles.forEach(function (title) {
+ var len = title.length;
+ if (len > max) {
+ max = len;
+ }
+ });
+
+ titles.forEach(function (title) {
+ var len = title.length;
+ if (len < max) {
+ for (var i = len; i < max; i++) {
+ title.push("");
+ }
+ }
+ });
+ }
+
+ if (config.columnGroups) {
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ titles.forEach(function (title) {
+ rows.push(title);
+ });
+ } else {
+ parseSimpleTitles();
+ }
+
+ function generateMerges() {
+ var output = [];
+
+ groupRowIndexs.forEach(function (index) {
+ output.push({ s: { r: index, c: 0 }, e: { r: index, c: fields.length - 1 } });
+ });
+
+ groupColumnIndexs.forEach(function (merges, level) {
+ merges.forEach(function (merge) {
+ if (merge.type === "hoz") {
+ output.push({ s: { r: level, c: merge.start }, e: { r: level, c: merge.end } });
+ } else {
+ if (level != titles.length - 1) {
+ output.push({ s: { r: level, c: merge.start }, e: { r: titles.length - 1, c: merge.start } });
+ }
+ }
+ });
+ });
+
+ return output;
+ }
+
+ //generate each row of the table
+ function parseRows(data) {
+ data.forEach(function (row) {
+ rows.push(parseRow(row));
+ });
+ }
+
+ function parseRow(row) {
+ var rowData = [];
+
+ fields.forEach(function (field) {
+ var value = self.getFieldValue(field, row);
+ rowData.push(!(value instanceof Date) && (typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object" ? JSON.stringify(value) : value);
+ });
+
+ return rowData;
+ }
+
+ function addCalcRow(calcs, selector, pos) {
+ var calcData = calcs[selector];
+
+ if (calcData) {
+ if (pos) {
+ calcData = calcData[pos];
+ }
+
+ if (Object.keys(calcData).length) {
+ calcRowIndexs.push(rows.length);
+ rows.push(parseRow(calcData));
+ }
+ }
+ }
+
+ function parseGroup(group, calcObj) {
+ var groupData = [];
+
+ groupData.push(group.key);
+
+ groupRowIndexs.push(rows.length);
+
+ rows.push(groupData);
+
+ if (group.subGroups) {
+ group.subGroups.forEach(function (subGroup) {
+ parseGroup(subGroup, calcObj[group.key] ? calcObj[group.key].groups || {} : {});
+ });
+ } else {
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "top");
+ }
+
+ parseRows(group.rows);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcObj, group.key, "bottom");
+ }
+ }
+ }
+
+ if (config.rowGroups) {
+ data.forEach(function (group) {
+ parseGroup(group, calcs);
+ });
+ } else {
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "top");
+ }
+
+ parseRows(data);
+
+ if (config.columnCalcs) {
+ addCalcRow(calcs, "bottom");
+ }
+ }
+
+ worksheet = rowsToSheet();
+
+ return worksheet;
+ }
+
+ if (options.sheetOnly) {
+ setFileContents(generateSheet());
+ return;
+ }
+
+ if (options.sheets) {
+ for (var sheet in options.sheets) {
+
+ if (options.sheets[sheet] === true) {
+ workbook.SheetNames.push(sheet);
+ workbook.Sheets[sheet] = generateSheet();
+ } else {
+
+ workbook.SheetNames.push(sheet);
+
+ this.table.modules.comms.send(options.sheets[sheet], "download", "intercept", {
+ type: "xlsx",
+ options: { sheetOnly: true },
+ intercept: function intercept(data) {
+ workbook.Sheets[sheet] = data;
+ }
+ });
+ }
+ }
+ } else {
+ workbook.SheetNames.push(sheetName);
+ workbook.Sheets[sheetName] = generateSheet();
+ }
+
+ //convert workbook to binary array
+ function s2ab(s) {
+ var buf = new ArrayBuffer(s.length);
+ var view = new Uint8Array(buf);
+ for (var i = 0; i != s.length; ++i) {
+ view[i] = s.charCodeAt(i) & 0xFF;
+ }return buf;
+ }
+
+ output = XLSX.write(workbook, { bookType: 'xlsx', bookSST: true, type: 'binary' });
+
+ setFileContents(s2ab(output), "application/octet-stream");
+ }
+
+ };
+
+ Tabulator.prototype.registerModule("download", Download);
+
+ var Edit = function Edit(table) {
+ this.table = table; //hold Tabulator object
+ this.currentCell = false; //hold currently editing cell
+ this.mouseClick = false; //hold mousedown state to prevent click binding being overriden by editor opening
+ this.recursionBlock = false; //prevent focus recursion
+ this.invalidEdit = false;
+ };
+
+ //initialize column editor
+ Edit.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = {
+ editor: false,
+ blocked: false,
+ check: column.definition.editable,
+ params: column.definition.editorParams || {}
+ };
+
+ //set column editor
+ switch (_typeof(column.definition.editor)) {
+ case "string":
+
+ if (column.definition.editor === "tick") {
+ column.definition.editor = "tickCross";
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+ }
+
+ if (self.editors[column.definition.editor]) {
+ config.editor = self.editors[column.definition.editor];
+ } else {
+ console.warn("Editor Error - No such editor found: ", column.definition.editor);
+ }
+ break;
+
+ case "function":
+ config.editor = column.definition.editor;
+ break;
+
+ case "boolean":
+
+ if (column.definition.editor === true) {
+
+ if (typeof column.definition.formatter !== "function") {
+
+ if (column.definition.formatter === "tick") {
+ column.definition.formatter = "tickCross";
+ console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor");
+ }
+
+ if (self.editors[column.definition.formatter]) {
+ config.editor = self.editors[column.definition.formatter];
+ } else {
+ config.editor = self.editors["input"];
+ }
+ } else {
+ console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ", column.definition.formatter);
+ }
+ }
+ break;
+ }
+
+ if (config.editor) {
+ column.modules.edit = config;
+ }
+ };
+
+ Edit.prototype.getCurrentCell = function () {
+ return this.currentCell ? this.currentCell.getComponent() : false;
+ };
+
+ Edit.prototype.clearEditor = function () {
+ var cell = this.currentCell,
+ cellEl;
+
+ this.invalidEdit = false;
+
+ if (cell) {
+ this.currentCell = false;
+
+ cellEl = cell.getElement();
+ cellEl.classList.remove("tabulator-validation-fail");
+ cellEl.classList.remove("tabulator-editing");
+ while (cellEl.firstChild) {
+ cellEl.removeChild(cellEl.firstChild);
+ }cell.row.getElement().classList.remove("tabulator-row-editing");
+ }
+ };
+
+ Edit.prototype.cancelEdit = function () {
+
+ if (this.currentCell) {
+ var cell = this.currentCell;
+ var component = this.currentCell.getComponent();
+
+ this.clearEditor();
+ cell.setValueActual(cell.getValue());
+
+ if (cell.column.cellEvents.cellEditCancelled) {
+ cell.column.cellEvents.cellEditCancelled.call(this.table, component);
+ }
+
+ this.table.options.cellEditCancelled.call(this.table, component);
+ }
+ };
+
+ //return a formatted value for a cell
+ Edit.prototype.bindEditor = function (cell) {
+ var self = this,
+ element = cell.getElement();
+
+ element.setAttribute("tabindex", 0);
+
+ element.addEventListener("click", function (e) {
+ if (!element.classList.contains("tabulator-editing")) {
+ element.focus();
+ }
+ });
+
+ element.addEventListener("mousedown", function (e) {
+ self.mouseClick = true;
+ });
+
+ element.addEventListener("focus", function (e) {
+ if (!self.recursionBlock) {
+ self.edit(cell, e, false);
+ }
+ });
+ };
+
+ Edit.prototype.focusCellNoEvent = function (cell) {
+ this.recursionBlock = true;
+ if (this.table.browser !== "ie") {
+ cell.getElement().focus();
+ }
+ this.recursionBlock = false;
+ };
+
+ Edit.prototype.editCell = function (cell, forceEdit) {
+ this.focusCellNoEvent(cell);
+ this.edit(cell, false, forceEdit);
+ };
+
+ Edit.prototype.edit = function (cell, e, forceEdit) {
+ var self = this,
+ allowEdit = true,
+ rendered = function rendered() {},
+ element = cell.getElement(),
+ cellEditor,
+ component,
+ params;
+
+ //prevent editing if another cell is refusing to leave focus (eg. validation fail)
+ if (this.currentCell) {
+ if (!this.invalidEdit) {
+ this.cancelEdit();
+ }
+ return;
+ }
+
+ //handle successfull value change
+ function success(value) {
+
+ if (self.currentCell === cell) {
+ var valid = true;
+
+ if (cell.column.modules.validate && self.table.modExists("validate")) {
+ valid = self.table.modules.validate.validate(cell.column.modules.validate, cell.getComponent(), value);
+ }
+
+ if (valid === true) {
+ self.clearEditor();
+ cell.setValue(value, true);
+
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.checkForRestyle(cell);
+ }
+ } else {
+ self.invalidEdit = true;
+ element.classList.add("tabulator-validation-fail");
+ self.focusCellNoEvent(cell);
+ rendered();
+ self.table.options.validationFailed.call(self.table, cell.getComponent(), value, valid);
+ }
+ } else {
+ // console.warn("Edit Success Error - cannot call success on a cell that is no longer being edited");
+ }
+ }
+
+ //handle aborted edit
+ function cancel() {
+ if (self.currentCell === cell) {
+ self.cancelEdit();
+
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.checkForRestyle(cell);
+ }
+ } else {
+ // console.warn("Edit Success Error - cannot call cancel on a cell that is no longer being edited");
+ }
+ }
+
+ function onRendered(callback) {
+ rendered = callback;
+ }
+
+ if (!cell.column.modules.edit.blocked) {
+ if (e) {
+ e.stopPropagation();
+ }
+
+ switch (_typeof(cell.column.modules.edit.check)) {
+ case "function":
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ break;
+
+ case "boolean":
+ allowEdit = cell.column.modules.edit.check;
+ break;
+ }
+
+ if (allowEdit || forceEdit) {
+
+ self.cancelEdit();
+
+ self.currentCell = cell;
+
+ component = cell.getComponent();
+
+ if (this.mouseClick) {
+ this.mouseClick = false;
+
+ if (cell.column.cellEvents.cellClick) {
+ cell.column.cellEvents.cellClick.call(this.table, e, component);
+ }
+ }
+
+ if (cell.column.cellEvents.cellEditing) {
+ cell.column.cellEvents.cellEditing.call(this.table, component);
+ }
+
+ self.table.options.cellEditing.call(this.table, component);
+
+ params = typeof cell.column.modules.edit.params === "function" ? cell.column.modules.edit.params(component) : cell.column.modules.edit.params;
+
+ cellEditor = cell.column.modules.edit.editor.call(self, component, onRendered, success, cancel, params);
+
+ //if editor returned, add to DOM, if false, abort edit
+ if (cellEditor !== false) {
+
+ if (cellEditor instanceof Node) {
+ element.classList.add("tabulator-editing");
+ cell.row.getElement().classList.add("tabulator-row-editing");
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.appendChild(cellEditor);
+
+ //trigger onRendered Callback
+ rendered();
+
+ //prevent editing from triggering rowClick event
+ var children = element.children;
+
+ for (var i = 0; i < children.length; i++) {
+ children[i].addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+ }
+ } else {
+ console.warn("Edit Error - Editor should return an instance of Node, the editor returned:", cellEditor);
+ element.blur();
+ return false;
+ }
+ } else {
+ element.blur();
+ return false;
+ }
+
+ return true;
+ } else {
+ this.mouseClick = false;
+ element.blur();
+ return false;
+ }
+ } else {
+ this.mouseClick = false;
+ element.blur();
+ return false;
+ }
+ };
+
+ //default data editors
+ Edit.prototype.editors = {
+
+ //input element
+ input: function input(cell, onRendered, success, cancel, editorParams) {
+
+ //create and style input
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", editorParams.search ? "search" : "text");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = typeof cellValue !== "undefined" ? cellValue : "";
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange(e) {
+ if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+ success(input.value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur or change
+ input.addEventListener("change", onChange);
+ input.addEventListener("blur", onChange);
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ success(input.value);
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //resizable text area element
+ textarea: function textarea(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellValue = cell.getValue(),
+ value = String(cellValue !== null && typeof cellValue !== "undefined" ? cellValue : ""),
+ count = (value.match(/(?:\r\n|\r|\n)/g) || []).length + 1,
+ input = document.createElement("textarea"),
+ scrollHeight = 0;
+
+ //create and style input
+ input.style.display = "block";
+ input.style.padding = "2px";
+ input.style.height = "100%";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+ input.style.whiteSpace = "pre-wrap";
+ input.style.resize = "none";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = value;
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange(e) {
+
+ if ((cellValue === null || typeof cellValue === "undefined") && input.value !== "" || input.value != cellValue) {
+ success(input.value);
+ setTimeout(function () {
+ cell.getRow().normalizeHeight();
+ }, 300);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur or change
+ input.addEventListener("change", onChange);
+ input.addEventListener("blur", onChange);
+
+ input.addEventListener("keyup", function () {
+
+ input.style.height = "";
+
+ var heightNow = input.scrollHeight;
+
+ input.style.height = heightNow + "px";
+
+ if (heightNow != scrollHeight) {
+ scrollHeight = heightNow;
+ cell.getRow().normalizeHeight();
+ }
+ });
+
+ input.addEventListener("keydown", function (e) {
+ if (e.keyCode == 27) {
+ cancel();
+ }
+ });
+
+ return input;
+ },
+
+ //input element with type of number
+ number: function number(cell, onRendered, success, cancel, editorParams) {
+
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", "number");
+
+ if (typeof editorParams.max != "undefined") {
+ input.setAttribute("max", editorParams.max);
+ }
+
+ if (typeof editorParams.min != "undefined") {
+ input.setAttribute("min", editorParams.min);
+ }
+
+ if (typeof editorParams.step != "undefined") {
+ input.setAttribute("step", editorParams.step);
+ }
+
+ //create and style input
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = cellValue;
+
+ var blurFunc = function blurFunc(e) {
+ onChange();
+ };
+
+ onRendered(function () {
+ //submit new value on blur
+ input.removeEventListener("blur", blurFunc);
+
+ input.focus();
+ input.style.height = "100%";
+
+ //submit new value on blur
+ input.addEventListener("blur", blurFunc);
+ });
+
+ function onChange() {
+ var value = input.value;
+
+ if (!isNaN(value) && value !== "") {
+ value = Number(value);
+ }
+
+ if (value != cellValue) {
+ success(value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ // case 9:
+ onChange();
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //input element with type of number
+ range: function range(cell, onRendered, success, cancel, editorParams) {
+
+ var cellValue = cell.getValue(),
+ input = document.createElement("input");
+
+ input.setAttribute("type", "range");
+
+ if (typeof editorParams.max != "undefined") {
+ input.setAttribute("max", editorParams.max);
+ }
+
+ if (typeof editorParams.min != "undefined") {
+ input.setAttribute("min", editorParams.min);
+ }
+
+ if (typeof editorParams.step != "undefined") {
+ input.setAttribute("step", editorParams.step);
+ }
+
+ //create and style input
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = cellValue;
+
+ onRendered(function () {
+ input.focus();
+ input.style.height = "100%";
+ });
+
+ function onChange() {
+ var value = input.value;
+
+ if (!isNaN(value) && value !== "") {
+ value = Number(value);
+ }
+
+ if (value != cellValue) {
+ success(value);
+ } else {
+ cancel();
+ }
+ }
+
+ //submit new value on blur
+ input.addEventListener("blur", function (e) {
+ onChange();
+ });
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 13:
+ case 9:
+ onChange();
+ break;
+
+ case 27:
+ cancel();
+ break;
+ }
+ });
+
+ return input;
+ },
+
+ //select
+ select: function select(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellEl = cell.getElement(),
+ initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+ input = document.createElement("input"),
+ listEl = document.createElement("div"),
+ dataItems = [],
+ displayItems = [],
+ currentItem = {},
+ blurable = true;
+
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+ if (Array.isArray(editorParams) || !Array.isArray(editorParams) && (typeof editorParams === 'undefined' ? 'undefined' : _typeof(editorParams)) === "object" && !editorParams.values) {
+ console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object");
+ editorParams = { values: editorParams };
+ }
+
+ function getUniqueColumnValues(field) {
+ var output = {},
+ data = self.table.getData(),
+ column;
+
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
+
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
+
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
+ } else {
+ output = Object.keys(output);
+ }
+ } else {
+ console.warn("unable to find matching column to create select lookup list:", field);
+ }
+
+ return output;
+ }
+
+ function parseItems(inputValues, curentValue) {
+ var dataList = [];
+ var displayList = [];
+
+ function processComplexListItem(item) {
+ var item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(item.value, item.label) : item.label,
+ value: item.value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+
+ return item;
+ }
+
+ if (typeof inputValues == "function") {
+ inputValues = inputValues(cell);
+ }
+
+ if (Array.isArray(inputValues)) {
+ inputValues.forEach(function (value) {
+ var item;
+
+ if ((typeof value === 'undefined' ? 'undefined' : _typeof(value)) === "object") {
+
+ if (value.options) {
+ item = {
+ label: value.label,
+ group: true,
+ element: false
+ };
+
+ displayList.push(item);
+
+ value.options.forEach(function (item) {
+ processComplexListItem(item);
+ });
+ } else {
+ processComplexListItem(value);
+ }
+ } else {
+
+ item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+ value: value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+ }
+ });
+ } else {
+ for (var key in inputValues) {
+ var item = {
+ label: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+ value: key,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ dataList.push(item);
+ displayList.push(item);
+ }
+ }
+
+ dataItems = dataList;
+ displayItems = displayList;
+
+ fillList();
+ }
+
+ function fillList() {
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }displayItems.forEach(function (item) {
+ var el = item.element;
+
+ if (!el) {
+
+ if (item.group) {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-group");
+ el.tabIndex = 0;
+ el.innerHTML = item.label === "" ? " " : item.label;
+ } else {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-item");
+ el.tabIndex = 0;
+ el.innerHTML = item.label === "" ? " " : item.label;
+
+ el.addEventListener("click", function () {
+ setCurrentItem(item);
+ chooseItem();
+ });
+
+ if (item === currentItem) {
+ el.classList.add("active");
+ }
+ }
+
+ el.addEventListener("mousedown", function () {
+ blurable = false;
+
+ setTimeout(function () {
+ blurable = true;
+ }, 10);
+ });
+
+ item.element = el;
+ }
+
+ listEl.appendChild(el);
+ });
+ }
+
+ function setCurrentItem(item) {
+
+ if (currentItem && currentItem.element) {
+ currentItem.element.classList.remove("active");
+ }
+
+ currentItem = item;
+ input.value = item.label === " " ? "" : item.label;
+
+ if (item.element) {
+ item.element.classList.add("active");
+ }
+ }
+
+ function chooseItem() {
+ hideList();
+
+ if (initialValue !== currentItem.value) {
+ initialValue = currentItem.value;
+ success(currentItem.value);
+ } else {
+ cancel();
+ }
+ }
+
+ function cancelItem() {
+ hideList();
+ cancel();
+ }
+
+ function showList() {
+ if (!listEl.parentNode) {
+
+ if (editorParams.values === true) {
+ parseItems(getUniqueColumnValues(), initialDisplayValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialDisplayValue);
+ } else {
+ parseItems(editorParams.values || [], initialDisplayValue);
+ }
+
+ var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+ listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+ listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+ listEl.style.left = offset.left + "px";
+ document.body.appendChild(listEl);
+ }
+ }
+
+ function hideList() {
+ if (listEl.parentNode) {
+ listEl.parentNode.removeChild(listEl);
+ }
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+ }
+
+ //style input
+ input.setAttribute("type", "text");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+ input.style.cursor = "default";
+ input.readOnly = this.currentCell != false;
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = typeof initialValue !== "undefined" || initialValue === null ? initialValue : "";
+
+ if (editorParams.values === true) {
+ parseItems(getUniqueColumnValues(), initialValue);
+ } else if (typeof editorParams.values === "string") {
+ parseItems(getUniqueColumnValues(editorParams.values), initialValue);
+ } else {
+ parseItems(editorParams.values || [], initialValue);
+ }
+
+ //allow key based navigation
+ input.addEventListener("keydown", function (e) {
+ var index;
+
+ switch (e.keyCode) {
+ case 38:
+ //up arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = dataItems.indexOf(currentItem);
+
+ if (index > 0) {
+ setCurrentItem(dataItems[index - 1]);
+ }
+ break;
+
+ case 40:
+ //down arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = dataItems.indexOf(currentItem);
+
+ if (index < dataItems.length - 1) {
+ if (index == -1) {
+ setCurrentItem(dataItems[0]);
+ } else {
+ setCurrentItem(dataItems[index + 1]);
+ }
+ }
+ break;
+
+ case 37: //left arrow
+ case 39:
+ //right arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+ break;
+
+ case 13:
+ //enter
+ chooseItem();
+ break;
+
+ case 27:
+ //escape
+ cancelItem();
+ break;
+ }
+ });
+
+ input.addEventListener("blur", function (e) {
+ if (blurable) {
+ cancelItem();
+ }
+ });
+
+ input.addEventListener("focus", function (e) {
+ showList();
+ });
+
+ //style list element
+ listEl = document.createElement("div");
+ listEl.classList.add("tabulator-edit-select-list");
+
+ onRendered(function () {
+ input.style.height = "100%";
+ input.focus();
+ });
+
+ return input;
+ },
+
+ //autocomplete
+ autocomplete: function autocomplete(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ cellEl = cell.getElement(),
+ initialValue = cell.getValue(),
+ initialDisplayValue = typeof initialValue !== "undefined" || initialValue === null ? initialValue : typeof editorParams.defaultValue !== "undefined" ? editorParams.defaultValue : "",
+ input = document.createElement("input"),
+ listEl = document.createElement("div"),
+ allItems = [],
+ displayItems = [],
+ values = [],
+ currentItem = {},
+ blurable = true;
+
+ this.table.rowManager.element.addEventListener("scroll", cancelItem);
+
+ function getUniqueColumnValues(field) {
+ var output = {},
+ data = self.table.getData(),
+ column;
+
+ if (field) {
+ column = self.table.columnManager.getColumnByField(field);
+ } else {
+ column = cell.getColumn()._getSelf();
+ }
+
+ if (column) {
+ data.forEach(function (row) {
+ var val = column.getFieldValue(row);
+
+ if (val !== null && typeof val !== "undefined" && val !== "") {
+ output[val] = true;
+ }
+ });
+
+ if (editorParams.sortValuesList) {
+ if (editorParams.sortValuesList == "asc") {
+ output = Object.keys(output).sort();
+ } else {
+ output = Object.keys(output).sort().reverse();
+ }
+ } else {
+ output = Object.keys(output);
+ }
+ } else {
+ console.warn("unable to find matching column to create autocomplete lookup list:", field);
+ }
+
+ return output;
+ }
+
+ function parseItems(inputValues, curentValue) {
+ var itemList = [];
+
+ if (Array.isArray(inputValues)) {
+ inputValues.forEach(function (value) {
+ var item = {
+ title: editorParams.listItemFormatter ? editorParams.listItemFormatter(value, value) : value,
+ value: value,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ itemList.push(item);
+ });
+ } else {
+ for (var key in inputValues) {
+ var item = {
+ title: editorParams.listItemFormatter ? editorParams.listItemFormatter(key, inputValues[key]) : inputValues[key],
+ value: key,
+ element: false
+ };
+
+ if (item.value === curentValue || !isNaN(parseFloat(item.value)) && !isNaN(parseFloat(item.value)) && parseFloat(item.value) === parseFloat(curentValue)) {
+ setCurrentItem(item);
+ }
+
+ itemList.push(item);
+ }
+ }
+
+ if (editorParams.searchFunc) {
+ itemList.forEach(function (item) {
+ item.search = {
+ title: item.title,
+ value: item.value
+ };
+ });
+ }
+
+ allItems = itemList;
+ }
+
+ function filterList(term, intialLoad) {
+ var matches = [],
+ searchObjs = [],
+ searchResults = [];
+
+ if (editorParams.searchFunc) {
+
+ allItems.forEach(function (item) {
+ searchObjs.push(item.search);
+ });
+
+ searchResults = editorParams.searchFunc(term, searchObjs);
+
+ searchResults.forEach(function (result) {
+ var match = allItems.find(function (item) {
+ return item.search === result;
+ });
+
+ if (match) {
+ matches.push(match);
+ }
+ });
+ } else {
+ if (term === "") {
+
+ if (editorParams.showListOnEmpty) {
+ allItems.forEach(function (item) {
+ matches.push(item);
+ });
+ }
+ } else {
+ allItems.forEach(function (item) {
+
+ if (item.value !== null || typeof item.value !== "undefined") {
+ if (String(item.value).toLowerCase().indexOf(String(term).toLowerCase()) > -1 || String(item.title).toLowerCase().indexOf(String(term).toLowerCase()) > -1) {
+ matches.push(item);
+ }
+ }
+ });
+ }
+ }
+
+ displayItems = matches;
+
+ fillList(intialLoad);
+ }
+
+ function fillList(intialLoad) {
+ var current = false;
+
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }displayItems.forEach(function (item) {
+ var el = item.element;
+
+ if (!el) {
+ el = document.createElement("div");
+ el.classList.add("tabulator-edit-select-list-item");
+ el.tabIndex = 0;
+ el.innerHTML = item.title;
+
+ el.addEventListener("click", function () {
+ setCurrentItem(item);
+ chooseItem();
+ });
+
+ el.addEventListener("mousedown", function () {
+ blurable = false;
+
+ setTimeout(function () {
+ blurable = true;
+ }, 10);
+ });
+
+ item.element = el;
+
+ if (intialLoad && item.value == initialValue) {
+ input.value = item.title;
+ item.element.classList.add("active");
+ current = true;
+ }
+
+ if (item === currentItem) {
+ item.element.classList.add("active");
+ current = true;
+ }
+ }
+
+ listEl.appendChild(el);
+ });
+
+ if (!current) {
+ setCurrentItem(false);
+ }
+ }
+
+ function setCurrentItem(item, showInputValue) {
+ if (currentItem && currentItem.element) {
+ currentItem.element.classList.remove("active");
+ }
+
+ currentItem = item;
+
+ if (item && item.element) {
+ item.element.classList.add("active");
+ }
+ }
+
+ function chooseItem() {
+ hideList();
+
+ if (currentItem) {
+ if (initialValue !== currentItem.value) {
+ initialValue = currentItem.value;
+ input.value = currentItem.title;
+ success(currentItem.value);
+ } else {
+ cancel();
+ }
+ } else {
+ if (editorParams.freetext) {
+ initialValue = input.value;
+ success(input.value);
+ } else {
+ if (editorParams.allowEmpty && input.value === "") {
+ initialValue = input.value;
+ success(input.value);
+ } else {
+ cancel();
+ }
+ }
+ }
+ }
+
+ function cancelItem() {
+ hideList();
+ cancel();
+ }
+
+ function showList() {
+ if (!listEl.parentNode) {
+ while (listEl.firstChild) {
+ listEl.removeChild(listEl.firstChild);
+ }if (editorParams.values === true) {
+ values = getUniqueColumnValues();
+ } else if (typeof editorParams.values === "string") {
+ values = getUniqueColumnValues(editorParams.values);
+ } else {
+ values = editorParams.values || [];
+ }
+
+ parseItems(values, initialValue);
+
+ var offset = Tabulator.prototype.helpers.elOffset(cellEl);
+
+ listEl.style.minWidth = cellEl.offsetWidth + "px";
+
+ listEl.style.top = offset.top + cellEl.offsetHeight + "px";
+ listEl.style.left = offset.left + "px";
+ document.body.appendChild(listEl);
+ }
+ }
+
+ function hideList() {
+ if (listEl.parentNode) {
+ listEl.parentNode.removeChild(listEl);
+ }
+
+ removeScrollListener();
+ }
+
+ function removeScrollListener() {
+ self.table.rowManager.element.removeEventListener("scroll", cancelItem);
+ }
+
+ //style input
+ input.setAttribute("type", "search");
+
+ input.style.padding = "4px";
+ input.style.width = "100%";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //allow key based navigation
+ input.addEventListener("keydown", function (e) {
+ var index;
+
+ switch (e.keyCode) {
+ case 38:
+ //up arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = displayItems.indexOf(currentItem);
+
+ if (index > 0) {
+ setCurrentItem(displayItems[index - 1]);
+ } else {
+ setCurrentItem(false);
+ }
+ break;
+
+ case 40:
+ //down arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+
+ index = displayItems.indexOf(currentItem);
+
+ if (index < displayItems.length - 1) {
+ if (index == -1) {
+ setCurrentItem(displayItems[0]);
+ } else {
+ setCurrentItem(displayItems[index + 1]);
+ }
+ }
+ break;
+
+ case 37: //left arrow
+ case 39:
+ //right arrow
+ e.stopImmediatePropagation();
+ e.stopPropagation();
+ e.preventDefault();
+ break;
+
+ case 13:
+ //enter
+ chooseItem();
+ break;
+
+ case 27:
+ //escape
+ cancelItem();
+ break;
+
+ case 36: //home
+ case 35:
+ //end
+ //prevent table navigation while using input element
+ e.stopImmediatePropagation();
+ break;
+ }
+ });
+
+ input.addEventListener("keyup", function (e) {
+
+ switch (e.keyCode) {
+ case 38: //up arrow
+ case 37: //left arrow
+ case 39: //up arrow
+ case 40: //right arrow
+ case 13: //enter
+ case 27:
+ //escape
+ break;
+
+ default:
+ filterList(input.value);
+ }
+ });
+
+ input.addEventListener("search", function (e) {
+ filterList(input.value);
+ });
+
+ input.addEventListener("blur", function (e) {
+ if (blurable) {
+ chooseItem();
+ }
+ });
+
+ input.addEventListener("focus", function (e) {
+ var value = initialDisplayValue;
+ showList();
+ input.value = value;
+ filterList(value, true);
+ });
+
+ //style list element
+ listEl = document.createElement("div");
+ listEl.classList.add("tabulator-edit-select-list");
+
+ onRendered(function () {
+ input.style.height = "100%";
+ input.focus();
+ });
+
+ return input;
+ },
+
+ //start rating
+ star: function star(cell, onRendered, success, cancel, editorParams) {
+ var self = this,
+ element = cell.getElement(),
+ value = cell.getValue(),
+ maxStars = element.getElementsByTagName("svg").length || 5,
+ size = element.getElementsByTagName("svg")[0] ? element.getElementsByTagName("svg")[0].getAttribute("width") : 14,
+ stars = [],
+ starsHolder = document.createElement("div"),
+ star = document.createElementNS('http://www.w3.org/2000/svg', "svg");
+
+ //change star type
+ function starChange(val) {
+ stars.forEach(function (star, i) {
+ if (i < val) {
+ if (self.table.browser == "ie") {
+ star.setAttribute("class", "tabulator-star-active");
+ } else {
+ star.classList.replace("tabulator-star-inactive", "tabulator-star-active");
+ }
+
+ star.innerHTML = '<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+ } else {
+ if (self.table.browser == "ie") {
+ star.setAttribute("class", "tabulator-star-inactive");
+ } else {
+ star.classList.replace("tabulator-star-active", "tabulator-star-inactive");
+ }
+
+ star.innerHTML = '<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+ }
+ });
+ }
+
+ //build stars
+ function buildStar(i) {
+
+ var starHolder = document.createElement("span");
+ var nextStar = star.cloneNode(true);
+
+ stars.push(nextStar);
+
+ starHolder.addEventListener("mouseenter", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ starChange(i);
+ });
+
+ starHolder.addEventListener("mousemove", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ });
+
+ starHolder.addEventListener("click", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ success(i);
+ });
+
+ starHolder.appendChild(nextStar);
+ starsHolder.appendChild(starHolder);
+ }
+
+ //handle keyboard navigation value change
+ function changeValue(val) {
+ value = val;
+ starChange(val);
+ }
+
+ //style cell
+ element.style.whiteSpace = "nowrap";
+ element.style.overflow = "hidden";
+ element.style.textOverflow = "ellipsis";
+
+ //style holding element
+ starsHolder.style.verticalAlign = "middle";
+ starsHolder.style.display = "inline-block";
+ starsHolder.style.padding = "4px";
+
+ //style star
+ star.setAttribute("width", size);
+ star.setAttribute("height", size);
+ star.setAttribute("viewBox", "0 0 512 512");
+ star.setAttribute("xml:space", "preserve");
+ star.style.padding = "0 1px";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ starsHolder.setAttribute(key, starsHolder.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ starsHolder.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //create correct number of stars
+ for (var i = 1; i <= maxStars; i++) {
+ buildStar(i);
+ }
+
+ //ensure value does not exceed number of stars
+ value = Math.min(parseInt(value), maxStars);
+
+ // set initial styling of stars
+ starChange(value);
+
+ starsHolder.addEventListener("mousemove", function (e) {
+ starChange(0);
+ });
+
+ starsHolder.addEventListener("click", function (e) {
+ success(0);
+ });
+
+ element.addEventListener("blur", function (e) {
+ cancel();
+ });
+
+ //allow key based navigation
+ element.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 39:
+ //right arrow
+ changeValue(value + 1);
+ break;
+
+ case 37:
+ //left arrow
+ changeValue(value - 1);
+ break;
+
+ case 13:
+ //enter
+ success(value);
+ break;
+
+ case 27:
+ //escape
+ cancel();
+ break;
+ }
+ });
+
+ return starsHolder;
+ },
+
+ //draggable progress bar
+ progress: function progress(cell, onRendered, success, cancel, editorParams) {
+ var element = cell.getElement(),
+ max = typeof editorParams.max === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("max") || 100 : editorParams.max,
+ min = typeof editorParams.min === "undefined" ? element.getElementsByTagName("div")[0].getAttribute("min") || 0 : editorParams.min,
+ percent = (max - min) / 100,
+ value = cell.getValue() || 0,
+ handle = document.createElement("div"),
+ bar = document.createElement("div"),
+ mouseDrag,
+ mouseDragWidth;
+
+ //set new value
+ function updateValue() {
+ var calcVal = percent * Math.round(bar.offsetWidth / (element.clientWidth / 100)) + min;
+ success(calcVal);
+ element.setAttribute("aria-valuenow", calcVal);
+ element.setAttribute("aria-label", value);
+ }
+
+ //style handle
+ handle.style.position = "absolute";
+ handle.style.right = "0";
+ handle.style.top = "0";
+ handle.style.bottom = "0";
+ handle.style.width = "5px";
+ handle.classList.add("tabulator-progress-handle");
+
+ //style bar
+ bar.style.display = "inline-block";
+ bar.style.position = "relative";
+ // bar.style.top = "8px";
+ // bar.style.bottom = "8px";
+ // bar.style.left = "4px";
+ // bar.style.marginRight = "4px";
+ bar.style.height = "100%";
+ bar.style.backgroundColor = "#488CE9";
+ bar.style.maxWidth = "100%";
+ bar.style.minWidth = "0%";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ bar.setAttribute(key, bar.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ bar.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ //style cell
+ element.style.padding = "4px 4px";
+
+ //make sure value is in range
+ value = Math.min(parseFloat(value), max);
+ value = Math.max(parseFloat(value), min);
+
+ //workout percentage
+ value = Math.round((value - min) / percent);
+ // bar.style.right = value + "%";
+ bar.style.width = value + "%";
+
+ element.setAttribute("aria-valuemin", min);
+ element.setAttribute("aria-valuemax", max);
+
+ bar.appendChild(handle);
+
+ handle.addEventListener("mousedown", function (e) {
+ mouseDrag = e.screenX;
+ mouseDragWidth = bar.offsetWidth;
+ });
+
+ handle.addEventListener("mouseover", function () {
+ handle.style.cursor = "ew-resize";
+ });
+
+ element.addEventListener("mousemove", function (e) {
+ if (mouseDrag) {
+ bar.style.width = mouseDragWidth + e.screenX - mouseDrag + "px";
+ }
+ });
+
+ element.addEventListener("mouseup", function (e) {
+ if (mouseDrag) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+
+ mouseDrag = false;
+ mouseDragWidth = false;
+
+ updateValue();
+ }
+ });
+
+ //allow key based navigation
+ element.addEventListener("keydown", function (e) {
+ switch (e.keyCode) {
+ case 39:
+ //right arrow
+ bar.style.width = bar.clientWidth + element.clientWidth / 100 + "px";
+ break;
+
+ case 37:
+ //left arrow
+ bar.style.width = bar.clientWidth - element.clientWidth / 100 + "px";
+ break;
+
+ case 13:
+ //enter
+ updateValue();
+ break;
+
+ case 27:
+ //escape
+ cancel();
+ break;
+
+ }
+ });
+
+ element.addEventListener("blur", function () {
+ cancel();
+ });
+
+ return bar;
+ },
+
+ //checkbox
+ tickCross: function tickCross(cell, onRendered, success, cancel, editorParams) {
+ var value = cell.getValue(),
+ input = document.createElement("input"),
+ tristate = editorParams.tristate,
+ indetermValue = typeof editorParams.indeterminateValue === "undefined" ? null : editorParams.indeterminateValue,
+ indetermState = false;
+
+ input.setAttribute("type", "checkbox");
+ input.style.marginTop = "5px";
+ input.style.boxSizing = "border-box";
+
+ if (editorParams.elementAttributes && _typeof(editorParams.elementAttributes) == "object") {
+ for (var key in editorParams.elementAttributes) {
+ if (key.charAt(0) == "+") {
+ key = key.slice(1);
+ input.setAttribute(key, input.getAttribute(key) + editorParams.elementAttributes["+" + key]);
+ } else {
+ input.setAttribute(key, editorParams.elementAttributes[key]);
+ }
+ }
+ }
+
+ input.value = value;
+
+ if (tristate && (typeof value === "undefined" || value === indetermValue || value === "")) {
+ indetermState = true;
+ input.indeterminate = true;
+ }
+
+ if (this.table.browser != "firefox") {
+ //prevent blur issue on mac firefox
+ onRendered(function () {
+ input.focus();
+ });
+ }
+
+ input.checked = value === true || value === "true" || value === "True" || value === 1;
+
+ function setValue(blur) {
+ if (tristate) {
+ if (!blur) {
+ if (input.checked && !indetermState) {
+ input.checked = false;
+ input.indeterminate = true;
+ indetermState = true;
+ return indetermValue;
+ } else {
+ indetermState = false;
+ return input.checked;
+ }
+ } else {
+ if (indetermState) {
+ return indetermValue;
+ } else {
+ return input.checked;
+ }
+ }
+ } else {
+ return input.checked;
+ }
+ }
+
+ //submit new value on blur
+ input.addEventListener("change", function (e) {
+ success(setValue());
+ });
+
+ input.addEventListener("blur", function (e) {
+ success(setValue(true));
+ });
+
+ //submit new value on enter
+ input.addEventListener("keydown", function (e) {
+ if (e.keyCode == 13) {
+ success(setValue());
+ }
+ if (e.keyCode == 27) {
+ cancel();
+ }
+ });
+
+ return input;
+ }
+ };
+
+ Tabulator.prototype.registerModule("edit", Edit);
+
+ var Filter = function Filter(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.filterList = []; //hold filter list
+ this.headerFilters = {}; //hold column filters
+ this.headerFilterElements = []; //hold header filter elements for manipulation
+ this.headerFilterColumns = []; //hold columns that use header filters
+
+ this.changed = false; //has filtering changed since last render
+ };
+
+ //initialize column header filter
+ Filter.prototype.initializeColumn = function (column, value) {
+ var self = this,
+ field = column.getField(),
+ params;
+
+ //handle successfull value change
+ function success(value) {
+ var filterType = column.modules.filter.tagType == "input" && column.modules.filter.attrType == "text" || column.modules.filter.tagType == "textarea" ? "partial" : "match",
+ type = "",
+ filterFunc;
+
+ if (typeof column.modules.filter.prevSuccess === "undefined" || column.modules.filter.prevSuccess !== value) {
+
+ column.modules.filter.prevSuccess = value;
+
+ if (!column.modules.filter.emptyFunc(value)) {
+ column.modules.filter.value = value;
+
+ switch (_typeof(column.definition.headerFilterFunc)) {
+ case "string":
+ if (self.filters[column.definition.headerFilterFunc]) {
+ type = column.definition.headerFilterFunc;
+ filterFunc = function filterFunc(data) {
+ var params = column.definition.headerFilterFuncParams || {};
+ var fieldVal = column.getFieldValue(data);
+
+ params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+ return self.filters[column.definition.headerFilterFunc](value, fieldVal, data, params);
+ };
+ } else {
+ console.warn("Header Filter Error - Matching filter function not found: ", column.definition.headerFilterFunc);
+ }
+ break;
+
+ case "function":
+ filterFunc = function filterFunc(data) {
+ var params = column.definition.headerFilterFuncParams || {};
+ var fieldVal = column.getFieldValue(data);
+
+ params = typeof params === "function" ? params(value, fieldVal, data) : params;
+
+ return column.definition.headerFilterFunc(value, fieldVal, data, params);
+ };
+
+ type = filterFunc;
+ break;
+ }
+
+ if (!filterFunc) {
+ switch (filterType) {
+ case "partial":
+ filterFunc = function filterFunc(data) {
+ var colVal = column.getFieldValue(data);
+
+ if (typeof colVal !== 'undefined' && colVal !== null) {
+ return String(colVal).toLowerCase().indexOf(String(value).toLowerCase()) > -1;
+ } else {
+ return false;
+ }
+ };
+ type = "like";
+ break;
+
+ default:
+ filterFunc = function filterFunc(data) {
+ return column.getFieldValue(data) == value;
+ };
+ type = "=";
+ }
+ }
+
+ self.headerFilters[field] = { value: value, func: filterFunc, type: type };
+ } else {
+ delete self.headerFilters[field];
+ }
+
+ self.changed = true;
+
+ self.table.rowManager.filterRefresh();
+ }
+ }
+
+ column.modules.filter = {
+ success: success,
+ attrType: false,
+ tagType: false,
+ emptyFunc: false
+ };
+
+ this.generateHeaderFilterElement(column);
+ };
+
+ Filter.prototype.generateHeaderFilterElement = function (column, initialValue) {
+ var _this35 = this;
+
+ var self = this,
+ success = column.modules.filter.success,
+ field = column.getField(),
+ filterElement,
+ editor,
+ editorElement,
+ cellWrapper,
+ typingTimer,
+ searchTrigger,
+ params;
+
+ //handle aborted edit
+ function cancel() {}
+
+ if (column.modules.filter.headerElement && column.modules.filter.headerElement.parentNode) {
+ var oldFilterElement = column.modules.filter.headerElement.parentNode;
+ var oldFilterElementIndex = self.headerFilterElements.indexOf(oldFilterElement);
+ if (oldFilterElementIndex >= 0) {
+ self.headerFilterElements.splice(oldFilterElementIndex, 1);
+ }
+
+ var oldColumnIndex = self.headerFilterColumns.indexOf(oldColumnIndex);
+ if (oldColumnIndex >= 0) {
+ self.headerFilterColumns.splice(oldColumnIndex, 1);
+ }
+
+ column.contentElement.removeChild(oldFilterElement);
+ }
+
+ if (field) {
+
+ //set empty value function
+ column.modules.filter.emptyFunc = column.definition.headerFilterEmptyCheck || function (value) {
+ return !value && value !== "0";
+ };
+
+ filterElement = document.createElement("div");
+ filterElement.classList.add("tabulator-header-filter");
+
+ //set column editor
+ switch (_typeof(column.definition.headerFilter)) {
+ case "string":
+ if (self.table.modules.edit.editors[column.definition.headerFilter]) {
+ editor = self.table.modules.edit.editors[column.definition.headerFilter];
+
+ if ((column.definition.headerFilter === "tick" || column.definition.headerFilter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+ column.modules.filter.emptyFunc = function (value) {
+ return value !== true && value !== false;
+ };
+ }
+ } else {
+ console.warn("Filter Error - Cannot build header filter, No such editor found: ", column.definition.editor);
+ }
+ break;
+
+ case "function":
+ editor = column.definition.headerFilter;
+ break;
+
+ case "boolean":
+ if (column.modules.edit && column.modules.edit.editor) {
+ editor = column.modules.edit.editor;
+ } else {
+ if (column.definition.formatter && self.table.modules.edit.editors[column.definition.formatter]) {
+ editor = self.table.modules.edit.editors[column.definition.formatter];
+
+ if ((column.definition.formatter === "tick" || column.definition.formatter === "tickCross") && !column.definition.headerFilterEmptyCheck) {
+ column.modules.filter.emptyFunc = function (value) {
+ return value !== true && value !== false;
+ };
+ }
+ } else {
+ editor = self.table.modules.edit.editors["input"];
+ }
+ }
+ break;
+ }
+
+ if (editor) {
+
+ cellWrapper = {
+ getValue: function getValue() {
+ return typeof initialValue !== "undefined" ? initialValue : "";
+ },
+ getField: function getField() {
+ return column.definition.field;
+ },
+ getElement: function getElement() {
+ return filterElement;
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ },
+ getRow: function getRow() {
+ return {
+ normalizeHeight: function normalizeHeight() {}
+ };
+ }
+ };
+
+ params = column.definition.headerFilterParams || {};
+
+ params = typeof params === "function" ? params.call(self.table) : params;
+
+ editorElement = editor.call(this.table.modules.edit, cellWrapper, function () {}, success, cancel, params);
+
+ if (!editorElement) {
+ console.warn("Filter Error - Cannot add filter to " + field + " column, editor returned a value of false");
+ return;
+ }
+
+ if (!(editorElement instanceof Node)) {
+ console.warn("Filter Error - Cannot add filter to " + field + " column, editor should return an instance of Node, the editor returned:", editorElement);
+ return;
+ }
+
+ //set Placeholder Text
+ if (field) {
+ self.table.modules.localize.bind("headerFilters|columns|" + column.definition.field, function (value) {
+ editorElement.setAttribute("placeholder", typeof value !== "undefined" && value ? value : self.table.modules.localize.getText("headerFilters|default"));
+ });
+ } else {
+ self.table.modules.localize.bind("headerFilters|default", function (value) {
+ editorElement.setAttribute("placeholder", typeof self.column.definition.headerFilterPlaceholder !== "undefined" && self.column.definition.headerFilterPlaceholder ? self.column.definition.headerFilterPlaceholder : value);
+ });
+ }
+
+ //focus on element on click
+ editorElement.addEventListener("click", function (e) {
+ e.stopPropagation();
+ editorElement.focus();
+ });
+
+ editorElement.addEventListener("focus", function (e) {
+ var left = _this35.table.columnManager.element.scrollLeft;
+
+ if (left !== _this35.table.rowManager.element.scrollLeft) {
+ _this35.table.rowManager.scrollHorizontal(left);
+ _this35.table.columnManager.scrollHorizontal(left);
+ }
+ });
+
+ //live update filters as user types
+ typingTimer = false;
+
+ searchTrigger = function searchTrigger(e) {
+ if (typingTimer) {
+ clearTimeout(typingTimer);
+ }
+
+ typingTimer = setTimeout(function () {
+ success(editorElement.value);
+ }, 300);
+ };
+
+ column.modules.filter.headerElement = editorElement;
+ column.modules.filter.attrType = editorElement.hasAttribute("type") ? editorElement.getAttribute("type").toLowerCase() : "";
+ column.modules.filter.tagType = editorElement.tagName.toLowerCase();
+
+ if (column.definition.headerFilterLiveFilter !== false) {
+
+ if (!(column.definition.headerFilter === 'autocomplete' || column.definition.headerFilter === 'tickCross' || (column.definition.editor === 'autocomplete' || column.definition.editor === 'tickCross') && column.definition.headerFilter === true)) {
+ editorElement.addEventListener("keyup", searchTrigger);
+ editorElement.addEventListener("search", searchTrigger);
+
+ //update number filtered columns on change
+ if (column.modules.filter.attrType == "number") {
+ editorElement.addEventListener("change", function (e) {
+ success(editorElement.value);
+ });
+ }
+
+ //change text inputs to search inputs to allow for clearing of field
+ if (column.modules.filter.attrType == "text" && this.table.browser !== "ie") {
+ editorElement.setAttribute("type", "search");
+ // editorElement.off("change blur"); //prevent blur from triggering filter and preventing selection click
+ }
+ }
+
+ //prevent input and select elements from propegating click to column sorters etc
+ if (column.modules.filter.tagType == "input" || column.modules.filter.tagType == "select" || column.modules.filter.tagType == "textarea") {
+ editorElement.addEventListener("mousedown", function (e) {
+ e.stopPropagation();
+ });
+ }
+ }
+
+ filterElement.appendChild(editorElement);
+
+ column.contentElement.appendChild(filterElement);
+
+ self.headerFilterElements.push(editorElement);
+ self.headerFilterColumns.push(column);
+ }
+ } else {
+ console.warn("Filter Error - Cannot add header filter, column has no field set:", column.definition.title);
+ }
+ };
+
+ //hide all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+ Filter.prototype.hideHeaderFilterElements = function () {
+ this.headerFilterElements.forEach(function (element) {
+ element.style.display = 'none';
+ });
+ };
+
+ //show all header filter elements (used to ensure correct column widths in "fitData" layout mode)
+ Filter.prototype.showHeaderFilterElements = function () {
+ this.headerFilterElements.forEach(function (element) {
+ element.style.display = '';
+ });
+ };
+
+ //programatically set value of header filter
+ Filter.prototype.setHeaderFilterFocus = function (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ column.modules.filter.headerElement.focus();
+ } else {
+ console.warn("Column Filter Focus Error - No header filter set on column:", column.getField());
+ }
+ };
+
+ //programatically set value of header filter
+ Filter.prototype.setHeaderFilterValue = function (column, value) {
+ if (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ this.generateHeaderFilterElement(column, value);
+ column.modules.filter.success(value);
+ } else {
+ console.warn("Column Filter Error - No header filter set on column:", column.getField());
+ }
+ }
+ };
+
+ Filter.prototype.reloadHeaderFilter = function (column) {
+ if (column) {
+ if (column.modules.filter && column.modules.filter.headerElement) {
+ this.generateHeaderFilterElement(column, column.modules.filter.value);
+ } else {
+ console.warn("Column Filter Error - No header filter set on column:", column.getField());
+ }
+ }
+ };
+
+ //check if the filters has changed since last use
+ Filter.prototype.hasChanged = function () {
+ var changed = this.changed;
+ this.changed = false;
+ return changed;
+ };
+
+ //set standard filters
+ Filter.prototype.setFilter = function (field, type, value) {
+ var self = this;
+
+ self.filterList = [];
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ self.addFilter(field);
+ };
+
+ //add filter to array
+ Filter.prototype.addFilter = function (field, type, value) {
+ var self = this;
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ self.filterList.push(filter);
+
+ self.changed = true;
+ }
+ });
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+ };
+
+ Filter.prototype.findFilter = function (filter) {
+ var self = this,
+ column;
+
+ if (Array.isArray(filter)) {
+ return this.findSubFilters(filter);
+ }
+
+ var filterFunc = false;
+
+ if (typeof filter.field == "function") {
+ filterFunc = function filterFunc(data) {
+ return filter.field(data, filter.type || {}); // pass params to custom filter function
+ };
+ } else {
+
+ if (self.filters[filter.type]) {
+
+ column = self.table.columnManager.getColumnByField(filter.field);
+
+ if (column) {
+ filterFunc = function filterFunc(data) {
+ return self.filters[filter.type](filter.value, column.getFieldValue(data));
+ };
+ } else {
+ filterFunc = function filterFunc(data) {
+ return self.filters[filter.type](filter.value, data[filter.field]);
+ };
+ }
+ } else {
+ console.warn("Filter Error - No such filter type found, ignoring: ", filter.type);
+ }
+ }
+
+ filter.func = filterFunc;
+
+ return filter.func ? filter : false;
+ };
+
+ Filter.prototype.findSubFilters = function (filters) {
+ var self = this,
+ output = [];
+
+ filters.forEach(function (filter) {
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ output.push(filter);
+ }
+ });
+
+ return output.length ? output : false;
+ };
+
+ //get all filters
+ Filter.prototype.getFilters = function (all, ajax) {
+ var output = [];
+
+ if (all) {
+ output = this.getHeaderFilters();
+ }
+
+ if (ajax) {
+ output.forEach(function (item) {
+ if (typeof item.type == "function") {
+ item.type = "function";
+ }
+ });
+ }
+
+ output = output.concat(this.filtersToArray(this.filterList, ajax));
+
+ return output;
+ };
+
+ //filter to Object
+ Filter.prototype.filtersToArray = function (filterList, ajax) {
+ var _this36 = this;
+
+ var output = [];
+
+ filterList.forEach(function (filter) {
+ var item;
+
+ if (Array.isArray(filter)) {
+ output.push(_this36.filtersToArray(filter, ajax));
+ } else {
+ item = { field: filter.field, type: filter.type, value: filter.value };
+
+ if (ajax) {
+ if (typeof item.type == "function") {
+ item.type = "function";
+ }
+ }
+
+ output.push(item);
+ }
+ });
+
+ return output;
+ };
+
+ //get all filters
+ Filter.prototype.getHeaderFilters = function () {
+ var self = this,
+ output = [];
+
+ for (var key in this.headerFilters) {
+ output.push({ field: key, type: this.headerFilters[key].type, value: this.headerFilters[key].value });
+ }
+
+ return output;
+ };
+
+ //remove filter from array
+ Filter.prototype.removeFilter = function (field, type, value) {
+ var self = this;
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+ var index = -1;
+
+ if (_typeof(filter.field) == "object") {
+ index = self.filterList.findIndex(function (element) {
+ return filter === element;
+ });
+ } else {
+ index = self.filterList.findIndex(function (element) {
+ return filter.field === element.field && filter.type === element.type && filter.value === element.value;
+ });
+ }
+
+ if (index > -1) {
+ self.filterList.splice(index, 1);
+ self.changed = true;
+ } else {
+ console.warn("Filter Error - No matching filter type found, ignoring: ", filter.type);
+ }
+ });
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+ };
+
+ //clear filters
+ Filter.prototype.clearFilter = function (all) {
+ this.filterList = [];
+
+ if (all) {
+ this.clearHeaderFilter();
+ }
+
+ this.changed = true;
+
+ if (this.table.options.persistentFilter && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("filter");
+ }
+ };
+
+ //clear header filters
+ Filter.prototype.clearHeaderFilter = function () {
+ var self = this;
+
+ this.headerFilters = {};
+
+ this.headerFilterColumns.forEach(function (column) {
+ column.modules.filter.value = null;
+ column.modules.filter.prevSuccess = undefined;
+ self.reloadHeaderFilter(column);
+ });
+
+ this.changed = true;
+ };
+
+ //search data and return matching rows
+ Filter.prototype.search = function (searchType, field, type, value) {
+ var self = this,
+ activeRows = [],
+ filterList = [];
+
+ if (!Array.isArray(field)) {
+ field = [{ field: field, type: type, value: value }];
+ }
+
+ field.forEach(function (filter) {
+ filter = self.findFilter(filter);
+
+ if (filter) {
+ filterList.push(filter);
+ }
+ });
+
+ this.table.rowManager.rows.forEach(function (row) {
+ var match = true;
+
+ filterList.forEach(function (filter) {
+ if (!self.filterRecurse(filter, row.getData())) {
+ match = false;
+ }
+ });
+
+ if (match) {
+ activeRows.push(searchType === "data" ? row.getData("data") : row.getComponent());
+ }
+ });
+
+ return activeRows;
+ };
+
+ //filter row array
+ Filter.prototype.filter = function (rowList, filters) {
+ var self = this,
+ activeRows = [],
+ activeRowComponents = [];
+
+ if (self.table.options.dataFiltering) {
+ self.table.options.dataFiltering.call(self.table, self.getFilters());
+ }
+
+ if (!self.table.options.ajaxFiltering && (self.filterList.length || Object.keys(self.headerFilters).length)) {
+
+ rowList.forEach(function (row) {
+ if (self.filterRow(row)) {
+ activeRows.push(row);
+ }
+ });
+ } else {
+ activeRows = rowList.slice(0);
+ }
+
+ if (self.table.options.dataFiltered) {
+
+ activeRows.forEach(function (row) {
+ activeRowComponents.push(row.getComponent());
+ });
+
+ self.table.options.dataFiltered.call(self.table, self.getFilters(), activeRowComponents);
+ }
+
+ return activeRows;
+ };
+
+ //filter individual row
+ Filter.prototype.filterRow = function (row, filters) {
+ var self = this,
+ match = true,
+ data = row.getData();
+
+ self.filterList.forEach(function (filter) {
+ if (!self.filterRecurse(filter, data)) {
+ match = false;
+ }
+ });
+
+ for (var field in self.headerFilters) {
+ if (!self.headerFilters[field].func(data)) {
+ match = false;
+ }
+ }
+
+ return match;
+ };
+
+ Filter.prototype.filterRecurse = function (filter, data) {
+ var self = this,
+ match = false;
+
+ if (Array.isArray(filter)) {
+ filter.forEach(function (subFilter) {
+ if (self.filterRecurse(subFilter, data)) {
+ match = true;
+ }
+ });
+ } else {
+ match = filter.func(data);
+ }
+
+ return match;
+ };
+
+ //list of available filters
+ Filter.prototype.filters = {
+
+ //equal to
+ "=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal == filterVal ? true : false;
+ },
+
+ //less than
+ "<": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal < filterVal ? true : false;
+ },
+
+ //less than or equal to
+ "<=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal <= filterVal ? true : false;
+ },
+
+ //greater than
+ ">": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal > filterVal ? true : false;
+ },
+
+ //greater than or equal to
+ ">=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal >= filterVal ? true : false;
+ },
+
+ //not equal to
+ "!=": function _(filterVal, rowVal, rowData, filterParams) {
+ return rowVal != filterVal ? true : false;
+ },
+
+ "regex": function regex(filterVal, rowVal, rowData, filterParams) {
+
+ if (typeof filterVal == "string") {
+ filterVal = new RegExp(filterVal);
+ }
+
+ return filterVal.test(rowVal);
+ },
+
+ //contains the string
+ "like": function like(filterVal, rowVal, rowData, filterParams) {
+ if (filterVal === null || typeof filterVal === "undefined") {
+ return rowVal === filterVal ? true : false;
+ } else {
+ if (typeof rowVal !== 'undefined' && rowVal !== null) {
+ return String(rowVal).toLowerCase().indexOf(filterVal.toLowerCase()) > -1;
+ } else {
+ return false;
+ }
+ }
+ },
+
+ //in array
+ "in": function _in(filterVal, rowVal, rowData, filterParams) {
+ if (Array.isArray(filterVal)) {
+ return filterVal.indexOf(rowVal) > -1;
+ } else {
+ console.warn("Filter Error - filter value is not an array:", filterVal);
+ return false;
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("filter", Filter);
+ var Format = function Format(table) {
+ this.table = table; //hold Tabulator object
+ };
+
+ //initialize column formatter
+ Format.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = { params: column.definition.formatterParams || {} };
+
+ //set column formatter
+ switch (_typeof(column.definition.formatter)) {
+ case "string":
+
+ if (column.definition.formatter === "tick") {
+ column.definition.formatter = "tickCross";
+
+ if (typeof config.params.crossElement == "undefined") {
+ config.params.crossElement = false;
+ }
+
+ console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false");
+ }
+
+ if (self.formatters[column.definition.formatter]) {
+ config.formatter = self.formatters[column.definition.formatter];
+ } else {
+ console.warn("Formatter Error - No such formatter found: ", column.definition.formatter);
+ config.formatter = self.formatters.plaintext;
+ }
+ break;
+
+ case "function":
+ config.formatter = column.definition.formatter;
+ break;
+
+ default:
+ config.formatter = self.formatters.plaintext;
+ break;
+ }
+
+ column.modules.format = config;
+ };
+
+ Format.prototype.cellRendered = function (cell) {
+ if (cell.column.modules.format.renderedCallback) {
+ cell.column.modules.format.renderedCallback();
+ }
+ };
+
+ //return a formatted value for a cell
+ Format.prototype.formatValue = function (cell) {
+ var component = cell.getComponent(),
+ params = typeof cell.column.modules.format.params === "function" ? cell.column.modules.format.params(component) : cell.column.modules.format.params;
+
+ function onRendered(callback) {
+ cell.column.modules.format.renderedCallback = callback;
+ }
+
+ return cell.column.modules.format.formatter.call(this, component, params, onRendered);
+ };
+
+ Format.prototype.sanitizeHTML = function (value) {
+ if (value) {
+ var entityMap = {
+ '&': '&',
+ '<': '<',
+ '>': '>',
+ '"': '"',
+ "'": ''',
+ '/': '/',
+ '`': '`',
+ '=': '='
+ };
+
+ return String(value).replace(/[&<>"'`=\/]/g, function (s) {
+ return entityMap[s];
+ });
+ } else {
+ return value;
+ }
+ };
+
+ Format.prototype.emptyToSpace = function (value) {
+ return value === null || typeof value === "undefined" ? " " : value;
+ };
+
+ //get formatter for cell
+ Format.prototype.getFormatter = function (formatter) {
+ var formatter;
+
+ switch (typeof formatter === 'undefined' ? 'undefined' : _typeof(formatter)) {
+ case "string":
+ if (this.formatters[formatter]) {
+ formatter = this.formatters[formatter];
+ } else {
+ console.warn("Formatter Error - No such formatter found: ", formatter);
+ formatter = this.formatters.plaintext;
+ }
+ break;
+
+ case "function":
+ formatter = formatter;
+ break;
+
+ default:
+ formatter = this.formatters.plaintext;
+ break;
+ }
+
+ return formatter;
+ };
+
+ //default data formatters
+ Format.prototype.formatters = {
+ //plain text value
+ plaintext: function plaintext(cell, formatterParams, onRendered) {
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ },
+
+ //html text value
+ html: function html(cell, formatterParams, onRendered) {
+ return cell.getValue();
+ },
+
+ //multiline text area
+ textarea: function textarea(cell, formatterParams, onRendered) {
+ cell.getElement().style.whiteSpace = "pre-wrap";
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ },
+
+ //currency formatting
+ money: function money(cell, formatterParams, onRendered) {
+ var floatVal = parseFloat(cell.getValue()),
+ number,
+ integer,
+ decimal,
+ rgx;
+
+ var decimalSym = formatterParams.decimal || ".";
+ var thousandSym = formatterParams.thousand || ",";
+ var symbol = formatterParams.symbol || "";
+ var after = !!formatterParams.symbolAfter;
+ var precision = typeof formatterParams.precision !== "undefined" ? formatterParams.precision : 2;
+
+ if (isNaN(floatVal)) {
+ return this.emptyToSpace(this.sanitizeHTML(cell.getValue()));
+ }
+
+ number = precision !== false ? floatVal.toFixed(precision) : floatVal;
+ number = String(number).split(".");
+
+ integer = number[0];
+ decimal = number.length > 1 ? decimalSym + number[1] : "";
+
+ rgx = /(\d+)(\d{3})/;
+
+ while (rgx.test(integer)) {
+ integer = integer.replace(rgx, "$1" + thousandSym + "$2");
+ }
+
+ return after ? integer + decimal + symbol : symbol + integer + decimal;
+ },
+
+ //clickable anchor tag
+ link: function link(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ urlPrefix = formatterParams.urlPrefix || "",
+ label = this.emptyToSpace(value),
+ el = document.createElement("a"),
+ data;
+
+ if (formatterParams.labelField) {
+ data = cell.getData();
+ label = data[formatterParams.labelField];
+ }
+
+ if (formatterParams.label) {
+ switch (_typeof(formatterParams.label)) {
+ case "string":
+ label = formatterParams.label;
+ break;
+
+ case "function":
+ label = formatterParams.label(cell);
+ break;
+ }
+ }
+
+ if (formatterParams.urlField) {
+ data = cell.getData();
+ value = data[formatterParams.urlField];
+ }
+
+ if (formatterParams.url) {
+ switch (_typeof(formatterParams.url)) {
+ case "string":
+ value = formatterParams.url;
+ break;
+
+ case "function":
+ value = formatterParams.url(cell);
+ break;
+ }
+ }
+
+ el.setAttribute("href", urlPrefix + value);
+
+ if (formatterParams.target) {
+ el.setAttribute("target", formatterParams.target);
+ }
+
+ el.innerHTML = this.emptyToSpace(this.sanitizeHTML(label));
+
+ return el;
+ },
+
+ //image element
+ image: function image(cell, formatterParams, onRendered) {
+ var el = document.createElement("img");
+ el.setAttribute("src", cell.getValue());
+
+ switch (_typeof(formatterParams.height)) {
+ case "number":
+ el.style.height = formatterParams.height + "px";
+ break;
+
+ case "string":
+ el.style.height = formatterParams.height;
+ break;
+ }
+
+ switch (_typeof(formatterParams.width)) {
+ case "number":
+ el.style.width = formatterParams.width + "px";
+ break;
+
+ case "string":
+ el.style.width = formatterParams.width;
+ break;
+ }
+
+ el.addEventListener("load", function () {
+ cell.getRow().normalizeHeight();
+ });
+
+ return el;
+ },
+
+ //tick or cross
+ tickCross: function tickCross(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ element = cell.getElement(),
+ empty = formatterParams.allowEmpty,
+ truthy = formatterParams.allowTruthy,
+ tick = typeof formatterParams.tickElement !== "undefined" ? formatterParams.tickElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',
+ cross = typeof formatterParams.crossElement !== "undefined" ? formatterParams.crossElement : '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+
+ if (truthy && value || value === true || value === "true" || value === "True" || value === 1 || value === "1") {
+ element.setAttribute("aria-checked", true);
+ return tick || "";
+ } else {
+ if (empty && (value === "null" || value === "" || value === null || typeof value === "undefined")) {
+ element.setAttribute("aria-checked", "mixed");
+ return "";
+ } else {
+ element.setAttribute("aria-checked", false);
+ return cross || "";
+ }
+ }
+ },
+
+ datetime: function datetime(cell, formatterParams, onRendered) {
+ var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+ var outputFormat = formatterParams.outputFormat || "DD/MM/YYYY hh:mm:ss";
+ var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+ var value = cell.getValue();
+
+ var newDatetime = moment(value, inputFormat);
+
+ if (newDatetime.isValid()) {
+ return newDatetime.format(outputFormat);
+ } else {
+
+ if (invalid === true) {
+ return value;
+ } else if (typeof invalid === "function") {
+ return invalid(value);
+ } else {
+ return invalid;
+ }
+ }
+ },
+
+ datetimediff: function datetime(cell, formatterParams, onRendered) {
+ var inputFormat = formatterParams.inputFormat || "YYYY-MM-DD hh:mm:ss";
+ var invalid = typeof formatterParams.invalidPlaceholder !== "undefined" ? formatterParams.invalidPlaceholder : "";
+ var suffix = typeof formatterParams.suffix !== "undefined" ? formatterParams.suffix : false;
+ var unit = typeof formatterParams.unit !== "undefined" ? formatterParams.unit : undefined;
+ var humanize = typeof formatterParams.humanize !== "undefined" ? formatterParams.humanize : false;
+ var date = typeof formatterParams.date !== "undefined" ? formatterParams.date : moment();
+ var value = cell.getValue();
+
+ var newDatetime = moment(value, inputFormat);
+
+ if (newDatetime.isValid()) {
+ if (humanize) {
+ return moment.duration(newDatetime.diff(date)).humanize(suffix);
+ } else {
+ return newDatetime.diff(date, unit) + (suffix ? " " + suffix : "");
+ }
+ } else {
+
+ if (invalid === true) {
+ return value;
+ } else if (typeof invalid === "function") {
+ return invalid(value);
+ } else {
+ return invalid;
+ }
+ }
+ },
+
+ //select
+ lookup: function lookup(cell, formatterParams, onRendered) {
+ var value = cell.getValue();
+
+ if (typeof formatterParams[value] === "undefined") {
+ console.warn('Missing display value for ' + value);
+ return value;
+ }
+
+ return formatterParams[value];
+ },
+
+ //star rating
+ star: function star(cell, formatterParams, onRendered) {
+ var value = cell.getValue(),
+ element = cell.getElement(),
+ maxStars = formatterParams && formatterParams.stars ? formatterParams.stars : 5,
+ stars = document.createElement("span"),
+ star = document.createElementNS('http://www.w3.org/2000/svg', "svg"),
+ starActive = '<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',
+ starInactive = '<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>';
+
+ //style stars holder
+ stars.style.verticalAlign = "middle";
+
+ //style star
+ star.setAttribute("width", "14");
+ star.setAttribute("height", "14");
+ star.setAttribute("viewBox", "0 0 512 512");
+ star.setAttribute("xml:space", "preserve");
+ star.style.padding = "0 1px";
+
+ value = parseInt(value) < maxStars ? parseInt(value) : maxStars;
+
+ for (var i = 1; i <= maxStars; i++) {
+ var nextStar = star.cloneNode(true);
+ nextStar.innerHTML = i <= value ? starActive : starInactive;
+
+ stars.appendChild(nextStar);
+ }
+
+ element.style.whiteSpace = "nowrap";
+ element.style.overflow = "hidden";
+ element.style.textOverflow = "ellipsis";
+
+ element.setAttribute("aria-label", value);
+
+ return stars;
+ },
+
+ traffic: function traffic(cell, formatterParams, onRendered) {
+ var value = this.sanitizeHTML(cell.getValue()) || 0,
+ el = document.createElement("span"),
+ max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+ min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+ colors = formatterParams && typeof formatterParams.color !== "undefined" ? formatterParams.color : ["red", "orange", "green"],
+ color = "#666666",
+ percent,
+ percentValue;
+
+ if (isNaN(value) || typeof cell.getValue() === "undefined") {
+ return;
+ }
+
+ el.classList.add("tabulator-traffic-light");
+
+ //make sure value is in range
+ percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+ percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+ //workout percentage
+ percent = (max - min) / 100;
+ percentValue = Math.round((percentValue - min) / percent);
+
+ //set color
+ switch (typeof colors === 'undefined' ? 'undefined' : _typeof(colors)) {
+ case "string":
+ color = colors;
+ break;
+ case "function":
+ color = colors(value);
+ break;
+ case "object":
+ if (Array.isArray(colors)) {
+ var unit = 100 / colors.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, colors.length - 1);
+ index = Math.max(index, 0);
+ color = colors[index];
+ break;
+ }
+ }
+
+ el.style.backgroundColor = color;
+
+ return el;
+ },
+
+ //progress bar
+ progress: function progress(cell, formatterParams, onRendered) {
+ //progress bar
+ var value = this.sanitizeHTML(cell.getValue()) || 0,
+ element = cell.getElement(),
+ max = formatterParams && formatterParams.max ? formatterParams.max : 100,
+ min = formatterParams && formatterParams.min ? formatterParams.min : 0,
+ legendAlign = formatterParams && formatterParams.legendAlign ? formatterParams.legendAlign : "center",
+ percent,
+ percentValue,
+ color,
+ legend,
+ legendColor,
+ top,
+ left,
+ right,
+ bottom;
+
+ //make sure value is in range
+ percentValue = parseFloat(value) <= max ? parseFloat(value) : max;
+ percentValue = parseFloat(percentValue) >= min ? parseFloat(percentValue) : min;
+
+ //workout percentage
+ percent = (max - min) / 100;
+ percentValue = Math.round((percentValue - min) / percent);
+
+ //set bar color
+ switch (_typeof(formatterParams.color)) {
+ case "string":
+ color = formatterParams.color;
+ break;
+ case "function":
+ color = formatterParams.color(value);
+ break;
+ case "object":
+ if (Array.isArray(formatterParams.color)) {
+ var unit = 100 / formatterParams.color.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, formatterParams.color.length - 1);
+ index = Math.max(index, 0);
+ color = formatterParams.color[index];
+ break;
+ }
+ default:
+ color = "#2DC214";
+ }
+
+ //generate legend
+ switch (_typeof(formatterParams.legend)) {
+ case "string":
+ legend = formatterParams.legend;
+ break;
+ case "function":
+ legend = formatterParams.legend(value);
+ break;
+ case "boolean":
+ legend = value;
+ break;
+ default:
+ legend = false;
+ }
+
+ //set legend color
+ switch (_typeof(formatterParams.legendColor)) {
+ case "string":
+ legendColor = formatterParams.legendColor;
+ break;
+ case "function":
+ legendColor = formatterParams.legendColor(value);
+ break;
+ case "object":
+ if (Array.isArray(formatterParams.legendColor)) {
+ var unit = 100 / formatterParams.legendColor.length;
+ var index = Math.floor(percentValue / unit);
+
+ index = Math.min(index, formatterParams.legendColor.length - 1);
+ index = Math.max(index, 0);
+ legendColor = formatterParams.legendColor[index];
+ }
+ break;
+ default:
+ legendColor = "#000";
+ }
+
+ element.style.minWidth = "30px";
+ element.style.position = "relative";
+
+ element.setAttribute("aria-label", percentValue);
+
+ return "<div style='position:relative; height:100%;' data-max='" + max + "' data-min='" + min + "'><div style='position:relative; height:100%; width:calc(" + percentValue + "%); background-color:" + color + "; display:inline-block;'></div></div>" + (legend ? "<div style='position:absolute; top:4px; left:0; text-align:" + legendAlign + "; width:100%; color:" + legendColor + ";'>" + legend + "</div>" : "");
+ },
+
+ //background color
+ color: function color(cell, formatterParams, onRendered) {
+ cell.getElement().style.backgroundColor = this.sanitizeHTML(cell.getValue());
+ return "";
+ },
+
+ //tick icon
+ buttonTick: function buttonTick(cell, formatterParams, onRendered) {
+ return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>';
+ },
+
+ //cross icon
+ buttonCross: function buttonCross(cell, formatterParams, onRendered) {
+ return '<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';
+ },
+
+ //current row number
+ rownum: function rownum(cell, formatterParams, onRendered) {
+ return this.table.rowManager.activeRows.indexOf(cell.getRow()._getSelf()) + 1;
+ },
+
+ //row handle
+ handle: function handle(cell, formatterParams, onRendered) {
+ cell.getElement().classList.add("tabulator-row-handle");
+ return "<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>";
+ },
+
+ responsiveCollapse: function responsiveCollapse(cell, formatterParams, onRendered) {
+ var self = this,
+ open = false,
+ el = document.createElement("div");
+
+ function toggleList(isOpen) {
+ var collapse = cell.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];
+
+ open = isOpen;
+
+ if (open) {
+ el.classList.add("open");
+ if (collapse) {
+ collapse.style.display = '';
+ }
+ } else {
+ el.classList.remove("open");
+ if (collapse) {
+ collapse.style.display = 'none';
+ }
+ }
+ }
+
+ el.classList.add("tabulator-responsive-collapse-toggle");
+ el.innerHTML = "<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>";
+
+ cell.getElement().classList.add("tabulator-row-handle");
+
+ if (self.table.options.responsiveLayoutCollapseStartOpen) {
+ open = true;
+ }
+
+ el.addEventListener("click", function (e) {
+ e.stopImmediatePropagation();
+ toggleList(!open);
+ });
+
+ toggleList(open);
+
+ return el;
+ },
+
+ rowSelection: function rowSelection(cell) {
+ var _this37 = this;
+
+ var checkbox = document.createElement("input");
+
+ checkbox.type = 'checkbox';
+
+ if (this.table.modExists("selectRow", true)) {
+
+ checkbox.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ if (typeof cell.getRow == 'function') {
+ var row = cell.getRow();
+
+ checkbox.addEventListener("change", function (e) {
+ row.toggleSelect();
+ });
+
+ checkbox.checked = row.isSelected();
+ this.table.modules.selectRow.registerRowSelectCheckbox(row, checkbox);
+ } else {
+ checkbox.addEventListener("change", function (e) {
+ if (_this37.table.modules.selectRow.selectedRows.length) {
+ _this37.table.deselectRow();
+ } else {
+ _this37.table.selectRow();
+ }
+ });
+
+ this.table.modules.selectRow.registerHeaderSelectCheckbox(checkbox);
+ }
+ }
+ return checkbox;
+ }
+ };
+
+ Tabulator.prototype.registerModule("format", Format);
+
+ var FrozenColumns = function FrozenColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.leftColumns = [];
+ this.rightColumns = [];
+ this.leftMargin = 0;
+ this.rightMargin = 0;
+ this.rightPadding = 0;
+ this.initializationMode = "left";
+ this.active = false;
+ this.scrollEndTimer = false;
+ };
+
+ //reset initial state
+ FrozenColumns.prototype.reset = function () {
+ this.initializationMode = "left";
+ this.leftColumns = [];
+ this.rightColumns = [];
+ this.leftMargin = 0;
+ this.rightMargin = 0;
+ this.rightMargin = 0;
+ this.active = false;
+
+ this.table.columnManager.headersElement.style.marginLeft = 0;
+ this.table.columnManager.element.style.paddingRight = 0;
+ };
+
+ //initialize specific column
+ FrozenColumns.prototype.initializeColumn = function (column) {
+ var config = { margin: 0, edge: false };
+
+ if (column.definition.frozen) {
+
+ if (!column.parent.isGroup) {
+
+ if (!column.isGroup) {
+ config.position = this.initializationMode;
+
+ if (this.initializationMode == "left") {
+ this.leftColumns.push(column);
+ } else {
+ this.rightColumns.unshift(column);
+ }
+
+ this.active = true;
+
+ column.modules.frozen = config;
+ } else {
+ console.warn("Frozen Column Error - Column Groups cannot be frozen");
+ }
+ } else {
+ console.warn("Frozen Column Error - Grouped columns cannot be frozen");
+ }
+ } else {
+ this.initializationMode = "right";
+ }
+ };
+
+ //quick layout to smooth horizontal scrolling
+ FrozenColumns.prototype.scrollHorizontal = function () {
+ var _this38 = this;
+
+ var rows;
+
+ if (this.active) {
+ clearTimeout(this.scrollEndTimer);
+
+ //layout all rows after scroll is complete
+ this.scrollEndTimer = setTimeout(function () {
+ _this38.layout();
+ }, 100);
+
+ rows = this.table.rowManager.getVisibleRows();
+
+ this.calcMargins();
+
+ this.layoutColumnPosition();
+
+ this.layoutCalcRows();
+
+ rows.forEach(function (row) {
+ if (row.type === "row") {
+ _this38.layoutRow(row);
+ }
+ });
+
+ this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+ }
+ };
+
+ //calculate margins for rows
+ FrozenColumns.prototype.calcMargins = function () {
+ this.leftMargin = this._calcSpace(this.leftColumns, this.leftColumns.length) + "px";
+ this.table.columnManager.headersElement.style.marginLeft = this.leftMargin;
+
+ this.rightMargin = this._calcSpace(this.rightColumns, this.rightColumns.length) + "px";
+ this.table.columnManager.element.style.paddingRight = this.rightMargin;
+
+ //calculate right frozen columns
+ this.rightPadding = this.table.rowManager.element.clientWidth + this.table.columnManager.scrollLeft;
+ };
+
+ //layout calculation rows
+ FrozenColumns.prototype.layoutCalcRows = function () {
+ if (this.table.modExists("columnCalcs")) {
+ if (this.table.modules.columnCalcs.topInitialized && this.table.modules.columnCalcs.topRow) {
+ this.layoutRow(this.table.modules.columnCalcs.topRow);
+ }
+ if (this.table.modules.columnCalcs.botInitialized && this.table.modules.columnCalcs.botRow) {
+ this.layoutRow(this.table.modules.columnCalcs.botRow);
+ }
+ }
+ };
+
+ //calculate column positions and layout headers
+ FrozenColumns.prototype.layoutColumnPosition = function (allCells) {
+ var _this39 = this;
+
+ this.leftColumns.forEach(function (column, i) {
+ column.modules.frozen.margin = _this39._calcSpace(_this39.leftColumns, i) + _this39.table.columnManager.scrollLeft + "px";
+
+ if (i == _this39.leftColumns.length - 1) {
+ column.modules.frozen.edge = true;
+ } else {
+ column.modules.frozen.edge = false;
+ }
+
+ _this39.layoutElement(column.getElement(), column);
+
+ if (allCells) {
+ column.cells.forEach(function (cell) {
+ _this39.layoutElement(cell.getElement(), column);
+ });
+ }
+ });
+
+ this.rightColumns.forEach(function (column, i) {
+ column.modules.frozen.margin = _this39.rightPadding - _this39._calcSpace(_this39.rightColumns, i + 1) + "px";
+
+ if (i == _this39.rightColumns.length - 1) {
+ column.modules.frozen.edge = true;
+ } else {
+ column.modules.frozen.edge = false;
+ }
+
+ _this39.layoutElement(column.getElement(), column);
+
+ if (allCells) {
+ column.cells.forEach(function (cell) {
+ _this39.layoutElement(cell.getElement(), column);
+ });
+ }
+ });
+ };
+
+ //layout columns appropropriatly
+ FrozenColumns.prototype.layout = function () {
+ var self = this,
+ rightMargin = 0;
+
+ if (self.active) {
+
+ //calculate row padding
+ this.calcMargins();
+
+ // self.table.rowManager.activeRows.forEach(function(row){
+ // self.layoutRow(row);
+ // });
+
+ // if(self.table.options.dataTree){
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row") {
+ self.layoutRow(row);
+ }
+ });
+ // }
+
+ this.layoutCalcRows();
+
+ //calculate left columns
+ this.layoutColumnPosition(true);
+
+ // if(tableHolder.scrollHeight > tableHolder.clientHeight){
+ // rightMargin -= tableHolder.offsetWidth - tableHolder.clientWidth;
+ // }
+
+ this.table.rowManager.tableElement.style.marginRight = this.rightMargin;
+ }
+ };
+
+ FrozenColumns.prototype.layoutRow = function (row) {
+ var _this40 = this;
+
+ var rowEl = row.getElement();
+
+ rowEl.style.paddingLeft = this.leftMargin;
+ // rowEl.style.paddingRight = this.rightMargin + "px";
+
+ this.leftColumns.forEach(function (column) {
+ var cell = row.getCell(column);
+
+ if (cell) {
+ _this40.layoutElement(cell.getElement(), column);
+ }
+ });
+
+ this.rightColumns.forEach(function (column) {
+ var cell = row.getCell(column);
+
+ if (cell) {
+ _this40.layoutElement(cell.getElement(), column);
+ }
+ });
+ };
+
+ FrozenColumns.prototype.layoutElement = function (element, column) {
+
+ if (column.modules.frozen) {
+ element.style.position = "absolute";
+ element.style.left = column.modules.frozen.margin;
+
+ element.classList.add("tabulator-frozen");
+
+ if (column.modules.frozen.edge) {
+ element.classList.add("tabulator-frozen-" + column.modules.frozen.position);
+ }
+ }
+ };
+
+ FrozenColumns.prototype._calcSpace = function (columns, index) {
+ var width = 0;
+
+ for (var i = 0; i < index; i++) {
+ if (columns[i].visible) {
+ width += columns[i].getWidth();
+ }
+ }
+
+ return width;
+ };
+
+ Tabulator.prototype.registerModule("frozenColumns", FrozenColumns);
+ var FrozenRows = function FrozenRows(table) {
+ this.table = table; //hold Tabulator object
+ this.topElement = document.createElement("div");
+ this.rows = [];
+ this.displayIndex = 0; //index in display pipeline
+ };
+
+ FrozenRows.prototype.initialize = function () {
+ this.rows = [];
+
+ this.topElement.classList.add("tabulator-frozen-rows-holder");
+
+ // this.table.columnManager.element.append(this.topElement);
+ this.table.columnManager.getElement().insertBefore(this.topElement, this.table.columnManager.headersElement.nextSibling);
+ };
+
+ FrozenRows.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+ };
+
+ FrozenRows.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+ };
+
+ FrozenRows.prototype.isFrozen = function () {
+ return !!this.rows.length;
+ };
+
+ //filter frozen rows out of display data
+ FrozenRows.prototype.getRows = function (rows) {
+ var self = this,
+ frozen = [],
+ output = rows.slice(0);
+
+ this.rows.forEach(function (row) {
+ var index = output.indexOf(row);
+
+ if (index > -1) {
+ output.splice(index, 1);
+ }
+ });
+
+ return output;
+ };
+
+ FrozenRows.prototype.freezeRow = function (row) {
+ if (!row.modules.frozen) {
+ row.modules.frozen = true;
+ this.topElement.appendChild(row.getElement());
+ row.initialize();
+ row.normalizeHeight();
+ this.table.rowManager.adjustTableSize();
+
+ this.rows.push(row);
+
+ this.table.rowManager.refreshActiveData("display");
+
+ this.styleRows();
+ } else {
+ console.warn("Freeze Error - Row is already frozen");
+ }
+ };
+
+ FrozenRows.prototype.unfreezeRow = function (row) {
+ var index = this.rows.indexOf(row);
+
+ if (row.modules.frozen) {
+
+ row.modules.frozen = false;
+
+ var rowEl = row.getElement();
+ rowEl.parentNode.removeChild(rowEl);
+
+ this.table.rowManager.adjustTableSize();
+
+ this.rows.splice(index, 1);
+
+ this.table.rowManager.refreshActiveData("display");
+
+ if (this.rows.length) {
+ this.styleRows();
+ }
+ } else {
+ console.warn("Freeze Error - Row is already unfrozen");
+ }
+ };
+
+ FrozenRows.prototype.styleRows = function (row) {
+ var self = this;
+
+ this.rows.forEach(function (row, i) {
+ self.table.rowManager.styleRow(row, i);
+ });
+ };
+
+ Tabulator.prototype.registerModule("frozenRows", FrozenRows);
+
+ //public group object
+ var GroupComponent = function GroupComponent(group) {
+ this._group = group;
+ this.type = "GroupComponent";
+ };
+
+ GroupComponent.prototype.getKey = function () {
+ return this._group.key;
+ };
+
+ GroupComponent.prototype.getField = function () {
+ return this._group.field;
+ };
+
+ GroupComponent.prototype.getElement = function () {
+ return this._group.element;
+ };
+
+ GroupComponent.prototype.getRows = function () {
+ return this._group.getRows(true);
+ };
+
+ GroupComponent.prototype.getSubGroups = function () {
+ return this._group.getSubGroups(true);
+ };
+
+ GroupComponent.prototype.getParentGroup = function () {
+ return this._group.parent ? this._group.parent.getComponent() : false;
+ };
+
+ GroupComponent.prototype.getVisibility = function () {
+ return this._group.visible;
+ };
+
+ GroupComponent.prototype.show = function () {
+ this._group.show();
+ };
+
+ GroupComponent.prototype.hide = function () {
+ this._group.hide();
+ };
+
+ GroupComponent.prototype.toggle = function () {
+ this._group.toggleVisibility();
+ };
+
+ GroupComponent.prototype._getSelf = function () {
+ return this._group;
+ };
+
+ GroupComponent.prototype.getTable = function () {
+ return this._group.groupManager.table;
+ };
+
+ //////////////////////////////////////////////////
+ //////////////// Group Functions /////////////////
+ //////////////////////////////////////////////////
+
+ var Group = function Group(groupManager, parent, level, key, field, generator, oldGroup) {
+
+ this.groupManager = groupManager;
+ this.parent = parent;
+ this.key = key;
+ this.level = level;
+ this.field = field;
+ this.hasSubGroups = level < groupManager.groupIDLookups.length - 1;
+ this.addRow = this.hasSubGroups ? this._addRowToGroup : this._addRow;
+ this.type = "group"; //type of element
+ this.old = oldGroup;
+ this.rows = [];
+ this.groups = [];
+ this.groupList = [];
+ this.generator = generator;
+ this.elementContents = false;
+ this.height = 0;
+ this.outerHeight = 0;
+ this.initialized = false;
+ this.calcs = {};
+ this.initialized = false;
+ this.modules = {};
+ this.arrowElement = false;
+
+ this.visible = oldGroup ? oldGroup.visible : typeof groupManager.startOpen[level] !== "undefined" ? groupManager.startOpen[level] : groupManager.startOpen[0];
+
+ this.createElements();
+ this.addBindings();
+
+ this.createValueGroups();
+ };
+
+ Group.prototype.wipe = function () {
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ group.wipe();
+ });
+ } else {
+ this.element = false;
+ this.arrowElement = false;
+ this.elementContents = false;
+ }
+ };
+
+ Group.prototype.createElements = function () {
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-row");
+ this.element.classList.add("tabulator-group");
+ this.element.classList.add("tabulator-group-level-" + this.level);
+ this.element.setAttribute("role", "rowgroup");
+
+ this.arrowElement = document.createElement("div");
+ this.arrowElement.classList.add("tabulator-arrow");
+
+ //setup movable rows
+ if (this.groupManager.table.options.movableRows !== false && this.groupManager.table.modExists("moveRow")) {
+ this.groupManager.table.modules.moveRow.initializeGroupHeader(this);
+ }
+ };
+
+ Group.prototype.createValueGroups = function () {
+ var _this41 = this;
+
+ var level = this.level + 1;
+ if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+ this.groupManager.allowedValues[level].forEach(function (value) {
+ _this41._createGroup(value, level);
+ });
+ }
+ };
+
+ Group.prototype.addBindings = function () {
+ var self = this,
+ dblTap,
+ tapHold,
+ tap,
+ toggleElement;
+
+ //handle group click events
+ if (self.groupManager.table.options.groupClick) {
+ self.element.addEventListener("click", function (e) {
+ self.groupManager.table.options.groupClick(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupDblClick) {
+ self.element.addEventListener("dblclick", function (e) {
+ self.groupManager.table.options.groupDblClick(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupContext) {
+ self.element.addEventListener("contextmenu", function (e) {
+ self.groupManager.table.options.groupContext(e, self.getComponent());
+ });
+ }
+
+ if (self.groupManager.table.options.groupTap) {
+
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ if (tap) {
+ self.groupManager.table.options.groupTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (self.groupManager.table.options.groupDblTap) {
+
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+ clearTimeout(dblTap);
+ dblTap = null;
+
+ self.groupManager.table.options.groupDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+ clearTimeout(dblTap);
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (self.groupManager.table.options.groupTapHold) {
+
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+ clearTimeout(tapHold);
+ tapHold = null;
+ tap = false;
+ self.groupManager.table.options.groupTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ clearTimeout(tapHold);
+ tapHold = null;
+ });
+ }
+
+ if (self.groupManager.table.options.groupToggleElement) {
+ toggleElement = self.groupManager.table.options.groupToggleElement == "arrow" ? self.arrowElement : self.element;
+
+ toggleElement.addEventListener("click", function (e) {
+ e.stopPropagation();
+ e.stopImmediatePropagation();
+ self.toggleVisibility();
+ });
+ }
+ };
+
+ Group.prototype._createGroup = function (groupID, level) {
+ var groupKey = level + "_" + groupID;
+ var group = new Group(this.groupManager, this, level, groupID, this.groupManager.groupIDLookups[level].field, this.groupManager.headerGenerator[level] || this.groupManager.headerGenerator[0], this.old ? this.old.groups[groupKey] : false);
+
+ this.groups[groupKey] = group;
+ this.groupList.push(group);
+ };
+
+ Group.prototype._addRowToGroup = function (row) {
+
+ var level = this.level + 1;
+
+ if (this.hasSubGroups) {
+ var groupID = this.groupManager.groupIDLookups[level].func(row.getData()),
+ groupKey = level + "_" + groupID;
+
+ if (this.groupManager.allowedValues && this.groupManager.allowedValues[level]) {
+ if (this.groups[groupKey]) {
+ this.groups[groupKey].addRow(row);
+ }
+ } else {
+ if (!this.groups[groupKey]) {
+ this._createGroup(groupID, level);
+ }
+
+ this.groups[groupKey].addRow(row);
+ }
+ }
+ };
+
+ Group.prototype._addRow = function (row) {
+ this.rows.push(row);
+ row.modules.group = this;
+ };
+
+ Group.prototype.insertRow = function (row, to, after) {
+ var data = this.conformRowData({});
+
+ row.updateData(data);
+
+ var toIndex = this.rows.indexOf(to);
+
+ if (toIndex > -1) {
+ if (after) {
+ this.rows.splice(toIndex + 1, 0, row);
+ } else {
+ this.rows.splice(toIndex, 0, row);
+ }
+ } else {
+ if (after) {
+ this.rows.push(row);
+ } else {
+ this.rows.unshift(row);
+ }
+ }
+
+ row.modules.group = this;
+
+ this.generateGroupHeaderContents();
+
+ if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+ this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+ }
+
+ this.groupManager.updateGroupRows(true);
+ };
+
+ Group.prototype.scrollHeader = function (left) {
+ this.arrowElement.style.marginLeft = left;
+
+ this.groupList.forEach(function (child) {
+ child.scrollHeader(left);
+ });
+ };
+
+ Group.prototype.getRowIndex = function (row) {};
+
+ //update row data to match grouping contraints
+ Group.prototype.conformRowData = function (data) {
+ if (this.field) {
+ data[this.field] = this.key;
+ } else {
+ console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function");
+ }
+
+ if (this.parent) {
+ data = this.parent.conformRowData(data);
+ }
+
+ return data;
+ };
+
+ Group.prototype.removeRow = function (row) {
+ var index = this.rows.indexOf(row);
+ var el = row.getElement();
+
+ if (index > -1) {
+ this.rows.splice(index, 1);
+ }
+
+ if (!this.groupManager.table.options.groupValues && !this.rows.length) {
+ if (this.parent) {
+ this.parent.removeGroup(this);
+ } else {
+ this.groupManager.removeGroup(this);
+ }
+
+ this.groupManager.updateGroupRows(true);
+ } else {
+
+ if (el.parentNode) {
+ el.parentNode.removeChild(el);
+ }
+
+ this.generateGroupHeaderContents();
+
+ if (this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.options.columnCalcs != "table") {
+ this.groupManager.table.modules.columnCalcs.recalcGroup(this);
+ }
+ }
+ };
+
+ Group.prototype.removeGroup = function (group) {
+ var groupKey = group.level + "_" + group.key,
+ index;
+
+ if (this.groups[groupKey]) {
+ delete this.groups[groupKey];
+
+ index = this.groupList.indexOf(group);
+
+ if (index > -1) {
+ this.groupList.splice(index, 1);
+ }
+
+ if (!this.groupList.length) {
+ if (this.parent) {
+ this.parent.removeGroup(this);
+ } else {
+ this.groupManager.removeGroup(this);
+ }
+ }
+ }
+ };
+
+ Group.prototype.getHeadersAndRows = function (noCalc) {
+ var output = [];
+
+ output.push(this);
+
+ this._visSet();
+
+ if (this.visible) {
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ output = output.concat(group.getHeadersAndRows(noCalc));
+ });
+ } else {
+ if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+ if (this.calcs.top) {
+ this.calcs.top.detachElement();
+ this.calcs.top.deleteCells();
+ }
+
+ this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+ output.push(this.calcs.top);
+ }
+
+ output = output.concat(this.rows);
+
+ if (!noCalc && this.groupManager.table.options.columnCalcs != "table" && this.groupManager.table.modExists("columnCalcs") && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+ if (this.calcs.bottom) {
+ this.calcs.bottom.detachElement();
+ this.calcs.bottom.deleteCells();
+ }
+
+ this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+ output.push(this.calcs.bottom);
+ }
+ }
+ } else {
+ if (!this.groupList.length && this.groupManager.table.options.columnCalcs != "table") {
+
+ if (this.groupManager.table.modExists("columnCalcs")) {
+
+ if (!noCalc && this.groupManager.table.modules.columnCalcs.hasTopCalcs()) {
+ if (this.calcs.top) {
+ this.calcs.top.detachElement();
+ this.calcs.top.deleteCells();
+ }
+
+ if (this.groupManager.table.options.groupClosedShowCalcs) {
+ this.calcs.top = this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows);
+ output.push(this.calcs.top);
+ }
+ }
+
+ if (!noCalc && this.groupManager.table.modules.columnCalcs.hasBottomCalcs()) {
+ if (this.calcs.bottom) {
+ this.calcs.bottom.detachElement();
+ this.calcs.bottom.deleteCells();
+ }
+
+ if (this.groupManager.table.options.groupClosedShowCalcs) {
+ this.calcs.bottom = this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows);
+ output.push(this.calcs.bottom);
+ }
+ }
+ }
+ }
+ }
+
+ return output;
+ };
+
+ Group.prototype.getData = function (visible, transform) {
+ var self = this,
+ output = [];
+
+ this._visSet();
+
+ if (!visible || visible && this.visible) {
+ this.rows.forEach(function (row) {
+ output.push(row.getData(transform || "data"));
+ });
+ }
+
+ return output;
+ };
+
+ // Group.prototype.getRows = function(){
+ // this._visSet();
+
+ // return this.visible ? this.rows : [];
+ // };
+
+ Group.prototype.getRowCount = function () {
+ var count = 0;
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ count += group.getRowCount();
+ });
+ } else {
+ count = this.rows.length;
+ }
+ return count;
+ };
+
+ Group.prototype.toggleVisibility = function () {
+ if (this.visible) {
+ this.hide();
+ } else {
+ this.show();
+ }
+ };
+
+ Group.prototype.hide = function () {
+ this.visible = false;
+
+ if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+ this.element.classList.remove("tabulator-group-visible");
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+
+ var rows = group.getHeadersAndRows();
+
+ rows.forEach(function (row) {
+ row.detachElement();
+ });
+ });
+ } else {
+ this.rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.removeChild(rowEl);
+ });
+ }
+
+ this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+ this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+ } else {
+ this.groupManager.updateGroupRows(true);
+ }
+
+ this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), false);
+ };
+
+ Group.prototype.show = function () {
+ var self = this;
+
+ self.visible = true;
+
+ if (this.groupManager.table.rowManager.getRenderMode() == "classic" && !this.groupManager.table.options.pagination) {
+
+ this.element.classList.add("tabulator-group-visible");
+
+ var prev = self.getElement();
+
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ var rows = group.getHeadersAndRows();
+
+ rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+ row.initialize();
+ prev = rowEl;
+ });
+ });
+ } else {
+ self.rows.forEach(function (row) {
+ var rowEl = row.getElement();
+ prev.parentNode.insertBefore(rowEl, prev.nextSibling);
+ row.initialize();
+ prev = rowEl;
+ });
+ }
+
+ this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(), this.groupManager.getDisplayIndex());
+
+ this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth();
+ } else {
+ this.groupManager.updateGroupRows(true);
+ }
+
+ this.groupManager.table.options.groupVisibilityChanged.call(this.table, this.getComponent(), true);
+ };
+
+ Group.prototype._visSet = function () {
+ var data = [];
+
+ if (typeof this.visible == "function") {
+
+ this.rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ this.visible = this.visible(this.key, this.getRowCount(), data, this.getComponent());
+ }
+ };
+
+ Group.prototype.getRowGroup = function (row) {
+ var match = false;
+ if (this.groupList.length) {
+ this.groupList.forEach(function (group) {
+ var result = group.getRowGroup(row);
+
+ if (result) {
+ match = result;
+ }
+ });
+ } else {
+ if (this.rows.find(function (item) {
+ return item === row;
+ })) {
+ match = this;
+ }
+ }
+
+ return match;
+ };
+
+ Group.prototype.getSubGroups = function (component) {
+ var output = [];
+
+ this.groupList.forEach(function (child) {
+ output.push(component ? child.getComponent() : child);
+ });
+
+ return output;
+ };
+
+ Group.prototype.getRows = function (compoment) {
+ var output = [];
+
+ this.rows.forEach(function (row) {
+ output.push(compoment ? row.getComponent() : row);
+ });
+
+ return output;
+ };
+
+ Group.prototype.generateGroupHeaderContents = function () {
+ var data = [];
+
+ this.rows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ this.elementContents = this.generator(this.key, this.getRowCount(), data, this.getComponent());
+
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }if (typeof this.elementContents === "string") {
+ this.element.innerHTML = this.elementContents;
+ } else {
+ this.element.appendChild(this.elementContents);
+ }
+
+ this.element.insertBefore(this.arrowElement, this.element.firstChild);
+ };
+
+ ////////////// Standard Row Functions //////////////
+
+ Group.prototype.getElement = function () {
+ this.addBindingsd = false;
+
+ this._visSet();
+
+ if (this.visible) {
+ this.element.classList.add("tabulator-group-visible");
+ } else {
+ this.element.classList.remove("tabulator-group-visible");
+ }
+
+ for (var i = 0; i < this.element.childNodes.length; ++i) {
+ this.element.childNodes[i].parentNode.removeChild(this.element.childNodes[i]);
+ }
+
+ this.generateGroupHeaderContents();
+
+ // this.addBindings();
+
+ return this.element;
+ };
+
+ Group.prototype.detachElement = function () {
+ if (this.element && this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ }
+ };
+
+ //normalize the height of elements in the row
+ Group.prototype.normalizeHeight = function () {
+ this.setHeight(this.element.clientHeight);
+ };
+
+ Group.prototype.initialize = function (force) {
+ if (!this.initialized || force) {
+ this.normalizeHeight();
+ this.initialized = true;
+ }
+ };
+
+ Group.prototype.reinitialize = function () {
+ this.initialized = false;
+ this.height = 0;
+
+ if (Tabulator.prototype.helpers.elVisible(this.element)) {
+ this.initialize(true);
+ }
+ };
+
+ Group.prototype.setHeight = function (height) {
+ if (this.height != height) {
+ this.height = height;
+ this.outerHeight = this.element.offsetHeight;
+ }
+ };
+
+ //return rows outer height
+ Group.prototype.getHeight = function () {
+ return this.outerHeight;
+ };
+
+ Group.prototype.getGroup = function () {
+ return this;
+ };
+
+ Group.prototype.reinitializeHeight = function () {};
+ Group.prototype.calcHeight = function () {};
+ Group.prototype.setCellHeight = function () {};
+ Group.prototype.clearCellHeight = function () {};
+
+ //////////////// Object Generation /////////////////
+ Group.prototype.getComponent = function () {
+ return new GroupComponent(this);
+ };
+
+ //////////////////////////////////////////////////
+ ////////////// Group Row Extension ///////////////
+ //////////////////////////////////////////////////
+
+ var GroupRows = function GroupRows(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.groupIDLookups = false; //enable table grouping and set field to group by
+ this.startOpen = [function () {
+ return false;
+ }]; //starting state of group
+ this.headerGenerator = [function () {
+ return "";
+ }];
+ this.groupList = []; //ordered list of groups
+ this.allowedValues = false;
+ this.groups = {}; //hold row groups
+ this.displayIndex = 0; //index in display pipeline
+ };
+
+ //initialize group configuration
+ GroupRows.prototype.initialize = function () {
+ var self = this,
+ groupBy = self.table.options.groupBy,
+ startOpen = self.table.options.groupStartOpen,
+ groupHeader = self.table.options.groupHeader;
+
+ this.allowedValues = self.table.options.groupValues;
+
+ if (Array.isArray(groupBy) && Array.isArray(groupHeader) && groupBy.length > groupHeader.length) {
+ console.warn("Error creating group headers, groupHeader array is shorter than groupBy array");
+ }
+
+ self.headerGenerator = [function () {
+ return "";
+ }];
+ this.startOpen = [function () {
+ return false;
+ }]; //starting state of group
+
+ self.table.modules.localize.bind("groups|item", function (langValue, lang) {
+ self.headerGenerator[0] = function (value, count, data) {
+ //header layout function
+ return (typeof value === "undefined" ? "" : value) + "<span>(" + count + " " + (count === 1 ? langValue : lang.groups.items) + ")</span>";
+ };
+ });
+
+ this.groupIDLookups = [];
+
+ if (Array.isArray(groupBy) || groupBy) {
+ if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "table" && this.table.options.columnCalcs != "both") {
+ this.table.modules.columnCalcs.removeCalcs();
+ }
+ } else {
+ if (this.table.modExists("columnCalcs") && this.table.options.columnCalcs != "group") {
+
+ var cols = this.table.columnManager.getRealColumns();
+
+ cols.forEach(function (col) {
+ if (col.definition.topCalc) {
+ self.table.modules.columnCalcs.initializeTopRow();
+ }
+
+ if (col.definition.bottomCalc) {
+ self.table.modules.columnCalcs.initializeBottomRow();
+ }
+ });
+ }
+ }
+
+ if (!Array.isArray(groupBy)) {
+ groupBy = [groupBy];
+ }
+
+ groupBy.forEach(function (group, i) {
+ var lookupFunc, column;
+
+ if (typeof group == "function") {
+ lookupFunc = group;
+ } else {
+ column = self.table.columnManager.getColumnByField(group);
+
+ if (column) {
+ lookupFunc = function lookupFunc(data) {
+ return column.getFieldValue(data);
+ };
+ } else {
+ lookupFunc = function lookupFunc(data) {
+ return data[group];
+ };
+ }
+ }
+
+ self.groupIDLookups.push({
+ field: typeof group === "function" ? false : group,
+ func: lookupFunc,
+ values: self.allowedValues ? self.allowedValues[i] : false
+ });
+ });
+
+ if (startOpen) {
+
+ if (!Array.isArray(startOpen)) {
+ startOpen = [startOpen];
+ }
+
+ startOpen.forEach(function (level) {
+ level = typeof level == "function" ? level : function () {
+ return true;
+ };
+ });
+
+ self.startOpen = startOpen;
+ }
+
+ if (groupHeader) {
+ self.headerGenerator = Array.isArray(groupHeader) ? groupHeader : [groupHeader];
+ }
+
+ this.initialized = true;
+ };
+
+ GroupRows.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+ };
+
+ GroupRows.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+ };
+
+ //return appropriate rows with group headers
+ GroupRows.prototype.getRows = function (rows) {
+ if (this.groupIDLookups.length) {
+
+ this.table.options.dataGrouping.call(this.table);
+
+ this.generateGroups(rows);
+
+ if (this.table.options.dataGrouped) {
+ this.table.options.dataGrouped.call(this.table, this.getGroups(true));
+ }
+
+ return this.updateGroupRows();
+ } else {
+ return rows.slice(0);
+ }
+ };
+
+ GroupRows.prototype.getGroups = function (compoment) {
+ var groupComponents = [];
+
+ this.groupList.forEach(function (group) {
+ groupComponents.push(compoment ? group.getComponent() : group);
+ });
+
+ return groupComponents;
+ };
+
+ GroupRows.prototype.wipe = function () {
+ this.groupList.forEach(function (group) {
+ group.wipe();
+ });
+ };
+
+ GroupRows.prototype.pullGroupListData = function (groupList) {
+ var self = this;
+ var groupListData = [];
+
+ groupList.forEach(function (group) {
+ var groupHeader = {};
+ groupHeader.level = 0;
+ groupHeader.rowCount = 0;
+ groupHeader.headerContent = "";
+ var childData = [];
+
+ if (group.hasSubGroups) {
+ childData = self.pullGroupListData(group.groupList);
+
+ groupHeader.level = group.level;
+ groupHeader.rowCount = childData.length - group.groupList.length; // data length minus number of sub-headers
+ groupHeader.headerContent = group.generator(group.key, groupHeader.rowCount, group.rows, group);
+
+ groupListData.push(groupHeader);
+ groupListData = groupListData.concat(childData);
+ } else {
+ groupHeader.level = group.level;
+ groupHeader.headerContent = group.generator(group.key, group.rows.length, group.rows, group);
+ groupHeader.rowCount = group.getRows().length;
+
+ groupListData.push(groupHeader);
+
+ group.getRows().forEach(function (row) {
+ groupListData.push(row.getData("data"));
+ });
+ }
+ });
+
+ return groupListData;
+ };
+
+ GroupRows.prototype.getGroupedData = function () {
+
+ return this.pullGroupListData(this.groupList);
+ };
+
+ GroupRows.prototype.getRowGroup = function (row) {
+ var match = false;
+
+ this.groupList.forEach(function (group) {
+ var result = group.getRowGroup(row);
+
+ if (result) {
+ match = result;
+ }
+ });
+
+ return match;
+ };
+
+ GroupRows.prototype.countGroups = function () {
+ return this.groupList.length;
+ };
+
+ GroupRows.prototype.generateGroups = function (rows) {
+ var self = this,
+ oldGroups = self.groups;
+
+ self.groups = {};
+ self.groupList = [];
+
+ if (this.allowedValues && this.allowedValues[0]) {
+ this.allowedValues[0].forEach(function (value) {
+ self.createGroup(value, 0, oldGroups);
+ });
+
+ rows.forEach(function (row) {
+ self.assignRowToExistingGroup(row, oldGroups);
+ });
+ } else {
+ rows.forEach(function (row) {
+ self.assignRowToGroup(row, oldGroups);
+ });
+ }
+ };
+
+ GroupRows.prototype.createGroup = function (groupID, level, oldGroups) {
+ var groupKey = level + "_" + groupID,
+ group;
+
+ oldGroups = oldGroups || [];
+
+ group = new Group(this, false, level, groupID, this.groupIDLookups[0].field, this.headerGenerator[0], oldGroups[groupKey]);
+
+ this.groups[groupKey] = group;
+ this.groupList.push(group);
+ };
+
+ GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ groupKey = "0_" + groupID;
+
+ if (!this.groups[groupKey]) {
+ this.createGroup(groupID, 0, oldGroups);
+ }
+
+ this.groups[groupKey].addRow(row);
+ };
+
+ GroupRows.prototype.assignRowToExistingGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ groupKey = "0_" + groupID;
+
+ if (this.groups[groupKey]) {
+ this.groups[groupKey].addRow(row);
+ }
+ };
+
+ GroupRows.prototype.assignRowToGroup = function (row, oldGroups) {
+ var groupID = this.groupIDLookups[0].func(row.getData()),
+ newGroupNeeded = !this.groups["0_" + groupID];
+
+ if (newGroupNeeded) {
+ this.createGroup(groupID, 0, oldGroups);
+ }
+
+ this.groups["0_" + groupID].addRow(row);
+
+ return !newGroupNeeded;
+ };
+
+ GroupRows.prototype.updateGroupRows = function (force) {
+ var self = this,
+ output = [],
+ oldRowCount;
+
+ self.groupList.forEach(function (group) {
+ output = output.concat(group.getHeadersAndRows());
+ });
+
+ //force update of table display
+ if (force) {
+
+ var displayIndex = self.table.rowManager.setDisplayRows(output, this.getDisplayIndex());
+
+ if (displayIndex !== true) {
+ this.setDisplayIndex(displayIndex);
+ }
+
+ self.table.rowManager.refreshActiveData("group", true, true);
+ }
+
+ return output;
+ };
+
+ GroupRows.prototype.scrollHeaders = function (left) {
+ left = left + "px";
+
+ this.groupList.forEach(function (group) {
+ group.scrollHeader(left);
+ });
+ };
+
+ GroupRows.prototype.removeGroup = function (group) {
+ var groupKey = group.level + "_" + group.key,
+ index;
+
+ if (this.groups[groupKey]) {
+ delete this.groups[groupKey];
+
+ index = this.groupList.indexOf(group);
+
+ if (index > -1) {
+ this.groupList.splice(index, 1);
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("groupRows", GroupRows);
+ var History = function History(table) {
+ this.table = table; //hold Tabulator object
+
+ this.history = [];
+ this.index = -1;
+ };
+
+ History.prototype.clear = function () {
+ this.history = [];
+ this.index = -1;
+ };
+
+ History.prototype.action = function (type, component, data) {
+
+ this.history = this.history.slice(0, this.index + 1);
+
+ this.history.push({
+ type: type,
+ component: component,
+ data: data
+ });
+
+ this.index++;
+ };
+
+ History.prototype.getHistoryUndoSize = function () {
+ return this.index + 1;
+ };
+
+ History.prototype.getHistoryRedoSize = function () {
+ return this.history.length - (this.index + 1);
+ };
+
+ History.prototype.undo = function () {
+
+ if (this.index > -1) {
+ var action = this.history[this.index];
+
+ this.undoers[action.type].call(this, action);
+
+ this.index--;
+
+ this.table.options.historyUndo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+ return true;
+ } else {
+ console.warn("History Undo Error - No more history to undo");
+ return false;
+ }
+ };
+
+ History.prototype.redo = function () {
+ if (this.history.length - 1 > this.index) {
+
+ this.index++;
+
+ var action = this.history[this.index];
+
+ this.redoers[action.type].call(this, action);
+
+ this.table.options.historyRedo.call(this.table, action.type, action.component.getComponent(), action.data);
+
+ return true;
+ } else {
+ console.warn("History Redo Error - No more history to redo");
+ return false;
+ }
+ };
+
+ History.prototype.undoers = {
+ cellEdit: function cellEdit(action) {
+ action.component.setValueProcessData(action.data.oldValue);
+ },
+
+ rowAdd: function rowAdd(action) {
+ action.component.deleteActual();
+ },
+
+ rowDelete: function rowDelete(action) {
+ var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+ this._rebindRow(action.component, newRow);
+ },
+
+ rowMove: function rowMove(action) {
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+ this.table.rowManager.redraw();
+ }
+ };
+
+ History.prototype.redoers = {
+ cellEdit: function cellEdit(action) {
+ action.component.setValueProcessData(action.data.newValue);
+ },
+
+ rowAdd: function rowAdd(action) {
+ var newRow = this.table.rowManager.addRowActual(action.data.data, action.data.pos, action.data.index);
+
+ this._rebindRow(action.component, newRow);
+ },
+
+ rowDelete: function rowDelete(action) {
+ action.component.deleteActual();
+ },
+
+ rowMove: function rowMove(action) {
+ this.table.rowManager.moveRowActual(action.component, this.table.rowManager.rows[action.data.pos], false);
+ this.table.rowManager.redraw();
+ }
+ };
+
+ //rebind rows to new element after deletion
+ History.prototype._rebindRow = function (oldRow, newRow) {
+ this.history.forEach(function (action) {
+ if (action.component instanceof Row) {
+ if (action.component === oldRow) {
+ action.component = newRow;
+ }
+ } else if (action.component instanceof Cell) {
+ if (action.component.row === oldRow) {
+ var field = action.component.column.getField();
+
+ if (field) {
+ action.component = newRow.getCell(field);
+ }
+ }
+ }
+ });
+ };
+
+ Tabulator.prototype.registerModule("history", History);
+ var HtmlTableImport = function HtmlTableImport(table) {
+ this.table = table; //hold Tabulator object
+ this.fieldIndex = [];
+ this.hasIndex = false;
+ };
+
+ HtmlTableImport.prototype.parseTable = function () {
+ var self = this,
+ element = self.table.element,
+ options = self.table.options,
+ columns = options.columns,
+ headers = element.getElementsByTagName("th"),
+ rows = element.getElementsByTagName("tbody")[0],
+ data = [],
+ newTable;
+
+ self.hasIndex = false;
+
+ self.table.options.htmlImporting.call(this.table);
+
+ rows = rows ? rows.getElementsByTagName("tr") : [];
+
+ //check for tablator inline options
+ self._extractOptions(element, options);
+
+ if (headers.length) {
+ self._extractHeaders(headers, rows);
+ } else {
+ self._generateBlankHeaders(headers, rows);
+ }
+
+ //iterate through table rows and build data set
+ for (var index = 0; index < rows.length; index++) {
+ var row = rows[index],
+ cells = row.getElementsByTagName("td"),
+ item = {};
+
+ //create index if the dont exist in table
+ if (!self.hasIndex) {
+ item[options.index] = index;
+ }
+
+ for (var i = 0; i < cells.length; i++) {
+ var cell = cells[i];
+ if (typeof this.fieldIndex[i] !== "undefined") {
+ item[this.fieldIndex[i]] = cell.innerHTML;
+ }
+ }
+
+ //add row data to item
+ data.push(item);
+ }
+
+ //create new element
+ var newElement = document.createElement("div");
+
+ //transfer attributes to new element
+ var attributes = element.attributes;
+
+ // loop through attributes and apply them on div
+
+ for (var i in attributes) {
+ if (_typeof(attributes[i]) == "object") {
+ newElement.setAttribute(attributes[i].name, attributes[i].value);
+ }
+ }
+
+ // replace table with div element
+ element.parentNode.replaceChild(newElement, element);
+
+ options.data = data;
+
+ self.table.options.htmlImported.call(this.table);
+
+ // // newElement.tabulator(options);
+
+ this.table.element = newElement;
+ };
+
+ //extract tabulator attribute options
+ HtmlTableImport.prototype._extractOptions = function (element, options, defaultOptions) {
+ var attributes = element.attributes;
+ var optionsArr = defaultOptions ? Object.assign([], defaultOptions) : Object.keys(options);
+ var optionsList = {};
+
+ optionsArr.forEach(function (item) {
+ optionsList[item.toLowerCase()] = item;
+ });
+
+ for (var index in attributes) {
+ var attrib = attributes[index];
+ var name;
+
+ if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+ name = attrib.name.replace("tabulator-", "");
+
+ if (typeof optionsList[name] !== "undefined") {
+ options[optionsList[name]] = this._attribValue(attrib.value);
+ }
+ }
+ }
+ };
+
+ //get value of attribute
+ HtmlTableImport.prototype._attribValue = function (value) {
+ if (value === "true") {
+ return true;
+ }
+
+ if (value === "false") {
+ return false;
+ }
+
+ return value;
+ };
+
+ //find column if it has already been defined
+ HtmlTableImport.prototype._findCol = function (title) {
+ var match = this.table.options.columns.find(function (column) {
+ return column.title === title;
+ });
+
+ return match || false;
+ };
+
+ //extract column from headers
+ HtmlTableImport.prototype._extractHeaders = function (headers, rows) {
+ for (var index = 0; index < headers.length; index++) {
+ var header = headers[index],
+ exists = false,
+ col = this._findCol(header.textContent),
+ width,
+ attributes;
+
+ if (col) {
+ exists = true;
+ } else {
+ col = { title: header.textContent.trim() };
+ }
+
+ if (!col.field) {
+ col.field = header.textContent.trim().toLowerCase().replace(" ", "_");
+ }
+
+ width = header.getAttribute("width");
+
+ if (width && !col.width) {
+ col.width = width;
+ }
+
+ //check for tablator inline options
+ attributes = header.attributes;
+
+ // //check for tablator inline options
+ this._extractOptions(header, col, Column.prototype.defaultOptionList);
+
+ for (var i in attributes) {
+ var attrib = attributes[i],
+ name;
+
+ if (attrib && (typeof attrib === 'undefined' ? 'undefined' : _typeof(attrib)) == "object" && attrib.name && attrib.name.indexOf("tabulator-") === 0) {
+
+ name = attrib.name.replace("tabulator-", "");
+
+ col[name] = this._attribValue(attrib.value);
+ }
+ }
+
+ this.fieldIndex[index] = col.field;
+
+ if (col.field == this.table.options.index) {
+ this.hasIndex = true;
+ }
+
+ if (!exists) {
+ this.table.options.columns.push(col);
+ }
+ }
+ };
+
+ //generate blank headers
+ HtmlTableImport.prototype._generateBlankHeaders = function (headers, rows) {
+ for (var index = 0; index < headers.length; index++) {
+ var header = headers[index],
+ col = { title: "", field: "col" + index };
+
+ this.fieldIndex[index] = col.field;
+
+ var width = header.getAttribute("width");
+
+ if (width) {
+ col.width = width;
+ }
+
+ this.table.options.columns.push(col);
+ }
+ };
+
+ Tabulator.prototype.registerModule("htmlTableImport", HtmlTableImport);
+ var HtmlTableExport = function HtmlTableExport(table) {
+ this.table = table; //hold Tabulator object
+ this.config = {};
+ this.cloneTableStyle = true;
+ this.colVisProp = "";
+ };
+
+ HtmlTableExport.prototype.genereateTable = function (config, style, visible, colVisProp) {
+ this.cloneTableStyle = style;
+ this.config = config || {};
+ this.colVisProp = colVisProp;
+
+ var headers = this.generateHeaderElements();
+ var body = this.generateBodyElements(visible);
+
+ var table = document.createElement("table");
+ table.classList.add("tabulator-print-table");
+ table.appendChild(headers);
+ table.appendChild(body);
+
+ this.mapElementStyles(this.table.element, table, ["border-top", "border-left", "border-right", "border-bottom"]);
+
+ return table;
+ };
+
+ HtmlTableExport.prototype.generateColumnGroupHeaders = function () {
+ var _this42 = this;
+
+ var output = [];
+
+ var columns = this.config.columnGroups !== false ? this.table.columnManager.columns : this.table.columnManager.columnsByIndex;
+
+ columns.forEach(function (column) {
+ var colData = _this42.processColumnGroup(column);
+
+ if (colData) {
+ output.push(colData);
+ }
+ });
+
+ return output;
+ };
+
+ HtmlTableExport.prototype.processColumnGroup = function (column) {
+ var _this43 = this;
+
+ var subGroups = column.columns,
+ maxDepth = 0;
+
+ var groupData = {
+ title: column.definition.title,
+ column: column,
+ depth: 1
+ };
+
+ if (subGroups.length) {
+ groupData.subGroups = [];
+ groupData.width = 0;
+
+ subGroups.forEach(function (subGroup) {
+ var subGroupData = _this43.processColumnGroup(subGroup);
+
+ if (subGroupData) {
+ groupData.width += subGroupData.width;
+ groupData.subGroups.push(subGroupData);
+
+ if (subGroupData.depth > maxDepth) {
+ maxDepth = subGroupData.depth;
+ }
+ }
+ });
+
+ groupData.depth += maxDepth;
+
+ if (!groupData.width) {
+ return false;
+ }
+ } else {
+ if (column.field && this.columnVisCheck(column)) {
+ groupData.width = 1;
+ } else {
+ return false;
+ }
+ }
+
+ return groupData;
+ };
+
+ HtmlTableExport.prototype.groupHeadersToRows = function (columns) {
+
+ var headers = [],
+ headerDepth = 0;
+
+ function parseColumnGroup(column, level) {
+
+ var depth = headerDepth - level;
+
+ if (typeof headers[level] === "undefined") {
+ headers[level] = [];
+ }
+
+ column.height = column.subGroups ? 1 : depth - column.depth + 1;
+
+ headers[level].push(column);
+
+ if (column.subGroups) {
+ column.subGroups.forEach(function (subGroup) {
+ parseColumnGroup(subGroup, level + 1);
+ });
+ }
+ }
+
+ //calculate maximum header debth
+ columns.forEach(function (column) {
+ if (column.depth > headerDepth) {
+ headerDepth = column.depth;
+ }
+ });
+
+ columns.forEach(function (column) {
+ parseColumnGroup(column, 0);
+ });
+
+ return headers;
+ };
+
+ HtmlTableExport.prototype.generateHeaderElements = function () {
+ var _this44 = this;
+
+ var headerEl = document.createElement("thead");
+
+ var rows = this.groupHeadersToRows(this.generateColumnGroupHeaders());
+
+ rows.forEach(function (row) {
+ var rowEl = document.createElement("tr");
+
+ _this44.mapElementStyles(_this44.table.columnManager.getHeadersElement(), headerEl, ["border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+
+ row.forEach(function (column) {
+ var cellEl = document.createElement("th");
+
+ cellEl.colSpan = column.width;
+ cellEl.rowSpan = column.height;
+
+ cellEl.innerHTML = column.column.definition.title;
+
+ if (_this44.cloneTableStyle) {
+ cellEl.style.boxSizing = "border-box";
+ }
+
+ _this44.mapElementStyles(column.column.getElement(), cellEl, ["text-align", "border-top", "border-left", "border-right", "border-bottom", "background-color", "color", "font-weight", "font-family", "font-size"]);
+ _this44.mapElementStyles(column.column.contentElement, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+
+ if (column.column.visible) {
+ _this44.mapElementStyles(column.column.getElement(), cellEl, ["width"]);
+ } else {
+ if (column.column.definition.width) {
+ cellEl.style.width = column.column.definition.width + "px";
+ }
+ }
+
+ if (column.column.parent) {
+ _this44.mapElementStyles(column.column.parent.groupElement, cellEl, ["border-top"]);
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ headerEl.appendChild(rowEl);
+ });
+
+ return headerEl;
+ };
+
+ HtmlTableExport.prototype.generateBodyElements = function (visible) {
+ var _this45 = this;
+
+ var oddRow, evenRow, calcRow, firstRow, firstCell, firstGroup, lastCell, styleCells, styleRow;
+
+ //lookup row styles
+ if (this.cloneTableStyle && window.getComputedStyle) {
+ oddRow = this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)");
+ evenRow = this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)");
+ calcRow = this.table.element.querySelector(".tabulator-row.tabulator-calcs");
+ firstRow = this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)");
+ firstGroup = this.table.element.getElementsByClassName("tabulator-group")[0];
+
+ if (firstRow) {
+ styleCells = firstRow.getElementsByClassName("tabulator-cell");
+ firstCell = styleCells[0];
+ lastCell = styleCells[styleCells.length - 1];
+ }
+ }
+
+ var bodyEl = document.createElement("tbody");
+
+ var rows = visible ? this.table.rowManager.getVisibleRows(true) : this.table.rowManager.getDisplayRows();
+ var columns = [];
+
+ if (this.config.columnCalcs !== false && this.table.modExists("columnCalcs")) {
+ if (this.table.modules.columnCalcs.topInitialized) {
+ rows.unshift(this.table.modules.columnCalcs.topRow);
+ }
+
+ if (this.table.modules.columnCalcs.botInitialized) {
+ rows.push(this.table.modules.columnCalcs.botRow);
+ }
+ }
+
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (_this45.columnVisCheck(column)) {
+ columns.push(column);
+ }
+ });
+
+ rows = rows.filter(function (row) {
+ switch (row.type) {
+ case "group":
+ return _this45.config.rowGroups !== false;
+ break;
+
+ case "calc":
+ return _this45.config.columnCalcs !== false;
+ break;
+ }
+
+ return true;
+ });
+
+ if (rows.length > 1000) {
+ console.warn("It may take a long time to render an HTML table with more than 1000 rows");
+ }
+
+ rows.forEach(function (row, i) {
+ var rowData = row.getData();
+
+ var rowEl = document.createElement("tr");
+ rowEl.classList.add("tabulator-print-table-row");
+
+ switch (row.type) {
+ case "group":
+ var cellEl = document.createElement("td");
+ cellEl.colSpan = columns.length;
+ cellEl.innerHTML = row.key;
+
+ rowEl.classList.add("tabulator-print-table-group");
+
+ _this45.mapElementStyles(firstGroup, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ _this45.mapElementStyles(firstGroup, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom"]);
+ rowEl.appendChild(cellEl);
+ break;
+
+ case "calc":
+ rowEl.classList.add("tabulator-print-table-calcs");
+
+ case "row":
+ columns.forEach(function (column) {
+ var cellEl = document.createElement("td");
+
+ var value = column.getFieldValue(rowData);
+
+ var cellWrapper = {
+ getValue: function getValue() {
+ return value;
+ },
+ getField: function getField() {
+ return column.definition.field;
+ },
+ getElement: function getElement() {
+ return cellEl;
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ },
+ getData: function getData() {
+ return rowData;
+ },
+ getRow: function getRow() {
+ return row.getComponent();
+ },
+ getComponent: function getComponent() {
+ return cellWrapper;
+ },
+ column: column
+ };
+
+ if (_this45.table.modExists("format")) {
+ value = _this45.table.modules.format.formatValue(cellWrapper);
+ } else {
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "object":
+ value = JSON.stringify(value);
+ break;
+
+ case "undefined":
+ case "null":
+ value = "";
+ break;
+
+ default:
+ value = value;
+ }
+ }
+
+ if (value instanceof Node) {
+ cellEl.appendChild(value);
+ } else {
+ cellEl.innerHTML = value;
+ }
+
+ if (firstCell) {
+ _this45.mapElementStyles(firstCell, cellEl, ["padding-top", "padding-left", "padding-right", "padding-bottom", "border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "text-align"]);
+ }
+
+ rowEl.appendChild(cellEl);
+ });
+
+ styleRow = row.type == "calc" ? calcRow : i % 2 && evenRow ? evenRow : oddRow;
+
+ _this45.mapElementStyles(styleRow, rowEl, ["border-top", "border-left", "border-right", "border-bottom", "color", "font-weight", "font-family", "font-size", "background-color"]);
+ break;
+ }
+
+ bodyEl.appendChild(rowEl);
+ });
+
+ return bodyEl;
+ };
+
+ HtmlTableExport.prototype.columnVisCheck = function (column) {
+ return column.definition[this.colVisProp] !== false && (column.visible || !column.visible && column.definition[this.colVisProp]);
+ };
+
+ HtmlTableExport.prototype.getHtml = function (visible, style, config) {
+ var holder = document.createElement("div");
+
+ holder.appendChild(this.genereateTable(config || this.table.options.htmlOutputConfig, style, visible, "htmlOutput"));
+
+ return holder.innerHTML;
+ };
+
+ HtmlTableExport.prototype.mapElementStyles = function (from, to, props) {
+ if (this.cloneTableStyle && from && to) {
+
+ var lookup = {
+ "background-color": "backgroundColor",
+ "color": "fontColor",
+ "width": "width",
+ "font-weight": "fontWeight",
+ "font-family": "fontFamily",
+ "font-size": "fontSize",
+ "text-align": "textAlign",
+ "border-top": "borderTop",
+ "border-left": "borderLeft",
+ "border-right": "borderRight",
+ "border-bottom": "borderBottom",
+ "padding-top": "paddingTop",
+ "padding-left": "paddingLeft",
+ "padding-right": "paddingRight",
+ "padding-bottom": "paddingBottom"
+ };
+
+ if (window.getComputedStyle) {
+ var fromStyle = window.getComputedStyle(from);
+
+ props.forEach(function (prop) {
+ to.style[lookup[prop]] = fromStyle.getPropertyValue(prop);
+ });
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("htmlTableExport", HtmlTableExport);
+
+ var Keybindings = function Keybindings(table) {
+ this.table = table; //hold Tabulator object
+ this.watchKeys = null;
+ this.pressedKeys = null;
+ this.keyupBinding = false;
+ this.keydownBinding = false;
+ };
+
+ Keybindings.prototype.initialize = function () {
+ var bindings = this.table.options.keybindings,
+ mergedBindings = {};
+
+ this.watchKeys = {};
+ this.pressedKeys = [];
+
+ if (bindings !== false) {
+
+ for (var key in this.bindings) {
+ mergedBindings[key] = this.bindings[key];
+ }
+
+ if (Object.keys(bindings).length) {
+
+ for (var _key in bindings) {
+ mergedBindings[_key] = bindings[_key];
+ }
+ }
+
+ this.mapBindings(mergedBindings);
+ this.bindEvents();
+ }
+ };
+
+ Keybindings.prototype.mapBindings = function (bindings) {
+ var _this46 = this;
+
+ var self = this;
+
+ var _loop2 = function _loop2(key) {
+
+ if (_this46.actions[key]) {
+
+ if (bindings[key]) {
+
+ if (_typeof(bindings[key]) !== "object") {
+ bindings[key] = [bindings[key]];
+ }
+
+ bindings[key].forEach(function (binding) {
+ self.mapBinding(key, binding);
+ });
+ }
+ } else {
+ console.warn("Key Binding Error - no such action:", key);
+ }
+ };
+
+ for (var key in bindings) {
+ _loop2(key);
+ }
+ };
+
+ Keybindings.prototype.mapBinding = function (action, symbolsList) {
+ var self = this;
+
+ var binding = {
+ action: this.actions[action],
+ keys: [],
+ ctrl: false,
+ shift: false
+ };
+
+ var symbols = symbolsList.toString().toLowerCase().split(" ").join("").split("+");
+
+ symbols.forEach(function (symbol) {
+ switch (symbol) {
+ case "ctrl":
+ binding.ctrl = true;
+ break;
+
+ case "shift":
+ binding.shift = true;
+ break;
+
+ default:
+ symbol = parseInt(symbol);
+ binding.keys.push(symbol);
+
+ if (!self.watchKeys[symbol]) {
+ self.watchKeys[symbol] = [];
+ }
+
+ self.watchKeys[symbol].push(binding);
+ }
+ });
+ };
+
+ Keybindings.prototype.bindEvents = function () {
+ var self = this;
+
+ this.keyupBinding = function (e) {
+ var code = e.keyCode;
+ var bindings = self.watchKeys[code];
+
+ if (bindings) {
+
+ self.pressedKeys.push(code);
+
+ bindings.forEach(function (binding) {
+ self.checkBinding(e, binding);
+ });
+ }
+ };
+
+ this.keydownBinding = function (e) {
+ var code = e.keyCode;
+ var bindings = self.watchKeys[code];
+
+ if (bindings) {
+
+ var index = self.pressedKeys.indexOf(code);
+
+ if (index > -1) {
+ self.pressedKeys.splice(index, 1);
+ }
+ }
+ };
+
+ this.table.element.addEventListener("keydown", this.keyupBinding);
+
+ this.table.element.addEventListener("keyup", this.keydownBinding);
+ };
+
+ Keybindings.prototype.clearBindings = function () {
+ if (this.keyupBinding) {
+ this.table.element.removeEventListener("keydown", this.keyupBinding);
+ }
+
+ if (this.keydownBinding) {
+ this.table.element.removeEventListener("keyup", this.keydownBinding);
+ }
+ };
+
+ Keybindings.prototype.checkBinding = function (e, binding) {
+ var self = this,
+ match = true;
+
+ if (e.ctrlKey == binding.ctrl && e.shiftKey == binding.shift) {
+ binding.keys.forEach(function (key) {
+ var index = self.pressedKeys.indexOf(key);
+
+ if (index == -1) {
+ match = false;
+ }
+ });
+
+ if (match) {
+ binding.action.call(self, e);
+ }
+
+ return true;
+ }
+
+ return false;
+ };
+
+ //default bindings
+ Keybindings.prototype.bindings = {
+ navPrev: "shift + 9",
+ navNext: 9,
+ navUp: 38,
+ navDown: 40,
+ scrollPageUp: 33,
+ scrollPageDown: 34,
+ scrollToStart: 36,
+ scrollToEnd: 35,
+ undo: "ctrl + 90",
+ redo: "ctrl + 89",
+ copyToClipboard: "ctrl + 67"
+ };
+
+ //default actions
+ Keybindings.prototype.actions = {
+ keyBlock: function keyBlock(e) {
+ e.stopPropagation();
+ e.preventDefault();
+ },
+ scrollPageUp: function scrollPageUp(e) {
+ var rowManager = this.table.rowManager,
+ newPos = rowManager.scrollTop - rowManager.height,
+ scrollMax = rowManager.element.scrollHeight;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ if (newPos >= 0) {
+ rowManager.element.scrollTop = newPos;
+ } else {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+ }
+ }
+
+ this.table.element.focus();
+ },
+ scrollPageDown: function scrollPageDown(e) {
+ var rowManager = this.table.rowManager,
+ newPos = rowManager.scrollTop + rowManager.height,
+ scrollMax = rowManager.element.scrollHeight;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ if (newPos <= scrollMax) {
+ rowManager.element.scrollTop = newPos;
+ } else {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+ }
+ }
+
+ this.table.element.focus();
+ },
+ scrollToStart: function scrollToStart(e) {
+ var rowManager = this.table.rowManager;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[0]);
+ }
+
+ this.table.element.focus();
+ },
+ scrollToEnd: function scrollToEnd(e) {
+ var rowManager = this.table.rowManager;
+
+ e.preventDefault();
+
+ if (rowManager.displayRowsCount) {
+ rowManager.scrollToRow(rowManager.getDisplayRows()[rowManager.displayRowsCount - 1]);
+ }
+
+ this.table.element.focus();
+ },
+ navPrev: function navPrev(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().prev();
+ }
+ }
+ },
+
+ navNext: function navNext(e) {
+ var cell = false;
+ var newRow = this.table.options.tabEndNewRow;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ if (!cell.nav().next()) {
+ if (newRow) {
+ if (newRow === true) {
+ newRow = this.table.addRow({});
+ } else {
+ if (typeof newRow == "function") {
+ newRow = this.table.addRow(newRow(cell.row.getComponent()));
+ } else {
+ newRow = this.table.addRow(newRow);
+ }
+ }
+
+ newRow.then(function () {
+ cell.nav().next();
+ });
+ }
+ }
+ }
+ }
+ },
+
+ navLeft: function navLeft(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().left();
+ }
+ }
+ },
+
+ navRight: function navRight(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().right();
+ }
+ }
+ },
+
+ navUp: function navUp(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().up();
+ }
+ }
+ },
+
+ navDown: function navDown(e) {
+ var cell = false;
+
+ if (this.table.modExists("edit")) {
+ cell = this.table.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ cell.nav().down();
+ }
+ }
+ },
+
+ undo: function undo(e) {
+ var cell = false;
+ if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+ cell = this.table.modules.edit.currentCell;
+
+ if (!cell) {
+ e.preventDefault();
+ this.table.modules.history.undo();
+ }
+ }
+ },
+
+ redo: function redo(e) {
+ var cell = false;
+ if (this.table.options.history && this.table.modExists("history") && this.table.modExists("edit")) {
+
+ cell = this.table.modules.edit.currentCell;
+
+ if (!cell) {
+ e.preventDefault();
+ this.table.modules.history.redo();
+ }
+ }
+ },
+
+ copyToClipboard: function copyToClipboard(e) {
+ if (!this.table.modules.edit.currentCell) {
+ if (this.table.modExists("clipboard", true)) {
+ this.table.modules.clipboard.copy(!this.table.options.selectable || this.table.options.selectable == "highlight" ? "active" : "selected", null, null, null, true);
+ }
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("keybindings", Keybindings);
+ var MoveColumns = function MoveColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.placeholderElement = this.createPlaceholderElement();
+ this.hoverElement = false; //floating column header element
+ this.checkTimeout = false; //click check timeout holder
+ this.checkPeriod = 250; //period to wait on mousedown to consider this a move and not a click
+ this.moving = false; //currently moving column
+ this.toCol = false; //destination column
+ this.toColAfter = false; //position of moving column relative to the desitnation column
+ this.startX = 0; //starting position within header element
+ this.autoScrollMargin = 40; //auto scroll on edge when within margin
+ this.autoScrollStep = 5; //auto scroll distance in pixels
+ this.autoScrollTimeout = false; //auto scroll timeout
+ this.touchMove = false;
+
+ this.moveHover = this.moveHover.bind(this);
+ this.endMove = this.endMove.bind(this);
+ };
+
+ MoveColumns.prototype.createPlaceholderElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col");
+ el.classList.add("tabulator-col-placeholder");
+
+ return el;
+ };
+
+ MoveColumns.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = {},
+ colEl;
+
+ if (!column.modules.frozen) {
+
+ colEl = column.getElement();
+
+ config.mousemove = function (e) {
+ if (column.parent === self.moving.parent) {
+ if ((self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(colEl).left + self.table.columnManager.element.scrollLeft > column.getWidth() / 2) {
+ if (self.toCol !== column || !self.toColAfter) {
+ colEl.parentNode.insertBefore(self.placeholderElement, colEl.nextSibling);
+ self.moveColumn(column, true);
+ }
+ } else {
+ if (self.toCol !== column || self.toColAfter) {
+ colEl.parentNode.insertBefore(self.placeholderElement, colEl);
+ self.moveColumn(column, false);
+ }
+ }
+ }
+ }.bind(self);
+
+ colEl.addEventListener("mousedown", function (e) {
+ self.touchMove = false;
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, column);
+ }, self.checkPeriod);
+ }
+ });
+
+ colEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ self.bindTouchEvents(column);
+ }
+
+ column.modules.moveColumn = config;
+ };
+
+ MoveColumns.prototype.bindTouchEvents = function (column) {
+ var self = this,
+ colEl = column.getElement(),
+ startXMove = false,
+ //shifting center position of the cell
+ dir = false,
+ currentCol,
+ nextCol,
+ prevCol,
+ nextColWidth,
+ prevColWidth,
+ nextColWidthLast,
+ prevColWidthLast;
+
+ colEl.addEventListener("touchstart", function (e) {
+ self.checkTimeout = setTimeout(function () {
+ self.touchMove = true;
+ currentCol = column;
+ nextCol = column.nextColumn();
+ nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+ prevCol = column.prevColumn();
+ prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+ nextColWidthLast = 0;
+ prevColWidthLast = 0;
+ startXMove = false;
+
+ self.startMove(e, column);
+ }, self.checkPeriod);
+ }, { passive: true });
+
+ colEl.addEventListener("touchmove", function (e) {
+ var halfCol, diff, moveToCol;
+
+ if (self.moving) {
+ self.moveHover(e);
+
+ if (!startXMove) {
+ startXMove = e.touches[0].pageX;
+ }
+
+ diff = e.touches[0].pageX - startXMove;
+
+ if (diff > 0) {
+ if (nextCol && diff - nextColWidthLast > nextColWidth) {
+ moveToCol = nextCol;
+
+ if (moveToCol !== column) {
+ startXMove = e.touches[0].pageX;
+ moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement().nextSibling);
+ self.moveColumn(moveToCol, true);
+ }
+ }
+ } else {
+ if (prevCol && -diff - prevColWidthLast > prevColWidth) {
+ moveToCol = prevCol;
+
+ if (moveToCol !== column) {
+ startXMove = e.touches[0].pageX;
+ moveToCol.getElement().parentNode.insertBefore(self.placeholderElement, moveToCol.getElement());
+ self.moveColumn(moveToCol, false);
+ }
+ }
+ }
+
+ if (moveToCol) {
+ currentCol = moveToCol;
+ nextCol = moveToCol.nextColumn();
+ nextColWidthLast = nextColWidth;
+ nextColWidth = nextCol ? nextCol.getWidth() / 2 : 0;
+ prevCol = moveToCol.prevColumn();
+ prevColWidthLast = prevColWidth;
+ prevColWidth = prevCol ? prevCol.getWidth() / 2 : 0;
+ }
+ }
+ }, { passive: true });
+
+ colEl.addEventListener("touchend", function (e) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ if (self.moving) {
+ self.endMove(e);
+ }
+ });
+ };
+
+ MoveColumns.prototype.startMove = function (e, column) {
+ var element = column.getElement();
+
+ this.moving = column;
+ this.startX = (this.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(element).left;
+
+ this.table.element.classList.add("tabulator-block-select");
+
+ //create placeholder
+ this.placeholderElement.style.width = column.getWidth() + "px";
+ this.placeholderElement.style.height = column.getHeight() + "px";
+
+ element.parentNode.insertBefore(this.placeholderElement, element);
+ element.parentNode.removeChild(element);
+
+ //create hover element
+ this.hoverElement = element.cloneNode(true);
+ this.hoverElement.classList.add("tabulator-moving");
+
+ this.table.columnManager.getElement().appendChild(this.hoverElement);
+
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.bottom = "0";
+
+ if (!this.touchMove) {
+ this._bindMouseMove();
+
+ document.body.addEventListener("mousemove", this.moveHover);
+ document.body.addEventListener("mouseup", this.endMove);
+ }
+
+ this.moveHover(e);
+ };
+
+ MoveColumns.prototype._bindMouseMove = function () {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.modules.moveColumn.mousemove) {
+ column.getElement().addEventListener("mousemove", column.modules.moveColumn.mousemove);
+ }
+ });
+ };
+
+ MoveColumns.prototype._unbindMouseMove = function () {
+ this.table.columnManager.columnsByIndex.forEach(function (column) {
+ if (column.modules.moveColumn.mousemove) {
+ column.getElement().removeEventListener("mousemove", column.modules.moveColumn.mousemove);
+ }
+ });
+ };
+
+ MoveColumns.prototype.moveColumn = function (column, after) {
+ var movingCells = this.moving.getCells();
+
+ this.toCol = column;
+ this.toColAfter = after;
+
+ if (after) {
+ column.getCells().forEach(function (cell, i) {
+ var cellEl = cell.getElement();
+ cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl.nextSibling);
+ });
+ } else {
+ column.getCells().forEach(function (cell, i) {
+ var cellEl = cell.getElement();
+ cellEl.parentNode.insertBefore(movingCells[i].getElement(), cellEl);
+ });
+ }
+ };
+
+ MoveColumns.prototype.endMove = function (e) {
+ if (e.which === 1 || this.touchMove) {
+ this._unbindMouseMove();
+
+ this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
+ this.placeholderElement.parentNode.removeChild(this.placeholderElement);
+ this.hoverElement.parentNode.removeChild(this.hoverElement);
+
+ this.table.element.classList.remove("tabulator-block-select");
+
+ if (this.toCol) {
+ this.table.columnManager.moveColumnActual(this.moving, this.toCol, this.toColAfter);
+ }
+
+ this.moving = false;
+ this.toCol = false;
+ this.toColAfter = false;
+
+ if (!this.touchMove) {
+ document.body.removeEventListener("mousemove", this.moveHover);
+ document.body.removeEventListener("mouseup", this.endMove);
+ }
+ }
+ };
+
+ MoveColumns.prototype.moveHover = function (e) {
+ var self = this,
+ columnHolder = self.table.columnManager.getElement(),
+ scrollLeft = columnHolder.scrollLeft,
+ xPos = (self.touchMove ? e.touches[0].pageX : e.pageX) - Tabulator.prototype.helpers.elOffset(columnHolder).left + scrollLeft,
+ scrollPos;
+
+ self.hoverElement.style.left = xPos - self.startX + "px";
+
+ if (xPos - scrollLeft < self.autoScrollMargin) {
+ if (!self.autoScrollTimeout) {
+ self.autoScrollTimeout = setTimeout(function () {
+ scrollPos = Math.max(0, scrollLeft - 5);
+ self.table.rowManager.getElement().scrollLeft = scrollPos;
+ self.autoScrollTimeout = false;
+ }, 1);
+ }
+ }
+
+ if (scrollLeft + columnHolder.clientWidth - xPos < self.autoScrollMargin) {
+ if (!self.autoScrollTimeout) {
+ self.autoScrollTimeout = setTimeout(function () {
+ scrollPos = Math.min(columnHolder.clientWidth, scrollLeft + 5);
+ self.table.rowManager.getElement().scrollLeft = scrollPos;
+ self.autoScrollTimeout = false;
+ }, 1);
+ }
+ }
+ };
+
+ Tabulator.prototype.registerModule("moveColumn", MoveColumns);
+
+ var MoveRows = function MoveRows(table) {
+
+ this.table = table; //hold Tabulator object
+ this.placeholderElement = this.createPlaceholderElement();
+ this.hoverElement = false; //floating row header element
+ this.checkTimeout = false; //click check timeout holder
+ this.checkPeriod = 150; //period to wait on mousedown to consider this a move and not a click
+ this.moving = false; //currently moving row
+ this.toRow = false; //destination row
+ this.toRowAfter = false; //position of moving row relative to the desitnation row
+ this.hasHandle = false; //row has handle instead of fully movable row
+ this.startY = 0; //starting Y position within header element
+ this.startX = 0; //starting X position within header element
+
+ this.moveHover = this.moveHover.bind(this);
+ this.endMove = this.endMove.bind(this);
+ this.tableRowDropEvent = false;
+
+ this.touchMove = false;
+
+ this.connection = false;
+ this.connections = [];
+
+ this.connectedTable = false;
+ this.connectedRow = false;
+ };
+
+ MoveRows.prototype.createPlaceholderElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-row");
+ el.classList.add("tabulator-row-placeholder");
+
+ return el;
+ };
+
+ MoveRows.prototype.initialize = function (handle) {
+ this.connection = this.table.options.movableRowsConnectedTables;
+ };
+
+ MoveRows.prototype.setHandle = function (handle) {
+ this.hasHandle = handle;
+ };
+
+ MoveRows.prototype.initializeGroupHeader = function (group) {
+ var self = this,
+ config = {},
+ rowEl;
+
+ //inter table drag drop
+ config.mouseup = function (e) {
+ self.tableRowDrop(e, row);
+ }.bind(self);
+
+ //same table drag drop
+ config.mousemove = function (e) {
+ if (e.pageY - Tabulator.prototype.helpers.elOffset(group.element).top + self.table.rowManager.element.scrollTop > group.getHeight() / 2) {
+ if (self.toRow !== group || !self.toRowAfter) {
+ var rowEl = group.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+ self.moveRow(group, true);
+ }
+ } else {
+ if (self.toRow !== group || self.toRowAfter) {
+ var rowEl = group.getElement();
+ if (rowEl.previousSibling) {
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+ self.moveRow(group, false);
+ }
+ }
+ }
+ }.bind(self);
+
+ group.modules.moveRow = config;
+ };
+
+ MoveRows.prototype.initializeRow = function (row) {
+ var self = this,
+ config = {},
+ rowEl;
+
+ //inter table drag drop
+ config.mouseup = function (e) {
+ self.tableRowDrop(e, row);
+ }.bind(self);
+
+ //same table drag drop
+ config.mousemove = function (e) {
+ if (e.pageY - Tabulator.prototype.helpers.elOffset(row.element).top + self.table.rowManager.element.scrollTop > row.getHeight() / 2) {
+ if (self.toRow !== row || !self.toRowAfter) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl.nextSibling);
+ self.moveRow(row, true);
+ }
+ } else {
+ if (self.toRow !== row || self.toRowAfter) {
+ var rowEl = row.getElement();
+ rowEl.parentNode.insertBefore(self.placeholderElement, rowEl);
+ self.moveRow(row, false);
+ }
+ }
+ }.bind(self);
+
+ if (!this.hasHandle) {
+
+ rowEl = row.getElement();
+
+ rowEl.addEventListener("mousedown", function (e) {
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, row);
+ }, self.checkPeriod);
+ }
+ });
+
+ rowEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ this.bindTouchEvents(row, row.getElement());
+ }
+
+ row.modules.moveRow = config;
+ };
+
+ MoveRows.prototype.initializeCell = function (cell) {
+ var self = this,
+ cellEl = cell.getElement();
+
+ cellEl.addEventListener("mousedown", function (e) {
+ if (e.which === 1) {
+ self.checkTimeout = setTimeout(function () {
+ self.startMove(e, cell.row);
+ }, self.checkPeriod);
+ }
+ });
+
+ cellEl.addEventListener("mouseup", function (e) {
+ if (e.which === 1) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ }
+ });
+
+ this.bindTouchEvents(cell.row, cell.getElement());
+ };
+
+ MoveRows.prototype.bindTouchEvents = function (row, element) {
+ var self = this,
+ startYMove = false,
+ //shifting center position of the cell
+ dir = false,
+ currentRow,
+ nextRow,
+ prevRow,
+ nextRowHeight,
+ prevRowHeight,
+ nextRowHeightLast,
+ prevRowHeightLast;
+
+ element.addEventListener("touchstart", function (e) {
+ self.checkTimeout = setTimeout(function () {
+ self.touchMove = true;
+ currentRow = row;
+ nextRow = row.nextRow();
+ nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+ prevRow = row.prevRow();
+ prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+ nextRowHeightLast = 0;
+ prevRowHeightLast = 0;
+ startYMove = false;
+
+ self.startMove(e, row);
+ }, self.checkPeriod);
+ }, { passive: true });
+ this.moving, this.toRow, this.toRowAfter;
+ element.addEventListener("touchmove", function (e) {
+
+ var halfCol, diff, moveToRow;
+
+ if (self.moving) {
+ e.preventDefault();
+
+ self.moveHover(e);
+
+ if (!startYMove) {
+ startYMove = e.touches[0].pageY;
+ }
+
+ diff = e.touches[0].pageY - startYMove;
+
+ if (diff > 0) {
+ if (nextRow && diff - nextRowHeightLast > nextRowHeight) {
+ moveToRow = nextRow;
+
+ if (moveToRow !== row) {
+ startYMove = e.touches[0].pageY;
+ moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement().nextSibling);
+ self.moveRow(moveToRow, true);
+ }
+ }
+ } else {
+ if (prevRow && -diff - prevRowHeightLast > prevRowHeight) {
+ moveToRow = prevRow;
+
+ if (moveToRow !== row) {
+ startYMove = e.touches[0].pageY;
+ moveToRow.getElement().parentNode.insertBefore(self.placeholderElement, moveToRow.getElement());
+ self.moveRow(moveToRow, false);
+ }
+ }
+ }
+
+ if (moveToRow) {
+ currentRow = moveToRow;
+ nextRow = moveToRow.nextRow();
+ nextRowHeightLast = nextRowHeight;
+ nextRowHeight = nextRow ? nextRow.getHeight() / 2 : 0;
+ prevRow = moveToRow.prevRow();
+ prevRowHeightLast = prevRowHeight;
+ prevRowHeight = prevRow ? prevRow.getHeight() / 2 : 0;
+ }
+ }
+ });
+
+ element.addEventListener("touchend", function (e) {
+ if (self.checkTimeout) {
+ clearTimeout(self.checkTimeout);
+ }
+ if (self.moving) {
+ self.endMove(e);
+ self.touchMove = false;
+ }
+ });
+ };
+
+ MoveRows.prototype._bindMouseMove = function () {
+ var self = this;
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+ row.getElement().addEventListener("mousemove", row.modules.moveRow.mousemove);
+ }
+ });
+ };
+
+ MoveRows.prototype._unbindMouseMove = function () {
+ var self = this;
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if ((row.type === "row" || row.type === "group") && row.modules.moveRow.mousemove) {
+ row.getElement().removeEventListener("mousemove", row.modules.moveRow.mousemove);
+ }
+ });
+ };
+
+ MoveRows.prototype.startMove = function (e, row) {
+ var element = row.getElement();
+
+ this.setStartPosition(e, row);
+
+ this.moving = row;
+
+ this.table.element.classList.add("tabulator-block-select");
+
+ //create placeholder
+ this.placeholderElement.style.width = row.getWidth() + "px";
+ this.placeholderElement.style.height = row.getHeight() + "px";
+
+ if (!this.connection) {
+ element.parentNode.insertBefore(this.placeholderElement, element);
+ element.parentNode.removeChild(element);
+ } else {
+ this.table.element.classList.add("tabulator-movingrow-sending");
+ this.connectToTables(row);
+ }
+
+ //create hover element
+ this.hoverElement = element.cloneNode(true);
+ this.hoverElement.classList.add("tabulator-moving");
+
+ if (this.connection) {
+ document.body.appendChild(this.hoverElement);
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.top = "0";
+ this.hoverElement.style.width = this.table.element.clientWidth + "px";
+ this.hoverElement.style.whiteSpace = "nowrap";
+ this.hoverElement.style.overflow = "hidden";
+ this.hoverElement.style.pointerEvents = "none";
+ } else {
+ this.table.rowManager.getTableElement().appendChild(this.hoverElement);
+
+ this.hoverElement.style.left = "0";
+ this.hoverElement.style.top = "0";
+
+ this._bindMouseMove();
+ }
+
+ document.body.addEventListener("mousemove", this.moveHover);
+ document.body.addEventListener("mouseup", this.endMove);
+
+ this.moveHover(e);
+ };
+
+ MoveRows.prototype.setStartPosition = function (e, row) {
+ var pageX = this.touchMove ? e.touches[0].pageX : e.pageX,
+ pageY = this.touchMove ? e.touches[0].pageY : e.pageY,
+ element,
+ position;
+
+ element = row.getElement();
+ if (this.connection) {
+ position = element.getBoundingClientRect();
+
+ this.startX = position.left - pageX + window.pageXOffset;
+ this.startY = position.top - pageY + window.pageYOffset;
+ } else {
+ this.startY = pageY - element.getBoundingClientRect().top;
+ }
+ };
+
+ MoveRows.prototype.endMove = function (e) {
+ if (!e || e.which === 1 || this.touchMove) {
+ this._unbindMouseMove();
+
+ if (!this.connection) {
+ this.placeholderElement.parentNode.insertBefore(this.moving.getElement(), this.placeholderElement.nextSibling);
+ this.placeholderElement.parentNode.removeChild(this.placeholderElement);
+ }
+
+ this.hoverElement.parentNode.removeChild(this.hoverElement);
+
+ this.table.element.classList.remove("tabulator-block-select");
+
+ if (this.toRow) {
+ this.table.rowManager.moveRow(this.moving, this.toRow, this.toRowAfter);
+ }
+
+ this.moving = false;
+ this.toRow = false;
+ this.toRowAfter = false;
+
+ document.body.removeEventListener("mousemove", this.moveHover);
+ document.body.removeEventListener("mouseup", this.endMove);
+
+ if (this.connection) {
+ this.table.element.classList.remove("tabulator-movingrow-sending");
+ this.disconnectFromTables();
+ }
+ }
+ };
+
+ MoveRows.prototype.moveRow = function (row, after) {
+ this.toRow = row;
+ this.toRowAfter = after;
+ };
+
+ MoveRows.prototype.moveHover = function (e) {
+ if (this.connection) {
+ this.moveHoverConnections.call(this, e);
+ } else {
+ this.moveHoverTable.call(this, e);
+ }
+ };
+
+ MoveRows.prototype.moveHoverTable = function (e) {
+ var rowHolder = this.table.rowManager.getElement(),
+ scrollTop = rowHolder.scrollTop,
+ yPos = (this.touchMove ? e.touches[0].pageY : e.pageY) - rowHolder.getBoundingClientRect().top + scrollTop,
+ scrollPos;
+
+ this.hoverElement.style.top = yPos - this.startY + "px";
+ };
+
+ MoveRows.prototype.moveHoverConnections = function (e) {
+ this.hoverElement.style.left = this.startX + (this.touchMove ? e.touches[0].pageX : e.pageX) + "px";
+ this.hoverElement.style.top = this.startY + (this.touchMove ? e.touches[0].pageY : e.pageY) + "px";
+ };
+
+ //establish connection with other tables
+ MoveRows.prototype.connectToTables = function (row) {
+ var self = this,
+ connections = this.table.modules.comms.getConnections(this.connection);
+
+ this.table.options.movableRowsSendingStart.call(this.table, connections);
+
+ this.table.modules.comms.send(this.connection, "moveRow", "connect", {
+ row: row
+ });
+ };
+
+ //disconnect from other tables
+ MoveRows.prototype.disconnectFromTables = function () {
+ var self = this,
+ connections = this.table.modules.comms.getConnections(this.connection);
+
+ this.table.options.movableRowsSendingStop.call(this.table, connections);
+
+ this.table.modules.comms.send(this.connection, "moveRow", "disconnect");
+ };
+
+ //accept incomming connection
+ MoveRows.prototype.connect = function (table, row) {
+ var self = this;
+ if (!this.connectedTable) {
+ this.connectedTable = table;
+ this.connectedRow = row;
+
+ this.table.element.classList.add("tabulator-movingrow-receiving");
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+ row.getElement().addEventListener("mouseup", row.modules.moveRow.mouseup);
+ }
+ });
+
+ self.tableRowDropEvent = self.tableRowDrop.bind(self);
+
+ self.table.element.addEventListener("mouseup", self.tableRowDropEvent);
+
+ this.table.options.movableRowsReceivingStart.call(this.table, row, table);
+
+ return true;
+ } else {
+ console.warn("Move Row Error - Table cannot accept connection, already connected to table:", this.connectedTable);
+ return false;
+ }
+ };
+
+ //close incomming connection
+ MoveRows.prototype.disconnect = function (table) {
+ var self = this;
+ if (table === this.connectedTable) {
+ this.connectedTable = false;
+ this.connectedRow = false;
+
+ this.table.element.classList.remove("tabulator-movingrow-receiving");
+
+ self.table.rowManager.getDisplayRows().forEach(function (row) {
+ if (row.type === "row" && row.modules.moveRow && row.modules.moveRow.mouseup) {
+ row.getElement().removeEventListener("mouseup", row.modules.moveRow.mouseup);
+ }
+ });
+
+ self.table.element.removeEventListener("mouseup", self.tableRowDropEvent);
+
+ this.table.options.movableRowsReceivingStop.call(this.table, table);
+ } else {
+ console.warn("Move Row Error - trying to disconnect from non connected table");
+ }
+ };
+
+ MoveRows.prototype.dropComplete = function (table, row, success) {
+ var sender = false;
+
+ if (success) {
+
+ switch (_typeof(this.table.options.movableRowsSender)) {
+ case "string":
+ sender = this.senders[this.table.options.movableRowsSender];
+ break;
+
+ case "function":
+ sender = this.table.options.movableRowsSender;
+ break;
+ }
+
+ if (sender) {
+ sender.call(this, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ } else {
+ if (this.table.options.movableRowsSender) {
+ console.warn("Mover Row Error - no matching sender found:", this.table.options.movableRowsSender);
+ }
+ }
+
+ this.table.options.movableRowsSent.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ } else {
+ this.table.options.movableRowsSentFailed.call(this.table, this.moving.getComponent(), row ? row.getComponent() : undefined, table);
+ }
+
+ this.endMove();
+ };
+
+ MoveRows.prototype.tableRowDrop = function (e, row) {
+ var receiver = false,
+ success = false;
+
+ e.stopImmediatePropagation();
+
+ switch (_typeof(this.table.options.movableRowsReceiver)) {
+ case "string":
+ receiver = this.receivers[this.table.options.movableRowsReceiver];
+ break;
+
+ case "function":
+ receiver = this.table.options.movableRowsReceiver;
+ break;
+ }
+
+ if (receiver) {
+ success = receiver.call(this, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ } else {
+ console.warn("Mover Row Error - no matching receiver found:", this.table.options.movableRowsReceiver);
+ }
+
+ if (success) {
+ this.table.options.movableRowsReceived.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ } else {
+ this.table.options.movableRowsReceivedFailed.call(this.table, this.connectedRow.getComponent(), row ? row.getComponent() : undefined, this.connectedTable);
+ }
+
+ this.table.modules.comms.send(this.connectedTable, "moveRow", "dropcomplete", {
+ row: row,
+ success: success
+ });
+ };
+
+ MoveRows.prototype.receivers = {
+ insert: function insert(fromRow, toRow, fromTable) {
+ this.table.addRow(fromRow.getData(), undefined, toRow);
+ return true;
+ },
+
+ add: function add(fromRow, toRow, fromTable) {
+ this.table.addRow(fromRow.getData());
+ return true;
+ },
+
+ update: function update(fromRow, toRow, fromTable) {
+ if (toRow) {
+ toRow.update(fromRow.getData());
+ return true;
+ }
+
+ return false;
+ },
+
+ replace: function replace(fromRow, toRow, fromTable) {
+ if (toRow) {
+ this.table.addRow(fromRow.getData(), undefined, toRow);
+ toRow.delete();
+ return true;
+ }
+
+ return false;
+ }
+ };
+
+ MoveRows.prototype.senders = {
+ delete: function _delete(fromRow, toRow, toTable) {
+ fromRow.delete();
+ }
+ };
+
+ MoveRows.prototype.commsReceived = function (table, action, data) {
+ switch (action) {
+ case "connect":
+ return this.connect(table, data.row);
+ break;
+
+ case "disconnect":
+ return this.disconnect(table);
+ break;
+
+ case "dropcomplete":
+ return this.dropComplete(table, data.row, data.success);
+ break;
+ }
+ };
+
+ Tabulator.prototype.registerModule("moveRow", MoveRows);
+ var Mutator = function Mutator(table) {
+ this.table = table; //hold Tabulator object
+ this.allowedTypes = ["", "data", "edit", "clipboard"]; //list of muatation types
+ this.enabled = true;
+ };
+
+ //initialize column mutator
+ Mutator.prototype.initializeColumn = function (column) {
+ var self = this,
+ match = false,
+ config = {};
+
+ this.allowedTypes.forEach(function (type) {
+ var key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ mutator;
+
+ if (column.definition[key]) {
+ mutator = self.lookupMutator(column.definition[key]);
+
+ if (mutator) {
+ match = true;
+
+ config[key] = {
+ mutator: mutator,
+ params: column.definition[key + "Params"] || {}
+ };
+ }
+ }
+ });
+
+ if (match) {
+ column.modules.mutate = config;
+ }
+ };
+
+ Mutator.prototype.lookupMutator = function (value) {
+ var mutator = false;
+
+ //set column mutator
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "string":
+ if (this.mutators[value]) {
+ mutator = this.mutators[value];
+ } else {
+ console.warn("Mutator Error - No such mutator found, ignoring: ", value);
+ }
+ break;
+
+ case "function":
+ mutator = value;
+ break;
+ }
+
+ return mutator;
+ };
+
+ //apply mutator to row
+ Mutator.prototype.transformRow = function (data, type, update) {
+ var self = this,
+ key = "mutator" + (type.charAt(0).toUpperCase() + type.slice(1)),
+ value;
+
+ if (this.enabled) {
+
+ self.table.columnManager.traverse(function (column) {
+ var mutator, params, component;
+
+ if (column.modules.mutate) {
+ mutator = column.modules.mutate[key] || column.modules.mutate.mutator || false;
+
+ if (mutator) {
+ value = column.getFieldValue(data);
+
+ if (!update || update && typeof value !== "undefined") {
+ component = column.getComponent();
+ params = typeof mutator.params === "function" ? mutator.params(value, data, type, component) : mutator.params;
+ column.setFieldValue(data, mutator.mutator(value, data, type, params, component));
+ }
+ }
+ }
+ });
+ }
+
+ return data;
+ };
+
+ //apply mutator to new cell value
+ Mutator.prototype.transformCell = function (cell, value) {
+ var mutator = cell.column.modules.mutate.mutatorEdit || cell.column.modules.mutate.mutator || false;
+
+ if (mutator) {
+ return mutator.mutator(value, cell.row.getData(), "edit", mutator.params, cell.getComponent());
+ } else {
+ return value;
+ }
+ };
+
+ Mutator.prototype.enable = function () {
+ this.enabled = true;
+ };
+
+ Mutator.prototype.disable = function () {
+ this.enabled = false;
+ };
+
+ //default mutators
+ Mutator.prototype.mutators = {};
+
+ Tabulator.prototype.registerModule("mutator", Mutator);
+ var Page = function Page(table) {
+
+ this.table = table; //hold Tabulator object
+
+ this.mode = "local";
+ this.progressiveLoad = false;
+
+ this.size = 0;
+ this.page = 1;
+ this.count = 5;
+ this.max = 1;
+
+ this.displayIndex = 0; //index in display pipeline
+
+ this.pageSizes = [];
+
+ this.createElements();
+ };
+
+ Page.prototype.createElements = function () {
+
+ var button;
+
+ this.element = document.createElement("span");
+ this.element.classList.add("tabulator-paginator");
+
+ this.pagesElement = document.createElement("span");
+ this.pagesElement.classList.add("tabulator-pages");
+
+ button = document.createElement("button");
+ button.classList.add("tabulator-page");
+ button.setAttribute("type", "button");
+ button.setAttribute("role", "button");
+ button.setAttribute("aria-label", "");
+ button.setAttribute("title", "");
+
+ this.firstBut = button.cloneNode(true);
+ this.firstBut.setAttribute("data-page", "first");
+
+ this.prevBut = button.cloneNode(true);
+ this.prevBut.setAttribute("data-page", "prev");
+
+ this.nextBut = button.cloneNode(true);
+ this.nextBut.setAttribute("data-page", "next");
+
+ this.lastBut = button.cloneNode(true);
+ this.lastBut.setAttribute("data-page", "last");
+
+ if (this.table.options.paginationSizeSelector) {
+ this.pageSizeSelect = document.createElement("select");
+ this.pageSizeSelect.classList.add("tabulator-page-size");
+ }
+ };
+
+ Page.prototype.generatePageSizeSelectList = function () {
+ var _this47 = this;
+
+ var pageSizes = [];
+
+ if (this.pageSizeSelect) {
+
+ if (Array.isArray(this.table.options.paginationSizeSelector)) {
+ pageSizes = this.table.options.paginationSizeSelector;
+ this.pageSizes = pageSizes;
+
+ if (this.pageSizes.indexOf(this.size) == -1) {
+ pageSizes.unshift(this.size);
+ }
+ } else {
+
+ if (this.pageSizes.indexOf(this.size) == -1) {
+ pageSizes = [];
+
+ for (var i = 1; i < 5; i++) {
+ pageSizes.push(this.size * i);
+ }
+
+ this.pageSizes = pageSizes;
+ } else {
+ pageSizes = this.pageSizes;
+ }
+ }
+
+ while (this.pageSizeSelect.firstChild) {
+ this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);
+ }pageSizes.forEach(function (item) {
+ var itemEl = document.createElement("option");
+ itemEl.value = item;
+ itemEl.innerHTML = item;
+
+ _this47.pageSizeSelect.appendChild(itemEl);
+ });
+
+ this.pageSizeSelect.value = this.size;
+ }
+ };
+
+ //setup pageination
+ Page.prototype.initialize = function (hidden) {
+ var self = this,
+ pageSelectLabel;
+
+ //update param names
+ for (var key in self.table.options.paginationDataSent) {
+ self.paginationDataSentNames[key] = self.table.options.paginationDataSent[key];
+ }
+
+ for (var _key2 in self.table.options.paginationDataReceived) {
+ self.paginationDataReceivedNames[_key2] = self.table.options.paginationDataReceived[_key2];
+ }
+
+ //build pagination element
+
+ //bind localizations
+ self.table.modules.localize.bind("pagination|first", function (value) {
+ self.firstBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|first_title", function (value) {
+ self.firstBut.setAttribute("aria-label", value);
+ self.firstBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|prev", function (value) {
+ self.prevBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|prev_title", function (value) {
+ self.prevBut.setAttribute("aria-label", value);
+ self.prevBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|next", function (value) {
+ self.nextBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|next_title", function (value) {
+ self.nextBut.setAttribute("aria-label", value);
+ self.nextBut.setAttribute("title", value);
+ });
+
+ self.table.modules.localize.bind("pagination|last", function (value) {
+ self.lastBut.innerHTML = value;
+ });
+
+ self.table.modules.localize.bind("pagination|last_title", function (value) {
+ self.lastBut.setAttribute("aria-label", value);
+ self.lastBut.setAttribute("title", value);
+ });
+
+ //click bindings
+ self.firstBut.addEventListener("click", function () {
+ self.setPage(1);
+ });
+
+ self.prevBut.addEventListener("click", function () {
+ self.previousPage();
+ });
+
+ self.nextBut.addEventListener("click", function () {
+ self.nextPage().then(function () {}).catch(function () {});
+ });
+
+ self.lastBut.addEventListener("click", function () {
+ self.setPage(self.max);
+ });
+
+ if (self.table.options.paginationElement) {
+ self.element = self.table.options.paginationElement;
+ }
+
+ if (this.pageSizeSelect) {
+ pageSelectLabel = document.createElement("label");
+
+ self.table.modules.localize.bind("pagination|page_size", function (value) {
+ self.pageSizeSelect.setAttribute("aria-label", value);
+ self.pageSizeSelect.setAttribute("title", value);
+ pageSelectLabel.innerHTML = value;
+ });
+
+ self.element.appendChild(pageSelectLabel);
+ self.element.appendChild(self.pageSizeSelect);
+
+ self.pageSizeSelect.addEventListener("change", function (e) {
+ self.setPageSize(self.pageSizeSelect.value);
+ self.setPage(1).then(function () {}).catch(function () {});
+ });
+ }
+
+ //append to DOM
+ self.element.appendChild(self.firstBut);
+ self.element.appendChild(self.prevBut);
+ self.element.appendChild(self.pagesElement);
+ self.element.appendChild(self.nextBut);
+ self.element.appendChild(self.lastBut);
+
+ if (!self.table.options.paginationElement && !hidden) {
+ self.table.footerManager.append(self.element, self);
+ }
+
+ //set default values
+ self.mode = self.table.options.pagination;
+ self.size = self.table.options.paginationSize || Math.floor(self.table.rowManager.getElement().clientHeight / 24);
+ self.count = self.table.options.paginationButtonCount;
+
+ self.generatePageSizeSelectList();
+ };
+
+ Page.prototype.initializeProgressive = function (mode) {
+ this.initialize(true);
+ this.mode = "progressive_" + mode;
+ this.progressiveLoad = true;
+ };
+
+ Page.prototype.setDisplayIndex = function (index) {
+ this.displayIndex = index;
+ };
+
+ Page.prototype.getDisplayIndex = function () {
+ return this.displayIndex;
+ };
+
+ //calculate maximum page from number of rows
+ Page.prototype.setMaxRows = function (rowCount) {
+ if (!rowCount) {
+ this.max = 1;
+ } else {
+ this.max = Math.ceil(rowCount / this.size);
+ }
+
+ if (this.page > this.max) {
+ this.page = this.max;
+ }
+ };
+
+ //reset to first page without triggering action
+ Page.prototype.reset = function (force) {
+ if (this.mode == "local" || force) {
+ this.page = 1;
+ }
+ return true;
+ };
+
+ //set the maxmum page
+ Page.prototype.setMaxPage = function (max) {
+
+ max = parseInt(max);
+
+ this.max = max || 1;
+
+ if (this.page > this.max) {
+ this.page = this.max;
+ this.trigger();
+ }
+ };
+
+ //set current page number
+ Page.prototype.setPage = function (page) {
+ var _this48 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ page = parseInt(page);
+
+ if (page > 0 && page <= _this48.max) {
+ _this48.page = page;
+ _this48.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Requested page is out of range of 1 - " + _this48.max + ":", page);
+ reject();
+ }
+ });
+ };
+
+ Page.prototype.setPageToRow = function (row) {
+ var _this49 = this;
+
+ return new Promise(function (resolve, reject) {
+
+ var rows = _this49.table.rowManager.getDisplayRows(_this49.displayIndex - 1);
+ var index = rows.indexOf(row);
+
+ if (index > -1) {
+ var page = Math.ceil((index + 1) / _this49.size);
+
+ _this49.setPage(page).then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Requested row is not visible");
+ reject();
+ }
+ });
+ };
+
+ Page.prototype.setPageSize = function (size) {
+ size = parseInt(size);
+
+ if (size > 0) {
+ this.size = size;
+ }
+
+ if (this.pageSizeSelect) {
+ // this.pageSizeSelect.value = size;
+ this.generatePageSizeSelectList();
+ }
+ };
+
+ //setup the pagination buttons
+ Page.prototype._setPageButtons = function () {
+ var self = this;
+
+ var leftSize = Math.floor((this.count - 1) / 2);
+ var rightSize = Math.ceil((this.count - 1) / 2);
+ var min = this.max - this.page + leftSize + 1 < this.count ? this.max - this.count + 1 : Math.max(this.page - leftSize, 1);
+ var max = this.page <= rightSize ? Math.min(this.count, this.max) : Math.min(this.page + rightSize, this.max);
+
+ while (self.pagesElement.firstChild) {
+ self.pagesElement.removeChild(self.pagesElement.firstChild);
+ }if (self.page == 1) {
+ self.firstBut.disabled = true;
+ self.prevBut.disabled = true;
+ } else {
+ self.firstBut.disabled = false;
+ self.prevBut.disabled = false;
+ }
+
+ if (self.page == self.max) {
+ self.lastBut.disabled = true;
+ self.nextBut.disabled = true;
+ } else {
+ self.lastBut.disabled = false;
+ self.nextBut.disabled = false;
+ }
+
+ for (var i = min; i <= max; i++) {
+ if (i > 0 && i <= self.max) {
+ self.pagesElement.appendChild(self._generatePageButton(i));
+ }
+ }
+
+ this.footerRedraw();
+ };
+
+ Page.prototype._generatePageButton = function (page) {
+ var self = this,
+ button = document.createElement("button");
+
+ button.classList.add("tabulator-page");
+ if (page == self.page) {
+ button.classList.add("active");
+ }
+
+ button.setAttribute("type", "button");
+ button.setAttribute("role", "button");
+ button.setAttribute("aria-label", "Show Page " + page);
+ button.setAttribute("title", "Show Page " + page);
+ button.setAttribute("data-page", page);
+ button.textContent = page;
+
+ button.addEventListener("click", function (e) {
+ self.setPage(page);
+ });
+
+ return button;
+ };
+
+ //previous page
+ Page.prototype.previousPage = function () {
+ var _this50 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this50.page > 1) {
+ _this50.page--;
+ _this50.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ console.warn("Pagination Error - Previous page would be less than page 1:", 0);
+ reject();
+ }
+ });
+ };
+
+ //next page
+ Page.prototype.nextPage = function () {
+ var _this51 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this51.page < _this51.max) {
+ _this51.page++;
+ _this51.trigger().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ if (!_this51.progressiveLoad) {
+ console.warn("Pagination Error - Next page would be greater than maximum page of " + _this51.max + ":", _this51.max + 1);
+ }
+ reject();
+ }
+ });
+ };
+
+ //return current page number
+ Page.prototype.getPage = function () {
+ return this.page;
+ };
+
+ //return max page number
+ Page.prototype.getPageMax = function () {
+ return this.max;
+ };
+
+ Page.prototype.getPageSize = function (size) {
+ return this.size;
+ };
+
+ Page.prototype.getMode = function () {
+ return this.mode;
+ };
+
+ //return appropriate rows for current page
+ Page.prototype.getRows = function (data) {
+ var output, start, end;
+
+ if (this.mode == "local") {
+ output = [];
+ start = this.size * (this.page - 1);
+ end = start + parseInt(this.size);
+
+ this._setPageButtons();
+
+ for (var i = start; i < end; i++) {
+ if (data[i]) {
+ output.push(data[i]);
+ }
+ }
+
+ return output;
+ } else {
+
+ this._setPageButtons();
+
+ return data.slice(0);
+ }
+ };
+
+ Page.prototype.trigger = function () {
+ var _this52 = this;
+
+ var left;
+
+ return new Promise(function (resolve, reject) {
+
+ switch (_this52.mode) {
+ case "local":
+ left = _this52.table.rowManager.scrollLeft;
+
+ _this52.table.rowManager.refreshActiveData("page");
+ _this52.table.rowManager.scrollHorizontal(left);
+
+ _this52.table.options.pageLoaded.call(_this52.table, _this52.getPage());
+ resolve();
+ break;
+
+ case "remote":
+ case "progressive_load":
+ case "progressive_scroll":
+ _this52.table.modules.ajax.blockActiveRequest();
+ _this52._getRemotePage().then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ break;
+
+ default:
+ console.warn("Pagination Error - no such pagination mode:", _this52.mode);
+ reject();
+ }
+ });
+ };
+
+ Page.prototype._getRemotePage = function () {
+ var _this53 = this;
+
+ var self = this,
+ oldParams,
+ pageParams;
+
+ return new Promise(function (resolve, reject) {
+
+ if (!self.table.modExists("ajax", true)) {
+ reject();
+ }
+
+ //record old params and restore after request has been made
+ oldParams = Tabulator.prototype.helpers.deepClone(self.table.modules.ajax.getParams() || {});
+ pageParams = self.table.modules.ajax.getParams();
+
+ //configure request params
+ pageParams[_this53.paginationDataSentNames.page] = self.page;
+
+ //set page size if defined
+ if (_this53.size) {
+ pageParams[_this53.paginationDataSentNames.size] = _this53.size;
+ }
+
+ //set sort data if defined
+ if (_this53.table.options.ajaxSorting && _this53.table.modExists("sort")) {
+ var sorters = self.table.modules.sort.getSort();
+
+ sorters.forEach(function (item) {
+ delete item.column;
+ });
+
+ pageParams[_this53.paginationDataSentNames.sorters] = sorters;
+ }
+
+ //set filter data if defined
+ if (_this53.table.options.ajaxFiltering && _this53.table.modExists("filter")) {
+ var filters = self.table.modules.filter.getFilters(true, true);
+ pageParams[_this53.paginationDataSentNames.filters] = filters;
+ }
+
+ self.table.modules.ajax.setParams(pageParams);
+
+ self.table.modules.ajax.sendRequest(_this53.progressiveLoad).then(function (data) {
+ self._parseRemoteData(data);
+ resolve();
+ }).catch(function (e) {
+ reject();
+ });
+
+ self.table.modules.ajax.setParams(oldParams);
+ });
+ };
+
+ Page.prototype._parseRemoteData = function (data) {
+ var self = this,
+ left,
+ data,
+ margin;
+
+ if (typeof data[this.paginationDataReceivedNames.last_page] === "undefined") {
+ console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.last_page + "' property");
+ }
+
+ if (data[this.paginationDataReceivedNames.data]) {
+ this.max = parseInt(data[this.paginationDataReceivedNames.last_page]) || 1;
+
+ if (this.progressiveLoad) {
+ switch (this.mode) {
+ case "progressive_load":
+ this.table.rowManager.addRows(data[this.paginationDataReceivedNames.data]);
+ if (this.page < this.max) {
+ setTimeout(function () {
+ self.nextPage().then(function () {}).catch(function () {});
+ }, self.table.options.ajaxProgressiveLoadDelay);
+ }
+ break;
+
+ case "progressive_scroll":
+ data = this.table.rowManager.getData().concat(data[this.paginationDataReceivedNames.data]);
+
+ this.table.rowManager.setData(data, true);
+
+ margin = this.table.options.ajaxProgressiveLoadScrollMargin || this.table.rowManager.element.clientHeight * 2;
+
+ if (self.table.rowManager.element.scrollHeight <= self.table.rowManager.element.clientHeight + margin) {
+ self.nextPage().then(function () {}).catch(function () {});
+ }
+ break;
+ }
+ } else {
+ left = this.table.rowManager.scrollLeft;
+
+ this.table.rowManager.setData(data[this.paginationDataReceivedNames.data]);
+
+ this.table.rowManager.scrollHorizontal(left);
+
+ this.table.columnManager.scrollHorizontal(left);
+
+ this.table.options.pageLoaded.call(this.table, this.getPage());
+ }
+ } else {
+ console.warn("Remote Pagination Error - Server response missing '" + this.paginationDataReceivedNames.data + "' property");
+ }
+ };
+
+ //handle the footer element being redrawn
+ Page.prototype.footerRedraw = function () {
+ var footer = this.table.footerManager.element;
+
+ if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+ this.pagesElement.style.display = 'none';
+ } else {
+ this.pagesElement.style.display = '';
+
+ if (Math.ceil(footer.clientWidth) - footer.scrollWidth < 0) {
+ this.pagesElement.style.display = 'none';
+ }
+ }
+ };
+
+ //set the paramter names for pagination requests
+ Page.prototype.paginationDataSentNames = {
+ "page": "page",
+ "size": "size",
+ "sorters": "sorters",
+ // "sort_dir":"sort_dir",
+ "filters": "filters"
+ // "filter_value":"filter_value",
+ // "filter_type":"filter_type",
+ };
+
+ //set the property names for pagination responses
+ Page.prototype.paginationDataReceivedNames = {
+ "current_page": "current_page",
+ "last_page": "last_page",
+ "data": "data"
+ };
+
+ Tabulator.prototype.registerModule("page", Page);
+
+ var Persistence = function Persistence(table) {
+ this.table = table; //hold Tabulator object
+ this.mode = "";
+ this.id = "";
+ this.persistProps = ["field", "width", "visible"];
+ };
+
+ // Test for whether localStorage is available for use.
+ Persistence.prototype.localStorageTest = function () {
+ var testKey = "_tabulator_test";
+
+ try {
+ window.localStorage.setItem(testKey, testKey);
+ window.localStorage.removeItem(testKey);
+ return true;
+ } catch (e) {
+ return false;
+ }
+ };
+
+ //setup parameters
+ Persistence.prototype.initialize = function (mode, id) {
+ //determine persistent layout storage type
+
+ this.mode = mode !== true ? mode : this.localStorageTest() ? "local" : "cookie";
+
+ //set storage tag
+ this.id = "tabulator-" + (id || this.table.element.getAttribute("id") || "");
+ };
+
+ //load saved definitions
+ Persistence.prototype.load = function (type, current) {
+
+ var data = this.retreiveData(type);
+
+ if (current) {
+ data = data ? this.mergeDefinition(current, data) : current;
+ }
+
+ return data;
+ };
+
+ //retreive data from memory
+ Persistence.prototype.retreiveData = function (type) {
+ var data = "",
+ id = this.id + (type === "columns" ? "" : "-" + type);
+
+ switch (this.mode) {
+ case "local":
+ data = localStorage.getItem(id);
+ break;
+
+ case "cookie":
+
+ //find cookie
+ var cookie = document.cookie,
+ cookiePos = cookie.indexOf(id + "="),
+ end = void 0;
+
+ //if cookie exists, decode and load column data into tabulator
+ if (cookiePos > -1) {
+ cookie = cookie.substr(cookiePos);
+
+ end = cookie.indexOf(";");
+
+ if (end > -1) {
+ cookie = cookie.substr(0, end);
+ }
+
+ data = cookie.replace(id + "=", "");
+ }
+ break;
+
+ default:
+ console.warn("Persistence Load Error - invalid mode selected", this.mode);
+ }
+
+ return data ? JSON.parse(data) : false;
+ };
+
+ //merge old and new column definitions
+ Persistence.prototype.mergeDefinition = function (oldCols, newCols) {
+ var self = this,
+ output = [];
+
+ // oldCols = oldCols || [];
+ newCols = newCols || [];
+
+ newCols.forEach(function (column, to) {
+
+ var from = self._findColumn(oldCols, column);
+
+ if (from) {
+
+ from.width = column.width;
+ from.visible = column.visible;
+
+ if (from.columns) {
+ from.columns = self.mergeDefinition(from.columns, column.columns);
+ }
+
+ output.push(from);
+ }
+ });
+ oldCols.forEach(function (column, i) {
+ var from = self._findColumn(newCols, column);
+ if (!from) {
+ if (output.length > i) {
+ output.splice(i, 0, column);
+ } else {
+ output.push(column);
+ }
+ }
+ });
+
+ return output;
+ };
+
+ //find matching columns
+ Persistence.prototype._findColumn = function (columns, subject) {
+ var type = subject.columns ? "group" : subject.field ? "field" : "object";
+
+ return columns.find(function (col) {
+ switch (type) {
+ case "group":
+ return col.title === subject.title && col.columns.length === subject.columns.length;
+ break;
+
+ case "field":
+ return col.field === subject.field;
+ break;
+
+ case "object":
+ return col === subject;
+ break;
+ }
+ });
+ };
+
+ //save data
+ Persistence.prototype.save = function (type) {
+ var data = {};
+
+ switch (type) {
+ case "columns":
+ data = this.parseColumns(this.table.columnManager.getColumns());
+ break;
+
+ case "filter":
+ data = this.table.modules.filter.getFilters();
+ break;
+
+ case "sort":
+ data = this.validateSorters(this.table.modules.sort.getSort());
+ break;
+ }
+
+ var id = this.id + (type === "columns" ? "" : "-" + type);
+
+ this.saveData(id, data);
+ };
+
+ //ensure sorters contain no function data
+ Persistence.prototype.validateSorters = function (data) {
+ data.forEach(function (item) {
+ item.column = item.field;
+ delete item.field;
+ });
+
+ return data;
+ };
+
+ //save data to chosed medium
+ Persistence.prototype.saveData = function (id, data) {
+
+ data = JSON.stringify(data);
+
+ switch (this.mode) {
+ case "local":
+ localStorage.setItem(id, data);
+ break;
+
+ case "cookie":
+ var expireDate = new Date();
+ expireDate.setDate(expireDate.getDate() + 10000);
+
+ //save cookie
+ document.cookie = id + "=" + data + "; expires=" + expireDate.toUTCString();
+ break;
+
+ default:
+ console.warn("Persistence Save Error - invalid mode selected", this.mode);
+ }
+ };
+
+ //build permission list
+ Persistence.prototype.parseColumns = function (columns) {
+ var self = this,
+ definitions = [];
+
+ columns.forEach(function (column) {
+ var def = {};
+
+ if (column.isGroup) {
+ def.title = column.getDefinition().title;
+ def.columns = self.parseColumns(column.getColumns());
+ } else {
+ def.title = column.getDefinition().title;
+ def.field = column.getField();
+ def.width = column.getWidth();
+ def.visible = column.visible;
+ }
+
+ definitions.push(def);
+ });
+
+ return definitions;
+ };
+
+ Tabulator.prototype.registerModule("persistence", Persistence);
+
+ var Print = function Print(table) {
+ this.table = table; //hold Tabulator object
+ this.element = false;
+ this.manualBlock = false;
+ };
+
+ Print.prototype.initialize = function () {
+ window.addEventListener("beforeprint", this.replaceTable.bind(this));
+ window.addEventListener("afterprint", this.cleanup.bind(this));
+ };
+
+ Print.prototype.replaceTable = function () {
+ if (!this.manualBlock) {
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-print-table");
+
+ this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig, this.table.options.printCopyStyle, this.table.options.printVisibleRows, "print"));
+
+ this.table.element.style.display = "none";
+
+ this.table.element.parentNode.insertBefore(this.element, this.table.element);
+ }
+ };
+
+ Print.prototype.cleanup = function () {
+ document.body.classList.remove("tabulator-print-fullscreen-hide");
+
+ if (this.element && this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ this.table.element.style.display = "";
+ }
+ };
+
+ Print.prototype.printFullscreen = function (visible, style, config) {
+ var scrollX = window.scrollX,
+ scrollY = window.scrollY,
+ headerEl = document.createElement("div"),
+ footerEl = document.createElement("div"),
+ tableEl = this.table.modules.htmlTableExport.genereateTable(typeof config != "undefined" ? config : this.table.options.printConfig, typeof style != "undefined" ? style : this.table.options.printCopyStyle, visible, "print"),
+ headerContent,
+ footerContent;
+
+ this.manualBlock = true;
+
+ this.element = document.createElement("div");
+ this.element.classList.add("tabulator-print-fullscreen");
+
+ if (this.table.options.printHeader) {
+ headerEl.classList.add("tabulator-print-header");
+
+ headerContent = typeof this.table.options.printHeader == "function" ? this.table.options.printHeader.call(this.table) : this.table.options.printHeader;
+
+ if (typeof headerContent == "string") {
+ headerEl.innerHTML = headerContent;
+ } else {
+ headerEl.appendChild(headerContent);
+ }
+
+ this.element.appendChild(headerEl);
+ }
+
+ this.element.appendChild(tableEl);
+
+ if (this.table.options.printFooter) {
+ footerEl.classList.add("tabulator-print-footer");
+
+ footerContent = typeof this.table.options.printFooter == "function" ? this.table.options.printFooter.call(this.table) : this.table.options.printFooter;
+
+ if (typeof footerContent == "string") {
+ footerEl.innerHTML = footerContent;
+ } else {
+ footerEl.appendChild(footerContent);
+ }
+
+ this.element.appendChild(footerEl);
+ }
+
+ document.body.classList.add("tabulator-print-fullscreen-hide");
+ document.body.appendChild(this.element);
+
+ if (this.table.options.printFormatter) {
+ this.table.options.printFormatter(this.element, tableEl);
+ }
+
+ window.print();
+
+ this.cleanup();
+
+ window.scrollTo(scrollX, scrollY);
+
+ this.manualBlock = false;
+ };
+
+ Tabulator.prototype.registerModule("print", Print);
+ var ReactiveData = function ReactiveData(table) {
+ this.table = table; //hold Tabulator object
+ this.data = false;
+ this.blocked = false; //block reactivity while performing update
+ this.origFuncs = {}; // hold original data array functions to allow replacement after data is done with
+ this.currentVersion = 0;
+ };
+
+ ReactiveData.prototype.watchData = function (data) {
+ var self = this,
+ pushFunc,
+ version;
+
+ this.currentVersion++;
+
+ version = this.currentVersion;
+
+ self.unwatchData();
+
+ self.data = data;
+
+ //override array push function
+ self.origFuncs.push = data.push;
+
+ Object.defineProperty(self.data, "push", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments);
+
+ if (!self.blocked && version === self.currentVersion) {
+ args.forEach(function (arg) {
+ self.table.rowManager.addRowActual(arg, false);
+ });
+ }
+
+ return self.origFuncs.push.apply(data, arguments);
+ }
+ });
+
+ //override array unshift function
+ self.origFuncs.unshift = data.unshift;
+
+ Object.defineProperty(self.data, "unshift", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments);
+
+ if (!self.blocked && version === self.currentVersion) {
+ args.forEach(function (arg) {
+ self.table.rowManager.addRowActual(arg, true);
+ });
+ }
+
+ return self.origFuncs.unshift.apply(data, arguments);
+ }
+ });
+
+ //override array shift function
+ self.origFuncs.shift = data.shift;
+
+ Object.defineProperty(self.data, "shift", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var row;
+
+ if (!self.blocked && version === self.currentVersion) {
+ if (self.data.length) {
+ row = self.table.rowManager.getRowFromDataObject(self.data[0]);
+
+ if (row) {
+ row.deleteActual();
+ }
+ }
+ }
+
+ return self.origFuncs.shift.call(data);
+ }
+ });
+
+ //override array pop function
+ self.origFuncs.pop = data.pop;
+
+ Object.defineProperty(self.data, "pop", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var row;
+ if (!self.blocked && version === self.currentVersion) {
+ if (self.data.length) {
+ row = self.table.rowManager.getRowFromDataObject(self.data[self.data.length - 1]);
+
+ if (row) {
+ row.deleteActual();
+ }
+ }
+ }
+ return self.origFuncs.pop.call(data);
+ }
+ });
+
+ //override array splice function
+ self.origFuncs.splice = data.splice;
+
+ Object.defineProperty(self.data, "splice", {
+ enumerable: false,
+ configurable: true,
+ value: function value() {
+ var args = Array.from(arguments),
+ start = args[0] < 0 ? data.length + args[0] : args[0],
+ end = args[1],
+ newRows = args[2] ? args.slice(2) : false,
+ startRow;
+
+ if (!self.blocked && version === self.currentVersion) {
+
+ //add new rows
+ if (newRows) {
+ startRow = data[start] ? self.table.rowManager.getRowFromDataObject(data[start]) : false;
+
+ if (startRow) {
+ newRows.forEach(function (rowData) {
+ self.table.rowManager.addRowActual(rowData, true, startRow, true);
+ });
+ } else {
+ newRows = newRows.slice().reverse();
+
+ newRows.forEach(function (rowData) {
+ self.table.rowManager.addRowActual(rowData, true, false, true);
+ });
+ }
+ }
+
+ //delete removed rows
+ if (end !== 0) {
+ var oldRows = data.slice(start, typeof args[1] === "undefined" ? args[1] : start + end);
+
+ oldRows.forEach(function (rowData, i) {
+ var row = self.table.rowManager.getRowFromDataObject(rowData);
+
+ if (row) {
+ row.deleteActual(i !== oldRows.length - 1);
+ }
+ });
+ }
+
+ if (newRows || end !== 0) {
+ self.table.rowManager.reRenderInPosition();
+ }
+ }
+
+ return self.origFuncs.splice.apply(data, arguments);
+ }
+ });
+ };
+
+ ReactiveData.prototype.unwatchData = function () {
+ if (this.data !== false) {
+ for (var key in this.origFuncs) {
+ Object.defineProperty(this.data, key, {
+ enumerable: true,
+ configurable: true,
+ writable: true,
+ value: this.origFuncs.key
+ });
+ }
+ }
+ };
+
+ ReactiveData.prototype.watchRow = function (row) {
+ var self = this,
+ data = row.getData();
+
+ this.blocked = true;
+
+ for (var key in data) {
+ this.watchKey(row, data, key);
+ }
+
+ this.blocked = false;
+ };
+
+ ReactiveData.prototype.watchKey = function (row, data, key) {
+ var self = this,
+ props = Object.getOwnPropertyDescriptor(data, key),
+ value = data[key],
+ version = this.currentVersion;
+
+ Object.defineProperty(data, key, {
+ set: function set(newValue) {
+ value = newValue;
+ if (!self.blocked && version === self.currentVersion) {
+ var update = {};
+ update[key] = newValue;
+ row.updateData(update);
+ }
+
+ if (props.set) {
+ props.set(newValue);
+ }
+ },
+ get: function get() {
+
+ if (props.get) {
+ props.get();
+ }
+
+ return value;
+ }
+ });
+ };
+
+ ReactiveData.prototype.unwatchRow = function (row) {
+ var data = row.getData();
+
+ for (var key in data) {
+ Object.defineProperty(data, key, {
+ value: data[key]
+ });
+ }
+ };
+
+ ReactiveData.prototype.block = function () {
+ this.blocked = true;
+ };
+
+ ReactiveData.prototype.unblock = function () {
+ this.blocked = false;
+ };
+
+ Tabulator.prototype.registerModule("reactiveData", ReactiveData);
+
+ var ResizeColumns = function ResizeColumns(table) {
+ this.table = table; //hold Tabulator object
+ this.startColumn = false;
+ this.startX = false;
+ this.startWidth = false;
+ this.handle = null;
+ this.prevHandle = null;
+ };
+
+ ResizeColumns.prototype.initializeColumn = function (type, column, element) {
+ var self = this,
+ variableHeight = false,
+ mode = this.table.options.resizableColumns;
+
+ //set column resize mode
+ if (type === "header") {
+ variableHeight = column.definition.formatter == "textarea" || column.definition.variableHeight;
+ column.modules.resize = { variableHeight: variableHeight };
+ }
+
+ if (mode === true || mode == type) {
+
+ var handle = document.createElement('div');
+ handle.className = "tabulator-col-resize-handle";
+
+ var prevHandle = document.createElement('div');
+ prevHandle.className = "tabulator-col-resize-handle prev";
+
+ handle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var handleDown = function handleDown(e) {
+ var nearestColumn = column.getLastColumn();
+
+ if (nearestColumn && self._checkResizability(nearestColumn)) {
+ self.startColumn = column;
+ self._mouseDown(e, nearestColumn, handle);
+ }
+ };
+
+ handle.addEventListener("mousedown", handleDown);
+ handle.addEventListener("touchstart", handleDown, { passive: true });
+
+ //reszie column on double click
+ handle.addEventListener("dblclick", function (e) {
+ var col = column.getLastColumn();
+
+ if (col && self._checkResizability(col)) {
+ col.reinitializeWidth(true);
+ }
+ });
+
+ prevHandle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var prevHandleDown = function prevHandleDown(e) {
+ var nearestColumn, colIndex, prevColumn;
+
+ nearestColumn = column.getFirstColumn();
+
+ if (nearestColumn) {
+ colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+ prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+ if (prevColumn && self._checkResizability(prevColumn)) {
+ self.startColumn = column;
+ self._mouseDown(e, prevColumn, prevHandle);
+ }
+ }
+ };
+
+ prevHandle.addEventListener("mousedown", prevHandleDown);
+ prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+ //resize column on double click
+ prevHandle.addEventListener("dblclick", function (e) {
+ var nearestColumn, colIndex, prevColumn;
+
+ nearestColumn = column.getFirstColumn();
+
+ if (nearestColumn) {
+ colIndex = self.table.columnManager.findColumnIndex(nearestColumn);
+ prevColumn = colIndex > 0 ? self.table.columnManager.getColumnByIndex(colIndex - 1) : false;
+
+ if (prevColumn && self._checkResizability(prevColumn)) {
+ prevColumn.reinitializeWidth(true);
+ }
+ }
+ });
+
+ element.appendChild(handle);
+ element.appendChild(prevHandle);
+ }
+ };
+
+ ResizeColumns.prototype._checkResizability = function (column) {
+ return typeof column.definition.resizable != "undefined" ? column.definition.resizable : this.table.options.resizableColumns;
+ };
+
+ ResizeColumns.prototype._mouseDown = function (e, column, handle) {
+ var self = this;
+
+ self.table.element.classList.add("tabulator-block-select");
+
+ function mouseMove(e) {
+ // self.table.columnManager.tempScrollBlock();
+
+ column.setWidth(self.startWidth + ((typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX) - self.startX));
+
+ if (!self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+ column.checkCellHeights();
+ }
+ }
+
+ function mouseUp(e) {
+
+ //block editor from taking action while resizing is taking place
+ if (self.startColumn.modules.edit) {
+ self.startColumn.modules.edit.blocked = false;
+ }
+
+ if (self.table.browserSlow && column.modules.resize && column.modules.resize.variableHeight) {
+ column.checkCellHeights();
+ }
+
+ document.body.removeEventListener("mouseup", mouseUp);
+ document.body.removeEventListener("mousemove", mouseMove);
+
+ handle.removeEventListener("touchmove", mouseMove);
+ handle.removeEventListener("touchend", mouseUp);
+
+ self.table.element.classList.remove("tabulator-block-select");
+
+ if (self.table.options.persistentLayout && self.table.modExists("persistence", true)) {
+ self.table.modules.persistence.save("columns");
+ }
+
+ self.table.options.columnResized.call(self.table, column.getComponent());
+ }
+
+ e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+ //block editor from taking action while resizing is taking place
+ if (self.startColumn.modules.edit) {
+ self.startColumn.modules.edit.blocked = true;
+ }
+
+ self.startX = typeof e.screenX === "undefined" ? e.touches[0].screenX : e.screenX;
+ self.startWidth = column.getWidth();
+
+ document.body.addEventListener("mousemove", mouseMove);
+ document.body.addEventListener("mouseup", mouseUp);
+ handle.addEventListener("touchmove", mouseMove, { passive: true });
+ handle.addEventListener("touchend", mouseUp);
+ };
+
+ Tabulator.prototype.registerModule("resizeColumns", ResizeColumns);
+ var ResizeRows = function ResizeRows(table) {
+ this.table = table; //hold Tabulator object
+ this.startColumn = false;
+ this.startY = false;
+ this.startHeight = false;
+ this.handle = null;
+ this.prevHandle = null;
+ };
+
+ ResizeRows.prototype.initializeRow = function (row) {
+ var self = this,
+ rowEl = row.getElement();
+
+ var handle = document.createElement('div');
+ handle.className = "tabulator-row-resize-handle";
+
+ var prevHandle = document.createElement('div');
+ prevHandle.className = "tabulator-row-resize-handle prev";
+
+ handle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var handleDown = function handleDown(e) {
+ self.startRow = row;
+ self._mouseDown(e, row, handle);
+ };
+
+ handle.addEventListener("mousedown", handleDown, { passive: true });
+ handle.addEventListener("touchstart", handleDown);
+
+ prevHandle.addEventListener("click", function (e) {
+ e.stopPropagation();
+ });
+
+ var prevHandleDown = function prevHandleDown(e) {
+ var prevRow = self.table.rowManager.prevDisplayRow(row);
+
+ if (prevRow) {
+ self.startRow = prevRow;
+ self._mouseDown(e, prevRow, prevHandle);
+ }
+ };
+
+ prevHandle.addEventListener("mousedown", prevHandleDown);
+ prevHandle.addEventListener("touchstart", prevHandleDown, { passive: true });
+
+ rowEl.appendChild(handle);
+ rowEl.appendChild(prevHandle);
+ };
+
+ ResizeRows.prototype._mouseDown = function (e, row, handle) {
+ var self = this;
+
+ self.table.element.classList.add("tabulator-block-select");
+
+ function mouseMove(e) {
+ row.setHeight(self.startHeight + ((typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY) - self.startY));
+ }
+
+ function mouseUp(e) {
+
+ // //block editor from taking action while resizing is taking place
+ // if(self.startColumn.modules.edit){
+ // self.startColumn.modules.edit.blocked = false;
+ // }
+
+ document.body.removeEventListener("mouseup", mouseMove);
+ document.body.removeEventListener("mousemove", mouseMove);
+
+ handle.removeEventListener("touchmove", mouseMove);
+ handle.removeEventListener("touchend", mouseUp);
+
+ self.table.element.classList.remove("tabulator-block-select");
+
+ self.table.options.rowResized.call(this.table, row.getComponent());
+ }
+
+ e.stopPropagation(); //prevent resize from interfereing with movable columns
+
+ //block editor from taking action while resizing is taking place
+ // if(self.startColumn.modules.edit){
+ // self.startColumn.modules.edit.blocked = true;
+ // }
+
+ self.startY = typeof e.screenY === "undefined" ? e.touches[0].screenY : e.screenY;
+ self.startHeight = row.getHeight();
+
+ document.body.addEventListener("mousemove", mouseMove);
+ document.body.addEventListener("mouseup", mouseUp);
+
+ handle.addEventListener("touchmove", mouseMove, { passive: true });
+ handle.addEventListener("touchend", mouseUp);
+ };
+
+ Tabulator.prototype.registerModule("resizeRows", ResizeRows);
+ var ResizeTable = function ResizeTable(table) {
+ this.table = table; //hold Tabulator object
+ this.binding = false;
+ this.observer = false;
+ };
+
+ ResizeTable.prototype.initialize = function (row) {
+ var table = this.table,
+ observer;
+
+ if (typeof ResizeObserver !== "undefined" && table.rowManager.getRenderMode() === "virtual") {
+ this.observer = new ResizeObserver(function (entry) {
+ table.redraw();
+ });
+
+ this.observer.observe(table.element);
+ } else {
+ this.binding = function () {
+ table.redraw();
+ };
+
+ window.addEventListener("resize", this.binding);
+ }
+ };
+
+ ResizeTable.prototype.clearBindings = function (row) {
+ if (this.binding) {
+ window.removeEventListener("resize", this.binding);
+ }
+
+ if (this.observer) {
+ this.observer.unobserve(this.table.element);
+ }
+ };
+
+ Tabulator.prototype.registerModule("resizeTable", ResizeTable);
+ var ResponsiveLayout = function ResponsiveLayout(table) {
+ this.table = table; //hold Tabulator object
+ this.columns = [];
+ this.hiddenColumns = [];
+ this.mode = "";
+ this.index = 0;
+ this.collapseFormatter = [];
+ this.collapseStartOpen = true;
+ };
+
+ //generate resposive columns list
+ ResponsiveLayout.prototype.initialize = function () {
+ var self = this,
+ columns = [];
+
+ this.mode = this.table.options.responsiveLayout;
+ this.collapseFormatter = this.table.options.responsiveLayoutCollapseFormatter || this.formatCollapsedData;
+ this.collapseStartOpen = this.table.options.responsiveLayoutCollapseStartOpen;
+ this.hiddenColumns = [];
+
+ //detemine level of responsivity for each column
+ this.table.columnManager.columnsByIndex.forEach(function (column, i) {
+ if (column.modules.responsive) {
+ if (column.modules.responsive.order && column.modules.responsive.visible) {
+ column.modules.responsive.index = i;
+ columns.push(column);
+
+ if (!column.visible && self.mode === "collapse") {
+ self.hiddenColumns.push(column);
+ }
+ }
+ }
+ });
+
+ //sort list by responsivity
+ columns = columns.reverse();
+ columns = columns.sort(function (a, b) {
+ var diff = b.modules.responsive.order - a.modules.responsive.order;
+ return diff || b.modules.responsive.index - a.modules.responsive.index;
+ });
+
+ this.columns = columns;
+
+ if (this.mode === "collapse") {
+ this.generateCollapsedContent();
+ }
+ };
+
+ //define layout information
+ ResponsiveLayout.prototype.initializeColumn = function (column) {
+ var def = column.getDefinition();
+
+ column.modules.responsive = { order: typeof def.responsive === "undefined" ? 1 : def.responsive, visible: def.visible === false ? false : true };
+ };
+
+ ResponsiveLayout.prototype.layoutRow = function (row) {
+ var rowEl = row.getElement(),
+ el = document.createElement("div");
+
+ el.classList.add("tabulator-responsive-collapse");
+
+ if (!rowEl.classList.contains("tabulator-calcs")) {
+ row.modules.responsiveLayout = {
+ element: el
+ };
+
+ if (!this.collapseStartOpen) {
+ el.style.display = 'none';
+ }
+
+ rowEl.appendChild(el);
+
+ this.generateCollapsedRowContent(row);
+ }
+ };
+
+ //update column visibility
+ ResponsiveLayout.prototype.updateColumnVisibility = function (column, visible) {
+ var index;
+ if (column.modules.responsive) {
+ column.modules.responsive.visible = visible;
+ this.initialize();
+ }
+ };
+
+ ResponsiveLayout.prototype.hideColumn = function (column) {
+ column.hide(false, true);
+
+ if (this.mode === "collapse") {
+ this.hiddenColumns.unshift(column);
+ this.generateCollapsedContent();
+ }
+ };
+
+ ResponsiveLayout.prototype.showColumn = function (column) {
+ var index;
+
+ column.show(false, true);
+ //set column width to prevent calculation loops on uninitialized columns
+ column.setWidth(column.getWidth());
+
+ if (this.mode === "collapse") {
+ index = this.hiddenColumns.indexOf(column);
+
+ if (index > -1) {
+ this.hiddenColumns.splice(index, 1);
+ }
+
+ this.generateCollapsedContent();
+ }
+ };
+
+ //redraw columns to fit space
+ ResponsiveLayout.prototype.update = function () {
+ var self = this,
+ working = true;
+
+ while (working) {
+
+ var width = self.table.modules.layout.getMode() == "fitColumns" ? self.table.columnManager.getFlexBaseWidth() : self.table.columnManager.getWidth();
+
+ var diff = self.table.columnManager.element.clientWidth - width;
+
+ if (diff < 0) {
+ //table is too wide
+ var column = self.columns[self.index];
+
+ if (column) {
+ self.hideColumn(column);
+ self.index++;
+ } else {
+ working = false;
+ }
+ } else {
+
+ //table has spare space
+ var _column = self.columns[self.index - 1];
+
+ if (_column) {
+ if (diff > 0) {
+ if (diff >= _column.getWidth()) {
+ self.showColumn(_column);
+ self.index--;
+ } else {
+ working = false;
+ }
+ } else {
+ working = false;
+ }
+ } else {
+ working = false;
+ }
+ }
+
+ if (!self.table.rowManager.activeRowsCount) {
+ self.table.rowManager.renderEmptyScroll();
+ }
+ }
+ };
+
+ ResponsiveLayout.prototype.generateCollapsedContent = function () {
+ var self = this,
+ rows = this.table.rowManager.getDisplayRows();
+
+ rows.forEach(function (row) {
+ self.generateCollapsedRowContent(row);
+ });
+ };
+
+ ResponsiveLayout.prototype.generateCollapsedRowContent = function (row) {
+ var el, contents;
+
+ if (row.modules.responsiveLayout) {
+ el = row.modules.responsiveLayout.element;
+
+ while (el.firstChild) {
+ el.removeChild(el.firstChild);
+ }contents = this.collapseFormatter(this.generateCollapsedRowData(row));
+ if (contents) {
+ el.appendChild(contents);
+ }
+ }
+ };
+
+ ResponsiveLayout.prototype.generateCollapsedRowData = function (row) {
+ var self = this,
+ data = row.getData(),
+ output = [],
+ mockCellComponent;
+
+ this.hiddenColumns.forEach(function (column) {
+ var value = column.getFieldValue(data);
+
+ if (column.definition.title && column.field) {
+ if (column.modules.format && self.table.options.responsiveLayoutCollapseUseFormatters) {
+
+ mockCellComponent = {
+ value: false,
+ data: {},
+ getValue: function getValue() {
+ return value;
+ },
+ getData: function getData() {
+ return data;
+ },
+ getElement: function getElement() {
+ return document.createElement("div");
+ },
+ getRow: function getRow() {
+ return row.getComponent();
+ },
+ getColumn: function getColumn() {
+ return column.getComponent();
+ }
+ };
+
+ output.push({
+ title: column.definition.title,
+ value: column.modules.format.formatter.call(self.table.modules.format, mockCellComponent, column.modules.format.params)
+ });
+ } else {
+ output.push({
+ title: column.definition.title,
+ value: value
+ });
+ }
+ }
+ });
+
+ return output;
+ };
+
+ ResponsiveLayout.prototype.formatCollapsedData = function (data) {
+ var list = document.createElement("table"),
+ listContents = "";
+
+ data.forEach(function (item) {
+ var div = document.createElement("div");
+
+ if (item.value instanceof Node) {
+ div.appendChild(item.value);
+ item.value = div.innerHTML;
+ }
+
+ listContents += "<tr><td><strong>" + item.title + "</strong></td><td>" + item.value + "</td></tr>";
+ });
+
+ list.innerHTML = listContents;
+
+ return Object.keys(data).length ? list : "";
+ };
+
+ Tabulator.prototype.registerModule("responsiveLayout", ResponsiveLayout);
+
+ var SelectRow = function SelectRow(table) {
+ this.table = table; //hold Tabulator object
+ this.selecting = false; //flag selecting in progress
+ this.lastClickedRow = false; //last clicked row
+ this.selectPrev = []; //hold previously selected element for drag drop selection
+ this.selectedRows = []; //hold selected rows
+ this.headerCheckboxElement = null; // hold header select element
+ };
+
+ SelectRow.prototype.clearSelectionData = function (silent) {
+ this.selecting = false;
+ this.lastClickedRow = false;
+ this.selectPrev = [];
+ this.selectedRows = [];
+
+ if (!silent) {
+ this._rowSelectionChanged();
+ }
+ };
+
+ SelectRow.prototype.initializeRow = function (row) {
+ var self = this,
+ element = row.getElement();
+
+ // trigger end of row selection
+ var endSelect = function endSelect() {
+
+ setTimeout(function () {
+ self.selecting = false;
+ }, 50);
+
+ document.body.removeEventListener("mouseup", endSelect);
+ };
+
+ row.modules.select = { selected: false };
+
+ //set row selection class
+ if (self.table.options.selectableCheck.call(this.table, row.getComponent())) {
+ element.classList.add("tabulator-selectable");
+ element.classList.remove("tabulator-unselectable");
+
+ if (self.table.options.selectable && self.table.options.selectable != "highlight") {
+ if (self.table.options.selectableRangeMode === "click") {
+ element.addEventListener("click", function (e) {
+
+ self.table._clearSelection();
+
+ if (e.shiftKey) {
+ self.lastClickedRow = self.lastClickedRow || row;
+
+ var lastClickedRowIdx = self.table.rowManager.getDisplayRowIndex(self.lastClickedRow);
+ var rowIdx = self.table.rowManager.getDisplayRowIndex(row);
+
+ var fromRowIdx = lastClickedRowIdx <= rowIdx ? lastClickedRowIdx : rowIdx;
+ var toRowIdx = lastClickedRowIdx >= rowIdx ? lastClickedRowIdx : rowIdx;
+
+ var rows = self.table.rowManager.getDisplayRows().slice(0);
+ var toggledRows = rows.splice(fromRowIdx, toRowIdx - fromRowIdx + 1);
+
+ if (e.ctrlKey || e.metaKey) {
+ toggledRows.forEach(function (toggledRow) {
+ if (toggledRow !== self.lastClickedRow) {
+
+ if (self.table.options.selectable !== true && !self.isRowSelected(row)) {
+ if (self.selectedRows.length < self.table.options.selectable) {
+ self.toggleRow(toggledRow);
+ }
+ } else {
+ self.toggleRow(toggledRow);
+ }
+ }
+ });
+ self.lastClickedRow = row;
+ } else {
+ self.deselectRows();
+
+ if (self.table.options.selectable !== true) {
+ if (toggledRows.length > self.table.options.selectable) {
+ toggledRows = toggledRows.slice(0, self.table.options.selectable);
+ }
+ }
+
+ self.selectRows(toggledRows);
+ }
+ } else if (e.ctrlKey || e.metaKey) {
+ self.toggleRow(row);
+ self.lastClickedRow = row;
+ } else {
+ self.deselectRows();
+ self.selectRows(row);
+ self.lastClickedRow = row;
+ }
+
+ self.table._clearSelection();
+ });
+ } else {
+ element.addEventListener("click", function (e) {
+ self.table._clearSelection();
+
+ if (!self.selecting) {
+ self.toggleRow(row);
+ }
+ });
+
+ element.addEventListener("mousedown", function (e) {
+ if (e.shiftKey) {
+ self.table._clearSelection();
+
+ self.selecting = true;
+
+ self.selectPrev = [];
+
+ document.body.addEventListener("mouseup", endSelect);
+ document.body.addEventListener("keyup", endSelect);
+
+ self.toggleRow(row);
+
+ return false;
+ }
+ });
+
+ element.addEventListener("mouseenter", function (e) {
+ if (self.selecting) {
+ self.table._clearSelection();
+ self.toggleRow(row);
+
+ if (self.selectPrev[1] == row) {
+ self.toggleRow(self.selectPrev[0]);
+ }
+ }
+ });
+
+ element.addEventListener("mouseout", function (e) {
+ if (self.selecting) {
+ self.table._clearSelection();
+ self.selectPrev.unshift(row);
+ }
+ });
+ }
+ }
+ } else {
+ element.classList.add("tabulator-unselectable");
+ element.classList.remove("tabulator-selectable");
+ }
+ };
+
+ //toggle row selection
+ SelectRow.prototype.toggleRow = function (row) {
+ if (this.table.options.selectableCheck.call(this.table, row.getComponent())) {
+ if (row.modules.select && row.modules.select.selected) {
+ this._deselectRow(row);
+ } else {
+ this._selectRow(row);
+ }
+ }
+ };
+
+ //select a number of rows
+ SelectRow.prototype.selectRows = function (rows) {
+ var self = this;
+
+ switch (typeof rows === 'undefined' ? 'undefined' : _typeof(rows)) {
+ case "undefined":
+ self.table.rowManager.rows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ break;
+
+ case "boolean":
+ if (rows === true) {
+ self.table.rowManager.activeRows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ }
+ break;
+
+ default:
+ if (Array.isArray(rows)) {
+ rows.forEach(function (row) {
+ self._selectRow(row, true, true);
+ });
+
+ self._rowSelectionChanged();
+ } else {
+ self._selectRow(rows, false, true);
+ }
+ break;
+ }
+ };
+
+ //select an individual row
+ SelectRow.prototype._selectRow = function (rowInfo, silent, force) {
+ var index;
+
+ //handle max row count
+ if (!isNaN(this.table.options.selectable) && this.table.options.selectable !== true && !force) {
+ if (this.selectedRows.length >= this.table.options.selectable) {
+ if (this.table.options.selectableRollingSelection) {
+ this._deselectRow(this.selectedRows[0]);
+ } else {
+ return false;
+ }
+ }
+ }
+
+ var row = this.table.rowManager.findRow(rowInfo);
+
+ if (row) {
+ if (this.selectedRows.indexOf(row) == -1) {
+ if (!row.modules.select) {
+ row.modules.select = {};
+ }
+
+ row.modules.select.selected = true;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = true;
+ }
+ row.getElement().classList.add("tabulator-selected");
+
+ this.selectedRows.push(row);
+
+ if (!silent) {
+ this.table.options.rowSelected.call(this.table, row.getComponent());
+ this._rowSelectionChanged();
+ }
+ }
+ } else {
+ if (!silent) {
+ console.warn("Selection Error - No such row found, ignoring selection:" + rowInfo);
+ }
+ }
+ };
+
+ SelectRow.prototype.isRowSelected = function (row) {
+ return this.selectedRows.indexOf(row) !== -1;
+ };
+
+ //deselect a number of rows
+ SelectRow.prototype.deselectRows = function (rows) {
+ var self = this,
+ rowCount;
+
+ if (typeof rows == "undefined") {
+
+ rowCount = self.selectedRows.length;
+
+ for (var i = 0; i < rowCount; i++) {
+ self._deselectRow(self.selectedRows[0], true);
+ }
+
+ self._rowSelectionChanged();
+ } else {
+ if (Array.isArray(rows)) {
+ rows.forEach(function (row) {
+ self._deselectRow(row, true);
+ });
+
+ self._rowSelectionChanged();
+ } else {
+ self._deselectRow(rows);
+ }
+ }
+ };
+
+ //deselect an individual row
+ SelectRow.prototype._deselectRow = function (rowInfo, silent) {
+ var self = this,
+ row = self.table.rowManager.findRow(rowInfo),
+ index;
+
+ if (row) {
+ index = self.selectedRows.findIndex(function (selectedRow) {
+ return selectedRow == row;
+ });
+
+ if (index > -1) {
+
+ if (!row.modules.select) {
+ row.modules.select = {};
+ }
+
+ row.modules.select.selected = false;
+ if (row.modules.select.checkboxEl) {
+ row.modules.select.checkboxEl.checked = false;
+ }
+ row.getElement().classList.remove("tabulator-selected");
+ self.selectedRows.splice(index, 1);
+
+ if (!silent) {
+ self.table.options.rowDeselected.call(this.table, row.getComponent());
+ self._rowSelectionChanged();
+ }
+ }
+ } else {
+ if (!silent) {
+ console.warn("Deselection Error - No such row found, ignoring selection:" + rowInfo);
+ }
+ }
+ };
+
+ SelectRow.prototype.getSelectedData = function () {
+ var data = [];
+
+ this.selectedRows.forEach(function (row) {
+ data.push(row.getData());
+ });
+
+ return data;
+ };
+
+ SelectRow.prototype.getSelectedRows = function () {
+
+ var rows = [];
+
+ this.selectedRows.forEach(function (row) {
+ rows.push(row.getComponent());
+ });
+
+ return rows;
+ };
+
+ SelectRow.prototype._rowSelectionChanged = function () {
+ if (this.headerCheckboxElement) {
+ if (this.selectedRows.length === 0) {
+ this.headerCheckboxElement.checked = false;
+ this.headerCheckboxElement.indeterminate = false;
+ } else if (this.table.rowManager.rows.length === this.selectedRows.length) {
+ this.headerCheckboxElement.checked = true;
+ this.headerCheckboxElement.indeterminate = false;
+ } else {
+ this.headerCheckboxElement.indeterminate = true;
+ this.headerCheckboxElement.checked = false;
+ }
+ }
+
+ this.table.options.rowSelectionChanged.call(this.table, this.getSelectedData(), this.getSelectedRows());
+ };
+
+ SelectRow.prototype.registerRowSelectCheckbox = function (row, element) {
+ if (!row._row.modules.select) {
+ row._row.modules.select = {};
+ }
+
+ row._row.modules.select.checkboxEl = element;
+ };
+
+ SelectRow.prototype.registerHeaderSelectCheckbox = function (element) {
+ this.headerCheckboxElement = element;
+ };
+
+ Tabulator.prototype.registerModule("selectRow", SelectRow);
+
+ var Sort = function Sort(table) {
+ this.table = table; //hold Tabulator object
+ this.sortList = []; //holder current sort
+ this.changed = false; //has the sort changed since last render
+ };
+
+ //initialize column header for sorting
+ Sort.prototype.initializeColumn = function (column, content) {
+ var self = this,
+ sorter = false,
+ colEl,
+ arrowEl;
+
+ switch (_typeof(column.definition.sorter)) {
+ case "string":
+ if (self.sorters[column.definition.sorter]) {
+ sorter = self.sorters[column.definition.sorter];
+ } else {
+ console.warn("Sort Error - No such sorter found: ", column.definition.sorter);
+ }
+ break;
+
+ case "function":
+ sorter = column.definition.sorter;
+ break;
+ }
+
+ column.modules.sort = {
+ sorter: sorter, dir: "none",
+ params: column.definition.sorterParams || {},
+ startingDir: column.definition.headerSortStartingDir || "asc",
+ tristate: typeof column.definition.headerSortTristate !== "undefined" ? column.definition.headerSortTristate : this.table.options.headerSortTristate
+ };
+
+ if (typeof column.definition.headerSort === "undefined" ? this.table.options.headerSort !== false : column.definition.headerSort !== false) {
+
+ colEl = column.getElement();
+
+ colEl.classList.add("tabulator-sortable");
+
+ arrowEl = document.createElement("div");
+ arrowEl.classList.add("tabulator-arrow");
+ //create sorter arrow
+ content.appendChild(arrowEl);
+
+ //sort on click
+ colEl.addEventListener("click", function (e) {
+ var dir = "",
+ sorters = [],
+ match = false;
+
+ if (column.modules.sort) {
+ if (column.modules.sort.tristate) {
+ if (column.modules.sort.dir == "none") {
+ dir = column.modules.sort.startingDir;
+ } else {
+ if (column.modules.sort.dir == column.modules.sort.startingDir) {
+ dir = column.modules.sort.dir == "asc" ? "desc" : "asc";
+ } else {
+ dir = "none";
+ }
+ }
+ } else {
+ switch (column.modules.sort.dir) {
+ case "asc":
+ dir = "desc";
+ break;
+
+ case "desc":
+ dir = "asc";
+ break;
+
+ default:
+ dir = column.modules.sort.startingDir;
+ }
+ }
+
+ if (self.table.options.columnHeaderSortMulti && (e.shiftKey || e.ctrlKey)) {
+ sorters = self.getSort();
+
+ match = sorters.findIndex(function (sorter) {
+ return sorter.field === column.getField();
+ });
+
+ if (match > -1) {
+ sorters[match].dir = dir;
+
+ if (match != sorters.length - 1) {
+ match = sorters.splice(match, 1)[0];
+ if (dir != "none") {
+ sorters.push(match);
+ }
+ }
+ } else {
+ if (dir != "none") {
+ sorters.push({ column: column, dir: dir });
+ }
+ }
+
+ //add to existing sort
+ self.setSort(sorters);
+ } else {
+ if (dir == "none") {
+ self.clear();
+ } else {
+ //sort by column only
+ self.setSort(column, dir);
+ }
+ }
+
+ self.table.rowManager.sorterRefresh(!self.sortList.length);
+ }
+ });
+ }
+ };
+
+ //check if the sorters have changed since last use
+ Sort.prototype.hasChanged = function () {
+ var changed = this.changed;
+ this.changed = false;
+ return changed;
+ };
+
+ //return current sorters
+ Sort.prototype.getSort = function () {
+ var self = this,
+ sorters = [];
+
+ self.sortList.forEach(function (item) {
+ if (item.column) {
+ sorters.push({ column: item.column.getComponent(), field: item.column.getField(), dir: item.dir });
+ }
+ });
+
+ return sorters;
+ };
+
+ //change sort list and trigger sort
+ Sort.prototype.setSort = function (sortList, dir) {
+ var self = this,
+ newSortList = [];
+
+ if (!Array.isArray(sortList)) {
+ sortList = [{ column: sortList, dir: dir }];
+ }
+
+ sortList.forEach(function (item) {
+ var column;
+
+ column = self.table.columnManager.findColumn(item.column);
+
+ if (column) {
+ item.column = column;
+ newSortList.push(item);
+ self.changed = true;
+ } else {
+ console.warn("Sort Warning - Sort field does not exist and is being ignored: ", item.column);
+ }
+ });
+
+ self.sortList = newSortList;
+
+ if (this.table.options.persistentSort && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("sort");
+ }
+ };
+
+ //clear sorters
+ Sort.prototype.clear = function () {
+ this.setSort([]);
+ };
+
+ //find appropriate sorter for column
+ Sort.prototype.findSorter = function (column) {
+ var row = this.table.rowManager.activeRows[0],
+ sorter = "string",
+ field,
+ value;
+
+ if (row) {
+ row = row.getData();
+ field = column.getField();
+
+ if (field) {
+
+ value = column.getFieldValue(row);
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "undefined":
+ sorter = "string";
+ break;
+
+ case "boolean":
+ sorter = "boolean";
+ break;
+
+ default:
+ if (!isNaN(value) && value !== "") {
+ sorter = "number";
+ } else {
+ if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+ sorter = "alphanum";
+ }
+ }
+ break;
+ }
+ }
+ }
+
+ return this.sorters[sorter];
+ };
+
+ //work through sort list sorting data
+ Sort.prototype.sort = function (data) {
+ var self = this,
+ lastSort,
+ sortList;
+
+ sortList = this.table.options.sortOrderReverse ? self.sortList.slice().reverse() : self.sortList;
+
+ if (self.table.options.dataSorting) {
+ self.table.options.dataSorting.call(self.table, self.getSort());
+ }
+
+ self.clearColumnHeaders();
+
+ if (!self.table.options.ajaxSorting) {
+
+ sortList.forEach(function (item, i) {
+
+ if (item.column && item.column.modules.sort) {
+
+ //if no sorter has been defined, take a guess
+ if (!item.column.modules.sort.sorter) {
+ item.column.modules.sort.sorter = self.findSorter(item.column);
+ }
+
+ self._sortItem(data, item.column, item.dir, sortList, i);
+ }
+
+ self.setColumnHeader(item.column, item.dir);
+ });
+ } else {
+ sortList.forEach(function (item, i) {
+ self.setColumnHeader(item.column, item.dir);
+ });
+ }
+
+ if (self.table.options.dataSorted) {
+ self.table.options.dataSorted.call(self.table, self.getSort(), self.table.rowManager.getComponents(true));
+ }
+ };
+
+ //clear sort arrows on columns
+ Sort.prototype.clearColumnHeaders = function () {
+ this.table.columnManager.getRealColumns().forEach(function (column) {
+ if (column.modules.sort) {
+ column.modules.sort.dir = "none";
+ column.getElement().setAttribute("aria-sort", "none");
+ }
+ });
+ };
+
+ //set the column header sort direction
+ Sort.prototype.setColumnHeader = function (column, dir) {
+ column.modules.sort.dir = dir;
+ column.getElement().setAttribute("aria-sort", dir);
+ };
+
+ //sort each item in sort list
+ Sort.prototype._sortItem = function (data, column, dir, sortList, i) {
+ var self = this;
+
+ var params = typeof column.modules.sort.params === "function" ? column.modules.sort.params(column.getComponent(), dir) : column.modules.sort.params;
+
+ data.sort(function (a, b) {
+
+ var result = self._sortRow(a, b, column, dir, params);
+
+ //if results match recurse through previous searchs to be sure
+ if (result === 0 && i) {
+ for (var j = i - 1; j >= 0; j--) {
+ result = self._sortRow(a, b, sortList[j].column, sortList[j].dir, params);
+
+ if (result !== 0) {
+ break;
+ }
+ }
+ }
+
+ return result;
+ });
+ };
+
+ //process individual rows for a sort function on active data
+ Sort.prototype._sortRow = function (a, b, column, dir, params) {
+ var el1Comp, el2Comp, colComp;
+
+ //switch elements depending on search direction
+ var el1 = dir == "asc" ? a : b;
+ var el2 = dir == "asc" ? b : a;
+
+ a = column.getFieldValue(el1.getData());
+ b = column.getFieldValue(el2.getData());
+
+ a = typeof a !== "undefined" ? a : "";
+ b = typeof b !== "undefined" ? b : "";
+
+ el1Comp = el1.getComponent();
+ el2Comp = el2.getComponent();
+
+ return column.modules.sort.sorter.call(this, a, b, el1Comp, el2Comp, column.getComponent(), dir, params);
+ };
+
+ //default data sorters
+ Sort.prototype.sorters = {
+
+ //sort numbers
+ number: function number(a, b, aRow, bRow, column, dir, params) {
+ var alignEmptyValues = params.alignEmptyValues;
+ var decimal = params.decimalSeparator || ".";
+ var thousand = params.thousandSeparator || ",";
+ var emptyAlign = 0;
+
+ a = parseFloat(String(a).split(thousand).join("").split(decimal).join("."));
+ b = parseFloat(String(b).split(thousand).join("").split(decimal).join("."));
+
+ //handle non numeric values
+ if (isNaN(a)) {
+ emptyAlign = isNaN(b) ? 0 : -1;
+ } else if (isNaN(b)) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ return a - b;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort strings
+ string: function string(a, b, aRow, bRow, column, dir, params) {
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+ var locale;
+
+ //handle empty values
+ if (!a) {
+ emptyAlign = !b ? 0 : -1;
+ } else if (!b) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ switch (_typeof(params.locale)) {
+ case "boolean":
+ if (params.locale) {
+ locale = this.table.modules.localize.getLocale();
+ }
+ break;
+ case "string":
+ locale = params.locale;
+ break;
+ }
+
+ return String(a).toLowerCase().localeCompare(String(b).toLowerCase(), locale);
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort date
+ date: function date(a, b, aRow, bRow, column, dir, params) {
+ if (!params.format) {
+ params.format = "DD/MM/YYYY";
+ }
+
+ return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+ },
+
+ //sort hh:mm formatted times
+ time: function time(a, b, aRow, bRow, column, dir, params) {
+ if (!params.format) {
+ params.format = "hh:mm";
+ }
+
+ return this.sorters.datetime.call(this, a, b, aRow, bRow, column, dir, params);
+ },
+
+ //sort datetime
+ datetime: function datetime(a, b, aRow, bRow, column, dir, params) {
+ var format = params.format || "DD/MM/YYYY hh:mm:ss",
+ alignEmptyValues = params.alignEmptyValues,
+ emptyAlign = 0;
+
+ if (typeof moment != "undefined") {
+ a = moment(a, format);
+ b = moment(b, format);
+
+ if (!a.isValid()) {
+ emptyAlign = !b.isValid() ? 0 : -1;
+ } else if (!b.isValid()) {
+ emptyAlign = 1;
+ } else {
+ //compare valid values
+ return a - b;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ } else {
+ console.error("Sort Error - 'datetime' sorter is dependant on moment.js");
+ }
+ },
+
+ //sort booleans
+ boolean: function boolean(a, b, aRow, bRow, column, dir, params) {
+ var el1 = a === true || a === "true" || a === "True" || a === 1 ? 1 : 0;
+ var el2 = b === true || b === "true" || b === "True" || b === 1 ? 1 : 0;
+
+ return el1 - el2;
+ },
+
+ //sort if element contains any data
+ array: function array(a, b, aRow, bRow, column, dir, params) {
+ var el1 = 0;
+ var el2 = 0;
+ var type = params.type || "length";
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+
+ function calc(value) {
+
+ switch (type) {
+ case "length":
+ return value.length;
+ break;
+
+ case "sum":
+ return value.reduce(function (c, d) {
+ return c + d;
+ });
+ break;
+
+ case "max":
+ return Math.max.apply(null, value);
+ break;
+
+ case "min":
+ return Math.min.apply(null, value);
+ break;
+
+ case "avg":
+ return value.reduce(function (c, d) {
+ return c + d;
+ }) / value.length;
+ break;
+ }
+ }
+
+ //handle non array values
+ if (!Array.isArray(a)) {
+ alignEmptyValues = !Array.isArray(b) ? 0 : -1;
+ } else if (!Array.isArray(b)) {
+ alignEmptyValues = 1;
+ } else {
+
+ //compare valid values
+ el1 = a ? calc(a) : 0;
+ el2 = b ? calc(b) : 0;
+
+ return el1 - el2;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ },
+
+ //sort if element contains any data
+ exists: function exists(a, b, aRow, bRow, column, dir, params) {
+ var el1 = typeof a == "undefined" ? 0 : 1;
+ var el2 = typeof b == "undefined" ? 0 : 1;
+
+ return el1 - el2;
+ },
+
+ //sort alpha numeric strings
+ alphanum: function alphanum(as, bs, aRow, bRow, column, dir, params) {
+ var a,
+ b,
+ a1,
+ b1,
+ i = 0,
+ L,
+ rx = /(\d+)|(\D+)/g,
+ rd = /\d/;
+ var alignEmptyValues = params.alignEmptyValues;
+ var emptyAlign = 0;
+
+ //handle empty values
+ if (!as && as !== 0) {
+ emptyAlign = !bs && bs !== 0 ? 0 : -1;
+ } else if (!bs && bs !== 0) {
+ emptyAlign = 1;
+ } else {
+
+ if (isFinite(as) && isFinite(bs)) return as - bs;
+ a = String(as).toLowerCase();
+ b = String(bs).toLowerCase();
+ if (a === b) return 0;
+ if (!(rd.test(a) && rd.test(b))) return a > b ? 1 : -1;
+ a = a.match(rx);
+ b = b.match(rx);
+ L = a.length > b.length ? b.length : a.length;
+ while (i < L) {
+ a1 = a[i];
+ b1 = b[i++];
+ if (a1 !== b1) {
+ if (isFinite(a1) && isFinite(b1)) {
+ if (a1.charAt(0) === "0") a1 = "." + a1;
+ if (b1.charAt(0) === "0") b1 = "." + b1;
+ return a1 - b1;
+ } else return a1 > b1 ? 1 : -1;
+ }
+ }
+
+ return a.length > b.length;
+ }
+
+ //fix empty values in position
+ if (alignEmptyValues === "top" && dir === "desc" || alignEmptyValues === "bottom" && dir === "asc") {
+ emptyAlign *= -1;
+ }
+
+ return emptyAlign;
+ }
+ };
+
+ Tabulator.prototype.registerModule("sort", Sort);
+
+ var Validate = function Validate(table) {
+ this.table = table;
+ };
+
+ //validate
+ Validate.prototype.initializeColumn = function (column) {
+ var self = this,
+ config = [],
+ validator;
+
+ if (column.definition.validator) {
+
+ if (Array.isArray(column.definition.validator)) {
+ column.definition.validator.forEach(function (item) {
+ validator = self._extractValidator(item);
+
+ if (validator) {
+ config.push(validator);
+ }
+ });
+ } else {
+ validator = this._extractValidator(column.definition.validator);
+
+ if (validator) {
+ config.push(validator);
+ }
+ }
+
+ column.modules.validate = config.length ? config : false;
+ }
+ };
+
+ Validate.prototype._extractValidator = function (value) {
+ var parts, type, params;
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+ case "string":
+ parts = value.split(":", 2);
+ type = parts.shift();
+ params = parts[0];
+
+ return this._buildValidator(type, params);
+ break;
+
+ case "function":
+ return this._buildValidator(value);
+ break;
+
+ case "object":
+ return this._buildValidator(value.type, value.parameters);
+ break;
+ }
+ };
+
+ Validate.prototype._buildValidator = function (type, params) {
+
+ var func = typeof type == "function" ? type : this.validators[type];
+
+ if (!func) {
+ console.warn("Validator Setup Error - No matching validator found:", type);
+ return false;
+ } else {
+ return {
+ type: typeof type == "function" ? "function" : type,
+ func: func,
+ params: params
+ };
+ }
+ };
+
+ Validate.prototype.validate = function (validators, cell, value) {
+ var self = this,
+ valid = [];
+
+ if (validators) {
+ validators.forEach(function (item) {
+ if (!item.func.call(self, cell, value, item.params)) {
+ valid.push({
+ type: item.type,
+ parameters: item.params
+ });
+ }
+ });
+ }
+
+ return valid.length ? valid : true;
+ };
+
+ Validate.prototype.validators = {
+
+ //is integer
+ integer: function integer(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ value = Number(value);
+ return typeof value === 'number' && isFinite(value) && Math.floor(value) === value;
+ },
+
+ //is float
+ float: function float(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ value = Number(value);
+ return typeof value === 'number' && isFinite(value) && value % 1 !== 0;
+ },
+
+ //must be a number
+ numeric: function numeric(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return !isNaN(value);
+ },
+
+ //must be a string
+ string: function string(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return isNaN(value);
+ },
+
+ //maximum value
+ max: function max(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return parseFloat(value) <= parameters;
+ },
+
+ //minimum value
+ min: function min(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return parseFloat(value) >= parameters;
+ },
+
+ //minimum string length
+ minLength: function minLength(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return String(value).length >= parameters;
+ },
+
+ //maximum string length
+ maxLength: function maxLength(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ return String(value).length <= parameters;
+ },
+
+ //in provided value list
+ in: function _in(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ if (typeof parameters == "string") {
+ parameters = parameters.split("|");
+ }
+
+ return value === "" || parameters.indexOf(value) > -1;
+ },
+
+ //must match provided regex
+ regex: function regex(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ var reg = new RegExp(parameters);
+
+ return reg.test(value);
+ },
+
+ //value must be unique in this column
+ unique: function unique(cell, value, parameters) {
+ if (value === "" || value === null || typeof value === "undefined") {
+ return true;
+ }
+ var unique = true;
+
+ var cellData = cell.getData();
+ var column = cell.getColumn()._getSelf();
+
+ this.table.rowManager.rows.forEach(function (row) {
+ var data = row.getData();
+
+ if (data !== cellData) {
+ if (value == column.getFieldValue(data)) {
+ unique = false;
+ }
+ }
+ });
+
+ return unique;
+ },
+
+ //must have a value
+ required: function required(cell, value, parameters) {
+ return value !== "" && value !== null && typeof value !== "undefined";
+ }
+ };
+
+ Tabulator.prototype.registerModule("validate", Validate);
+
+ return Tabulator;
+});
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};!function(t,e){"object"===("undefined"==typeof exports?"undefined":_typeof(exports))&&"undefined"!=typeof module?module.exports=e():"function"==typeof define&&define.amd?define(e):t.Tabulator=e()}(this,function(){"use strict";Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var s=e[n];if(t.call(i,s,n,e))return s;n++}}});var t=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};t.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},t.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},t.prototype.initialize=function(){},t.prototype.setRowManager=function(t){this.rowManager=t},t.prototype.getElement=function(){return this.element},t.prototype.getHeadersElement=function(){return this.headersElement},t.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},t.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var s={field:n,title:n},r=e[n];switch(void 0===r?"undefined":_typeof(r)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(r)?"array":"string";break;default:o=isNaN(r)||""===r?r.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}s.sorter=o,i.push(s)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},t.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},t.prototype._addColumn=function(t,e,o){var n=new i(t,this),s=n.getElement(),r=o?this.findColumnIndex(o):o;if(o&&r>-1){var a=this.columns.indexOf(o.getTopColumn()),l=o.getElement();e?(this.columns.splice(a,0,n),l.parentNode.insertBefore(s,l)):(this.columns.splice(a+1,0,n),l.parentNode.insertBefore(s,l.nextSibling))}else e?(this.columns.unshift(n),this.headersElement.insertBefore(n.getElement(),this.headersElement.firstChild)):(this.columns.push(n),this.headersElement.appendChild(n.getElement()));return n},t.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},t.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},t.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},t.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},t.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof i)return t;if(t instanceof o)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},t.prototype.getColumnByField=function(t){return this.columnsByField[t]},t.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},t.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},t.prototype.getColumns=function(){return this.columns},t.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},t.prototype.getRealColumns=function(){return this.columnsByIndex},t.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},t.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},t.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},t.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},t.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},t.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},t.prototype._moveColumnInArray=function(t,e,o,i,n){var s,r=t.indexOf(e);r>-1&&(t.splice(r,1),s=t.indexOf(o),s>-1?i&&(s+=1):s=r,t.splice(s,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(r,1)[0];t.cells.splice(s,0,e)}}))},t.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,s=0,r=0,a=t.getElement();return new Promise(function(l,c){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":r=-i.element.clientWidth/2;break;case"right":r=a.clientWidth-i.headersElement.clientWidth}if(!o&&(s=a.offsetLeft)>0&&s+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+r,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),l()}else console.warn("Scroll Error - Column not visible"),c("Scroll Error - Column not visible")})},t.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},t.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,s,r;i.visible&&(n=i.definition.width||0,s=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),r="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=r>s?r:s)}),o},t.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},t.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},t.prototype.redraw=function(t){t&&(u.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var o=function(t){this._column=t,this.type="ColumnComponent"};o.prototype.getElement=function(){return this._column.getElement()},o.prototype.getDefinition=function(){return this._column.getDefinition()},o.prototype.getField=function(){return this._column.getField()},o.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getVisibility=function(){return this._column.visible},o.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},o.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},o.prototype.toggle=function(){this._column.visible?this.hide():this.show()},o.prototype.delete=function(){this._column.delete()},o.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},o.prototype.getParentColumn=function(){return this._column.parent instanceof i&&this._column.parent.getComponent()},o.prototype._getSelf=function(){return this._column},o.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},o.prototype.getTable=function(){return this._column.table},o.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},o.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},o.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},o.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},o.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},o.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var i=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};i.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},i.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},i.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},i.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},i.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},i.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},i.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},i.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},i.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},i.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},i.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},i.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},i.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},i.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||" "}):n.value=e.title||" "}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||" ")}):t._formatColumnHeaderTitle(i,e.title||" ");return i},i.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,s;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),s={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,s,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},i.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},i.prototype._getFlatData=function(t){return t[this.field]},i.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,s=0;s<n&&(o=o[i[s]],e=o,o);s++);return e},i.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},i.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,s=0;s<n;s++)s==n-1?o[i[s]]=e:(o[i[s]]||(o[i[s]]={}),o=o[i[s]])},i.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},i.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},i.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},i.prototype.getElement=function(){return this.element},i.prototype.getGroupElement=function(){return this.groupElement},i.prototype.getField=function(){return this.field},i.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},i.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},i.prototype.getColumns=function(){return this.columns},i.prototype.getCells=function(){return this.cells},i.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},i.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},i.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},i.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},i.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},i.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},i.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},i.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},i.prototype.getWidth=function(){return this.width},i.prototype.getHeight=function(){return this.element.offsetHeight},i.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},i.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},i.prototype.generateCell=function(t){var e=this,o=new l(e,t);return this.cells.push(o),o},i.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},i.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},i.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},i.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},i.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},i.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},i.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},i.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],i.prototype.getComponent=function(){return new o(this)};var n=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]};n.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},n.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},n.prototype.getElement=function(){return this.element},n.prototype.getTableElement=function(){return this.tableElement},n.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},n.prototype.setColumnManager=function(t){this.columnManager=t},n.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),
+"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},n.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof r)return t;if(t instanceof s)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},n.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},n.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},n.prototype.scrollToRow=function(t,e,o){var i,n=this,s=this.getDisplayRows().indexOf(t),r=t.getElement(),a=0;return new Promise(function(t,l){if(s>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=u.prototype.helpers.elOffset(r).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-s)>Math.abs(n.vDomBottom-s)?"bottom":"top"}if(!o&&u.prototype.helpers.elVisible(r)&&(a=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-r.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=u.prototype.helpers.elOffset(r).top-u.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(s,!0)}switch(e){case"middle":case"center":n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+r.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),l("Scroll Error - Row not visible")})},n.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,s){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},n.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new r(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData: ",t)},n.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},n.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},n.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},n.prototype.addRows=function(t,e,o){var i=this,n=this,s=0,r=[];return new Promise(function(a,l){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),s=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var s=n.addRow(t,e,o,!0);r.push(s)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(r)})},n.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},n.prototype.addRowActual=function(t,e,o,i){var n,s=t instanceof r?t:new r(t||{},this),a=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),a?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],a=!1):n.length&&(o=n[n.length-1],a=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(s);var l=s.getGroup().rows;l.length>1&&(!o||o&&-1==l.indexOf(o)?a?l[0]!==s&&(o=l[0],this._moveRowInArray(s.getGroup().rows,s,o,a)):l[l.length-1]!==s&&(o=l[l.length-1],this._moveRowInArray(s.getGroup().rows,s,o,a)):this._moveRowInArray(s.getGroup().rows,s,o,a))}if(o){var c=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(a?e:e+1,0,s)}),u>-1&&this.activeRows.splice(a?u:u+1,0,s),c>-1&&this.rows.splice(a?c:c+1,0,s)}else a?(this.displayRowIterator(function(t){t.unshift(s)}),this.activeRows.unshift(s),this.rows.unshift(s)):(this.displayRowIterator(function(t){t.push(s)}),this.activeRows.push(s),this.rows.push(s));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,s.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),s},n.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},n.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),s=t.getGroup();n===s?this._moveRowInArray(n.rows,t,e,o):(s&&s.removeRow(t),n.insertRow(t,e,o))}},n.prototype._moveRowInArray=function(t,e,o,i){var n,s,r,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),s=t.indexOf(o),s>-1?i?t.splice(s+1,0,e):t.splice(s,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){r=n<s?n:s,a=s>n?s:n+1;for(var l=r;l<=a;l++)t[l]&&this.styleRow(t[l],l)}},n.prototype.clearData=function(){this.setData([])},n.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},n.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},n.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof r&&"row"==i.type?i:this.nextDisplayRow(i,e)},n.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof r&&"row"==i.type?i:this.prevDisplayRow(i,e)},n.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},n.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},n.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},n.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},n.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var s=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=s}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},n.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},n.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},n.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},n.prototype.refreshActiveData=function(t,e,o){var i,n=this,s=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),s.options.selectable&&!s.options.selectablePersistence&&s.modExists("selectRow")&&s.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:s.modExists("filter")?n.setActiveRows(s.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:s.modExists("sort")&&s.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&s.modules.frozenRows.isFrozen()&&(s.modules.frozenRows.getDisplayIndex()||s.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:s.options.groupBy&&s.modExists("groupRows")&&(s.modules.groupRows.getDisplayIndex()||s.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&s.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:s.options.dataTree&&s.modExists("dataTree")&&(s.modules.dataTree.getDisplayIndex()||s.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(s.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&s.modules.dataTree.setDisplayIndex(i)),s.options.pagination&&s.modExists("page")&&!o&&"local"==s.modules.page.getMode()&&s.modules.page.reset();case"page":e?e=!1:s.options.pagination&&s.modExists("page")&&(s.modules.page.getDisplayIndex()||s.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=s.modules.page.getDisplayIndex(),"local"==s.modules.page.getMode()&&s.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(s.modules.page.getRows(this.getDisplayRows(i-1)),i))&&s.modules.page.setDisplayIndex(i))}u.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),s.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),s.modExists("columnCalcs")&&s.modules.columnCalcs.recalc(this.activeRows)},n.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},n.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},n.prototype.getNextDisplayIndex=function(){return this.displayRows.length},n.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},n.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},n.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,s=0,r=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(r[a])if(i){if(!(o-r[a].getElement().offsetTop>=0))break;s=a}else e-r[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,s=this.vDomBottom;return r.slice(n,s+1)},n.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},n.prototype.getRows=function(){return this.rows},n.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,s=this.getDisplayRows(),r=this.vDomTop;r<=this.vDomBottom;r++)if(s[r]){var a=e-s[r].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=r}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},n.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},n.prototype.getRenderMode=function(){return this.renderMode},n.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},n.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},n.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},n.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},n.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},n.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},n.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,s=i.element,r=0,a=0,l=0,c=0,d=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),r=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=r}else i._clearVirtualDom();if(i.displayRowsCount&&u.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||c<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var m=i.vDomBottom+1,f=h[m],g=0;i.styleRow(f,m),n.appendChild(f.getElement()),f.initialized?f.heightInitialized||f.normalizeHeight(!0):f.initialize(!0),g=f.getHeight(),c<r?l+=g:a+=g,g>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*g),"group"!==f.type&&(d=!1),i.vDomBottom++,c++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-l,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-l,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+l)/c),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=l+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+l+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,s.scrollTop=this.scrollTop,n.style.minWidth=d?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},n.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},n.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.insertBefore(s.getElement(),o.firstChild),s.initialized&&s.heightInitialized||(this.vDomTopNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomTopPad-=r,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=r,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},n.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},n.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,s=i[n],r=s.getHeight()||this.vDomRowHeight;t>=r&&(this.styleRow(s,n),o.appendChild(s.getElement()),s.initialized&&s.heightInitialized||(this.vDomBottomNewRows.push(s),s.heightInitialized||s.clearCellHeight()),s.initialize(),this.vDomBottomPad-=r,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=r,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,s.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*s.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},n.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},n.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},n.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},n.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},n.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},n.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},n.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var s=function(t){this._row=t};s.prototype.getData=function(t){return this._row.getData(t)},s.prototype.getElement=function(){return this._row.getElement()},s.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},s.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},s.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},s.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},s.prototype.delete=function(){return this._row.delete()},s.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},s.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},s.prototype.move=function(t,e){this._row.moveToRow(t,e)},s.prototype.update=function(t){return this._row.updateData(t)},s.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},s.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},s.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},s.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},s.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},s.prototype._getSelf=function(){return this._row},s.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},s.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},s.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},s.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},s.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},s.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},s.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},s.prototype.reformat=function(){return this._row.reinitialize()},s.prototype.getGroup=function(){return this._row.getGroup().getComponent()},s.prototype.getTable=function(){return this._row.table},s.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},s.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var r=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};r.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},r.prototype.getElement=function(){return this.element},r.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},r.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},r.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},r.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},r.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),null!==this.element.offsetParent&&this.initialize(!0)},r.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},r.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},r.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},r.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},r.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},r.prototype.getHeight=function(){return this.outerHeight},r.prototype.getWidth=function(){return this.element.offsetWidth},r.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},r.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},r.prototype.updateData=function(t){var e=this,o=this,i=u.prototype.helpers.elVisible(this.element);return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var r in t)o.data[r]=t[r]
+;e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var r in t){var a=e.getCell(r);a&&a.getValue()!=t[r]&&(a.setValueProcessData(t[r]),i&&a.cellRendered())}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&void 0!==t[e.table.modules.dataTree.getChildField()]&&(e.table.modules.dataTree.initializeRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},r.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},r.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},r.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},r.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},r.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&u.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},r.prototype.getCells=function(){return this.cells},r.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},r.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},r.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},r.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i=t.table.rowManager.getRowIndex(t);t.deleteActual(),t.table.options.history&&t.table.modExists("history")&&(i&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),e()})},r.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},r.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},r.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},r.prototype.getGroup=function(){return this.modules.group||!1},r.prototype.getComponent=function(){return new s(this)};var a=function(t){this._cell=t};a.prototype.getValue=function(){return this._cell.getValue()},a.prototype.getOldValue=function(){return this._cell.getOldValue()},a.prototype.getElement=function(){return this._cell.getElement()},a.prototype.getRow=function(){return this._cell.row.getComponent()},a.prototype.getData=function(){return this._cell.row.getData()},a.prototype.getField=function(){return this._cell.column.getField()},a.prototype.getColumn=function(){return this._cell.column.getComponent()},a.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},a.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},a.prototype.edit=function(t){return this._cell.edit(t)},a.prototype.cancelEdit=function(){this._cell.cancelEdit()},a.prototype.nav=function(){return this._cell.nav()},a.prototype.checkHeight=function(){this._cell.checkHeight()},a.prototype.getTable=function(){return this._cell.table},a.prototype._getSelf=function(){return this._cell};var l=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};l.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},l.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},l.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},l.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(t.preventDefault(),document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},l.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},l.prototype._bindTouchEvents=function(t){var e,o,i,n=this,s=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,s.addEventListener("touchstart",function(t){i=!0},{passive:!0}),s.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,s.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,s.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var s=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,s),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,s)},1e3)},{passive:!0}),s.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},l.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},l.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},l.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},l.prototype.getElement=function(){return this.element},l.prototype.getValue=function(){return this.value},l.prototype.getOldValue=function(){return this.oldValue},l.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},l.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},l.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},l.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},l.prototype.clearWidth=function(){this.width="",this.element.style.width=""},l.prototype.getWidth=function(){return this.width||this.element.offsetWidth},l.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},l.prototype.checkHeight=function(){this.row.reinitializeHeight()},l.prototype.clearHeight=function(){this.element.style.height="",this.height=null},l.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},l.prototype.getHeight=function(){return this.height||this.element.offsetHeight},l.prototype.show=function(){this.element.style.display=""},l.prototype.hide=function(){this.element.style.display="none"},l.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},l.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},l.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},l.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},l.prototype.getIndex=function(){this.row.getCellIndex(this)},l.prototype.getComponent=function(){return new a(this)};var c=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};c.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},c.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},c.prototype.getElement=function(){return this.element},c.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},c.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},c.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},c.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},c.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},c.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var u=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};u.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},u.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},u.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},u.prototype._mapDepricatedFunctionality=function(){},u.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},u.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new t(this),this.rowManager=new n(this),this.footerManager=new c(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},u.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},u.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var s=document.createElement("div");s.classList.add("tabulator-placeholder");var r=document.createElement("span");r.innerHTML=i.placeholder,s.appendChild(r),i.placeholder=s}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var l=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(l=o.persistence.load("filter"))&&i.initialFilter&&(l=i.initialFilter):i.initialFilter&&(l=i.initialFilter),o.filter.setFilter(l)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},u.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},u.prototype.destroy=function(){var t=this.element;for(u.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},u.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},u.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var s,r=n.files[0],a=new FileReader;a.readAsText(r),a.onload=function(t){try{s=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(s).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},u.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},u.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},u.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},u.prototype.getData=function(t){return this.rowManager.getData(t)},u.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},u.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},u.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},u.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},u.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},u.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},u.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},u.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){--i||n()}))}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,s){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},u.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(s,r){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||s(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||s(i)})}):(console.warn("Update Error - No data provided"),r("Update Error - No data provided"))})},u.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},u.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},u.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,s){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},u.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(s.getComponent())}).catch(function(t){n(t)}):s=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},u.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var s=o.rowManager.findRow(t)
+;"string"==typeof e&&(e=JSON.parse(e)),s?s.updateData(e).then(function(){i(s.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},u.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.rowManager.findRow(t);r?i.rowManager.scrollToRow(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching row found:",t),s("Scroll Error - No matching row found"))})},u.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},u.prototype.getRows=function(t){return this.rowManager.getComponents(t)},u.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},u.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},u.prototype.setColumns=function(t){this.columnManager.setColumns(t)},u.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},u.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},u.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},u.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},u.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},u.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},u.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},u.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},u.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},u.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},u.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,s){var r=i.columnManager.findColumn(t);r?i.columnManager.scrollToColumn(r,e,o).then(function(){n()}).catch(function(t){s(t)}):(console.warn("Scroll Error - No matching column found:",t),s("Scroll Error - No matching column found"))})},u.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},u.prototype.getLocale=function(){return this.modules.localize.getLocale()},u.prototype.getLang=function(t){return this.modules.localize.getLang(t)},u.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},u.prototype.setHeight=function(t){this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()},u.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},u.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},u.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},u.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},u.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},u.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},u.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},u.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},u.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},u.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},u.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},u.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},u.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},u.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},u.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},u.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},u.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},u.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},u.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},u.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},u.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},u.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},u.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},u.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},u.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},u.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},u.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},u.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},u.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},u.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},u.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},u.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},u.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},u.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},u.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},u.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},u.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},u.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},u.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},u.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},u.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},u.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},u.prototype.moduleBindings={},u.prototype.extendModule=function(t,e,o){if(u.prototype.moduleBindings[t]){var i=u.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},u.prototype.registerModule=function(t,e){u.prototype.moduleBindings[t]=e},u.prototype.bindModules=function(){this.modules={};for(var t in u.prototype.moduleBindings)this.modules[t]=new u.prototype.moduleBindings[t](this)},u.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},u.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},u.prototype.comms={tables:[],register:function(t){u.prototype.comms.tables.push(t)},deregister:function(t){var e=u.prototype.comms.tables.indexOf(t);e>-1&&u.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=u.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof u?(o=u.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(u.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return u.prototype.comms.tables.find(function(e){return t instanceof u?e===t:e.element===t})}};var d=function(t){this.table=t,this.mode=null};d.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},d.prototype.getMode=function(){return this.mode},d.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},d.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,s){function r(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var l=[],c=0,u=0,d=0,h=0,p=0,m=[];return t.forEach(function(t,e){var o=s?a(t):r(t);t.column.minWidth>=o?l.push(t):(m.push(t),p+=s?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),l.length?(l.forEach(function(t){c+=s?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),u=i-c,d=p?Math.floor(u/p):u,h=u-d*p,h+=o(m,u,d,s)):(h=p?i-Math.floor(i/p)*p:i,m.forEach(function(t){t.width=s?a(t):r(t)})),h}var i=this,n=i.table.element.clientWidth,s=0,r=0,a=0,l=0,c=[],u=[],d=0,h=0,p=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),s+=n>i?n:i,t.definition.widthShrink&&(u.push({column:t,width:n>i?n:i}),d+=t.definition.widthShrink)):(c.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),r=n-s,l=Math.floor(r/a);var p=o(c,r,l,!1);c.length&&p>0&&(c[c.length-1].width+=+p),c.forEach(function(t){r-=t.width}),h=Math.abs(p)+r,h>0&&d&&(p=o(u,h,Math.floor(h/d),!0)),u.length&&(u[u.length-1].width-=p),c.forEach(function(t){t.column.setWidth(t.width)}),u.forEach(function(t){t.column.setWidth(t.width)})}},u.prototype.registerModule("layout",d);var h=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};h.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},h.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},h.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},h.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},h.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=u.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},h.prototype.getLocale=function(t){return self.locale},h.prototype.getLang=function(t){return t?this.langs[t]:this.lang},h.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},h.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},h.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},h.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},h.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},u.prototype.registerModule("localize",h);var p=function(t){this.table=t};p.prototype.getConnections=function(t){var e,o=this,i=[];return e=u.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},p.prototype.send=function(t,e,o,i){var n=this,s=this.getConnections(t);s.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!s.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},p.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},u.prototype.registerModule("comms",p);var m=function(t){this.table=t,this.allowedTypes=["","data","download","clipboard"]};m.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="accessor"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupAccessor(t.definition[r]))&&(o=!0,i[r]={accessor:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.accessor=i)},m.prototype.lookupAccessor=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.accessors[t]?e=this.accessors[t]:console.warn("Accessor Error - No such accessor found, ignoring: ",t);break;case"function":e=t}return e},m.prototype.transformRow=function(t,e){var o=this,i="accessor"+(e.charAt(0).toUpperCase()+e.slice(1)),n=u.prototype.helpers.deepClone(t||{});return o.table.columnManager.traverse(function(t){var o,s,r,a;t.modules.accessor&&(s=t.modules.accessor[i]||t.modules.accessor.accessor||!1)&&"undefined"!=(o=t.getFieldValue(n))&&(a=t.getComponent(),r="function"==typeof s.params?s.params(o,n,e,a):s.params,t.setFieldValue(n,s.accessor(o,n,e,r,a)))}),n},m.prototype.accessors={},u.prototype.registerModule("accessor",m);var f=function(t){this.table=t,this.config=!1,this.url="",this.urlGenerator=!1,this.params=!1,this.loaderElement=this.createLoaderElement(),this.msgElement=this.createMsgElement(),this.loadingElement=!1,this.errorElement=!1,this.loaderPromise=!1,this.progressiveLoad=!1,this.loading=!1,this.requestOrder=0};f.prototype.initialize=function(){var t;this.loaderElement.appendChild(this.msgElement),this.table.options.ajaxLoaderLoading&&("string"==typeof this.table.options.ajaxLoaderLoading?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderLoading.trim(),this.loadingElement=t.content.firstChild):this.loadingElement=this.table.options.ajaxLoaderLoading),this.loaderPromise=this.table.options.ajaxRequestFunc||this.defaultLoaderPromise,this.urlGenerator=this.table.options.ajaxURLGenerator||this.defaultURLGenerator,this.table.options.ajaxLoaderError&&("string"==typeof this.table.options.ajaxLoaderError?(t=document.createElement("template"),t.innerHTML=this.table.options.ajaxLoaderError.trim(),this.errorElement=t.content.firstChild):this.errorElement=this.table.options.ajaxLoaderError),this.table.options.ajaxParams&&this.setParams(this.table.options.ajaxParams),this.table.options.ajaxConfig&&this.setConfig(this.table.options.ajaxConfig),this.table.options.ajaxURL&&this.setUrl(this.table.options.ajaxURL),this.table.options.ajaxProgressiveLoad&&(this.table.options.pagination?(this.progressiveLoad=!1,console.error("Progressive Load Error - Pagination and progressive load cannot be used at the same time")):this.table.modExists("page")?(this.progressiveLoad=this.table.options.ajaxProgressiveLoad,this.table.modules.page.initializeProgressive(this.progressiveLoad)):console.error("Pagination plugin is required for progressive ajax loading"))},f.prototype.createLoaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader"),t},f.prototype.createMsgElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-loader-msg"),t.setAttribute("role","alert"),t},f.prototype.setParams=function(t,e){if(e){this.params=this.params||{};for(var o in t)this.params[o]=t[o]}else this.params=t},f.prototype.getParams=function(){return this.params||{}},f.prototype.setConfig=function(t){if(this._loadDefaultConfig(),"string"==typeof t)this.config.method=t;else for(var e in t)this.config[e]=t[e]},f.prototype._loadDefaultConfig=function(t){var e=this;if(!e.config||t){e.config={};for(var o in e.defaultConfig)e.config[o]=e.defaultConfig[o]}},f.prototype.setUrl=function(t){this.url=t},f.prototype.getUrl=function(){return this.url},f.prototype.loadData=function(t){return this.progressiveLoad?this._loadDataProgressive():this._loadDataStandard(t)},f.prototype.nextPage=function(t){var e;this.loading||(e=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.getElement().clientHeight,t<e&&this.table.modules.page.nextPage().then(function(){}).catch(function(){}))},f.prototype.blockActiveRequest=function(){this.requestOrder++},f.prototype._loadDataProgressive=function(){return this.table.rowManager.setData([]),this.table.modules.page.setPage(1)},f.prototype._loadDataStandard=function(t){var e=this;return new Promise(function(o,i){e.sendRequest(t).then(function(n){e.table.rowManager.setData(n,t).then(function(){o()}).catch(function(t){i(t)})}).catch(function(t){i(t)})})},f.prototype.generateParamsList=function(t,e){var o=this,i=[];if(e=e||"",Array.isArray(t))t.forEach(function(t,n){i=i.concat(o.generateParamsList(t,e?e+"["+n+"]":n))});else if("object"===(void 0===t?"undefined":_typeof(t)))for(var n in t)i=i.concat(o.generateParamsList(t[n],e?e+"["+n+"]":n));else i.push({key:e,value:t});return i},f.prototype.serializeParams=function(t){var e=this.generateParamsList(t),o=[];return e.forEach(function(t){o.push(encodeURIComponent(t.key)+"="+encodeURIComponent(t.value))}),o.join("&")},f.prototype.sendRequest=function(t){var e,o=this,i=this,n=i.url;return i.requestOrder++,e=i.requestOrder,i._loadDefaultConfig(),new Promise(function(s,r){!1!==i.table.options.ajaxRequesting.call(o.table,i.url,i.params)?(i.loading=!0,t||i.showLoader(),o.loaderPromise(n,i.config,i.params).then(function(t){e===i.requestOrder?(i.table.options.ajaxResponse&&(t=i.table.options.ajaxResponse.call(i.table,i.url,i.params,t)),s(t)):console.warn("Ajax Response Blocked - An active ajax request was blocked by an attempt to change table data while the request was being made"),i.hideLoader(),i.loading=!1}).catch(function(t){console.error("Ajax Load Error: ",t),i.table.options.ajaxError.call(i.table,t),i.showError(),setTimeout(function(){i.hideLoader()},3e3),i.loading=!1,r()})):r()})},f.prototype.showLoader=function(){if("function"==typeof this.table.options.ajaxLoader?this.table.options.ajaxLoader():this.table.options.ajaxLoader){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-error"),this.msgElement.classList.add("tabulator-loading"),this.loadingElement?this.msgElement.appendChild(this.loadingElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|loading"),this.table.element.appendChild(this.loaderElement)}},f.prototype.showError=function(){for(this.hideLoader();this.msgElement.firstChild;)this.msgElement.removeChild(this.msgElement.firstChild);this.msgElement.classList.remove("tabulator-loading"),this.msgElement.classList.add("tabulator-error"),this.errorElement?this.msgElement.appendChild(this.errorElement):this.msgElement.innerHTML=this.table.modules.localize.getText("ajax|error"),this.table.element.appendChild(this.loaderElement)},f.prototype.hideLoader=function(){this.loaderElement.parentNode&&this.loaderElement.parentNode.removeChild(this.loaderElement)},f.prototype.defaultConfig={method:"GET"},f.prototype.defaultURLGenerator=function(t,e,o){return t&&o&&Object.keys(o).length&&(e.method&&"get"!=e.method.toLowerCase()||(e.method="get",t+="?"+this.serializeParams(o))),t},f.prototype.defaultLoaderPromise=function(t,e,o){var i,n=this;return new Promise(function(s,r){if(t=n.urlGenerator(t,e,o),"GET"!=e.method.toUpperCase())if(i="object"===_typeof(n.table.options.ajaxContentType)?n.table.options.ajaxContentType:n.contentTypeFormatters[n.table.options.ajaxContentType]){for(var a in i.headers)e.headers||(e.headers={}),void 0===e.headers[a]&&(e.headers[a]=i.headers[a]);e.body=i.body.call(n,t,e,o)}else console.warn("Ajax Error - Invalid ajaxContentType value:",n.table.options.ajaxContentType);t?(void 0===e.headers&&(e.headers={}),void 0===e.headers.Accept&&(e.headers.Accept="application/json"),void 0===e.headers["X-Requested-With"]&&(e.headers["X-Requested-With"]="XMLHttpRequest"),void 0===e.mode&&(e.mode="cors"),"cors"==e.mode?(void 0===e.headers["Access-Control-Allow-Origin"]&&(e.headers["Access-Control-Allow-Origin"]=window.location.origin),void 0===e.credentials&&(e.credentials="same-origin")):void 0===e.credentials&&(e.credentials="include"),fetch(t,e).then(function(t){t.ok?t.json().then(function(t){s(t)}).catch(function(t){r(t),console.warn("Ajax Load Error - Invalid JSON returned",t)}):(console.error("Ajax Load Error - Connection Error: "+t.status,t.statusText),r(t))}).catch(function(t){console.error("Ajax Load Error - Connection Error: ",t),r(t)})):(console.warn("Ajax Load Error - No URL Set"),s([]))})},f.prototype.contentTypeFormatters={json:{headers:{"Content-Type":"application/json"},body:function(t,e,o){return JSON.stringify(o)}},form:{headers:{},body:function(t,e,o){var i=this.generateParamsList(o),n=new FormData;return i.forEach(function(t){n.append(t.key,t.value)}),n}}},u.prototype.registerModule("ajax",f);var g=function(t){this.table=t,this.topCalcs=[],this.botCalcs=[],this.genColumn=!1,this.topElement=this.createElement(),this.botElement=this.createElement(),this.topRow=!1,this.botRow=!1,this.topInitialized=!1,this.botInitialized=!1,this.initialize()};g.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-calcs-holder"),t},g.prototype.initialize=function(){this.genColumn=new i({field:"value"},this)},g.prototype.registerColumnField=function(){},g.prototype.initializeColumn=function(t){var e=t.definition,o={topCalcParams:e.topCalcParams||{},botCalcParams:e.bottomCalcParams||{}};if(e.topCalc){switch(_typeof(e.topCalc)){case"string":this.calculations[e.topCalc]?o.topCalc=this.calculations[e.topCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.topCalc);break;case"function":o.topCalc=e.topCalc}o.topCalc&&(t.modules.columnCalcs=o,this.topCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeTopRow())}if(e.bottomCalc){switch(_typeof(e.bottomCalc)){case"string":this.calculations[e.bottomCalc]?o.botCalc=this.calculations[e.bottomCalc]:console.warn("Column Calc Error - No such calculation found, ignoring: ",e.bottomCalc);break;case"function":o.botCalc=e.bottomCalc}o.botCalc&&(t.modules.columnCalcs=o,this.botCalcs.push(t),"group"!=this.table.options.columnCalcs&&this.initializeBottomRow())}},g.prototype.removeCalcs=function(){var t=!1;this.topInitialized&&(this.topInitialized=!1,this.topElement.parentNode.removeChild(this.topElement),t=!0),this.botInitialized&&(this.botInitialized=!1,this.table.footerManager.remove(this.botElement),t=!0),t&&this.table.rowManager.adjustTableSize()},g.prototype.initializeTopRow=function(){this.topInitialized||(this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling),this.topInitialized=!0)},g.prototype.initializeBottomRow=function(){this.botInitialized||(this.table.footerManager.prepend(this.botElement),this.botInitialized=!0)},g.prototype.scrollHorizontal=function(t){this.table.columnManager.getElement().scrollWidth,this.table.element.clientWidth;this.botInitialized&&(this.botRow.getElement().style.marginLeft=-t+"px")},g.prototype.recalc=function(t){var e;if(this.topInitialized||this.botInitialized){if(this.rowsToData(t),this.topInitialized){for(this.topRow&&this.topRow.deleteCells(),e=this.generateRow("top",this.rowsToData(t)),this.topRow=e;this.topElement.firstChild;)this.topElement.removeChild(this.topElement.firstChild);this.topElement.appendChild(e.getElement()),e.initialize(!0)}if(this.botInitialized){for(this.botRow&&this.botRow.deleteCells(),e=this.generateRow("bottom",this.rowsToData(t)),this.botRow=e;this.botElement.firstChild;)this.botElement.removeChild(this.botElement.firstChild);this.botElement.appendChild(e.getElement()),e.initialize(!0)}this.table.rowManager.adjustTableSize(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()}},g.prototype.recalcRowGroup=function(t){this.recalcGroup(this.table.modules.groupRows.getRowGroup(t))},g.prototype.recalcGroup=function(t){var e,o;t&&t.calcs&&(t.calcs.bottom&&(e=this.rowsToData(t.rows),o=this.generateRowData("bottom",e),t.calcs.bottom.updateData(o),t.calcs.bottom.reinitialize()),t.calcs.top&&(e=this.rowsToData(t.rows),o=this.generateRowData("top",e),t.calcs.top.updateData(o),t.calcs.top.reinitialize()))},g.prototype.generateTopRow=function(t){return this.generateRow("top",this.rowsToData(t))},g.prototype.generateBottomRow=function(t){return this.generateRow("bottom",this.rowsToData(t))},g.prototype.rowsToData=function(t){var e=[];return t.forEach(function(t){e.push(t.getData())}),e},g.prototype.generateRow=function(t,e){var o,i=this,n=this.generateRowData(t,e);return i.table.modExists("mutator")&&i.table.modules.mutator.disable(),o=new r(n,this),i.table.modExists("mutator")&&i.table.modules.mutator.enable(),o.getElement().classList.add("tabulator-calcs","tabulator-calcs-"+t),o.type="calc",o.generateCells=function(){var e=[];i.table.columnManager.columnsByIndex.forEach(function(n){i.genColumn.setField(n.getField()),i.genColumn.hozAlign=n.hozAlign,n.definition[t+"CalcFormatter"]&&i.table.modExists("format")?i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter(n.definition[t+"CalcFormatter"]),params:n.definition[t+"CalcFormatterParams"]}:i.genColumn.modules.format={formatter:i.table.modules.format.getFormatter("plaintext"),params:{}},i.genColumn.definition.cssClass=n.definition.cssClass;var s=new l(i.genColumn,o);s.column=n,s.setWidth(),n.cells.push(s),e.push(s),n.visible||s.hide()}),this.cells=e},o},g.prototype.generateRowData=function(t,e){var o,i,n={},s="top"==t?this.topCalcs:this.botCalcs,r="top"==t?"topCalc":"botCalc";return s.forEach(function(t){var s=[];t.modules.columnCalcs&&t.modules.columnCalcs[r]&&(e.forEach(function(e){s.push(t.getFieldValue(e))}),i=r+"Params",o="function"==typeof t.modules.columnCalcs[i]?t.modules.columnCalcs[i](s,e):t.modules.columnCalcs[i],t.setFieldValue(n,t.modules.columnCalcs[r](s,e,o)))}),n},g.prototype.hasTopCalcs=function(){return!!this.topCalcs.length},g.prototype.hasBottomCalcs=function(){return!!this.botCalcs.length},g.prototype.redraw=function(){
+this.topRow&&this.topRow.normalizeHeight(!0),this.botRow&&this.botRow.normalizeHeight(!0)},g.prototype.getResults=function(){var t,e=this,o={};return this.table.options.groupBy&&this.table.modExists("groupRows")?(t=this.table.modules.groupRows.getGroups(!0),t.forEach(function(t){o[t.getKey()]=e.getGroupResults(t)})):o={top:this.topRow?this.topRow.getData():{},bottom:this.botRow?this.botRow.getData():{}},o},g.prototype.getGroupResults=function(t){var e=this,o=t._getSelf(),i=t.getSubGroups(),n={};return i.forEach(function(t){n[t.getKey()]=e.getGroupResults(t)}),{top:o.calcs.top?o.calcs.top.getData():{},bottom:o.calcs.bottom?o.calcs.bottom.getData():{},groups:n}},g.prototype.calculations={avg:function(t,e,o){var i=0,n=void 0!==o.precision?o.precision:2;return t.length&&(i=t.reduce(function(t,e){return e=Number(e),t+e}),i/=t.length,i=!1!==n?i.toFixed(n):i),parseFloat(i).toString()},max:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))>i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},min:function(t,e,o){var i=null,n=void 0!==o.precision&&o.precision;return t.forEach(function(t){((t=Number(t))<i||null===i)&&(i=t)}),null!==i?!1!==n?i.toFixed(n):i:""},sum:function(t,e,o){var i=0,n=void 0!==o.precision&&o.precision;return t.length&&t.forEach(function(t){t=Number(t),i+=isNaN(t)?0:Number(t)}),!1!==n?i.toFixed(n):i},concat:function(t,e,o){var i=0;return t.length&&(i=t.reduce(function(t,e){return String(t)+String(e)})),i},count:function(t,e,o){var i=0;return t.length&&t.forEach(function(t){t&&i++}),i}},u.prototype.registerModule("columnCalcs",g);var b=function(t){this.table=t,this.mode=!0,this.copySelector=!1,this.copySelectorParams={},this.copyFormatter=!1,this.copyFormatterParams={},this.pasteParser=function(){},this.pasteAction=function(){},this.htmlElement=!1,this.config={},this.blocked=!0};b.prototype.initialize=function(){var t=this;this.mode=this.table.options.clipboard,!0!==this.mode&&"copy"!==this.mode||this.table.element.addEventListener("copy",function(e){var o;t.processConfig(),t.blocked||(e.preventDefault(),o=t.generateContent(),window.clipboardData&&window.clipboardData.setData?window.clipboardData.setData("Text",o):e.clipboardData&&e.clipboardData.setData?(e.clipboardData.setData("text/plain",o),t.htmlElement&&e.clipboardData.setData("text/html",t.htmlElement.outerHTML)):e.originalEvent&&e.originalEvent.clipboardData.setData&&(e.originalEvent.clipboardData.setData("text/plain",o),t.htmlElement&&e.originalEvent.clipboardData.setData("text/html",t.htmlElement.outerHTML)),t.table.options.clipboardCopied.call(this.table,o),t.reset())}),!0!==this.mode&&"paste"!==this.mode||this.table.element.addEventListener("paste",function(e){t.paste(e)}),this.setPasteParser(this.table.options.clipboardPasteParser),this.setPasteAction(this.table.options.clipboardPasteAction)},b.prototype.processConfig=function(){var t={columnHeaders:"groups",rowGroups:!0,columnCalcs:!0};if(void 0!==this.table.options.clipboardCopyHeader&&(t.columnHeaders=this.table.options.clipboardCopyHeader,console.warn("DEPRECATION WARNING - clipboardCopyHeader option has been deprecated, please use the columnHeaders property on the clipboardCopyConfig option")),this.table.options.clipboardCopyConfig)for(var e in this.table.options.clipboardCopyConfig)t[e]=this.table.options.clipboardCopyConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnHeaders?"groups"!==t.columnHeaders&&!0!==t||this.table.columnManager.columns.length==this.table.columnManager.columnsByIndex.length?this.config.columnHeaders="columns":this.config.columnHeaders="groups":this.config.columnHeaders=!1,t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},b.prototype.reset=function(){this.blocked=!1,this.originalSelectionText=""},b.prototype.setPasteAction=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteAction=this.pasteActions[t],this.pasteAction||console.warn("Clipboard Error - No such paste action found:",t);break;case"function":this.pasteAction=t}},b.prototype.setPasteParser=function(t){switch(void 0===t?"undefined":_typeof(t)){case"string":this.pasteParser=this.pasteParsers[t],this.pasteParser||console.warn("Clipboard Error - No such paste parser found:",t);break;case"function":this.pasteParser=t}},b.prototype.paste=function(t){var e,o,i;this.checkPaseOrigin(t)&&(e=this.getPasteData(t),o=this.pasteParser.call(this,e),o?(t.preventDefault(),this.table.modExists("mutator")&&(o=this.mutateData(o)),i=this.pasteAction.call(this,o),this.table.options.clipboardPasted.call(this.table,e,o,i)):this.table.options.clipboardPasteError.call(this.table,e))},b.prototype.mutateData=function(t){var e=this,o=[];return Array.isArray(t)?t.forEach(function(t){o.push(e.table.modules.mutator.transformRow(t,"clipboard"))}):o=t,o},b.prototype.checkPaseOrigin=function(t){var e=!0;return("DIV"!=t.target.tagName||this.table.modules.edit.currentCell)&&(e=!1),e},b.prototype.getPasteData=function(t){var e;return window.clipboardData&&window.clipboardData.getData?e=window.clipboardData.getData("Text"):t.clipboardData&&t.clipboardData.getData?e=t.clipboardData.getData("text/plain"):t.originalEvent&&t.originalEvent.clipboardData.getData&&(e=t.originalEvent.clipboardData.getData("text/plain")),e},b.prototype.copy=function(t,e,o,i,n){var s,r,a;this.blocked=!1,!0!==this.mode&&"copy"!==this.mode||(void 0!==window.getSelection&&void 0!==document.createRange?(s=document.createRange(),s.selectNodeContents(this.table.element),r=window.getSelection(),r.toString()&&n&&(t="userSelection",o="raw",e=r.toString()),r.removeAllRanges(),r.addRange(s)):void 0!==document.selection&&void 0!==document.body.createTextRange&&(a=document.body.createTextRange(),a.moveToElementText(this.table.element),a.select()),this.setSelector(t),this.copySelectorParams=void 0!==e&&null!=e?e:this.config.columnHeaders,this.setFormatter(o),this.copyFormatterParams=void 0!==i&&null!=i?i:{},document.execCommand("copy"),r&&r.removeAllRanges())},b.prototype.setSelector=function(t){switch(t=t||this.table.options.clipboardCopySelector,void 0===t?"undefined":_typeof(t)){case"string":this.copySelectors[t]?this.copySelector=this.copySelectors[t]:console.warn("Clipboard Error - No such selector found:",t);break;case"function":this.copySelector=t}},b.prototype.setFormatter=function(t){switch(t=t||this.table.options.clipboardCopyFormatter,void 0===t?"undefined":_typeof(t)){case"string":this.copyFormatters[t]?this.copyFormatter=this.copyFormatters[t]:console.warn("Clipboard Error - No such formatter found:",t);break;case"function":this.copyFormatter=t}},b.prototype.generateContent=function(){var t;return this.htmlElement=!1,t=this.copySelector.call(this,this.config,this.copySelectorParams),this.copyFormatter.call(this,t,this.config,this.copyFormatterParams)},b.prototype.generateSimpleHeaders=function(t){var e=[];return t.forEach(function(t){e.push(t.definition.title)}),e},b.prototype.generateColumnGroupHeaders=function(t){var e=this,o=[];return this.table.columnManager.columns.forEach(function(t){var i=e.processColumnGroup(t);i&&o.push(i)}),o},b.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i={type:"group",title:t.definition.title,column:t};if(o.length){if(i.subGroups=[],i.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(i.width+=o.width,i.subGroups.push(o))}),!i.width)return!1}else{if(!t.field||!(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard))return!1;i.width=1}return i},b.prototype.groupHeadersToRows=function(t){function e(t,n){void 0===i[n]&&(i[n]=[]),i[n].push(t.title),t.subGroups?t.subGroups.forEach(function(t){e(t,n+1)}):o()}function o(){var t=0;i.forEach(function(e){var o=e.length;o>t&&(t=o)}),i.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}var i=[];return t.forEach(function(t){e(t,0)}),i},b.prototype.rowsToData=function(t,e,o,i){var n=[];return t.forEach(function(t){var o=[],i=t instanceof s?t.getData("clipboard"):t;e.forEach(function(t){var e=t.getFieldValue(i);switch(void 0===e?"undefined":_typeof(e)){case"object":e=JSON.stringify(e);break;case"undefined":case"null":e="";break;default:e=e}o.push(e)}),n.push(o)}),n},b.prototype.buildComplexRows=function(t){var e=this,o=[];return this.table.modules.groupRows.getGroups().forEach(function(t){o.push(e.processGroupData(t))}),o},b.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getRows(!0),i},b.prototype.getCalcRow=function(t,e,o,i){var n=t[o];return n&&(i&&(n=n[i]),Object.keys(n).length)?this.rowsToData([n],e):[]},b.prototype.buildOutput=function(t,e,o){var i,n=this,s=[],r=[];return e.columnHeaders&&("groups"==e.columnHeaders?(r=this.generateColumnGroupHeaders(this.table.columnManager.columns),s=s.concat(this.groupHeadersToRows(r))):(this.table.columnManager.columnsByIndex.forEach(function(t){(t.definition.clipboard||t.visible&&!1!==t.definition.clipboard)&&r.push(t)}),s.push(this.generateSimpleHeaders(r)))),this.config.columnCalcs&&(i=this.table.getCalcResults()),this.table.options.clipboardCopyStyled&&this.generateHTML(t,r,i,e,o),e.rowGroups?t.forEach(function(t){s=s.concat(n.parseRowGroupData(t,r,e,o,i||{}))}):(e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"top"))),s=s.concat(this.rowsToData(t,r,e,o)),e.columnCalcs&&(s=s.concat(this.getCalcRow(i,r,"bottom")))),s},b.prototype.parseRowGroupData=function(t,e,o,i,n){var s=this,r=[];return r.push([t.key]),t.subGroups?t.subGroups.forEach(function(e){r=r.concat(s.parseRowGroupData(e,o,i,n[t.key]?n[t.key].groups||{}:{}))}):(o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"top"))),r=r.concat(this.rowsToData(t.rows,e,o,i)),o.columnCalcs&&(r=r.concat(this.getCalcRow(n,e,t.key,"bottom")))),r},b.prototype.generateHTML=function(t,e,o,i,n){function r(t,e){void 0===y[e]&&(y[e]=[]),y[e].push({title:t.title,width:t.width,height:1,children:!!t.subGroups,element:t.column.getElement()}),t.subGroups&&t.subGroups.forEach(function(t){r(t,e+1)})}function a(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&l([i]))}function l(t){t.forEach(function(t,o){var i,n=document.createElement("tr"),r=m,a=!1;t instanceof s?i=t.getData("clipboard"):(i=t,a=!0),e.forEach(function(t,o){var s=document.createElement("td"),r=t.getFieldValue(i);switch(void 0===r?"undefined":_typeof(r)){case"object":r=JSON.stringify(r);break;case"undefined":case"null":r="";break;default:r=r}s.innerHTML=r,t.definition.align&&(s.style.textAlign=t.definition.align),e.length,f&&v.mapElementStyles(f,s,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size"]),n.appendChild(s)}),a?r=p:(o%2||!d||(r=d),o%2&&h&&(r=h)),r&&v.mapElementStyles(r,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),u.appendChild(n)})}function c(t,o){var n=document.createElement("tr"),s=document.createElement("td");s.colSpan=e.length,s.innerHTML=t.key,n.appendChild(s),u.appendChild(n),v.mapElementStyles(g,n,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),t.subGroups?t.subGroups.forEach(function(e){c(e,o[t.key]?o[t.key].groups||{}:{})}):(i.columnCalcs&&a(o,t.key,"top"),l(t.rows),i.columnCalcs&&a(o,t.key,"bottom"))}var u,d,h,p,m,f,g,b,v=this,y=[];this.htmlElement=document.createElement("table"),v.mapElementStyles(this.table.element,this.htmlElement,["border-top","border-left","border-right","border-bottom"]),i.columnHeaders&&("groups"==i.columnHeaders?(e.forEach(function(t){r(t,0)}),function(){y.forEach(function(t,e){t.forEach(function(t){t.children||(t.height=y.length-e)})})}(),function(t){var e=document.createElement("thead");t.forEach(function(t){var o=document.createElement("tr");t.forEach(function(t){var e=document.createElement("th");t.width>1&&(e.colSpan=t.width),t.height>1&&(e.rowSpan=t.height),e.innerHTML=t.title,v.mapElementStyles(t.element,e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.appendChild(e)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),e.appendChild(o)}),v.htmlElement.appendChild(e)}(y)):function(){var t=document.createElement("tr");e.forEach(function(e){var o=document.createElement("th");o.innerHTML=e.definition.title,v.mapElementStyles(e.getElement(),o,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.appendChild(o)}),v.mapElementStyles(v.table.columnManager.getHeadersElement(),t,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),v.htmlElement.appendChild(document.createElement("thead").appendChild(t))}()),u=document.createElement("tbody"),window.getComputedStyle&&(d=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),h=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),p=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),m=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),g=this.table.element.getElementsByClassName("tabulator-group")[0],m&&(b=m.getElementsByClassName("tabulator-cell"),f=b[0],b[b.length-1])),i.rowGroups?t.forEach(function(t){c(t,o||{})}):(i.columnCalcs&&a(o,"top"),l(t),i.columnCalcs&&a(o,"bottom")),this.htmlElement.appendChild(u)},b.prototype.mapElementStyles=function(t,e,o){var i={"background-color":"backgroundColor",color:"fontColor","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}},b.prototype.copySelectors={userSelection:function(t,e){return e},selected:function(t,e){var o=[];return this.table.modExists("selectRow",!0)&&(o=this.table.modules.selectRow.getSelectedRows()),t.rowGroups&&console.warn("Clipboard Warning - select coptSelector does not support row groups"),this.buildOutput(o,t,e)},table:function(t,e){return t.rowGroups&&console.warn("Clipboard Warning - table coptSelector does not support row groups"),this.buildOutput(this.table.rowManager.getComponents(),t,e)},active:function(t,e){var o;return o=t.rowGroups?this.buildComplexRows(t):this.table.rowManager.getComponents(!0),this.buildOutput(o,t,e)}},b.prototype.copyFormatters={raw:function(t,e){return t},table:function(t,e){var o=[];return t.forEach(function(t){t.forEach(function(t){void 0===t&&(t=""),t=void 0===t||null===t?"":t.toString(),t.match(/\r|\n/)&&(t=t.split('"').join('""'),t='"'+t+'"')}),o.push(t.join("\t"))}),o.join("\n")}},b.prototype.pasteParsers={table:function(t){var e=[],o=!0,i=this.table.columnManager.columns,n=[],s=[];return t=t.split("\n"),t.forEach(function(t){e.push(t.split("\t"))}),!(!e.length||1===e.length&&e[0].length<2)&&(!0,e[0].forEach(function(t){var e=i.find(function(e){return t&&e.definition.title&&t.trim()&&e.definition.title.trim()===t.trim()});e?n.push(e):o=!1}),o||(o=!0,n=[],e[0].forEach(function(t){var e=i.find(function(e){return t&&e.field&&t.trim()&&e.field.trim()===t.trim()});e?n.push(e):o=!1}),o||(n=this.table.columnManager.columnsByIndex)),o&&e.shift(),e.forEach(function(t){var e={};t.forEach(function(t,o){n[o]&&(e[n[o].field]=t)}),s.push(e)}),s)}},b.prototype.pasteActions={replace:function(t){return this.table.setData(t)},update:function(t){return this.table.updateOrAddData(t)},insert:function(t){return this.table.addData(t)}},u.prototype.registerModule("clipboard",b);var v=function(t){this.table=t,this.indent=10,this.field="",this.collapseEl=null,this.expandEl=null,this.branchEl=null,this.elementField=!1,this.startOpen=function(){},this.displayIndex=0};v.prototype.initialize=function(){var t=null,e=this.table.columnManager.getFirstVisibileColumn(),o=this.table.options;switch(this.field=o.dataTreeChildField,this.indent=o.dataTreeChildIndent,this.elementField=o.dataTreeElementColumn||!!e&&e.field,o.dataTreeBranchElement&&(!0===o.dataTreeBranchElement?(this.branchEl=document.createElement("div"),this.branchEl.classList.add("tabulator-data-tree-branch")):"string"==typeof o.dataTreeBranchElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeBranchElement,this.branchEl=t.firstChild):this.branchEl=o.dataTreeBranchElement),o.dataTreeCollapseElement?"string"==typeof o.dataTreeCollapseElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeCollapseElement,this.collapseEl=t.firstChild):this.collapseEl=o.dataTreeCollapseElement:(this.collapseEl=document.createElement("div"),this.collapseEl.classList.add("tabulator-data-tree-control"),this.collapseEl.innerHTML="<div class='tabulator-data-tree-control-collapse'></div>"),o.dataTreeExpandElement?"string"==typeof o.dataTreeExpandElement?(t=document.createElement("div"),t.innerHTML=o.dataTreeExpandElement,this.expandEl=t.firstChild):this.expandEl=o.dataTreeExpandElement:(this.expandEl=document.createElement("div"),this.expandEl.classList.add("tabulator-data-tree-control"),this.expandEl.innerHTML="<div class='tabulator-data-tree-control-expand'></div>"),_typeof(o.dataTreeStartExpanded)){case"boolean":this.startOpen=function(t,e){return o.dataTreeStartExpanded};break;case"function":this.startOpen=o.dataTreeStartExpanded;break;default:this.startOpen=function(t,e){return o.dataTreeStartExpanded[e]}}},v.prototype.initializeRow=function(t){var e=t.getData()[this.field],o=Array.isArray(e),i=o||!o&&"object"===(void 0===e?"undefined":_typeof(e))&&null!==e;t.modules.dataTree={index:0,open:!!i&&this.startOpen(t.getComponent(),0),controlEl:!1,branchEl:!1,parent:!1,children:i}},v.prototype.layoutRow=function(t){var e=this.elementField?t.getCell(this.elementField):t.getCells()[0],o=e.getElement(),i=t.modules.dataTree;i.branchEl&&i.branchEl.parentNode.removeChild(i.branchEl),this.generateControlElement(t,o),i.index&&(this.branchEl?(i.branchEl=this.branchEl.cloneNode(!0),o.insertBefore(i.branchEl,o.firstChild),i.branchEl.style.marginLeft=(i.branchEl.offsetWidth+i.branchEl.style.marginRight)*(i.index-1)+i.index*this.indent+"px"):o.style.paddingLeft=parseInt(window.getComputedStyle(o,null).getPropertyValue("padding-left"))+i.index*this.indent+"px")},v.prototype.generateControlElement=function(t,e){var o=this,i=t.modules.dataTree,e=e||t.getCells()[0].getElement(),n=i.controlEl;!1!==i.children&&(i.open?(i.controlEl=this.collapseEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.collapseRow(t)})):(i.controlEl=this.expandEl.cloneNode(!0),i.controlEl.addEventListener("click",function(e){e.stopPropagation(),o.expandRow(t)})),i.controlEl.addEventListener("mousedown",function(t){t.stopPropagation()}),n&&n.parentNode===e?n.parentNode.replaceChild(i.controlEl,n):e.insertBefore(i.controlEl,e.firstChild))},v.prototype.setDisplayIndex=function(t){this.displayIndex=t},v.prototype.getDisplayIndex=function(){return this.displayIndex},v.prototype.getRows=function(t){var e=this,o=[];return t.forEach(function(t,i){var n,s;o.push(t),t instanceof r&&(n=t.modules.dataTree.children,n.index||!1===n.children||(s=e.getChildren(t),s.forEach(function(t){o.push(t)})))}),o},v.prototype.getChildren=function(t){var e=this,o=t.modules.dataTree,i=[],n=[];return!1!==o.children&&o.open&&(Array.isArray(o.children)||(o.children=this.generateChildren(t)),i=this.table.modExists("filter")?this.table.modules.filter.filter(o.children):o.children,this.table.modExists("sort")&&this.table.modules.sort.sort(i),i.forEach(function(t){n.push(t),e.getChildren(t).forEach(function(t){n.push(t)})})),n},v.prototype.generateChildren=function(t){var e=this,o=[],i=t.getData()[this.field];return Array.isArray(i)||(i=[i]),i.forEach(function(i){var n=new r(i||{},e.table.rowManager);n.modules.dataTree.index=t.modules.dataTree.index+1,n.modules.dataTree.parent=t,n.modules.dataTree.children&&(n.modules.dataTree.open=e.startOpen(n.getComponent(),n.modules.dataTree.index)),o.push(n)}),o},v.prototype.expandRow=function(t,e){var o=t.modules.dataTree;!1!==o.children&&(o.open=!0,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowExpanded(t.getComponent(),t.modules.dataTree.index))},v.prototype.collapseRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open=!1,t.reinitialize(),this.table.rowManager.refreshActiveData("tree",!1,!0),this.table.options.dataTreeRowCollapsed(t.getComponent(),t.modules.dataTree.index))},v.prototype.toggleRow=function(t){var e=t.modules.dataTree;!1!==e.children&&(e.open?this.collapseRow(t):this.expandRow(t))},v.prototype.getTreeParent=function(t){return!!t.modules.dataTree.parent&&t.modules.dataTree.parent.getComponent()},v.prototype.getTreeChildren=function(t){var e=t.modules.dataTree,o=[];return e.children&&(Array.isArray(e.children)||(e.children=this.generateChildren(t)),e.children.forEach(function(t){t instanceof r&&o.push(t.getComponent())})),o},v.prototype.checkForRestyle=function(t){t.row.cells.indexOf(t)||!1!==t.row.modules.dataTree.children&&t.row.reinitialize()},v.prototype.getChildField=function(){return this.field},u.prototype.registerModule("dataTree",v);var y=function(t){this.table=t,this.fields={},this.columnsByIndex=[],this.columnsByField={},this.config={}};y.prototype.download=function(t,e,o,i){function n(o,n){i?!0===i?s.triggerDownload(o,n,t,e,!0):i(o):s.triggerDownload(o,n,t,e)}var s=this,r=!1;this.processConfig(),"function"==typeof t?r=t:s.downloaders[t]?r=s.downloaders[t]:console.warn("Download Error - No such download type found: ",t),this.processColumns(),r&&r.call(this,s.processDefinitions(),s.processData(),o||{},n,this.config)},y.prototype.processConfig=function(){var t={columnGroups:!0,rowGroups:!0,columnCalcs:!0};if(this.table.options.downloadConfig)for(var e in this.table.options.downloadConfig)t[e]=this.table.options.downloadConfig[e];t.rowGroups&&this.table.options.groupBy&&this.table.modExists("groupRows")&&(this.config.rowGroups=!0),t.columnGroups&&this.table.columnManager.columns.length!=this.table.columnManager.columnsByIndex.length&&(this.config.columnGroups=!0),t.columnCalcs&&this.table.modExists("columnCalcs")&&(this.config.columnCalcs=!0)},y.prototype.processColumns=function(){var t=this;t.columnsByIndex=[],t.columnsByField={},t.table.columnManager.columnsByIndex.forEach(function(e){e.field&&!1!==e.definition.download&&(e.visible||!e.visible&&e.definition.download)&&(t.columnsByIndex.push(e),t.columnsByField[e.field]=e)})},y.prototype.processDefinitions=function(){var t=this,e=[];return this.config.columnGroups?t.table.columnManager.columns.forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}):t.columnsByIndex.forEach(function(o){!1!==o.download&&e.push(t.processDefinition(o))}),e},y.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n=this.processDefinition(t),s={type:"group",title:n.title,depth:1};if(o.length){if(s.subGroups=[],s.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o.depth>i&&(i=o.depth),o&&(s.width+=o.width,s.subGroups.push(o))}),s.depth+=i,!s.width)return!1}else{if(!t.field||!1===t.definition.download||!(t.visible||!t.visible&&t.definition.download))return!1;s.width=1,s.definition=n}return s},y.prototype.processDefinition=function(t){var e={};for(var o in t.definition)e[o]=t.definition[o];return void 0!==t.definition.downloadTitle&&(e.title=t.definition.downloadTitle),e},y.prototype.processData=function(){var t=this,e=this,o=[],i=[],n={};return this.config.rowGroups?(i=this.table.modules.groupRows.getGroups(),i.forEach(function(e){o.push(t.processGroupData(e))})):o=e.table.rowManager.getData(!0,"download"),this.config.columnCalcs&&(n=this.table.getCalcResults(),o={calcs:n,data:o}),"function"==typeof e.table.options.downloadDataFormatter&&(o=e.table.options.downloadDataFormatter(o)),o},y.prototype.processGroupData=function(t){var e=this,o=t.getSubGroups(),i={type:"group",key:t.key};return o.length?(i.subGroups=[],o.forEach(function(t){i.subGroups.push(e.processGroupData(t))})):i.rows=t.getData(!0,"download"),i},y.prototype.triggerDownload=function(t,e,o,i,n){var s=document.createElement("a"),r=new Blob([t],{type:e}),i=i||"Tabulator."+("function"==typeof o?"txt":o);(r=this.table.options.downloadReady.call(this.table,t,r))&&(n?window.open(window.URL.createObjectURL(r)):navigator.msSaveOrOpenBlob?navigator.msSaveOrOpenBlob(r,i):(s.setAttribute("href",window.URL.createObjectURL(r)),s.setAttribute("download",i),s.style.display="none",document.body.appendChild(s),s.click(),document.body.removeChild(s)),this.table.options.downloadComplete&&this.table.options.downloadComplete())},y.prototype.getFieldValue=function(t,e){var o=this.columnsByField[t];return!!o&&o.getFieldValue(e)},y.prototype.commsReceived=function(t,e,o){switch(e){case"intercept":this.download(o.type,"",o.options,o.intercept)}},y.prototype.downloaders={csv:function(t,e,o,i,n){function s(t,e){t.subGroups?t.subGroups.forEach(function(t){s(t,e+1)}):(d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.definition.field))}function r(t){t.forEach(function(t){var e=[];h.forEach(function(o){var i=u.getFieldValue(o,t);switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}e.push('"'+String(i).split('"').join('""')+'"')}),l.push(e.join(p))})}function a(t){t.subGroups?t.subGroups.forEach(function(t){a(t)}):r(t.rows)}var l,c,u=this,d=[],h=[],p=o&&o.delimiter?o.delimiter:",";n.columnGroups?(console.warn("Download Warning - CSV downloader cannot process column groups"),t.forEach(function(t){s(t,0)})):function(){t.forEach(function(t){d.push('"'+String(t.title).split('"').join('""')+'"'),h.push(t.field)})}(),l=[d.join(p)],n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),n.rowGroups?(console.warn("Download Warning - CSV downloader cannot process row groups"),e.forEach(function(t){a(t)})):r(e),c=l.join("\n"),o.bom&&(c="\ufeff"+c),i(c,"text/csv")},json:function(t,e,o,i,n){var s;n.columnCalcs&&(console.warn("Download Warning - CSV downloader cannot process column calculations"),e=e.data),s=JSON.stringify(e,null,"\t"),i(s,"application/json")},pdf:function(t,e,o,i,n){function s(t,e){var o=t.width,i=1,n={content:t.title||""};if(t.subGroups?(t.subGroups.forEach(function(t){s(t,e+1)}),i=1):(h.push(t.definition.field),i=g-e),n.rowSpan=i,p[e].push(n),o--,i>1)for(var r=e+1;r<g;r++)p[r].push("");for(var r=0;r<o;r++)p[e].push("")}function r(t){switch(void 0===t?"undefined":_typeof(t)){case"object":t=JSON.stringify(t);break;case"undefined":case"null":t="";break;default:t=t}return t}function a(t){t.forEach(function(t){m.push(l(t))})}function l(t,e){var o=[];return h.forEach(function(i){var n=d.getFieldValue(i,t);n=r(n),e?o.push({content:n,styles:e}):o.push(n)}),o}function c(t,e){var o=[];o.push({content:r(t.key),colSpan:h.length,styles:v}),m.push(o),t.subGroups?t.subGroups.forEach(function(o){c(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&u(e,t.key,"top"),a(t.rows),n.columnCalcs&&u(e,t.key,"bottom"))}function u(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&m.push(l(i,y)))}var d=this,h=[],p=[],m=[],f={},g=1,b={},v=o.rowGroupStyles||{fontStyle:"bold",fontSize:12,cellPadding:6,fillColor:220},y=o.rowCalcStyles||{fontStyle:"bold",fontSize:10,cellPadding:4,fillColor:232},w=o.jsPDF||{},E=o&&o.title?o.title:"";if(n.columnCalcs&&(f=e.calcs,e=e.data),w.orientation||(w.orientation=o.orientation||"landscape"),w.unit||(w.unit="pt"),n.columnGroups){t.forEach(function(t){t.depth>g&&(g=t.depth)});for(var C=0;C<g;C++)p.push([]);t.forEach(function(t){s(t,0)})}else!function(){t.forEach(function(t){t.field&&(p.push(t.title||""),h.push(t.field))}),p=[p]}();n.rowGroups?e.forEach(function(t){c(t,f)}):(n.columnCalcs&&u(f,"top"),a(e),n.columnCalcs&&u(f,"bottom"));var x=new jsPDF(w);o&&o.autoTable&&(b="function"==typeof o.autoTable?o.autoTable(x)||{}:o.autoTable),E&&(b.addPageContent=function(t){x.text(E,40,30)}),b.head=p,b.body=m,x.autoTable(b),o&&o.documentProcessing&&o.documentProcessing(x),i(x.output("arraybuffer"),"application/pdf")},xlsx:function(t,e,o,i,n){function s(){function o(t,e){void 0===f[e]&&(f[e]=[]),void 0===h[e]&&(h[e]=[]),t.width>1&&h[e].push({type:"hoz",start:f[e].length,end:f[e].length+t.width-1}),f[e].push(t.title),t.subGroups?t.subGroups.forEach(function(t){o(t,e+1)}):(g.push(t.definition.field),i(g.length),h[e].push({type:"vert",start:g.length-1}))}function i(){var t=0;f.forEach(function(e){var o=e.length;o>t&&(t=o)}),f.forEach(function(e){var o=e.length;if(o<t)for(var i=o;i<t;i++)e.push("")})}function s(){var t=[];return d.forEach(function(e){t.push({s:{r:e,c:0},e:{r:e,c:g.length-1}})}),h.forEach(function(e,o){e.forEach(function(e){"hoz"===e.type?t.push({s:{r:o,c:e.start},e:{r:o,c:e.end}}):o!=f.length-1&&t.push({s:{r:o,c:e.start},e:{r:f.length-1,c:e.start}})})}),t}function r(t){t.forEach(function(t){b.push(l(t))})}function l(t){var e=[];return g.forEach(function(o){var i=a.getFieldValue(o,t);e.push(i instanceof Date||"object"!==(void 0===i?"undefined":_typeof(i))?i:JSON.stringify(i))}),e}function c(t,e,o){var i=t[e];i&&(o&&(i=i[o]),Object.keys(i).length&&(p.push(b.length),b.push(l(i))))}function m(t,e){var o=[];o.push(t.key),d.push(b.length),b.push(o),t.subGroups?t.subGroups.forEach(function(o){m(o,e[t.key]?e[t.key].groups||{}:{})}):(n.columnCalcs&&c(e,t.key,"top"),r(t.rows),n.columnCalcs&&c(e,t.key,"bottom"))}var f=[],g=[],b=[];return n.columnGroups?(t.forEach(function(t){o(t,0)}),f.forEach(function(t){b.push(t)})):function(){t.forEach(function(t){f.push(t.title),g.push(t.field)}),b.push(f)}(),n.rowGroups?e.forEach(function(t){m(t,u)}):(n.columnCalcs&&c(u,"top"),r(e),n.columnCalcs&&c(u,"bottom")),function(){var t={},e={s:{c:0,r:0},e:{c:g.length,r:b.length}};XLSX.utils.sheet_add_aoa(t,b),t["!ref"]=XLSX.utils.encode_range(e);var o=s();return o.length&&(t["!merges"]=o),t}()}var r,a=this,l=o.sheetName||"Sheet1",c={SheetNames:[],Sheets:{}},u={},d=[],h=[],p=[];if(n.columnCalcs&&(u=e.calcs,e=e.data),o.sheetOnly)return void i(s());if(o.sheets)for(var m in o.sheets)!0===o.sheets[m]?(c.SheetNames.push(m),c.Sheets[m]=s()):(c.SheetNames.push(m),this.table.modules.comms.send(o.sheets[m],"download","intercept",{type:"xlsx",options:{sheetOnly:!0},intercept:function(t){c.Sheets[m]=t}}));else c.SheetNames.push(l),c.Sheets[l]=s();r=XLSX.write(c,{bookType:"xlsx",bookSST:!0,type:"binary"}),i(function(t){for(var e=new ArrayBuffer(t.length),o=new Uint8Array(e),i=0;i!=t.length;++i)o[i]=255&t.charCodeAt(i);return e}(r),"application/octet-stream")}},u.prototype.registerModule("download",y);var w=function(t){this.table=t,this.currentCell=!1,this.mouseClick=!1,this.recursionBlock=!1,this.invalidEdit=!1};w.prototype.initializeColumn=function(t){var e=this,o={editor:!1,blocked:!1,check:t.definition.editable,params:t.definition.editorParams||{}};switch(_typeof(t.definition.editor)){case"string":"tick"===t.definition.editor&&(t.definition.editor="tickCross",console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.editor]?o.editor=e.editors[t.definition.editor]:console.warn("Editor Error - No such editor found: ",t.definition.editor);break;case"function":o.editor=t.definition.editor;break;case"boolean":!0===t.definition.editor&&("function"!=typeof t.definition.formatter?("tick"===t.definition.formatter&&(t.definition.formatter="tickCross",
+console.warn("DEPRECATION WARNING - the tick editor has been deprecated, please use the tickCross editor")),e.editors[t.definition.formatter]?o.editor=e.editors[t.definition.formatter]:o.editor=e.editors.input):console.warn("Editor Error - Cannot auto lookup editor for a custom formatter: ",t.definition.formatter))}o.editor&&(t.modules.edit=o)},w.prototype.getCurrentCell=function(){return!!this.currentCell&&this.currentCell.getComponent()},w.prototype.clearEditor=function(){var t,e=this.currentCell;if(this.invalidEdit=!1,e){for(this.currentCell=!1,t=e.getElement(),t.classList.remove("tabulator-validation-fail"),t.classList.remove("tabulator-editing");t.firstChild;)t.removeChild(t.firstChild);e.row.getElement().classList.remove("tabulator-row-editing")}},w.prototype.cancelEdit=function(){if(this.currentCell){var t=this.currentCell,e=this.currentCell.getComponent();this.clearEditor(),t.setValueActual(t.getValue()),t.column.cellEvents.cellEditCancelled&&t.column.cellEvents.cellEditCancelled.call(this.table,e),this.table.options.cellEditCancelled.call(this.table,e)}},w.prototype.bindEditor=function(t){var e=this,o=t.getElement();o.setAttribute("tabindex",0),o.addEventListener("click",function(t){o.classList.contains("tabulator-editing")||o.focus()}),o.addEventListener("mousedown",function(t){e.mouseClick=!0}),o.addEventListener("focus",function(o){e.recursionBlock||e.edit(t,o,!1)})},w.prototype.focusCellNoEvent=function(t){this.recursionBlock=!0,"ie"!==this.table.browser&&t.getElement().focus(),this.recursionBlock=!1},w.prototype.editCell=function(t,e){this.focusCellNoEvent(t),this.edit(t,!1,e)},w.prototype.edit=function(t,e,o){function i(e){if(c.currentCell===t){var o=!0;t.column.modules.validate&&c.table.modExists("validate")&&(o=c.table.modules.validate.validate(t.column.modules.validate,t.getComponent(),e)),!0===o?(c.clearEditor(),t.setValue(e,!0),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t)):(c.invalidEdit=!0,h.classList.add("tabulator-validation-fail"),c.focusCellNoEvent(t),d(),c.table.options.validationFailed.call(c.table,t.getComponent(),e,o))}}function n(){c.currentCell===t&&(c.cancelEdit(),c.table.options.dataTree&&c.table.modExists("dataTree")&&c.table.modules.dataTree.checkForRestyle(t))}function s(t){d=t}var r,a,l,c=this,u=!0,d=function(){},h=t.getElement();if(this.currentCell)return void(this.invalidEdit||this.cancelEdit());if(t.column.modules.edit.blocked)return this.mouseClick=!1,h.blur(),!1;switch(e&&e.stopPropagation(),_typeof(t.column.modules.edit.check)){case"function":u=t.column.modules.edit.check(t.getComponent());break;case"boolean":u=t.column.modules.edit.check}if(u||o){if(c.cancelEdit(),c.currentCell=t,a=t.getComponent(),this.mouseClick&&(this.mouseClick=!1,t.column.cellEvents.cellClick&&t.column.cellEvents.cellClick.call(this.table,e,a)),t.column.cellEvents.cellEditing&&t.column.cellEvents.cellEditing.call(this.table,a),c.table.options.cellEditing.call(this.table,a),l="function"==typeof t.column.modules.edit.params?t.column.modules.edit.params(a):t.column.modules.edit.params,!1===(r=t.column.modules.edit.editor.call(c,a,s,i,n,l)))return h.blur(),!1;if(!(r instanceof Node))return console.warn("Edit Error - Editor should return an instance of Node, the editor returned:",r),h.blur(),!1;for(h.classList.add("tabulator-editing"),t.row.getElement().classList.add("tabulator-row-editing");h.firstChild;)h.removeChild(h.firstChild);h.appendChild(r),d();for(var p=h.children,m=0;m<p.length;m++)p[m].addEventListener("click",function(t){t.stopPropagation()});return!0}return this.mouseClick=!1,h.blur(),!1},w.prototype.editors={input:function(t,e,o,i,n){function s(t){(null===r||void 0===r)&&""!==a.value||a.value!=r?o(a.value):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type",n.search?"search":"text"),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=void 0!==r?r:"",e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("change",s),a.addEventListener("blur",s),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:o(a.value);break;case 27:i()}}),a},textarea:function(t,e,o,i,n){function s(e){(null===r||void 0===r)&&""!==l.value||l.value!=r?(o(l.value),setTimeout(function(){t.getRow().normalizeHeight()},300)):i()}var r=t.getValue(),a=String(null!==r&&void 0!==r?r:""),l=(a.match(/(?:\r\n|\r|\n)/g),document.createElement("textarea")),c=0;if(l.style.display="block",l.style.padding="2px",l.style.height="100%",l.style.width="100%",l.style.boxSizing="border-box",l.style.whiteSpace="pre-wrap",l.style.resize="none",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var u in n.elementAttributes)"+"==u.charAt(0)?(u=u.slice(1),l.setAttribute(u,l.getAttribute(u)+n.elementAttributes["+"+u])):l.setAttribute(u,n.elementAttributes[u]);return l.value=a,e(function(){l.focus(),l.style.height="100%"}),l.addEventListener("change",s),l.addEventListener("blur",s),l.addEventListener("keyup",function(){l.style.height="";var e=l.scrollHeight;l.style.height=e+"px",e!=c&&(c=e,t.getRow().normalizeHeight())}),l.addEventListener("keydown",function(t){27==t.keyCode&&i()}),l},number:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","number"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);a.value=r;var c=function(t){s()};return e(function(){a.removeEventListener("blur",c),a.focus(),a.style.height="100%",a.addEventListener("blur",c)}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:s();break;case 27:i()}}),a},range:function(t,e,o,i,n){function s(){var t=a.value;isNaN(t)||""===t||(t=Number(t)),t!=r?o(t):i()}var r=t.getValue(),a=document.createElement("input");if(a.setAttribute("type","range"),void 0!==n.max&&a.setAttribute("max",n.max),void 0!==n.min&&a.setAttribute("min",n.min),void 0!==n.step&&a.setAttribute("step",n.step),a.style.padding="4px",a.style.width="100%",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var l in n.elementAttributes)"+"==l.charAt(0)?(l=l.slice(1),a.setAttribute(l,a.getAttribute(l)+n.elementAttributes["+"+l])):a.setAttribute(l,n.elementAttributes[l]);return a.value=r,e(function(){a.focus(),a.style.height="100%"}),a.addEventListener("blur",function(t){s()}),a.addEventListener("keydown",function(t){switch(t.keyCode){case 13:case 9:s();break;case 27:i()}}),a},select:function(t,e,o,i,n){function s(e){var o,i={},s=f.table.getData();return o=e?f.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create select lookup list:",e),i}function r(e,o){function i(t){var t={label:n.listItemFormatter?n.listItemFormatter(t.value,t.label):t.label,value:t.value,element:!1};return t.value!==o&&(isNaN(parseFloat(t.value))||isNaN(parseFloat(t.value))||parseFloat(t.value)!==parseFloat(o))||l(t),s.push(t),r.push(t),t}var s=[],r=[];if("function"==typeof e&&(e=e(t)),Array.isArray(e))e.forEach(function(t){var e;"object"===(void 0===t?"undefined":_typeof(t))?t.options?(e={label:t.label,group:!0,element:!1},r.push(e),t.options.forEach(function(t){i(t)})):i(t):(e={label:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1},e.value!==o&&(isNaN(parseFloat(e.value))||isNaN(parseFloat(e.value))||parseFloat(e.value)!==parseFloat(o))||l(e),s.push(e),r.push(e))});else for(var c in e){var u={label:n.listItemFormatter?n.listItemFormatter(c,e[c]):e[c],value:c,element:!1};u.value!==o&&(isNaN(parseFloat(u.value))||isNaN(parseFloat(u.value))||parseFloat(u.value)!==parseFloat(o))||l(u),s.push(u),r.push(u)}E=s,C=r,a()}function a(){for(;w.firstChild;)w.removeChild(w.firstChild);C.forEach(function(t){var e=t.element;e||(t.group?(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-group"),e.tabIndex=0,e.innerHTML=""===t.label?" ":t.label):(e=document.createElement("div"),e.classList.add("tabulator-edit-select-list-item"),e.tabIndex=0,e.innerHTML=""===t.label?" ":t.label,e.addEventListener("click",function(){l(t),c()}),t===x&&e.classList.add("active")),e.addEventListener("mousedown",function(){R=!1,setTimeout(function(){R=!0},10)}),t.element=e),w.appendChild(e)})}function l(t){x&&x.element&&x.element.classList.remove("active"),x=t,y.value=" "===t.label?"":t.label,t.element&&t.element.classList.add("active")}function c(){p(),b!==x.value?(b=x.value,o(x.value)):i()}function d(){p(),i()}function h(){if(!w.parentNode){!0===n.values?r(s(),v):"string"==typeof n.values?r(s(n.values),v):r(n.values||[],v);var t=u.prototype.helpers.elOffset(g);w.style.minWidth=g.offsetWidth+"px",w.style.top=t.top+g.offsetHeight+"px",w.style.left=t.left+"px",document.body.appendChild(w)}}function p(){w.parentNode&&w.parentNode.removeChild(w),m()}function m(){f.table.rowManager.element.removeEventListener("scroll",d)}var f=this,g=t.getElement(),b=t.getValue(),v=void 0!==b||null===b?b:void 0!==n.defaultValue?n.defaultValue:"",y=document.createElement("input"),w=document.createElement("div"),E=[],C=[],x={},R=!0;if(this.table.rowManager.element.addEventListener("scroll",d),(Array.isArray(n)||!Array.isArray(n)&&"object"===(void 0===n?"undefined":_typeof(n))&&!n.values)&&(console.warn("DEPRECATION WANRING - values for the select editor must now be passed into the values property of the editorParams object, not as the editorParams object"),n={values:n}),y.setAttribute("type","text"),y.style.padding="4px",y.style.width="100%",y.style.boxSizing="border-box",y.style.cursor="default",y.readOnly=0!=this.currentCell,n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var M in n.elementAttributes)"+"==M.charAt(0)?(M=M.slice(1),y.setAttribute(M,y.getAttribute(M)+n.elementAttributes["+"+M])):y.setAttribute(M,n.elementAttributes[M]);return y.value=void 0!==b||null===b?b:"",!0===n.values?r(s(),b):"string"==typeof n.values?r(s(n.values),b):r(n.values||[],b),y.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e>0&&l(E[e-1]);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=E.indexOf(x),e<E.length-1&&l(-1==e?E[0]:E[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:c();break;case 27:d()}}),y.addEventListener("blur",function(t){R&&d()}),y.addEventListener("focus",function(t){h()}),w=document.createElement("div"),w.classList.add("tabulator-edit-select-list"),e(function(){y.style.height="100%",y.focus()}),y},autocomplete:function(t,e,o,i,n){function s(e){var o,i={},s=g.table.getData();return o=e?g.table.columnManager.getColumnByField(e):t.getColumn()._getSelf(),o?(s.forEach(function(t){var e=o.getFieldValue(t);null!==e&&void 0!==e&&""!==e&&(i[e]=!0)}),i=n.sortValuesList?"asc"==n.sortValuesList?Object.keys(i).sort():Object.keys(i).sort().reverse():Object.keys(i)):console.warn("unable to find matching column to create autocomplete lookup list:",e),i}function r(t,e){var o=[];if(Array.isArray(t))t.forEach(function(t){var i={title:n.listItemFormatter?n.listItemFormatter(t,t):t,value:t,element:!1};i.value!==e&&(isNaN(parseFloat(i.value))||isNaN(parseFloat(i.value))||parseFloat(i.value)!==parseFloat(e))||c(i),o.push(i)});else for(var i in t){var s={title:n.listItemFormatter?n.listItemFormatter(i,t[i]):t[i],value:i,element:!1};s.value!==e&&(isNaN(parseFloat(s.value))||isNaN(parseFloat(s.value))||parseFloat(s.value)!==parseFloat(e))||c(s),o.push(s)}n.searchFunc&&o.forEach(function(t){t.search={title:t.title,value:t.value}}),C=o}function a(t,e){var o=[],i=[],s=[];n.searchFunc?(C.forEach(function(t){i.push(t.search)}),s=n.searchFunc(t,i),s.forEach(function(t){var e=C.find(function(e){return e.search===t});e&&o.push(e)})):""===t?n.showListOnEmpty&&C.forEach(function(t){o.push(t)}):C.forEach(function(e){null===e.value&&void 0===e.value||(String(e.value).toLowerCase().indexOf(String(t).toLowerCase())>-1||String(e.title).toLowerCase().indexOf(String(t).toLowerCase())>-1)&&o.push(e)}),x=o,l(e)}function l(t){for(var e=!1;E.firstChild;)E.removeChild(E.firstChild);x.forEach(function(o){var i=o.element;i||(i=document.createElement("div"),i.classList.add("tabulator-edit-select-list-item"),i.tabIndex=0,i.innerHTML=o.title,i.addEventListener("click",function(){c(o),d()}),i.addEventListener("mousedown",function(){L=!1,setTimeout(function(){L=!0},10)}),o.element=i,t&&o.value==v&&(w.value=o.title,o.element.classList.add("active"),e=!0),o===M&&(o.element.classList.add("active"),e=!0)),E.appendChild(i)}),e||c(!1)}function c(t,e){M&&M.element&&M.element.classList.remove("active"),M=t,t&&t.element&&t.element.classList.add("active")}function d(){m(),M?v!==M.value?(v=M.value,w.value=M.title,o(M.value)):i():n.freetext?(v=w.value,o(w.value)):n.allowEmpty&&""===w.value?(v=w.value,o(w.value)):i()}function h(){m(),i()}function p(){if(!E.parentNode){for(;E.firstChild;)E.removeChild(E.firstChild);R=!0===n.values?s():"string"==typeof n.values?s(n.values):n.values||[],r(R,v);var t=u.prototype.helpers.elOffset(b);E.style.minWidth=b.offsetWidth+"px",E.style.top=t.top+b.offsetHeight+"px",E.style.left=t.left+"px",document.body.appendChild(E)}}function m(){E.parentNode&&E.parentNode.removeChild(E),f()}function f(){g.table.rowManager.element.removeEventListener("scroll",h)}var g=this,b=t.getElement(),v=t.getValue(),y=void 0!==v||null===v?v:void 0!==n.defaultValue?n.defaultValue:"",w=document.createElement("input"),E=document.createElement("div"),C=[],x=[],R=[],M={},L=!0;if(this.table.rowManager.element.addEventListener("scroll",h),w.setAttribute("type","search"),w.style.padding="4px",w.style.width="100%",w.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var D in n.elementAttributes)"+"==D.charAt(0)?(D=D.slice(1),w.setAttribute(D,w.getAttribute(D)+n.elementAttributes["+"+D])):w.setAttribute(D,n.elementAttributes[D]);return w.addEventListener("keydown",function(t){var e;switch(t.keyCode){case 38:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),c(e>0?x[e-1]:!1);break;case 40:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault(),e=x.indexOf(M),e<x.length-1&&c(-1==e?x[0]:x[e+1]);break;case 37:case 39:t.stopImmediatePropagation(),t.stopPropagation(),t.preventDefault();break;case 13:d();break;case 27:h();break;case 36:case 35:t.stopImmediatePropagation()}}),w.addEventListener("keyup",function(t){switch(t.keyCode){case 38:case 37:case 39:case 40:case 13:case 27:break;default:a(w.value)}}),w.addEventListener("search",function(t){a(w.value)}),w.addEventListener("blur",function(t){L&&d()}),w.addEventListener("focus",function(t){var e=y;p(),w.value=e,a(e,!0)}),E=document.createElement("div"),E.classList.add("tabulator-edit-select-list"),e(function(){w.style.height="100%",w.focus()}),w},star:function(t,e,o,i,n){function s(t){h.forEach(function(e,o){o<t?("ie"==a.table.browser?e.setAttribute("class","tabulator-star-active"):e.classList.replace("tabulator-star-inactive","tabulator-star-active"),e.innerHTML='<polygon fill="#488CE9" stroke="#014AAE" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>'):("ie"==a.table.browser?e.setAttribute("class","tabulator-star-inactive"):e.classList.replace("tabulator-star-active","tabulator-star-inactive"),e.innerHTML='<polygon fill="#010155" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>')})}function r(t){c=t,s(t)}var a=this,l=t.getElement(),c=t.getValue(),u=l.getElementsByTagName("svg").length||5,d=l.getElementsByTagName("svg")[0]?l.getElementsByTagName("svg")[0].getAttribute("width"):14,h=[],p=document.createElement("div"),m=document.createElementNS("http://www.w3.org/2000/svg","svg");if(l.style.whiteSpace="nowrap",l.style.overflow="hidden",l.style.textOverflow="ellipsis",p.style.verticalAlign="middle",p.style.display="inline-block",p.style.padding="4px",m.setAttribute("width",d),m.setAttribute("height",d),m.setAttribute("viewBox","0 0 512 512"),m.setAttribute("xml:space","preserve"),m.style.padding="0 1px",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),p.setAttribute(f,p.getAttribute(f)+n.elementAttributes["+"+f])):p.setAttribute(f,n.elementAttributes[f]);for(var g=1;g<=u;g++)!function(t){var e=document.createElement("span"),i=m.cloneNode(!0);h.push(i),e.addEventListener("mouseenter",function(e){e.stopPropagation(),e.stopImmediatePropagation(),s(t)}),e.addEventListener("mousemove",function(t){t.stopPropagation(),t.stopImmediatePropagation()}),e.addEventListener("click",function(e){e.stopPropagation(),e.stopImmediatePropagation(),o(t)}),e.appendChild(i),p.appendChild(e)}(g);return c=Math.min(parseInt(c),u),s(c),p.addEventListener("mousemove",function(t){s(0)}),p.addEventListener("click",function(t){o(0)}),l.addEventListener("blur",function(t){i()}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:r(c+1);break;case 37:r(c-1);break;case 13:o(c);break;case 27:i()}}),p},progress:function(t,e,o,i,n){function s(){var t=d*Math.round(m.offsetWidth/(l.clientWidth/100))+u;o(t),l.setAttribute("aria-valuenow",t),l.setAttribute("aria-label",h)}var r,a,l=t.getElement(),c=void 0===n.max?l.getElementsByTagName("div")[0].getAttribute("max")||100:n.max,u=void 0===n.min?l.getElementsByTagName("div")[0].getAttribute("min")||0:n.min,d=(c-u)/100,h=t.getValue()||0,p=document.createElement("div"),m=document.createElement("div");if(p.style.position="absolute",p.style.right="0",p.style.top="0",p.style.bottom="0",p.style.width="5px",p.classList.add("tabulator-progress-handle"),m.style.display="inline-block",m.style.position="relative",m.style.height="100%",m.style.backgroundColor="#488CE9",m.style.maxWidth="100%",m.style.minWidth="0%",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var f in n.elementAttributes)"+"==f.charAt(0)?(f=f.slice(1),m.setAttribute(f,m.getAttribute(f)+n.elementAttributes["+"+f])):m.setAttribute(f,n.elementAttributes[f]);return l.style.padding="4px 4px",h=Math.min(parseFloat(h),c),h=Math.max(parseFloat(h),u),h=Math.round((h-u)/d),m.style.width=h+"%",l.setAttribute("aria-valuemin",u),l.setAttribute("aria-valuemax",c),m.appendChild(p),p.addEventListener("mousedown",function(t){r=t.screenX,a=m.offsetWidth}),p.addEventListener("mouseover",function(){p.style.cursor="ew-resize"}),l.addEventListener("mousemove",function(t){r&&(m.style.width=a+t.screenX-r+"px")}),l.addEventListener("mouseup",function(t){r&&(t.stopPropagation(),t.stopImmediatePropagation(),r=!1,a=!1,s())}),l.addEventListener("keydown",function(t){switch(t.keyCode){case 39:m.style.width=m.clientWidth+l.clientWidth/100+"px";break;case 37:m.style.width=m.clientWidth-l.clientWidth/100+"px";break;case 13:s();break;case 27:i()}}),l.addEventListener("blur",function(){i()}),m},tickCross:function(t,e,o,i,n){function s(t){return l?t?u?c:a.checked:a.checked&&!u?(a.checked=!1,a.indeterminate=!0,u=!0,c):(u=!1,a.checked):a.checked}var r=t.getValue(),a=document.createElement("input"),l=n.tristate,c=void 0===n.indeterminateValue?null:n.indeterminateValue,u=!1;if(a.setAttribute("type","checkbox"),a.style.marginTop="5px",a.style.boxSizing="border-box",n.elementAttributes&&"object"==_typeof(n.elementAttributes))for(var d in n.elementAttributes)"+"==d.charAt(0)?(d=d.slice(1),a.setAttribute(d,a.getAttribute(d)+n.elementAttributes["+"+d])):a.setAttribute(d,n.elementAttributes[d]);return a.value=r,!l||void 0!==r&&r!==c&&""!==r||(u=!0,a.indeterminate=!0),"firefox"!=this.table.browser&&e(function(){a.focus()}),a.checked=!0===r||"true"===r||"True"===r||1===r,a.addEventListener("change",function(t){o(s())}),a.addEventListener("blur",function(t){o(s(!0))}),a.addEventListener("keydown",function(t){13==t.keyCode&&o(s()),27==t.keyCode&&i()}),a}},u.prototype.registerModule("edit",w);var E=function(t){this.table=t,this.filterList=[],this.headerFilters={},this.headerFilterElements=[],this.headerFilterColumns=[],this.changed=!1};E.prototype.initializeColumn=function(t,e){function o(e){var o,s="input"==t.modules.filter.tagType&&"text"==t.modules.filter.attrType||"textarea"==t.modules.filter.tagType?"partial":"match",r="";if(void 0===t.modules.filter.prevSuccess||t.modules.filter.prevSuccess!==e){if(t.modules.filter.prevSuccess=e,t.modules.filter.emptyFunc(e))delete i.headerFilters[n];else{switch(t.modules.filter.value=e,_typeof(t.definition.headerFilterFunc)){case"string":i.filters[t.definition.headerFilterFunc]?(r=t.definition.headerFilterFunc,o=function(o){var n=t.definition.headerFilterFuncParams||{},s=t.getFieldValue(o);return n="function"==typeof n?n(e,s,o):n,i.filters[t.definition.headerFilterFunc](e,s,o,n)}):console.warn("Header Filter Error - Matching filter function not found: ",t.definition.headerFilterFunc);break;case"function":o=function(o){var i=t.definition.headerFilterFuncParams||{},n=t.getFieldValue(o);return i="function"==typeof i?i(e,n,o):i,t.definition.headerFilterFunc(e,n,o,i)},r=o}if(!o)switch(s){case"partial":o=function(o){var i=t.getFieldValue(o);return void 0!==i&&null!==i&&String(i).toLowerCase().indexOf(String(e).toLowerCase())>-1},r="like";break;default:o=function(o){return t.getFieldValue(o)==e},r="="}i.headerFilters[n]={value:e,func:o,type:r}}i.changed=!0,i.table.rowManager.filterRefresh()}}var i=this,n=t.getField();t.modules.filter={success:o,attrType:!1,tagType:!1,emptyFunc:!1},this.generateHeaderFilterElement(t)},E.prototype.generateHeaderFilterElement=function(t,e){function o(){}var i,n,s,r,a,l,c,u=this,d=this,h=t.modules.filter.success,p=t.getField();if(t.modules.filter.headerElement&&t.modules.filter.headerElement.parentNode){var m=t.modules.filter.headerElement.parentNode,f=d.headerFilterElements.indexOf(m);f>=0&&d.headerFilterElements.splice(f,1);var g=d.headerFilterColumns.indexOf(g);g>=0&&d.headerFilterColumns.splice(g,1),t.contentElement.removeChild(m)}if(p){switch(t.modules.filter.emptyFunc=t.definition.headerFilterEmptyCheck||function(t){return!t&&"0"!==t},i=document.createElement("div"),i.classList.add("tabulator-header-filter"),_typeof(t.definition.headerFilter)){case"string":d.table.modules.edit.editors[t.definition.headerFilter]?(n=d.table.modules.edit.editors[t.definition.headerFilter],"tick"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):console.warn("Filter Error - Cannot build header filter, No such editor found: ",t.definition.editor);break;case"function":n=t.definition.headerFilter;break;case"boolean":t.modules.edit&&t.modules.edit.editor?n=t.modules.edit.editor:t.definition.formatter&&d.table.modules.edit.editors[t.definition.formatter]?(n=d.table.modules.edit.editors[t.definition.formatter],"tick"!==t.definition.formatter&&"tickCross"!==t.definition.formatter||t.definition.headerFilterEmptyCheck||(t.modules.filter.emptyFunc=function(t){return!0!==t&&!1!==t})):n=d.table.modules.edit.editors.input}if(n){if(r={getValue:function(){return void 0!==e?e:""},getField:function(){return t.definition.field},getElement:function(){return i},getColumn:function(){return t.getComponent()},getRow:function(){return{normalizeHeight:function(){}}}},c=t.definition.headerFilterParams||{},c="function"==typeof c?c.call(d.table):c,!(s=n.call(this.table.modules.edit,r,function(){},h,o,c)))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor returned a value of false");if(!(s instanceof Node))return void console.warn("Filter Error - Cannot add filter to "+p+" column, editor should return an instance of Node, the editor returned:",s);p?d.table.modules.localize.bind("headerFilters|columns|"+t.definition.field,function(t){s.setAttribute("placeholder",void 0!==t&&t?t:d.table.modules.localize.getText("headerFilters|default"))}):d.table.modules.localize.bind("headerFilters|default",function(t){s.setAttribute("placeholder",void 0!==d.column.definition.headerFilterPlaceholder&&d.column.definition.headerFilterPlaceholder?d.column.definition.headerFilterPlaceholder:t)}),s.addEventListener("click",function(t){t.stopPropagation(),s.focus()}),s.addEventListener("focus",function(t){var e=u.table.columnManager.element.scrollLeft;e!==u.table.rowManager.element.scrollLeft&&(u.table.rowManager.scrollHorizontal(e),u.table.columnManager.scrollHorizontal(e))}),a=!1,l=function(t){a&&clearTimeout(a),a=setTimeout(function(){h(s.value)},300)},t.modules.filter.headerElement=s,t.modules.filter.attrType=s.hasAttribute("type")?s.getAttribute("type").toLowerCase():"",t.modules.filter.tagType=s.tagName.toLowerCase(),!1!==t.definition.headerFilterLiveFilter&&("autocomplete"!==t.definition.headerFilter&&"tickCross"!==t.definition.headerFilter&&("autocomplete"!==t.definition.editor&&"tickCross"!==t.definition.editor||!0!==t.definition.headerFilter)&&(s.addEventListener("keyup",l),s.addEventListener("search",l),"number"==t.modules.filter.attrType&&s.addEventListener("change",function(t){h(s.value)}),"text"==t.modules.filter.attrType&&"ie"!==this.table.browser&&s.setAttribute("type","search")),"input"!=t.modules.filter.tagType&&"select"!=t.modules.filter.tagType&&"textarea"!=t.modules.filter.tagType||s.addEventListener("mousedown",function(t){t.stopPropagation()})),i.appendChild(s),t.contentElement.appendChild(i),d.headerFilterElements.push(s),d.headerFilterColumns.push(t)}}else console.warn("Filter Error - Cannot add header filter, column has no field set:",t.definition.title)},E.prototype.hideHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display="none"})},E.prototype.showHeaderFilterElements=function(){this.headerFilterElements.forEach(function(t){t.style.display=""})},E.prototype.setHeaderFilterFocus=function(t){t.modules.filter&&t.modules.filter.headerElement?t.modules.filter.headerElement.focus():console.warn("Column Filter Focus Error - No header filter set on column:",t.getField())},E.prototype.setHeaderFilterValue=function(t,e){t&&(t.modules.filter&&t.modules.filter.headerElement?(this.generateHeaderFilterElement(t,e),t.modules.filter.success(e)):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.reloadHeaderFilter=function(t){t&&(t.modules.filter&&t.modules.filter.headerElement?this.generateHeaderFilterElement(t,t.modules.filter.value):console.warn("Column Filter Error - No header filter set on column:",t.getField()))},E.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},E.prototype.setFilter=function(t,e,o){var i=this;i.filterList=[],Array.isArray(t)||(t=[{field:t,type:e,value:o}]),i.addFilter(t)},E.prototype.addFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){(t=i.findFilter(t))&&(i.filterList.push(t),i.changed=!0)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.findFilter=function(t){var e,o=this;if(Array.isArray(t))return this.findSubFilters(t);var i=!1;return"function"==typeof t.field?i=function(e){return t.field(e,t.type||{})}:o.filters[t.type]?(e=o.table.columnManager.getColumnByField(t.field),i=e?function(i){return o.filters[t.type](t.value,e.getFieldValue(i))}:function(e){return o.filters[t.type](t.value,e[t.field])}):console.warn("Filter Error - No such filter type found, ignoring: ",t.type),t.func=i,!!t.func&&t},E.prototype.findSubFilters=function(t){var e=this,o=[];return t.forEach(function(t){(t=e.findFilter(t))&&o.push(t)}),!!o.length&&o},E.prototype.getFilters=function(t,e){var o=[];return t&&(o=this.getHeaderFilters()),e&&o.forEach(function(t){"function"==typeof t.type&&(t.type="function")}),o=o.concat(this.filtersToArray(this.filterList,e))},E.prototype.filtersToArray=function(t,e){var o=this,i=[];return t.forEach(function(t){var n;Array.isArray(t)?i.push(o.filtersToArray(t,e)):(n={field:t.field,type:t.type,value:t.value},e&&"function"==typeof n.type&&(n.type="function"),i.push(n))}),i},E.prototype.getHeaderFilters=function(){var t=[];for(var e in this.headerFilters)t.push({field:e,type:this.headerFilters[e].type,value:this.headerFilters[e].value});return t},E.prototype.removeFilter=function(t,e,o){var i=this;Array.isArray(t)||(t=[{field:t,type:e,value:o}]),t.forEach(function(t){var e=-1;e="object"==_typeof(t.field)?i.filterList.findIndex(function(e){return t===e}):i.filterList.findIndex(function(e){return t.field===e.field&&t.type===e.type&&t.value===e.value}),e>-1?(i.filterList.splice(e,1),i.changed=!0):console.warn("Filter Error - No matching filter type found, ignoring: ",t.type)}),this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearFilter=function(t){this.filterList=[],t&&this.clearHeaderFilter(),this.changed=!0,this.table.options.persistentFilter&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("filter")},E.prototype.clearHeaderFilter=function(){var t=this;this.headerFilters={},this.headerFilterColumns.forEach(function(e){e.modules.filter.value=null,e.modules.filter.prevSuccess=void 0,t.reloadHeaderFilter(e)}),this.changed=!0},E.prototype.search=function(t,e,o,i){var n=this,s=[],r=[];return Array.isArray(e)||(e=[{field:e,type:o,value:i}]),e.forEach(function(t){(t=n.findFilter(t))&&r.push(t)}),this.table.rowManager.rows.forEach(function(e){var o=!0;r.forEach(function(t){n.filterRecurse(t,e.getData())||(o=!1)}),o&&s.push("data"===t?e.getData("data"):e.getComponent())}),s},E.prototype.filter=function(t,e){var o=this,i=[],n=[];return o.table.options.dataFiltering&&o.table.options.dataFiltering.call(o.table,o.getFilters()),o.table.options.ajaxFiltering||!o.filterList.length&&!Object.keys(o.headerFilters).length?i=t.slice(0):t.forEach(function(t){o.filterRow(t)&&i.push(t)}),o.table.options.dataFiltered&&(i.forEach(function(t){n.push(t.getComponent())}),o.table.options.dataFiltered.call(o.table,o.getFilters(),n)),i},E.prototype.filterRow=function(t,e){var o=this,i=!0,n=t.getData();o.filterList.forEach(function(t){o.filterRecurse(t,n)||(i=!1)});for(var s in o.headerFilters)o.headerFilters[s].func(n)||(i=!1);return i},E.prototype.filterRecurse=function(t,e){var o=this,i=!1;return Array.isArray(t)?t.forEach(function(t){o.filterRecurse(t,e)&&(i=!0)}):i=t.func(e),i},E.prototype.filters={"=":function(t,e,o,i){return e==t},"<":function(t,e,o,i){return e<t},"<=":function(t,e,o,i){return e<=t},">":function(t,e,o,i){return e>t},">=":function(t,e,o,i){return e>=t},"!=":function(t,e,o,i){return e!=t},regex:function(t,e,o,i){return"string"==typeof t&&(t=new RegExp(t)),t.test(e)},
+like:function(t,e,o,i){return null===t||void 0===t?e===t:void 0!==e&&null!==e&&String(e).toLowerCase().indexOf(t.toLowerCase())>-1},in:function(t,e,o,i){return Array.isArray(t)?t.indexOf(e)>-1:(console.warn("Filter Error - filter value is not an array:",t),!1)}},u.prototype.registerModule("filter",E);var C=function(t){this.table=t};C.prototype.initializeColumn=function(t){var e=this,o={params:t.definition.formatterParams||{}};switch(_typeof(t.definition.formatter)){case"string":"tick"===t.definition.formatter&&(t.definition.formatter="tickCross",void 0===o.params.crossElement&&(o.params.crossElement=!1),console.warn("DEPRECATION WARNING - the tick formatter has been deprecated, please use the tickCross formatter with the crossElement param set to false")),e.formatters[t.definition.formatter]?o.formatter=e.formatters[t.definition.formatter]:(console.warn("Formatter Error - No such formatter found: ",t.definition.formatter),o.formatter=e.formatters.plaintext);break;case"function":o.formatter=t.definition.formatter;break;default:o.formatter=e.formatters.plaintext}t.modules.format=o},C.prototype.cellRendered=function(t){t.column.modules.format.renderedCallback&&t.column.modules.format.renderedCallback()},C.prototype.formatValue=function(t){function e(e){t.column.modules.format.renderedCallback=e}var o=t.getComponent(),i="function"==typeof t.column.modules.format.params?t.column.modules.format.params(o):t.column.modules.format.params;return t.column.modules.format.formatter.call(this,o,i,e)},C.prototype.sanitizeHTML=function(t){if(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}return t},C.prototype.emptyToSpace=function(t){return null===t||void 0===t?" ":t},C.prototype.getFormatter=function(t){var t;switch(void 0===t?"undefined":_typeof(t)){case"string":this.formatters[t]?t=this.formatters[t]:(console.warn("Formatter Error - No such formatter found: ",t),t=this.formatters.plaintext);break;case"function":t=t;break;default:t=this.formatters.plaintext}return t},C.prototype.formatters={plaintext:function(t,e,o){return this.emptyToSpace(this.sanitizeHTML(t.getValue()))},html:function(t,e,o){return t.getValue()},textarea:function(t,e,o){return t.getElement().style.whiteSpace="pre-wrap",this.emptyToSpace(this.sanitizeHTML(t.getValue()))},money:function(t,e,o){var i,n,s,r,a=parseFloat(t.getValue()),l=e.decimal||".",c=e.thousand||",",u=e.symbol||"",d=!!e.symbolAfter,h=void 0!==e.precision?e.precision:2;if(isNaN(a))return this.emptyToSpace(this.sanitizeHTML(t.getValue()));for(i=!1!==h?a.toFixed(h):a,i=String(i).split("."),n=i[0],s=i.length>1?l+i[1]:"",r=/(\d+)(\d{3})/;r.test(n);)n=n.replace(r,"$1"+c+"$2");return d?n+s+u:u+n+s},link:function(t,e,o){var i,n=t.getValue(),s=e.urlPrefix||"",r=this.emptyToSpace(n),a=document.createElement("a");if(e.labelField&&(i=t.getData(),r=i[e.labelField]),e.label)switch(_typeof(e.label)){case"string":r=e.label;break;case"function":r=e.label(t)}if(e.urlField&&(i=t.getData(),n=i[e.urlField]),e.url)switch(_typeof(e.url)){case"string":n=e.url;break;case"function":n=e.url(t)}return a.setAttribute("href",s+n),e.target&&a.setAttribute("target",e.target),a.innerHTML=this.emptyToSpace(this.sanitizeHTML(r)),a},image:function(t,e,o){var i=document.createElement("img");switch(i.setAttribute("src",t.getValue()),_typeof(e.height)){case"number":i.style.height=e.height+"px";break;case"string":i.style.height=e.height}switch(_typeof(e.width)){case"number":i.style.width=e.width+"px";break;case"string":i.style.width=e.width}return i.addEventListener("load",function(){t.getRow().normalizeHeight()}),i},tickCross:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e.allowEmpty,r=e.allowTruthy,a=void 0!==e.tickElement?e.tickElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>',l=void 0!==e.crossElement?e.crossElement:'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>';return r&&i||!0===i||"true"===i||"True"===i||1===i||"1"===i?(n.setAttribute("aria-checked",!0),a||""):!s||"null"!==i&&""!==i&&null!==i&&void 0!==i?(n.setAttribute("aria-checked",!1),l||""):(n.setAttribute("aria-checked","mixed"),"")},datetime:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=e.outputFormat||"DD/MM/YYYY hh:mm:ss",s=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",r=t.getValue(),a=moment(r,i);return a.isValid()?a.format(n):!0===s?r:"function"==typeof s?s(r):s},datetimediff:function(t,e,o){var i=e.inputFormat||"YYYY-MM-DD hh:mm:ss",n=void 0!==e.invalidPlaceholder?e.invalidPlaceholder:"",s=void 0!==e.suffix&&e.suffix,r=void 0!==e.unit?e.unit:void 0,a=void 0!==e.humanize&&e.humanize,l=void 0!==e.date?e.date:moment(),c=t.getValue(),u=moment(c,i);return u.isValid()?a?moment.duration(u.diff(l)).humanize(s):u.diff(l,r)+(s?" "+s:""):!0===n?c:"function"==typeof n?n(c):n},lookup:function(t,e,o){var i=t.getValue();return void 0===e[i]?(console.warn("Missing display value for "+i),i):e[i]},star:function(t,e,o){var i=t.getValue(),n=t.getElement(),s=e&&e.stars?e.stars:5,r=document.createElement("span"),a=document.createElementNS("http://www.w3.org/2000/svg","svg");r.style.verticalAlign="middle",a.setAttribute("width","14"),a.setAttribute("height","14"),a.setAttribute("viewBox","0 0 512 512"),a.setAttribute("xml:space","preserve"),a.style.padding="0 1px",i=parseInt(i)<s?parseInt(i):s;for(var l=1;l<=s;l++){var c=a.cloneNode(!0);c.innerHTML=l<=i?'<polygon fill="#FFEA00" stroke="#C1AB60" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>':'<polygon fill="#D2D2D2" stroke="#686868" stroke-width="37.6152" stroke-linecap="round" stroke-linejoin="round" stroke-miterlimit="10" points="259.216,29.942 330.27,173.919 489.16,197.007 374.185,309.08 401.33,467.31 259.216,392.612 117.104,467.31 144.25,309.08 29.274,197.007 188.165,173.919 "/>',r.appendChild(c)}return n.style.whiteSpace="nowrap",n.style.overflow="hidden",n.style.textOverflow="ellipsis",n.setAttribute("aria-label",i),r},traffic:function(t,e,o){var i,n,s=this.sanitizeHTML(t.getValue())||0,r=document.createElement("span"),a=e&&e.max?e.max:100,l=e&&e.min?e.min:0,c=e&&void 0!==e.color?e.color:["red","orange","green"],u="#666666";if(!isNaN(s)&&void 0!==t.getValue()){switch(r.classList.add("tabulator-traffic-light"),n=parseFloat(s)<=a?parseFloat(s):a,n=parseFloat(n)>=l?parseFloat(n):l,i=(a-l)/100,n=Math.round((n-l)/i),void 0===c?"undefined":_typeof(c)){case"string":u=c;break;case"function":u=c(s);break;case"object":if(Array.isArray(c)){var d=100/c.length,h=Math.floor(n/d);h=Math.min(h,c.length-1),h=Math.max(h,0),u=c[h];break}}return r.style.backgroundColor=u,r}},progress:function(t,e,o){var i,n,s,r,a,l=this.sanitizeHTML(t.getValue())||0,c=t.getElement(),u=e&&e.max?e.max:100,d=e&&e.min?e.min:0,h=e&&e.legendAlign?e.legendAlign:"center";switch(n=parseFloat(l)<=u?parseFloat(l):u,n=parseFloat(n)>=d?parseFloat(n):d,i=(u-d)/100,n=Math.round((n-d)/i),_typeof(e.color)){case"string":s=e.color;break;case"function":s=e.color(l);break;case"object":if(Array.isArray(e.color)){var p=100/e.color.length,m=Math.floor(n/p);m=Math.min(m,e.color.length-1),m=Math.max(m,0),s=e.color[m];break}default:s="#2DC214"}switch(_typeof(e.legend)){case"string":r=e.legend;break;case"function":r=e.legend(l);break;case"boolean":r=l;break;default:r=!1}switch(_typeof(e.legendColor)){case"string":a=e.legendColor;break;case"function":a=e.legendColor(l);break;case"object":if(Array.isArray(e.legendColor)){var p=100/e.legendColor.length,m=Math.floor(n/p);m=Math.min(m,e.legendColor.length-1),m=Math.max(m,0),a=e.legendColor[m]}break;default:a="#000"}return c.style.minWidth="30px",c.style.position="relative",c.setAttribute("aria-label",n),"<div style='position:relative; height:100%;' data-max='"+u+"' data-min='"+d+"'><div style='position:relative; height:100%; width:calc("+n+"%); background-color:"+s+"; display:inline-block;'></div></div>"+(r?"<div style='position:absolute; top:4px; left:0; text-align:"+h+"; width:100%; color:"+a+";'>"+r+"</div>":"")},color:function(t,e,o){return t.getElement().style.backgroundColor=this.sanitizeHTML(t.getValue()),""},buttonTick:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#2DC214" clip-rule="evenodd" d="M21.652,3.211c-0.293-0.295-0.77-0.295-1.061,0L9.41,14.34 c-0.293,0.297-0.771,0.297-1.062,0L3.449,9.351C3.304,9.203,3.114,9.13,2.923,9.129C2.73,9.128,2.534,9.201,2.387,9.351 l-2.165,1.946C0.078,11.445,0,11.63,0,11.823c0,0.194,0.078,0.397,0.223,0.544l4.94,5.184c0.292,0.296,0.771,0.776,1.062,1.07 l2.124,2.141c0.292,0.293,0.769,0.293,1.062,0l14.366-14.34c0.293-0.294,0.293-0.777,0-1.071L21.652,3.211z" fill-rule="evenodd"/></svg>'},buttonCross:function(t,e,o){return'<svg enable-background="new 0 0 24 24" height="14" width="14" viewBox="0 0 24 24" xml:space="preserve" ><path fill="#CE1515" d="M22.245,4.015c0.313,0.313,0.313,0.826,0,1.139l-6.276,6.27c-0.313,0.312-0.313,0.826,0,1.14l6.273,6.272 c0.313,0.313,0.313,0.826,0,1.14l-2.285,2.277c-0.314,0.312-0.828,0.312-1.142,0l-6.271-6.271c-0.313-0.313-0.828-0.313-1.141,0 l-6.276,6.267c-0.313,0.313-0.828,0.313-1.141,0l-2.282-2.28c-0.313-0.313-0.313-0.826,0-1.14l6.278-6.269 c0.313-0.312,0.313-0.826,0-1.14L1.709,5.147c-0.314-0.313-0.314-0.827,0-1.14l2.284-2.278C4.308,1.417,4.821,1.417,5.135,1.73 L11.405,8c0.314,0.314,0.828,0.314,1.141,0.001l6.276-6.267c0.312-0.312,0.826-0.312,1.141,0L22.245,4.015z"/></svg>'},rownum:function(t,e,o){return this.table.rowManager.activeRows.indexOf(t.getRow()._getSelf())+1},handle:function(t,e,o){return t.getElement().classList.add("tabulator-row-handle"),"<div class='tabulator-row-handle-box'><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div><div class='tabulator-row-handle-bar'></div></div>"},responsiveCollapse:function(t,e,o){function i(e){var o=t.getRow().getElement().getElementsByClassName("tabulator-responsive-collapse")[0];s=e,s?(r.classList.add("open"),o&&(o.style.display="")):(r.classList.remove("open"),o&&(o.style.display="none"))}var n=this,s=!1,r=document.createElement("div");return r.classList.add("tabulator-responsive-collapse-toggle"),r.innerHTML="<span class='tabulator-responsive-collapse-toggle-open'>+</span><span class='tabulator-responsive-collapse-toggle-close'>-</span>",t.getElement().classList.add("tabulator-row-handle"),n.table.options.responsiveLayoutCollapseStartOpen&&(s=!0),r.addEventListener("click",function(t){t.stopImmediatePropagation(),i(!s)}),i(s),r},rowSelection:function(t){var e=this,o=document.createElement("input");if(o.type="checkbox",this.table.modExists("selectRow",!0))if(o.addEventListener("click",function(t){t.stopPropagation()}),"function"==typeof t.getRow){var i=t.getRow();o.addEventListener("change",function(t){i.toggleSelect()}),o.checked=i.isSelected(),this.table.modules.selectRow.registerRowSelectCheckbox(i,o)}else o.addEventListener("change",function(t){e.table.modules.selectRow.selectedRows.length?e.table.deselectRow():e.table.selectRow()}),this.table.modules.selectRow.registerHeaderSelectCheckbox(o);return o}},u.prototype.registerModule("format",C);var x=function(t){this.table=t,this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightPadding=0,this.initializationMode="left",this.active=!1,this.scrollEndTimer=!1};x.prototype.reset=function(){this.initializationMode="left",this.leftColumns=[],this.rightColumns=[],this.leftMargin=0,this.rightMargin=0,this.rightMargin=0,this.active=!1,this.table.columnManager.headersElement.style.marginLeft=0,this.table.columnManager.element.style.paddingRight=0},x.prototype.initializeColumn=function(t){var e={margin:0,edge:!1};t.definition.frozen?t.parent.isGroup?console.warn("Frozen Column Error - Grouped columns cannot be frozen"):t.isGroup?console.warn("Frozen Column Error - Column Groups cannot be frozen"):(e.position=this.initializationMode,"left"==this.initializationMode?this.leftColumns.push(t):this.rightColumns.unshift(t),this.active=!0,t.modules.frozen=e):this.initializationMode="right"},x.prototype.scrollHorizontal=function(){var t,e=this;this.active&&(clearTimeout(this.scrollEndTimer),this.scrollEndTimer=setTimeout(function(){e.layout()},100),t=this.table.rowManager.getVisibleRows(),this.calcMargins(),this.layoutColumnPosition(),this.layoutCalcRows(),t.forEach(function(t){"row"===t.type&&e.layoutRow(t)}),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.calcMargins=function(){this.leftMargin=this._calcSpace(this.leftColumns,this.leftColumns.length)+"px",this.table.columnManager.headersElement.style.marginLeft=this.leftMargin,this.rightMargin=this._calcSpace(this.rightColumns,this.rightColumns.length)+"px",this.table.columnManager.element.style.paddingRight=this.rightMargin,this.rightPadding=this.table.rowManager.element.clientWidth+this.table.columnManager.scrollLeft},x.prototype.layoutCalcRows=function(){this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&this.table.modules.columnCalcs.topRow&&this.layoutRow(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&this.table.modules.columnCalcs.botRow&&this.layoutRow(this.table.modules.columnCalcs.botRow))},x.prototype.layoutColumnPosition=function(t){var e=this;this.leftColumns.forEach(function(o,i){o.modules.frozen.margin=e._calcSpace(e.leftColumns,i)+e.table.columnManager.scrollLeft+"px",i==e.leftColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})}),this.rightColumns.forEach(function(o,i){o.modules.frozen.margin=e.rightPadding-e._calcSpace(e.rightColumns,i+1)+"px",i==e.rightColumns.length-1?o.modules.frozen.edge=!0:o.modules.frozen.edge=!1,e.layoutElement(o.getElement(),o),t&&o.cells.forEach(function(t){e.layoutElement(t.getElement(),o)})})},x.prototype.layout=function(){var t=this;t.active&&(this.calcMargins(),t.table.rowManager.getDisplayRows().forEach(function(e){"row"===e.type&&t.layoutRow(e)}),this.layoutCalcRows(),this.layoutColumnPosition(!0),this.table.rowManager.tableElement.style.marginRight=this.rightMargin)},x.prototype.layoutRow=function(t){var e=this;t.getElement().style.paddingLeft=this.leftMargin,this.leftColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)}),this.rightColumns.forEach(function(o){var i=t.getCell(o);i&&e.layoutElement(i.getElement(),o)})},x.prototype.layoutElement=function(t,e){e.modules.frozen&&(t.style.position="absolute",t.style.left=e.modules.frozen.margin,t.classList.add("tabulator-frozen"),e.modules.frozen.edge&&t.classList.add("tabulator-frozen-"+e.modules.frozen.position))},x.prototype._calcSpace=function(t,e){for(var o=0,i=0;i<e;i++)t[i].visible&&(o+=t[i].getWidth());return o},u.prototype.registerModule("frozenColumns",x);var R=function(t){this.table=t,this.topElement=document.createElement("div"),this.rows=[],this.displayIndex=0};R.prototype.initialize=function(){this.rows=[],this.topElement.classList.add("tabulator-frozen-rows-holder"),this.table.columnManager.getElement().insertBefore(this.topElement,this.table.columnManager.headersElement.nextSibling)},R.prototype.setDisplayIndex=function(t){this.displayIndex=t},R.prototype.getDisplayIndex=function(){return this.displayIndex},R.prototype.isFrozen=function(){return!!this.rows.length},R.prototype.getRows=function(t){var e=t.slice(0);return this.rows.forEach(function(t){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e},R.prototype.freezeRow=function(t){t.modules.frozen?console.warn("Freeze Error - Row is already frozen"):(t.modules.frozen=!0,this.topElement.appendChild(t.getElement()),t.initialize(),t.normalizeHeight(),this.table.rowManager.adjustTableSize(),this.rows.push(t),this.table.rowManager.refreshActiveData("display"),this.styleRows())},R.prototype.unfreezeRow=function(t){var e=this.rows.indexOf(t);if(t.modules.frozen){t.modules.frozen=!1;var o=t.getElement();o.parentNode.removeChild(o),this.table.rowManager.adjustTableSize(),this.rows.splice(e,1),this.table.rowManager.refreshActiveData("display"),this.rows.length&&this.styleRows()}else console.warn("Freeze Error - Row is already unfrozen")},R.prototype.styleRows=function(t){var e=this;this.rows.forEach(function(t,o){e.table.rowManager.styleRow(t,o)})},u.prototype.registerModule("frozenRows",R);var M=function(t){this._group=t,this.type="GroupComponent"};M.prototype.getKey=function(){return this._group.key},M.prototype.getField=function(){return this._group.field},M.prototype.getElement=function(){return this._group.element},M.prototype.getRows=function(){return this._group.getRows(!0)},M.prototype.getSubGroups=function(){return this._group.getSubGroups(!0)},M.prototype.getParentGroup=function(){return!!this._group.parent&&this._group.parent.getComponent()},M.prototype.getVisibility=function(){return this._group.visible},M.prototype.show=function(){this._group.show()},M.prototype.hide=function(){this._group.hide()},M.prototype.toggle=function(){this._group.toggleVisibility()},M.prototype._getSelf=function(){return this._group},M.prototype.getTable=function(){return this._group.groupManager.table};var L=function(t,e,o,i,n,s,r){this.groupManager=t,this.parent=e,this.key=i,this.level=o,this.field=n,this.hasSubGroups=o<t.groupIDLookups.length-1,this.addRow=this.hasSubGroups?this._addRowToGroup:this._addRow,this.type="group",this.old=r,this.rows=[],this.groups=[],this.groupList=[],this.generator=s,this.elementContents=!1,this.height=0,this.outerHeight=0,this.initialized=!1,this.calcs={},this.initialized=!1,this.modules={},this.arrowElement=!1,this.visible=r?r.visible:void 0!==t.startOpen[o]?t.startOpen[o]:t.startOpen[0],this.createElements(),this.addBindings(),this.createValueGroups()};L.prototype.wipe=function(){this.groupList.length?this.groupList.forEach(function(t){t.wipe()}):(this.element=!1,this.arrowElement=!1,this.elementContents=!1)},L.prototype.createElements=function(){this.element=document.createElement("div"),this.element.classList.add("tabulator-row"),this.element.classList.add("tabulator-group"),this.element.classList.add("tabulator-group-level-"+this.level),this.element.setAttribute("role","rowgroup"),this.arrowElement=document.createElement("div"),this.arrowElement.classList.add("tabulator-arrow"),!1!==this.groupManager.table.options.movableRows&&this.groupManager.table.modExists("moveRow")&&this.groupManager.table.modules.moveRow.initializeGroupHeader(this)},L.prototype.createValueGroups=function(){var t=this,e=this.level+1;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]&&this.groupManager.allowedValues[e].forEach(function(o){t._createGroup(o,e)})},L.prototype.addBindings=function(){var t,e,o,i,n=this;n.groupManager.table.options.groupClick&&n.element.addEventListener("click",function(t){n.groupManager.table.options.groupClick(t,n.getComponent())}),n.groupManager.table.options.groupDblClick&&n.element.addEventListener("dblclick",function(t){n.groupManager.table.options.groupDblClick(t,n.getComponent())}),n.groupManager.table.options.groupContext&&n.element.addEventListener("contextmenu",function(t){n.groupManager.table.options.groupContext(t,n.getComponent())}),n.groupManager.table.options.groupTap&&(o=!1,n.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),n.element.addEventListener("touchend",function(t){o&&n.groupManager.table.options.groupTap(t,n.getComponent()),o=!1})),n.groupManager.table.options.groupDblTap&&(t=null,n.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.groupManager.table.options.groupDblTap(e,n.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),n.groupManager.table.options.groupTapHold&&(e=null,n.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.groupManager.table.options.groupTapHold(t,n.getComponent())},1e3)},{passive:!0}),n.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),n.groupManager.table.options.groupToggleElement&&(i="arrow"==n.groupManager.table.options.groupToggleElement?n.arrowElement:n.element,i.addEventListener("click",function(t){t.stopPropagation(),t.stopImmediatePropagation(),n.toggleVisibility()}))},L.prototype._createGroup=function(t,e){var o=e+"_"+t,i=new L(this.groupManager,this,e,t,this.groupManager.groupIDLookups[e].field,this.groupManager.headerGenerator[e]||this.groupManager.headerGenerator[0],!!this.old&&this.old.groups[o]);this.groups[o]=i,this.groupList.push(i)},L.prototype._addRowToGroup=function(t){var e=this.level+1;if(this.hasSubGroups){var o=this.groupManager.groupIDLookups[e].func(t.getData()),i=e+"_"+o;this.groupManager.allowedValues&&this.groupManager.allowedValues[e]?this.groups[i]&&this.groups[i].addRow(t):(this.groups[i]||this._createGroup(o,e),this.groups[i].addRow(t))}},L.prototype._addRow=function(t){this.rows.push(t),t.modules.group=this},L.prototype.insertRow=function(t,e,o){var i=this.conformRowData({});t.updateData(i);var n=this.rows.indexOf(e);n>-1?o?this.rows.splice(n+1,0,t):this.rows.splice(n,0,t):o?this.rows.push(t):this.rows.unshift(t),t.modules.group=this,this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this),this.groupManager.updateGroupRows(!0)},L.prototype.scrollHeader=function(t){this.arrowElement.style.marginLeft=t,this.groupList.forEach(function(e){e.scrollHeader(t)})},L.prototype.getRowIndex=function(t){},L.prototype.conformRowData=function(t){return this.field?t[this.field]=this.key:console.warn("Data Conforming Error - Cannot conform row data to match new group as groupBy is a function"),this.parent&&(t=this.parent.conformRowData(t)),t},L.prototype.removeRow=function(t){var e=this.rows.indexOf(t),o=t.getElement();e>-1&&this.rows.splice(e,1),this.groupManager.table.options.groupValues||this.rows.length?(o.parentNode&&o.parentNode.removeChild(o),this.generateGroupHeaderContents(),this.groupManager.table.modExists("columnCalcs")&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modules.columnCalcs.recalcGroup(this)):(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this),this.groupManager.updateGroupRows(!0))},L.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],e=this.groupList.indexOf(t),e>-1&&this.groupList.splice(e,1),this.groupList.length||(this.parent?this.parent.removeGroup(this):this.groupManager.removeGroup(this)))},L.prototype.getHeadersAndRows=function(t){var e=[];return e.push(this),this._visSet(),this.visible?this.groupList.length?this.groupList.forEach(function(o){e=e.concat(o.getHeadersAndRows(t))}):(!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top)),e=e.concat(this.rows),!t&&"table"!=this.groupManager.table.options.columnCalcs&&this.groupManager.table.modExists("columnCalcs")&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom))):this.groupList.length||"table"==this.groupManager.table.options.columnCalcs||this.groupManager.table.modExists("columnCalcs")&&(!t&&this.groupManager.table.modules.columnCalcs.hasTopCalcs()&&(this.calcs.top&&(this.calcs.top.detachElement(),this.calcs.top.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.top=this.groupManager.table.modules.columnCalcs.generateTopRow(this.rows),e.push(this.calcs.top))),!t&&this.groupManager.table.modules.columnCalcs.hasBottomCalcs()&&(this.calcs.bottom&&(this.calcs.bottom.detachElement(),this.calcs.bottom.deleteCells()),this.groupManager.table.options.groupClosedShowCalcs&&(this.calcs.bottom=this.groupManager.table.modules.columnCalcs.generateBottomRow(this.rows),e.push(this.calcs.bottom)))),e},L.prototype.getData=function(t,e){var o=[];return this._visSet(),(!t||t&&this.visible)&&this.rows.forEach(function(t){o.push(t.getData(e||"data"))}),o},L.prototype.getRowCount=function(){var t=0;return this.groupList.length?this.groupList.forEach(function(e){t+=e.getRowCount()}):t=this.rows.length,t},L.prototype.toggleVisibility=function(){this.visible?this.hide():this.show()},L.prototype.hide=function(){this.visible=!1,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination?this.groupManager.updateGroupRows(!0):(this.element.classList.remove("tabulator-group-visible"),this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){t.detachElement()})}):this.rows.forEach(function(t){var e=t.getElement();e.parentNode.removeChild(e)}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()),this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!1)},L.prototype.show=function(){var t=this;if(t.visible=!0,"classic"!=this.groupManager.table.rowManager.getRenderMode()||this.groupManager.table.options.pagination)this.groupManager.updateGroupRows(!0);else{this.element.classList.add("tabulator-group-visible");var e=t.getElement();this.groupList.length?this.groupList.forEach(function(t){t.getHeadersAndRows().forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o})}):t.rows.forEach(function(t){var o=t.getElement();e.parentNode.insertBefore(o,e.nextSibling),t.initialize(),e=o}),this.groupManager.table.rowManager.setDisplayRows(this.groupManager.updateGroupRows(),this.groupManager.getDisplayIndex()),this.groupManager.table.rowManager.checkClassicModeGroupHeaderWidth()}this.groupManager.table.options.groupVisibilityChanged.call(this.table,this.getComponent(),!0)},L.prototype._visSet=function(){var t=[];"function"==typeof this.visible&&(this.rows.forEach(function(e){t.push(e.getData())}),this.visible=this.visible(this.key,this.getRowCount(),t,this.getComponent()))},L.prototype.getRowGroup=function(t){var e=!1;return this.groupList.length?this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}):this.rows.find(function(e){return e===t})&&(e=this),e},L.prototype.getSubGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.getRows=function(t){var e=[];return this.rows.forEach(function(o){e.push(t?o.getComponent():o)}),e},L.prototype.generateGroupHeaderContents=function(){var t=[];for(this.rows.forEach(function(e){t.push(e.getData())}),this.elementContents=this.generator(this.key,this.getRowCount(),t,this.getComponent());this.element.firstChild;)this.element.removeChild(this.element.firstChild);"string"==typeof this.elementContents?this.element.innerHTML=this.elementContents:this.element.appendChild(this.elementContents),this.element.insertBefore(this.arrowElement,this.element.firstChild)},L.prototype.getElement=function(){this.addBindingsd=!1,this._visSet(),this.visible?this.element.classList.add("tabulator-group-visible"):this.element.classList.remove("tabulator-group-visible");for(var t=0;t<this.element.childNodes.length;++t)this.element.childNodes[t].parentNode.removeChild(this.element.childNodes[t]);return this.generateGroupHeaderContents(),this.element},L.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},L.prototype.normalizeHeight=function(){this.setHeight(this.element.clientHeight)},L.prototype.initialize=function(t){this.initialized&&!t||(this.normalizeHeight(),this.initialized=!0)},L.prototype.reinitialize=function(){this.initialized=!1,this.height=0,u.prototype.helpers.elVisible(this.element)&&this.initialize(!0)},L.prototype.setHeight=function(t){this.height!=t&&(this.height=t,this.outerHeight=this.element.offsetHeight)},L.prototype.getHeight=function(){return this.outerHeight},L.prototype.getGroup=function(){return this},L.prototype.reinitializeHeight=function(){},L.prototype.calcHeight=function(){},L.prototype.setCellHeight=function(){},L.prototype.clearCellHeight=function(){},L.prototype.getComponent=function(){return new M(this)};var D=function(t){this.table=t,this.groupIDLookups=!1,this.startOpen=[function(){return!1}],this.headerGenerator=[function(){return""}],this.groupList=[],this.allowedValues=!1,this.groups={},this.displayIndex=0};D.prototype.initialize=function(){var t=this,e=t.table.options.groupBy,o=t.table.options.groupStartOpen,i=t.table.options.groupHeader;if(this.allowedValues=t.table.options.groupValues,Array.isArray(e)&&Array.isArray(i)&&e.length>i.length&&console.warn("Error creating group headers, groupHeader array is shorter than groupBy array"),t.headerGenerator=[function(){return""}],this.startOpen=[function(){return!1}],t.table.modules.localize.bind("groups|item",function(e,o){t.headerGenerator[0]=function(t,i,n){return(void 0===t?"":t)+"<span>("+i+" "+(1===i?e:o.groups.items)+")</span>"}}),this.groupIDLookups=[],Array.isArray(e)||e)this.table.modExists("columnCalcs")&&"table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.removeCalcs();else if(this.table.modExists("columnCalcs")&&"group"!=this.table.options.columnCalcs){var n=this.table.columnManager.getRealColumns();n.forEach(function(e){e.definition.topCalc&&t.table.modules.columnCalcs.initializeTopRow(),e.definition.bottomCalc&&t.table.modules.columnCalcs.initializeBottomRow()})}Array.isArray(e)||(e=[e]),e.forEach(function(e,o){var i,n;"function"==typeof e?i=e:(n=t.table.columnManager.getColumnByField(e),i=n?function(t){return n.getFieldValue(t)}:function(t){return t[e]}),t.groupIDLookups.push({field:"function"!=typeof e&&e,func:i,values:!!t.allowedValues&&t.allowedValues[o]})}),o&&(Array.isArray(o)||(o=[o]),o.forEach(function(t){t="function"==typeof t?t:function(){return!0}}),t.startOpen=o),i&&(t.headerGenerator=Array.isArray(i)?i:[i]),this.initialized=!0},D.prototype.setDisplayIndex=function(t){this.displayIndex=t},
+D.prototype.getDisplayIndex=function(){return this.displayIndex},D.prototype.getRows=function(t){return this.groupIDLookups.length?(this.table.options.dataGrouping.call(this.table),this.generateGroups(t),this.table.options.dataGrouped&&this.table.options.dataGrouped.call(this.table,this.getGroups(!0)),this.updateGroupRows()):t.slice(0)},D.prototype.getGroups=function(t){var e=[];return this.groupList.forEach(function(o){e.push(t?o.getComponent():o)}),e},D.prototype.wipe=function(){this.groupList.forEach(function(t){t.wipe()})},D.prototype.pullGroupListData=function(t){var e=this,o=[];return t.forEach(function(t){var i={};i.level=0,i.rowCount=0,i.headerContent="";var n=[];t.hasSubGroups?(n=e.pullGroupListData(t.groupList),i.level=t.level,i.rowCount=n.length-t.groupList.length,i.headerContent=t.generator(t.key,i.rowCount,t.rows,t),o.push(i),o=o.concat(n)):(i.level=t.level,i.headerContent=t.generator(t.key,t.rows.length,t.rows,t),i.rowCount=t.getRows().length,o.push(i),t.getRows().forEach(function(t){o.push(t.getData("data"))}))}),o},D.prototype.getGroupedData=function(){return this.pullGroupListData(this.groupList)},D.prototype.getRowGroup=function(t){var e=!1;return this.groupList.forEach(function(o){var i=o.getRowGroup(t);i&&(e=i)}),e},D.prototype.countGroups=function(){return this.groupList.length},D.prototype.generateGroups=function(t){var e=this,o=e.groups;e.groups={},e.groupList=[],this.allowedValues&&this.allowedValues[0]?(this.allowedValues[0].forEach(function(t){e.createGroup(t,0,o)}),t.forEach(function(t){e.assignRowToExistingGroup(t,o)})):t.forEach(function(t){e.assignRowToGroup(t,o)})},D.prototype.createGroup=function(t,e,o){var i,n=e+"_"+t;o=o||[],i=new L(this,!1,e,t,this.groupIDLookups[0].field,this.headerGenerator[0],o[n]),this.groups[n]=i,this.groupList.push(i)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]||this.createGroup(o,0,e),this.groups[i].addRow(t)},D.prototype.assignRowToExistingGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i="0_"+o;this.groups[i]&&this.groups[i].addRow(t)},D.prototype.assignRowToGroup=function(t,e){var o=this.groupIDLookups[0].func(t.getData()),i=!this.groups["0_"+o];return i&&this.createGroup(o,0,e),this.groups["0_"+o].addRow(t),!i},D.prototype.updateGroupRows=function(t){var e=this,o=[];if(e.groupList.forEach(function(t){o=o.concat(t.getHeadersAndRows())}),t){var i=e.table.rowManager.setDisplayRows(o,this.getDisplayIndex());!0!==i&&this.setDisplayIndex(i),e.table.rowManager.refreshActiveData("group",!0,!0)}return o},D.prototype.scrollHeaders=function(t){t+="px",this.groupList.forEach(function(e){e.scrollHeader(t)})},D.prototype.removeGroup=function(t){var e,o=t.level+"_"+t.key;this.groups[o]&&(delete this.groups[o],(e=this.groupList.indexOf(t))>-1&&this.groupList.splice(e,1))},u.prototype.registerModule("groupRows",D);var T=function(t){this.table=t,this.history=[],this.index=-1};T.prototype.clear=function(){this.history=[],this.index=-1},T.prototype.action=function(t,e,o){this.history=this.history.slice(0,this.index+1),this.history.push({type:t,component:e,data:o}),this.index++},T.prototype.getHistoryUndoSize=function(){return this.index+1},T.prototype.getHistoryRedoSize=function(){return this.history.length-(this.index+1)},T.prototype.undo=function(){if(this.index>-1){var t=this.history[this.index];return this.undoers[t.type].call(this,t),this.index--,this.table.options.historyUndo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Undo Error - No more history to undo"),!1},T.prototype.redo=function(){if(this.history.length-1>this.index){this.index++;var t=this.history[this.index];return this.redoers[t.type].call(this,t),this.table.options.historyRedo.call(this.table,t.type,t.component.getComponent(),t.data),!0}return console.warn("History Redo Error - No more history to redo"),!1},T.prototype.undoers={cellEdit:function(t){t.component.setValueProcessData(t.data.oldValue)},rowAdd:function(t){t.component.deleteActual()},rowDelete:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this._rebindRow(t.component,e)},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype.redoers={cellEdit:function(t){t.component.setValueProcessData(t.data.newValue)},rowAdd:function(t){var e=this.table.rowManager.addRowActual(t.data.data,t.data.pos,t.data.index);this._rebindRow(t.component,e)},rowDelete:function(t){t.component.deleteActual()},rowMove:function(t){this.table.rowManager.moveRowActual(t.component,this.table.rowManager.rows[t.data.pos],!1),this.table.rowManager.redraw()}},T.prototype._rebindRow=function(t,e){this.history.forEach(function(o){if(o.component instanceof r)o.component===t&&(o.component=e);else if(o.component instanceof l&&o.component.row===t){var i=o.component.column.getField();i&&(o.component=e.getCell(i))}})},u.prototype.registerModule("history",T);var S=function(t){this.table=t,this.fieldIndex=[],this.hasIndex=!1};S.prototype.parseTable=function(){var t=this,e=t.table.element,o=t.table.options,i=(o.columns,e.getElementsByTagName("th")),n=e.getElementsByTagName("tbody")[0],s=[];t.hasIndex=!1,t.table.options.htmlImporting.call(this.table),n=n?n.getElementsByTagName("tr"):[],t._extractOptions(e,o),i.length?t._extractHeaders(i,n):t._generateBlankHeaders(i,n);for(var r=0;r<n.length;r++){var a=n[r],l=a.getElementsByTagName("td"),c={};t.hasIndex||(c[o.index]=r);for(var u=0;u<l.length;u++){var d=l[u];void 0!==this.fieldIndex[u]&&(c[this.fieldIndex[u]]=d.innerHTML)}s.push(c)}var h=document.createElement("div"),p=e.attributes;for(var u in p)"object"==_typeof(p[u])&&h.setAttribute(p[u].name,p[u].value);e.parentNode.replaceChild(h,e),o.data=s,t.table.options.htmlImported.call(this.table),this.table.element=h},S.prototype._extractOptions=function(t,e,o){var i=t.attributes,n=o?Object.assign([],o):Object.keys(e),s={};n.forEach(function(t){s[t.toLowerCase()]=t});for(var r in i){var a,l=i[r];l&&"object"==(void 0===l?"undefined":_typeof(l))&&l.name&&0===l.name.indexOf("tabulator-")&&(a=l.name.replace("tabulator-",""),void 0!==s[a]&&(e[s[a]]=this._attribValue(l.value)))}},S.prototype._attribValue=function(t){return"true"===t||"false"!==t&&t},S.prototype._findCol=function(t){return this.table.options.columns.find(function(e){return e.title===t})||!1},S.prototype._extractHeaders=function(t,e){for(var o=0;o<t.length;o++){var n,s,r=t[o],a=!1,l=this._findCol(r.textContent);l?a=!0:l={title:r.textContent.trim()},l.field||(l.field=r.textContent.trim().toLowerCase().replace(" ","_")),n=r.getAttribute("width"),n&&!l.width&&(l.width=n),s=r.attributes,this._extractOptions(r,l,i.prototype.defaultOptionList);for(var c in s){var u,d=s[c];d&&"object"==(void 0===d?"undefined":_typeof(d))&&d.name&&0===d.name.indexOf("tabulator-")&&(u=d.name.replace("tabulator-",""),l[u]=this._attribValue(d.value))}this.fieldIndex[o]=l.field,l.field==this.table.options.index&&(this.hasIndex=!0),a||this.table.options.columns.push(l)}},S.prototype._generateBlankHeaders=function(t,e){for(var o=0;o<t.length;o++){var i=t[o],n={title:"",field:"col"+o};this.fieldIndex[o]=n.field;var s=i.getAttribute("width");s&&(n.width=s),this.table.options.columns.push(n)}},u.prototype.registerModule("htmlTableImport",S);var k=function(t){this.table=t,this.config={},this.cloneTableStyle=!0,this.colVisProp=""};k.prototype.genereateTable=function(t,e,o,i){this.cloneTableStyle=e,this.config=t||{},this.colVisProp=i;var n=this.generateHeaderElements(),s=this.generateBodyElements(o),r=document.createElement("table");return r.classList.add("tabulator-print-table"),r.appendChild(n),r.appendChild(s),this.mapElementStyles(this.table.element,r,["border-top","border-left","border-right","border-bottom"]),r},k.prototype.generateColumnGroupHeaders=function(){var t=this,e=[];return(!1!==this.config.columnGroups?this.table.columnManager.columns:this.table.columnManager.columnsByIndex).forEach(function(o){var i=t.processColumnGroup(o);i&&e.push(i)}),e},k.prototype.processColumnGroup=function(t){var e=this,o=t.columns,i=0,n={title:t.definition.title,column:t,depth:1};if(o.length){if(n.subGroups=[],n.width=0,o.forEach(function(t){var o=e.processColumnGroup(t);o&&(n.width+=o.width,n.subGroups.push(o),o.depth>i&&(i=o.depth))}),n.depth+=i,!n.width)return!1}else{if(!t.field||!this.columnVisCheck(t))return!1;n.width=1}return n},k.prototype.groupHeadersToRows=function(t){function e(t,n){var s=i-n;void 0===o[n]&&(o[n]=[]),t.height=t.subGroups?1:s-t.depth+1,o[n].push(t),t.subGroups&&t.subGroups.forEach(function(t){e(t,n+1)})}var o=[],i=0;return t.forEach(function(t){t.depth>i&&(i=t.depth)}),t.forEach(function(t){e(t,0)}),o},k.prototype.generateHeaderElements=function(){var t=this,e=document.createElement("thead");return this.groupHeadersToRows(this.generateColumnGroupHeaders()).forEach(function(o){var i=document.createElement("tr");t.mapElementStyles(t.table.columnManager.getHeadersElement(),e,["border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),o.forEach(function(e){var o=document.createElement("th");o.colSpan=e.width,o.rowSpan=e.height,o.innerHTML=e.column.definition.title,t.cloneTableStyle&&(o.style.boxSizing="border-box"),t.mapElementStyles(e.column.getElement(),o,["text-align","border-top","border-left","border-right","border-bottom","background-color","color","font-weight","font-family","font-size"]),t.mapElementStyles(e.column.contentElement,o,["padding-top","padding-left","padding-right","padding-bottom"]),e.column.visible?t.mapElementStyles(e.column.getElement(),o,["width"]):e.column.definition.width&&(o.style.width=e.column.definition.width+"px"),e.column.parent&&t.mapElementStyles(e.column.parent.groupElement,o,["border-top"]),i.appendChild(o)}),e.appendChild(i)}),e},k.prototype.generateBodyElements=function(t){var e,o,i,n,s,r,a,l,c=this;this.cloneTableStyle&&window.getComputedStyle&&(e=this.table.element.querySelector(".tabulator-row-odd:not(.tabulator-group):not(.tabulator-calcs)"),o=this.table.element.querySelector(".tabulator-row-even:not(.tabulator-group):not(.tabulator-calcs)"),i=this.table.element.querySelector(".tabulator-row.tabulator-calcs"),n=this.table.element.querySelector(".tabulator-row:not(.tabulator-group):not(.tabulator-calcs)"),r=this.table.element.getElementsByClassName("tabulator-group")[0],n&&(a=n.getElementsByClassName("tabulator-cell"),s=a[0],a[a.length-1]));var u=document.createElement("tbody"),d=t?this.table.rowManager.getVisibleRows(!0):this.table.rowManager.getDisplayRows(),h=[];return!1!==this.config.columnCalcs&&this.table.modExists("columnCalcs")&&(this.table.modules.columnCalcs.topInitialized&&d.unshift(this.table.modules.columnCalcs.topRow),this.table.modules.columnCalcs.botInitialized&&d.push(this.table.modules.columnCalcs.botRow)),this.table.columnManager.columnsByIndex.forEach(function(t){c.columnVisCheck(t)&&h.push(t)}),d=d.filter(function(t){switch(t.type){case"group":return!1!==c.config.rowGroups;case"calc":return!1!==c.config.columnCalcs}return!0}),d.length>1e3&&console.warn("It may take a long time to render an HTML table with more than 1000 rows"),d.forEach(function(t,n){var a=t.getData(),d=document.createElement("tr");switch(d.classList.add("tabulator-print-table-row"),t.type){case"group":var p=document.createElement("td");p.colSpan=h.length,p.innerHTML=t.key,d.classList.add("tabulator-print-table-group"),c.mapElementStyles(r,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"]),c.mapElementStyles(r,p,["padding-top","padding-left","padding-right","padding-bottom"]),d.appendChild(p);break;case"calc":d.classList.add("tabulator-print-table-calcs");case"row":h.forEach(function(e){var o=document.createElement("td"),i=e.getFieldValue(a),n={getValue:function(){return i},getField:function(){return e.definition.field},getElement:function(){return o},getColumn:function(){return e.getComponent()},getData:function(){return a},getRow:function(){return t.getComponent()},getComponent:function(){return n},column:e};if(c.table.modExists("format"))i=c.table.modules.format.formatValue(n);else switch(void 0===i?"undefined":_typeof(i)){case"object":i=JSON.stringify(i);break;case"undefined":case"null":i="";break;default:i=i}i instanceof Node?o.appendChild(i):o.innerHTML=i,s&&c.mapElementStyles(s,o,["padding-top","padding-left","padding-right","padding-bottom","border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","text-align"]),d.appendChild(o)}),l="calc"==t.type?i:n%2&&o?o:e,c.mapElementStyles(l,d,["border-top","border-left","border-right","border-bottom","color","font-weight","font-family","font-size","background-color"])}u.appendChild(d)}),u},k.prototype.columnVisCheck=function(t){return!1!==t.definition[this.colVisProp]&&(t.visible||!t.visible&&t.definition[this.colVisProp])},k.prototype.getHtml=function(t,e,o){var i=document.createElement("div");return i.appendChild(this.genereateTable(o||this.table.options.htmlOutputConfig,e,t,"htmlOutput")),i.innerHTML},k.prototype.mapElementStyles=function(t,e,o){if(this.cloneTableStyle&&t&&e){var i={"background-color":"backgroundColor",color:"fontColor",width:"width","font-weight":"fontWeight","font-family":"fontFamily","font-size":"fontSize","text-align":"textAlign","border-top":"borderTop","border-left":"borderLeft","border-right":"borderRight","border-bottom":"borderBottom","padding-top":"paddingTop","padding-left":"paddingLeft","padding-right":"paddingRight","padding-bottom":"paddingBottom"};if(window.getComputedStyle){var n=window.getComputedStyle(t);o.forEach(function(t){e.style[i[t]]=n.getPropertyValue(t)})}}},u.prototype.registerModule("htmlTableExport",k);var z=function(t){this.table=t,this.watchKeys=null,this.pressedKeys=null,this.keyupBinding=!1,this.keydownBinding=!1};z.prototype.initialize=function(){var t=this.table.options.keybindings,e={};if(this.watchKeys={},this.pressedKeys=[],!1!==t){for(var o in this.bindings)e[o]=this.bindings[o];if(Object.keys(t).length)for(var i in t)e[i]=t[i];this.mapBindings(e),this.bindEvents()}},z.prototype.mapBindings=function(t){var e=this,o=this;for(var i in t)!function(i){e.actions[i]?t[i]&&("object"!==_typeof(t[i])&&(t[i]=[t[i]]),t[i].forEach(function(t){o.mapBinding(i,t)})):console.warn("Key Binding Error - no such action:",i)}(i)},z.prototype.mapBinding=function(t,e){var o=this,i={action:this.actions[t],keys:[],ctrl:!1,shift:!1};e.toString().toLowerCase().split(" ").join("").split("+").forEach(function(t){switch(t){case"ctrl":i.ctrl=!0;break;case"shift":i.shift=!0;break;default:t=parseInt(t),i.keys.push(t),o.watchKeys[t]||(o.watchKeys[t]=[]),o.watchKeys[t].push(i)}})},z.prototype.bindEvents=function(){var t=this;this.keyupBinding=function(e){var o=e.keyCode,i=t.watchKeys[o];i&&(t.pressedKeys.push(o),i.forEach(function(o){t.checkBinding(e,o)}))},this.keydownBinding=function(e){var o=e.keyCode;if(t.watchKeys[o]){var i=t.pressedKeys.indexOf(o);i>-1&&t.pressedKeys.splice(i,1)}},this.table.element.addEventListener("keydown",this.keyupBinding),this.table.element.addEventListener("keyup",this.keydownBinding)},z.prototype.clearBindings=function(){this.keyupBinding&&this.table.element.removeEventListener("keydown",this.keyupBinding),this.keydownBinding&&this.table.element.removeEventListener("keyup",this.keydownBinding)},z.prototype.checkBinding=function(t,e){var o=this,i=!0;return t.ctrlKey==e.ctrl&&t.shiftKey==e.shift&&(e.keys.forEach(function(t){-1==o.pressedKeys.indexOf(t)&&(i=!1)}),i&&e.action.call(o,t),!0)},z.prototype.bindings={navPrev:"shift + 9",navNext:9,navUp:38,navDown:40,scrollPageUp:33,scrollPageDown:34,scrollToStart:36,scrollToEnd:35,undo:"ctrl + 90",redo:"ctrl + 89",copyToClipboard:"ctrl + 67"},z.prototype.actions={keyBlock:function(t){t.stopPropagation(),t.preventDefault()},scrollPageUp:function(t){var e=this.table.rowManager,o=e.scrollTop-e.height;e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o>=0?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[0])),this.table.element.focus()},scrollPageDown:function(t){var e=this.table.rowManager,o=e.scrollTop+e.height,i=e.element.scrollHeight;t.preventDefault(),e.displayRowsCount&&(o<=i?e.element.scrollTop=o:e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1])),this.table.element.focus()},scrollToStart:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[0]),this.table.element.focus()},scrollToEnd:function(t){var e=this.table.rowManager;t.preventDefault(),e.displayRowsCount&&e.scrollToRow(e.getDisplayRows()[e.displayRowsCount-1]),this.table.element.focus()},navPrev:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().prev())},navNext:function(t){var e=!1,o=this.table.options.tabEndNewRow;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().next()||o&&(o=!0===o?this.table.addRow({}):"function"==typeof o?this.table.addRow(o(e.row.getComponent())):this.table.addRow(o),o.then(function(){e.nav().next()})))},navLeft:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().left())},navRight:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().right())},navUp:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().up())},navDown:function(t){var e=!1;this.table.modExists("edit")&&(e=this.table.modules.edit.currentCell)&&(t.preventDefault(),e.nav().down())},undo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.undo()))},redo:function(t){this.table.options.history&&this.table.modExists("history")&&this.table.modExists("edit")&&(this.table.modules.edit.currentCell||(t.preventDefault(),this.table.modules.history.redo()))},copyToClipboard:function(t){this.table.modules.edit.currentCell||this.table.modExists("clipboard",!0)&&this.table.modules.clipboard.copy(this.table.options.selectable&&"highlight"!=this.table.options.selectable?"selected":"active",null,null,null,!0)}},u.prototype.registerModule("keybindings",z);var F=function(t){this.table=t,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=250,this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.startX=0,this.autoScrollMargin=40,this.autoScrollStep=5,this.autoScrollTimeout=!1,this.touchMove=!1,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this)};F.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.classList.add("tabulator-col-placeholder"),t},F.prototype.initializeColumn=function(t){var e,o=this,i={};t.modules.frozen||(e=t.getElement(),i.mousemove=function(i){t.parent===o.moving.parent&&((o.touchMove?i.touches[0].pageX:i.pageX)-u.prototype.helpers.elOffset(e).left+o.table.columnManager.element.scrollLeft>t.getWidth()/2?o.toCol===t&&o.toColAfter||(e.parentNode.insertBefore(o.placeholderElement,e.nextSibling),o.moveColumn(t,!0)):(o.toCol!==t||o.toColAfter)&&(e.parentNode.insertBefore(o.placeholderElement,e),o.moveColumn(t,!1)))}.bind(o),e.addEventListener("mousedown",function(e){o.touchMove=!1,1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),o.bindTouchEvents(t)),t.modules.moveColumn=i},F.prototype.bindTouchEvents=function(t){var e,o,i,n,s,r,a,l=this,c=t.getElement(),u=!1;c.addEventListener("touchstart",function(c){l.checkTimeout=setTimeout(function(){l.touchMove=!0,e=t,o=t.nextColumn(),n=o?o.getWidth()/2:0,i=t.prevColumn(),s=i?i.getWidth()/2:0,r=0,a=0,u=!1,l.startMove(c,t)},l.checkPeriod)},{passive:!0}),c.addEventListener("touchmove",function(c){var d,h;l.moving&&(l.moveHover(c),u||(u=c.touches[0].pageX),d=c.touches[0].pageX-u,d>0?o&&d-r>n&&(h=o)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement().nextSibling),l.moveColumn(h,!0)):i&&-d-a>s&&(h=i)!==t&&(u=c.touches[0].pageX,h.getElement().parentNode.insertBefore(l.placeholderElement,h.getElement()),l.moveColumn(h,!1)),h&&(e=h,o=h.nextColumn(),r=n,n=o?o.getWidth()/2:0,i=h.prevColumn(),a=s,s=i?i.getWidth()/2:0))},{passive:!0}),c.addEventListener("touchend",function(t){l.checkTimeout&&clearTimeout(l.checkTimeout),l.moving&&l.endMove(t)})},F.prototype.startMove=function(t,e){var o=e.getElement();this.moving=e,this.startX=(this.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(o).left,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.table.columnManager.getElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.bottom="0",this.touchMove||(this._bindMouseMove(),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove)),this.moveHover(t)},F.prototype._bindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().addEventListener("mousemove",t.modules.moveColumn.mousemove)})},F.prototype._unbindMouseMove=function(){this.table.columnManager.columnsByIndex.forEach(function(t){t.modules.moveColumn.mousemove&&t.getElement().removeEventListener("mousemove",t.modules.moveColumn.mousemove)})},F.prototype.moveColumn=function(t,e){var o=this.moving.getCells();this.toCol=t,this.toColAfter=e,e?t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i.nextSibling)}):t.getCells().forEach(function(t,e){var i=t.getElement();i.parentNode.insertBefore(o[e].getElement(),i)})},F.prototype.endMove=function(t){(1===t.which||this.touchMove)&&(this._unbindMouseMove(),this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toCol&&this.table.columnManager.moveColumnActual(this.moving,this.toCol,this.toColAfter),this.moving=!1,this.toCol=!1,this.toColAfter=!1,this.touchMove||(document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove)))},F.prototype.moveHover=function(t){var e,o=this,i=o.table.columnManager.getElement(),n=i.scrollLeft,s=(o.touchMove?t.touches[0].pageX:t.pageX)-u.prototype.helpers.elOffset(i).left+n;o.hoverElement.style.left=s-o.startX+"px",s-n<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.max(0,n-5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1))),n+i.clientWidth-s<o.autoScrollMargin&&(o.autoScrollTimeout||(o.autoScrollTimeout=setTimeout(function(){e=Math.min(i.clientWidth,n+5),o.table.rowManager.getElement().scrollLeft=e,o.autoScrollTimeout=!1},1)))},u.prototype.registerModule("moveColumn",F);var _=function(t){this.table=t,this.placeholderElement=this.createPlaceholderElement(),this.hoverElement=!1,this.checkTimeout=!1,this.checkPeriod=150,this.moving=!1,this.toRow=!1,this.toRowAfter=!1,this.hasHandle=!1,this.startY=0,this.startX=0,this.moveHover=this.moveHover.bind(this),this.endMove=this.endMove.bind(this),this.tableRowDropEvent=!1,this.touchMove=!1,this.connection=!1,this.connections=[],this.connectedTable=!1,this.connectedRow=!1};_.prototype.createPlaceholderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.classList.add("tabulator-row-placeholder"),t},_.prototype.initialize=function(t){this.connection=this.table.options.movableRowsConnectedTables},_.prototype.setHandle=function(t){this.hasHandle=t},_.prototype.initializeGroupHeader=function(t){var e=this,o={};o.mouseup=function(t){e.tableRowDrop(t,row)}.bind(e),o.mousemove=function(o){if(o.pageY-u.prototype.helpers.elOffset(t.element).top+e.table.rowManager.element.scrollTop>t.getHeight()/2){if(e.toRow!==t||!e.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(e.placeholderElement,i.nextSibling),e.moveRow(t,!0)}}else if(e.toRow!==t||e.toRowAfter){var i=t.getElement();i.previousSibling&&(i.parentNode.insertBefore(e.placeholderElement,i),e.moveRow(t,!1))}}.bind(e),t.modules.moveRow=o},_.prototype.initializeRow=function(t){var e,o=this,i={};i.mouseup=function(e){o.tableRowDrop(e,t)}.bind(o),i.mousemove=function(e){if(e.pageY-u.prototype.helpers.elOffset(t.element).top+o.table.rowManager.element.scrollTop>t.getHeight()/2){if(o.toRow!==t||!o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i.nextSibling),o.moveRow(t,!0)}}else if(o.toRow!==t||o.toRowAfter){var i=t.getElement();i.parentNode.insertBefore(o.placeholderElement,i),o.moveRow(t,!1)}}.bind(o),this.hasHandle||(e=t.getElement(),e.addEventListener("mousedown",function(e){1===e.which&&(o.checkTimeout=setTimeout(function(){o.startMove(e,t)},o.checkPeriod))}),e.addEventListener("mouseup",function(t){1===t.which&&o.checkTimeout&&clearTimeout(o.checkTimeout)}),this.bindTouchEvents(t,t.getElement())),t.modules.moveRow=i},_.prototype.initializeCell=function(t){var e=this,o=t.getElement();o.addEventListener("mousedown",function(o){1===o.which&&(e.checkTimeout=setTimeout(function(){e.startMove(o,t.row)},e.checkPeriod))}),o.addEventListener("mouseup",function(t){1===t.which&&e.checkTimeout&&clearTimeout(e.checkTimeout)}),this.bindTouchEvents(t.row,t.getElement())},_.prototype.bindTouchEvents=function(t,e){var o,i,n,s,r,a,l,c=this,u=!1;e.addEventListener("touchstart",function(e){c.checkTimeout=setTimeout(function(){c.touchMove=!0,o=t,i=t.nextRow(),s=i?i.getHeight()/2:0,n=t.prevRow(),r=n?n.getHeight()/2:0,a=0,l=0,u=!1,c.startMove(e,t)},c.checkPeriod)},{passive:!0}),this.moving,this.toRow,this.toRowAfter,e.addEventListener("touchmove",function(e){var d,h;c.moving&&(e.preventDefault(),c.moveHover(e),u||(u=e.touches[0].pageY),d=e.touches[0].pageY-u,d>0?i&&d-a>s&&(h=i)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement().nextSibling),c.moveRow(h,!0)):n&&-d-l>r&&(h=n)!==t&&(u=e.touches[0].pageY,h.getElement().parentNode.insertBefore(c.placeholderElement,h.getElement()),c.moveRow(h,!1)),h&&(o=h,i=h.nextRow(),a=s,s=i?i.getHeight()/2:0,n=h.prevRow(),l=r,r=n?n.getHeight()/2:0))}),e.addEventListener("touchend",function(t){c.checkTimeout&&clearTimeout(c.checkTimeout),c.moving&&(c.endMove(t),c.touchMove=!1)})},_.prototype._bindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().addEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype._unbindMouseMove=function(){this.table.rowManager.getDisplayRows().forEach(function(t){"row"!==t.type&&"group"!==t.type||!t.modules.moveRow.mousemove||t.getElement().removeEventListener("mousemove",t.modules.moveRow.mousemove)})},_.prototype.startMove=function(t,e){var o=e.getElement();this.setStartPosition(t,e),this.moving=e,this.table.element.classList.add("tabulator-block-select"),this.placeholderElement.style.width=e.getWidth()+"px",this.placeholderElement.style.height=e.getHeight()+"px",this.connection?(this.table.element.classList.add("tabulator-movingrow-sending"),this.connectToTables(e)):(o.parentNode.insertBefore(this.placeholderElement,o),o.parentNode.removeChild(o)),this.hoverElement=o.cloneNode(!0),this.hoverElement.classList.add("tabulator-moving"),this.connection?(document.body.appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this.hoverElement.style.width=this.table.element.clientWidth+"px",this.hoverElement.style.whiteSpace="nowrap",this.hoverElement.style.overflow="hidden",this.hoverElement.style.pointerEvents="none"):(this.table.rowManager.getTableElement().appendChild(this.hoverElement),this.hoverElement.style.left="0",this.hoverElement.style.top="0",this._bindMouseMove()),document.body.addEventListener("mousemove",this.moveHover),document.body.addEventListener("mouseup",this.endMove),this.moveHover(t)},_.prototype.setStartPosition=function(t,e){var o,i,n=this.touchMove?t.touches[0].pageX:t.pageX,s=this.touchMove?t.touches[0].pageY:t.pageY;o=e.getElement(),this.connection?(i=o.getBoundingClientRect(),this.startX=i.left-n+window.pageXOffset,this.startY=i.top-s+window.pageYOffset):this.startY=s-o.getBoundingClientRect().top},_.prototype.endMove=function(t){t&&1!==t.which&&!this.touchMove||(this._unbindMouseMove(),this.connection||(this.placeholderElement.parentNode.insertBefore(this.moving.getElement(),this.placeholderElement.nextSibling),this.placeholderElement.parentNode.removeChild(this.placeholderElement)),this.hoverElement.parentNode.removeChild(this.hoverElement),this.table.element.classList.remove("tabulator-block-select"),this.toRow&&this.table.rowManager.moveRow(this.moving,this.toRow,this.toRowAfter),this.moving=!1,this.toRow=!1,this.toRowAfter=!1,document.body.removeEventListener("mousemove",this.moveHover),document.body.removeEventListener("mouseup",this.endMove),this.connection&&(this.table.element.classList.remove("tabulator-movingrow-sending"),this.disconnectFromTables()))},_.prototype.moveRow=function(t,e){this.toRow=t,this.toRowAfter=e},_.prototype.moveHover=function(t){this.connection?this.moveHoverConnections.call(this,t):this.moveHoverTable.call(this,t)},_.prototype.moveHoverTable=function(t){var e=this.table.rowManager.getElement(),o=e.scrollTop,i=(this.touchMove?t.touches[0].pageY:t.pageY)-e.getBoundingClientRect().top+o;this.hoverElement.style.top=i-this.startY+"px"},_.prototype.moveHoverConnections=function(t){this.hoverElement.style.left=this.startX+(this.touchMove?t.touches[0].pageX:t.pageX)+"px",this.hoverElement.style.top=this.startY+(this.touchMove?t.touches[0].pageY:t.pageY)+"px"},_.prototype.connectToTables=function(t){var e=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStart.call(this.table,e),this.table.modules.comms.send(this.connection,"moveRow","connect",{row:t})},_.prototype.disconnectFromTables=function(){var t=this.table.modules.comms.getConnections(this.connection);this.table.options.movableRowsSendingStop.call(this.table,t),this.table.modules.comms.send(this.connection,"moveRow","disconnect")},_.prototype.connect=function(t,e){var o=this;return this.connectedTable?(console.warn("Move Row Error - Table cannot accept connection, already connected to table:",this.connectedTable),!1):(this.connectedTable=t,this.connectedRow=e,this.table.element.classList.add("tabulator-movingrow-receiving"),o.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().addEventListener("mouseup",t.modules.moveRow.mouseup)}),o.tableRowDropEvent=o.tableRowDrop.bind(o),o.table.element.addEventListener("mouseup",o.tableRowDropEvent),this.table.options.movableRowsReceivingStart.call(this.table,e,t),!0)},_.prototype.disconnect=function(t){var e=this;t===this.connectedTable?(this.connectedTable=!1,this.connectedRow=!1,this.table.element.classList.remove("tabulator-movingrow-receiving"),
+e.table.rowManager.getDisplayRows().forEach(function(t){"row"===t.type&&t.modules.moveRow&&t.modules.moveRow.mouseup&&t.getElement().removeEventListener("mouseup",t.modules.moveRow.mouseup)}),e.table.element.removeEventListener("mouseup",e.tableRowDropEvent),this.table.options.movableRowsReceivingStop.call(this.table,t)):console.warn("Move Row Error - trying to disconnect from non connected table")},_.prototype.dropComplete=function(t,e,o){var i=!1;if(o){switch(_typeof(this.table.options.movableRowsSender)){case"string":i=this.senders[this.table.options.movableRowsSender];break;case"function":i=this.table.options.movableRowsSender}i?i.call(this,this.moving.getComponent(),e?e.getComponent():void 0,t):this.table.options.movableRowsSender&&console.warn("Mover Row Error - no matching sender found:",this.table.options.movableRowsSender),this.table.options.movableRowsSent.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t)}else this.table.options.movableRowsSentFailed.call(this.table,this.moving.getComponent(),e?e.getComponent():void 0,t);this.endMove()},_.prototype.tableRowDrop=function(t,e){var o=!1,i=!1;switch(t.stopImmediatePropagation(),_typeof(this.table.options.movableRowsReceiver)){case"string":o=this.receivers[this.table.options.movableRowsReceiver];break;case"function":o=this.table.options.movableRowsReceiver}o?i=o.call(this,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):console.warn("Mover Row Error - no matching receiver found:",this.table.options.movableRowsReceiver),i?this.table.options.movableRowsReceived.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable):this.table.options.movableRowsReceivedFailed.call(this.table,this.connectedRow.getComponent(),e?e.getComponent():void 0,this.connectedTable),this.table.modules.comms.send(this.connectedTable,"moveRow","dropcomplete",{row:e,success:i})},_.prototype.receivers={insert:function(t,e,o){return this.table.addRow(t.getData(),void 0,e),!0},add:function(t,e,o){return this.table.addRow(t.getData()),!0},update:function(t,e,o){return!!e&&(e.update(t.getData()),!0)},replace:function(t,e,o){return!!e&&(this.table.addRow(t.getData(),void 0,e),e.delete(),!0)}},_.prototype.senders={delete:function(t,e,o){t.delete()}},_.prototype.commsReceived=function(t,e,o){switch(e){case"connect":return this.connect(t,o.row);case"disconnect":return this.disconnect(t);case"dropcomplete":return this.dropComplete(t,o.row,o.success)}},u.prototype.registerModule("moveRow",_);var H=function(t){this.table=t,this.allowedTypes=["","data","edit","clipboard"],this.enabled=!0};H.prototype.initializeColumn=function(t){var e=this,o=!1,i={};this.allowedTypes.forEach(function(n){var s,r="mutator"+(n.charAt(0).toUpperCase()+n.slice(1));t.definition[r]&&(s=e.lookupMutator(t.definition[r]))&&(o=!0,i[r]={mutator:s,params:t.definition[r+"Params"]||{}})}),o&&(t.modules.mutate=i)},H.prototype.lookupMutator=function(t){var e=!1;switch(void 0===t?"undefined":_typeof(t)){case"string":this.mutators[t]?e=this.mutators[t]:console.warn("Mutator Error - No such mutator found, ignoring: ",t);break;case"function":e=t}return e},H.prototype.transformRow=function(t,e,o){var i,n=this,s="mutator"+(e.charAt(0).toUpperCase()+e.slice(1));return this.enabled&&n.table.columnManager.traverse(function(n){var r,a,l;n.modules.mutate&&(r=n.modules.mutate[s]||n.modules.mutate.mutator||!1)&&(i=n.getFieldValue(t),(!o||o&&void 0!==i)&&(l=n.getComponent(),a="function"==typeof r.params?r.params(i,t,e,l):r.params,n.setFieldValue(t,r.mutator(i,t,e,a,l))))}),t},H.prototype.transformCell=function(t,e){var o=t.column.modules.mutate.mutatorEdit||t.column.modules.mutate.mutator||!1;return o?o.mutator(e,t.row.getData(),"edit",o.params,t.getComponent()):e},H.prototype.enable=function(){this.enabled=!0},H.prototype.disable=function(){this.enabled=!1},H.prototype.mutators={},u.prototype.registerModule("mutator",H);var A=function(t){this.table=t,this.mode="local",this.progressiveLoad=!1,this.size=0,this.page=1,this.count=5,this.max=1,this.displayIndex=0,this.pageSizes=[],this.createElements()};A.prototype.createElements=function(){var t;this.element=document.createElement("span"),this.element.classList.add("tabulator-paginator"),this.pagesElement=document.createElement("span"),this.pagesElement.classList.add("tabulator-pages"),t=document.createElement("button"),t.classList.add("tabulator-page"),t.setAttribute("type","button"),t.setAttribute("role","button"),t.setAttribute("aria-label",""),t.setAttribute("title",""),this.firstBut=t.cloneNode(!0),this.firstBut.setAttribute("data-page","first"),this.prevBut=t.cloneNode(!0),this.prevBut.setAttribute("data-page","prev"),this.nextBut=t.cloneNode(!0),this.nextBut.setAttribute("data-page","next"),this.lastBut=t.cloneNode(!0),this.lastBut.setAttribute("data-page","last"),this.table.options.paginationSizeSelector&&(this.pageSizeSelect=document.createElement("select"),this.pageSizeSelect.classList.add("tabulator-page-size"))},A.prototype.generatePageSizeSelectList=function(){var t=this,e=[];if(this.pageSizeSelect){if(Array.isArray(this.table.options.paginationSizeSelector))e=this.table.options.paginationSizeSelector,this.pageSizes=e,-1==this.pageSizes.indexOf(this.size)&&e.unshift(this.size);else if(-1==this.pageSizes.indexOf(this.size)){e=[];for(var o=1;o<5;o++)e.push(this.size*o);this.pageSizes=e}else e=this.pageSizes;for(;this.pageSizeSelect.firstChild;)this.pageSizeSelect.removeChild(this.pageSizeSelect.firstChild);e.forEach(function(e){var o=document.createElement("option");o.value=e,o.innerHTML=e,t.pageSizeSelect.appendChild(o)}),this.pageSizeSelect.value=this.size}},A.prototype.initialize=function(t){var e,o=this;for(var i in o.table.options.paginationDataSent)o.paginationDataSentNames[i]=o.table.options.paginationDataSent[i];for(var n in o.table.options.paginationDataReceived)o.paginationDataReceivedNames[n]=o.table.options.paginationDataReceived[n];o.table.modules.localize.bind("pagination|first",function(t){o.firstBut.innerHTML=t}),o.table.modules.localize.bind("pagination|first_title",function(t){o.firstBut.setAttribute("aria-label",t),o.firstBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|prev",function(t){o.prevBut.innerHTML=t}),o.table.modules.localize.bind("pagination|prev_title",function(t){o.prevBut.setAttribute("aria-label",t),o.prevBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|next",function(t){o.nextBut.innerHTML=t}),o.table.modules.localize.bind("pagination|next_title",function(t){o.nextBut.setAttribute("aria-label",t),o.nextBut.setAttribute("title",t)}),o.table.modules.localize.bind("pagination|last",function(t){o.lastBut.innerHTML=t}),o.table.modules.localize.bind("pagination|last_title",function(t){o.lastBut.setAttribute("aria-label",t),o.lastBut.setAttribute("title",t)}),o.firstBut.addEventListener("click",function(){o.setPage(1)}),o.prevBut.addEventListener("click",function(){o.previousPage()}),o.nextBut.addEventListener("click",function(){o.nextPage().then(function(){}).catch(function(){})}),o.lastBut.addEventListener("click",function(){o.setPage(o.max)}),o.table.options.paginationElement&&(o.element=o.table.options.paginationElement),this.pageSizeSelect&&(e=document.createElement("label"),o.table.modules.localize.bind("pagination|page_size",function(t){o.pageSizeSelect.setAttribute("aria-label",t),o.pageSizeSelect.setAttribute("title",t),e.innerHTML=t}),o.element.appendChild(e),o.element.appendChild(o.pageSizeSelect),o.pageSizeSelect.addEventListener("change",function(t){o.setPageSize(o.pageSizeSelect.value),o.setPage(1).then(function(){}).catch(function(){})})),o.element.appendChild(o.firstBut),o.element.appendChild(o.prevBut),o.element.appendChild(o.pagesElement),o.element.appendChild(o.nextBut),o.element.appendChild(o.lastBut),o.table.options.paginationElement||t||o.table.footerManager.append(o.element,o),o.mode=o.table.options.pagination,o.size=o.table.options.paginationSize||Math.floor(o.table.rowManager.getElement().clientHeight/24),o.count=o.table.options.paginationButtonCount,o.generatePageSizeSelectList()},A.prototype.initializeProgressive=function(t){this.initialize(!0),this.mode="progressive_"+t,this.progressiveLoad=!0},A.prototype.setDisplayIndex=function(t){this.displayIndex=t},A.prototype.getDisplayIndex=function(){return this.displayIndex},A.prototype.setMaxRows=function(t){this.max=t?Math.ceil(t/this.size):1,this.page>this.max&&(this.page=this.max)},A.prototype.reset=function(t){return("local"==this.mode||t)&&(this.page=1),!0},A.prototype.setMaxPage=function(t){t=parseInt(t),this.max=t||1,this.page>this.max&&(this.page=this.max,this.trigger())},A.prototype.setPage=function(t){var e=this;return new Promise(function(o,i){t=parseInt(t),t>0&&t<=e.max?(e.page=t,e.trigger().then(function(){o()}).catch(function(){i()})):(console.warn("Pagination Error - Requested page is out of range of 1 - "+e.max+":",t),i())})},A.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){var n=e.table.rowManager.getDisplayRows(e.displayIndex-1),s=n.indexOf(t);if(s>-1){var r=Math.ceil((s+1)/e.size);e.setPage(r).then(function(){o()}).catch(function(){i()})}else console.warn("Pagination Error - Requested row is not visible"),i()})},A.prototype.setPageSize=function(t){t=parseInt(t),t>0&&(this.size=t),this.pageSizeSelect&&this.generatePageSizeSelectList()},A.prototype._setPageButtons=function(){for(var t=this,e=Math.floor((this.count-1)/2),o=Math.ceil((this.count-1)/2),i=this.max-this.page+e+1<this.count?this.max-this.count+1:Math.max(this.page-e,1),n=this.page<=o?Math.min(this.count,this.max):Math.min(this.page+o,this.max);t.pagesElement.firstChild;)t.pagesElement.removeChild(t.pagesElement.firstChild);1==t.page?(t.firstBut.disabled=!0,t.prevBut.disabled=!0):(t.firstBut.disabled=!1,t.prevBut.disabled=!1),t.page==t.max?(t.lastBut.disabled=!0,t.nextBut.disabled=!0):(t.lastBut.disabled=!1,t.nextBut.disabled=!1);for(var s=i;s<=n;s++)s>0&&s<=t.max&&t.pagesElement.appendChild(t._generatePageButton(s));this.footerRedraw()},A.prototype._generatePageButton=function(t){var e=this,o=document.createElement("button");return o.classList.add("tabulator-page"),t==e.page&&o.classList.add("active"),o.setAttribute("type","button"),o.setAttribute("role","button"),o.setAttribute("aria-label","Show Page "+t),o.setAttribute("title","Show Page "+t),o.setAttribute("data-page",t),o.textContent=t,o.addEventListener("click",function(o){e.setPage(t)}),o},A.prototype.previousPage=function(){var t=this;return new Promise(function(e,o){t.page>1?(t.page--,t.trigger().then(function(){e()}).catch(function(){o()})):(console.warn("Pagination Error - Previous page would be less than page 1:",0),o())})},A.prototype.nextPage=function(){var t=this;return new Promise(function(e,o){t.page<t.max?(t.page++,t.trigger().then(function(){e()}).catch(function(){o()})):(t.progressiveLoad||console.warn("Pagination Error - Next page would be greater than maximum page of "+t.max+":",t.max+1),o())})},A.prototype.getPage=function(){return this.page},A.prototype.getPageMax=function(){return this.max},A.prototype.getPageSize=function(t){return this.size},A.prototype.getMode=function(){return this.mode},A.prototype.getRows=function(t){var e,o,i;if("local"==this.mode){e=[],o=this.size*(this.page-1),i=o+parseInt(this.size),this._setPageButtons();for(var n=o;n<i;n++)t[n]&&e.push(t[n]);return e}return this._setPageButtons(),t.slice(0)},A.prototype.trigger=function(){var t,e=this;return new Promise(function(o,i){switch(e.mode){case"local":t=e.table.rowManager.scrollLeft,e.table.rowManager.refreshActiveData("page"),e.table.rowManager.scrollHorizontal(t),e.table.options.pageLoaded.call(e.table,e.getPage()),o();break;case"remote":case"progressive_load":case"progressive_scroll":e.table.modules.ajax.blockActiveRequest(),e._getRemotePage().then(function(){o()}).catch(function(){i()});break;default:console.warn("Pagination Error - no such pagination mode:",e.mode),i()}})},A.prototype._getRemotePage=function(){var t,e,o=this,i=this;return new Promise(function(n,s){if(i.table.modExists("ajax",!0)||s(),t=u.prototype.helpers.deepClone(i.table.modules.ajax.getParams()||{}),e=i.table.modules.ajax.getParams(),e[o.paginationDataSentNames.page]=i.page,o.size&&(e[o.paginationDataSentNames.size]=o.size),o.table.options.ajaxSorting&&o.table.modExists("sort")){var r=i.table.modules.sort.getSort();r.forEach(function(t){delete t.column}),e[o.paginationDataSentNames.sorters]=r}if(o.table.options.ajaxFiltering&&o.table.modExists("filter")){var a=i.table.modules.filter.getFilters(!0,!0);e[o.paginationDataSentNames.filters]=a}i.table.modules.ajax.setParams(e),i.table.modules.ajax.sendRequest(o.progressiveLoad).then(function(t){i._parseRemoteData(t),n()}).catch(function(t){s()}),i.table.modules.ajax.setParams(t)})},A.prototype._parseRemoteData=function(t){var e,t,o,i=this;if(void 0===t[this.paginationDataReceivedNames.last_page]&&console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.last_page+"' property"),t[this.paginationDataReceivedNames.data])if(this.max=parseInt(t[this.paginationDataReceivedNames.last_page])||1,this.progressiveLoad)switch(this.mode){case"progressive_load":this.table.rowManager.addRows(t[this.paginationDataReceivedNames.data]),this.page<this.max&&setTimeout(function(){i.nextPage().then(function(){}).catch(function(){})},i.table.options.ajaxProgressiveLoadDelay);break;case"progressive_scroll":t=this.table.rowManager.getData().concat(t[this.paginationDataReceivedNames.data]),this.table.rowManager.setData(t,!0),o=this.table.options.ajaxProgressiveLoadScrollMargin||2*this.table.rowManager.element.clientHeight,i.table.rowManager.element.scrollHeight<=i.table.rowManager.element.clientHeight+o&&i.nextPage().then(function(){}).catch(function(){})}else e=this.table.rowManager.scrollLeft,this.table.rowManager.setData(t[this.paginationDataReceivedNames.data]),this.table.rowManager.scrollHorizontal(e),this.table.columnManager.scrollHorizontal(e),this.table.options.pageLoaded.call(this.table,this.getPage());else console.warn("Remote Pagination Error - Server response missing '"+this.paginationDataReceivedNames.data+"' property")},A.prototype.footerRedraw=function(){var t=this.table.footerManager.element;Math.ceil(t.clientWidth)-t.scrollWidth<0?this.pagesElement.style.display="none":(this.pagesElement.style.display="",Math.ceil(t.clientWidth)-t.scrollWidth<0&&(this.pagesElement.style.display="none"))},A.prototype.paginationDataSentNames={page:"page",size:"size",sorters:"sorters",filters:"filters"},A.prototype.paginationDataReceivedNames={current_page:"current_page",last_page:"last_page",data:"data"},u.prototype.registerModule("page",A);var P=function(t){this.table=t,this.mode="",this.id="",this.persistProps=["field","width","visible"]};P.prototype.localStorageTest=function(){var t="_tabulator_test";try{return window.localStorage.setItem(t,t),window.localStorage.removeItem(t),!0}catch(t){return!1}},P.prototype.initialize=function(t,e){this.mode=!0!==t?t:this.localStorageTest()?"local":"cookie",this.id="tabulator-"+(e||this.table.element.getAttribute("id")||"")},P.prototype.load=function(t,e){var o=this.retreiveData(t);return e&&(o=o?this.mergeDefinition(e,o):e),o},P.prototype.retreiveData=function(t){var e="",o=this.id+("columns"===t?"":"-"+t);switch(this.mode){case"local":e=localStorage.getItem(o);break;case"cookie":var i=document.cookie,n=i.indexOf(o+"="),s=void 0;n>-1&&(i=i.substr(n),s=i.indexOf(";"),s>-1&&(i=i.substr(0,s)),e=i.replace(o+"=",""));break;default:console.warn("Persistence Load Error - invalid mode selected",this.mode)}return!!e&&JSON.parse(e)},P.prototype.mergeDefinition=function(t,e){var o=this,i=[];return e=e||[],e.forEach(function(e,n){var s=o._findColumn(t,e);s&&(s.width=e.width,s.visible=e.visible,s.columns&&(s.columns=o.mergeDefinition(s.columns,e.columns)),i.push(s))}),t.forEach(function(t,n){o._findColumn(e,t)||(i.length>n?i.splice(n,0,t):i.push(t))}),i},P.prototype._findColumn=function(t,e){var o=e.columns?"group":e.field?"field":"object";return t.find(function(t){switch(o){case"group":return t.title===e.title&&t.columns.length===e.columns.length;case"field":return t.field===e.field;case"object":return t===e}})},P.prototype.save=function(t){var e={};switch(t){case"columns":e=this.parseColumns(this.table.columnManager.getColumns());break;case"filter":e=this.table.modules.filter.getFilters();break;case"sort":e=this.validateSorters(this.table.modules.sort.getSort())}var o=this.id+("columns"===t?"":"-"+t);this.saveData(o,e)},P.prototype.validateSorters=function(t){return t.forEach(function(t){t.column=t.field,delete t.field}),t},P.prototype.saveData=function(t,e){switch(e=JSON.stringify(e),this.mode){case"local":localStorage.setItem(t,e);break;case"cookie":var o=new Date;o.setDate(o.getDate()+1e4),document.cookie=t+"="+e+"; expires="+o.toUTCString();break;default:console.warn("Persistence Save Error - invalid mode selected",this.mode)}},P.prototype.parseColumns=function(t){var e=this,o=[];return t.forEach(function(t){var i={};t.isGroup?(i.title=t.getDefinition().title,i.columns=e.parseColumns(t.getColumns())):(i.title=t.getDefinition().title,i.field=t.getField(),i.width=t.getWidth(),i.visible=t.visible),o.push(i)}),o},u.prototype.registerModule("persistence",P);var N=function(t){this.table=t,this.element=!1,this.manualBlock=!1};N.prototype.initialize=function(){window.addEventListener("beforeprint",this.replaceTable.bind(this)),window.addEventListener("afterprint",this.cleanup.bind(this))},N.prototype.replaceTable=function(){this.manualBlock||(this.element=document.createElement("div"),this.element.classList.add("tabulator-print-table"),this.element.appendChild(this.table.modules.htmlTableExport.genereateTable(this.table.options.printConfig,this.table.options.printCopyStyle,this.table.options.printVisibleRows,"print")),this.table.element.style.display="none",this.table.element.parentNode.insertBefore(this.element,this.table.element))},N.prototype.cleanup=function(){document.body.classList.remove("tabulator-print-fullscreen-hide"),this.element&&this.element.parentNode&&(this.element.parentNode.removeChild(this.element),this.table.element.style.display="")},N.prototype.printFullscreen=function(t,e,o){var i,n,s=window.scrollX,r=window.scrollY,a=document.createElement("div"),l=document.createElement("div"),c=this.table.modules.htmlTableExport.genereateTable(void 0!==o?o:this.table.options.printConfig,void 0!==e?e:this.table.options.printCopyStyle,t,"print");this.manualBlock=!0,this.element=document.createElement("div"),this.element.classList.add("tabulator-print-fullscreen"),this.table.options.printHeader&&(a.classList.add("tabulator-print-header"),i="function"==typeof this.table.options.printHeader?this.table.options.printHeader.call(this.table):this.table.options.printHeader,"string"==typeof i?a.innerHTML=i:a.appendChild(i),this.element.appendChild(a)),this.element.appendChild(c),this.table.options.printFooter&&(l.classList.add("tabulator-print-footer"),n="function"==typeof this.table.options.printFooter?this.table.options.printFooter.call(this.table):this.table.options.printFooter,"string"==typeof n?l.innerHTML=n:l.appendChild(n),this.element.appendChild(l)),document.body.classList.add("tabulator-print-fullscreen-hide"),document.body.appendChild(this.element),this.table.options.printFormatter&&this.table.options.printFormatter(this.element,c),window.print(),this.cleanup(),window.scrollTo(s,r),this.manualBlock=!1},u.prototype.registerModule("print",N);var B=function(t){this.table=t,this.data=!1,this.blocked=!1,this.origFuncs={},this.currentVersion=0};B.prototype.watchData=function(t){var e,o=this;this.currentVersion++,e=this.currentVersion,o.unwatchData(),o.data=t,o.origFuncs.push=t.push,Object.defineProperty(o.data,"push",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!1)}),o.origFuncs.push.apply(t,arguments)}}),o.origFuncs.unshift=t.unshift,Object.defineProperty(o.data,"unshift",{enumerable:!1,configurable:!0,value:function(){var i=Array.from(arguments);return o.blocked||e!==o.currentVersion||i.forEach(function(t){o.table.rowManager.addRowActual(t,!0)}),o.origFuncs.unshift.apply(t,arguments)}}),o.origFuncs.shift=t.shift,Object.defineProperty(o.data,"shift",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[0]))&&i.deleteActual(),o.origFuncs.shift.call(t)}}),o.origFuncs.pop=t.pop,Object.defineProperty(o.data,"pop",{enumerable:!1,configurable:!0,value:function(){var i;return o.blocked||e!==o.currentVersion||o.data.length&&(i=o.table.rowManager.getRowFromDataObject(o.data[o.data.length-1]))&&i.deleteActual(),o.origFuncs.pop.call(t)}}),o.origFuncs.splice=t.splice,Object.defineProperty(o.data,"splice",{enumerable:!1,configurable:!0,value:function(){var i,n=Array.from(arguments),s=n[0]<0?t.length+n[0]:n[0],r=n[1],a=!!n[2]&&n.slice(2);if(!o.blocked&&e===o.currentVersion){if(a&&(i=!!t[s]&&o.table.rowManager.getRowFromDataObject(t[s]),i?a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,i,!0)}):(a=a.slice().reverse(),a.forEach(function(t){o.table.rowManager.addRowActual(t,!0,!1,!0)}))),0!==r){var l=t.slice(s,void 0===n[1]?n[1]:s+r);l.forEach(function(t,e){var i=o.table.rowManager.getRowFromDataObject(t);i&&i.deleteActual(e!==l.length-1)})}(a||0!==r)&&o.table.rowManager.reRenderInPosition()}return o.origFuncs.splice.apply(t,arguments)}})},B.prototype.unwatchData=function(){if(!1!==this.data)for(var t in this.origFuncs)Object.defineProperty(this.data,t,{enumerable:!0,configurable:!0,writable:!0,value:this.origFuncs.key})},B.prototype.watchRow=function(t){var e=t.getData();this.blocked=!0;for(var o in e)this.watchKey(t,e,o);this.blocked=!1},B.prototype.watchKey=function(t,e,o){var i=this,n=Object.getOwnPropertyDescriptor(e,o),s=e[o],r=this.currentVersion;Object.defineProperty(e,o,{set:function(e){if(s=e,!i.blocked&&r===i.currentVersion){var a={};a[o]=e,t.updateData(a)}n.set&&n.set(e)},get:function(){return n.get&&n.get(),s}})},B.prototype.unwatchRow=function(t){var e=t.getData();for(var o in e)Object.defineProperty(e,o,{value:e[o]})},B.prototype.block=function(){this.blocked=!0},B.prototype.unblock=function(){this.blocked=!1},u.prototype.registerModule("reactiveData",B);var I=function(t){this.table=t,this.startColumn=!1,this.startX=!1,this.startWidth=!1,this.handle=null,this.prevHandle=null};I.prototype.initializeColumn=function(t,e,o){var i=this,n=!1,s=this.table.options.resizableColumns;if("header"===t&&(n="textarea"==e.definition.formatter||e.definition.variableHeight,e.modules.resize={variableHeight:n}),!0===s||s==t){var r=document.createElement("div");r.className="tabulator-col-resize-handle";var a=document.createElement("div");a.className="tabulator-col-resize-handle prev",r.addEventListener("click",function(t){t.stopPropagation()});var l=function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&(i.startColumn=e,i._mouseDown(t,o,r))};r.addEventListener("mousedown",l),r.addEventListener("touchstart",l,{passive:!0}),r.addEventListener("dblclick",function(t){var o=e.getLastColumn();o&&i._checkResizability(o)&&o.reinitializeWidth(!0)}),a.addEventListener("click",function(t){t.stopPropagation()});var c=function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&(i.startColumn=e,i._mouseDown(t,s,a)))};a.addEventListener("mousedown",c),a.addEventListener("touchstart",c,{passive:!0}),a.addEventListener("dblclick",function(t){var o,n,s;(o=e.getFirstColumn())&&(n=i.table.columnManager.findColumnIndex(o),(s=n>0&&i.table.columnManager.getColumnByIndex(n-1))&&i._checkResizability(s)&&s.reinitializeWidth(!0))}),o.appendChild(r),o.appendChild(a)}},I.prototype._checkResizability=function(t){return void 0!==t.definition.resizable?t.definition.resizable:this.table.options.resizableColumns},I.prototype._mouseDown=function(t,e,o){function i(t){e.setWidth(s.startWidth+((void 0===t.screenX?t.touches[0].screenX:t.screenX)-s.startX)),!s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights()}function n(t){s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!1),s.table.browserSlow&&e.modules.resize&&e.modules.resize.variableHeight&&e.checkCellHeights(),document.body.removeEventListener("mouseup",n),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.persistentLayout&&s.table.modExists("persistence",!0)&&s.table.modules.persistence.save("columns"),s.table.options.columnResized.call(s.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startColumn.modules.edit&&(s.startColumn.modules.edit.blocked=!0),s.startX=void 0===t.screenX?t.touches[0].screenX:t.screenX,s.startWidth=e.getWidth(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeColumns",I);var O=function(t){this.table=t,this.startColumn=!1,this.startY=!1,this.startHeight=!1,this.handle=null,this.prevHandle=null};O.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=document.createElement("div");i.className="tabulator-row-resize-handle";var n=document.createElement("div");n.className="tabulator-row-resize-handle prev",i.addEventListener("click",function(t){t.stopPropagation()});var s=function(o){e.startRow=t,e._mouseDown(o,t,i)};i.addEventListener("mousedown",s,{passive:!0}),i.addEventListener("touchstart",s),n.addEventListener("click",function(t){t.stopPropagation()});var r=function(o){var i=e.table.rowManager.prevDisplayRow(t);i&&(e.startRow=i,e._mouseDown(o,i,n))};n.addEventListener("mousedown",r),n.addEventListener("touchstart",r,{passive:!0}),o.appendChild(i),o.appendChild(n)},O.prototype._mouseDown=function(t,e,o){function i(t){e.setHeight(s.startHeight+((void 0===t.screenY?t.touches[0].screenY:t.screenY)-s.startY))}function n(t){document.body.removeEventListener("mouseup",i),document.body.removeEventListener("mousemove",i),o.removeEventListener("touchmove",i),o.removeEventListener("touchend",n),s.table.element.classList.remove("tabulator-block-select"),s.table.options.rowResized.call(this.table,e.getComponent())}var s=this;s.table.element.classList.add("tabulator-block-select"),t.stopPropagation(),s.startY=void 0===t.screenY?t.touches[0].screenY:t.screenY,s.startHeight=e.getHeight(),document.body.addEventListener("mousemove",i),document.body.addEventListener("mouseup",n),o.addEventListener("touchmove",i,{passive:!0}),o.addEventListener("touchend",n)},u.prototype.registerModule("resizeRows",O);var G=function(t){this.table=t,this.binding=!1,this.observer=!1};G.prototype.initialize=function(t){var e=this.table;"undefined"!=typeof ResizeObserver&&"virtual"===e.rowManager.getRenderMode()?(this.observer=new ResizeObserver(function(t){e.redraw()}),this.observer.observe(e.element)):(this.binding=function(){e.redraw()},window.addEventListener("resize",this.binding))},G.prototype.clearBindings=function(t){this.binding&&window.removeEventListener("resize",this.binding),this.observer&&this.observer.unobserve(this.table.element)},u.prototype.registerModule("resizeTable",G);var j=function(t){this.table=t,this.columns=[],this.hiddenColumns=[],this.mode="",this.index=0,this.collapseFormatter=[],this.collapseStartOpen=!0};j.prototype.initialize=function(){var t=this,e=[];this.mode=this.table.options.responsiveLayout,this.collapseFormatter=this.table.options.responsiveLayoutCollapseFormatter||this.formatCollapsedData,this.collapseStartOpen=this.table.options.responsiveLayoutCollapseStartOpen,this.hiddenColumns=[],this.table.columnManager.columnsByIndex.forEach(function(o,i){o.modules.responsive&&o.modules.responsive.order&&o.modules.responsive.visible&&(o.modules.responsive.index=i,e.push(o),o.visible||"collapse"!==t.mode||t.hiddenColumns.push(o))}),e=e.reverse(),e=e.sort(function(t,e){return e.modules.responsive.order-t.modules.responsive.order||e.modules.responsive.index-t.modules.responsive.index}),this.columns=e,"collapse"===this.mode&&this.generateCollapsedContent()},j.prototype.initializeColumn=function(t){var e=t.getDefinition();t.modules.responsive={order:void 0===e.responsive?1:e.responsive,visible:!1!==e.visible}},j.prototype.layoutRow=function(t){var e=t.getElement(),o=document.createElement("div");o.classList.add("tabulator-responsive-collapse"),e.classList.contains("tabulator-calcs")||(t.modules.responsiveLayout={element:o},this.collapseStartOpen||(o.style.display="none"),e.appendChild(o),this.generateCollapsedRowContent(t))},j.prototype.updateColumnVisibility=function(t,e){t.modules.responsive&&(t.modules.responsive.visible=e,this.initialize())},j.prototype.hideColumn=function(t){t.hide(!1,!0),"collapse"===this.mode&&(this.hiddenColumns.unshift(t),this.generateCollapsedContent())},j.prototype.showColumn=function(t){var e;t.show(!1,!0),t.setWidth(t.getWidth()),"collapse"===this.mode&&(e=this.hiddenColumns.indexOf(t),e>-1&&this.hiddenColumns.splice(e,1),this.generateCollapsedContent())},j.prototype.update=function(){for(var t=this,e=!0;e;){var o="fitColumns"==t.table.modules.layout.getMode()?t.table.columnManager.getFlexBaseWidth():t.table.columnManager.getWidth(),i=t.table.columnManager.element.clientWidth-o;if(i<0){var n=t.columns[t.index];n?(t.hideColumn(n),t.index++):e=!1}else{var s=t.columns[t.index-1];s&&i>0&&i>=s.getWidth()?(t.showColumn(s),t.index--):e=!1}t.table.rowManager.activeRowsCount||t.table.rowManager.renderEmptyScroll()}},j.prototype.generateCollapsedContent=function(){var t=this;this.table.rowManager.getDisplayRows().forEach(function(e){t.generateCollapsedRowContent(e)})},j.prototype.generateCollapsedRowContent=function(t){var e,o;if(t.modules.responsiveLayout){for(e=t.modules.responsiveLayout.element;e.firstChild;)e.removeChild(e.firstChild);o=this.collapseFormatter(this.generateCollapsedRowData(t)),o&&e.appendChild(o)}},j.prototype.generateCollapsedRowData=function(t){var e,o=this,i=t.getData(),n=[];return this.hiddenColumns.forEach(function(s){var r=s.getFieldValue(i);s.definition.title&&s.field&&(s.modules.format&&o.table.options.responsiveLayoutCollapseUseFormatters?(e={value:!1,data:{},getValue:function(){return r},getData:function(){return i},getElement:function(){return document.createElement("div")},getRow:function(){return t.getComponent()},getColumn:function(){return s.getComponent()}},n.push({title:s.definition.title,value:s.modules.format.formatter.call(o.table.modules.format,e,s.modules.format.params)})):n.push({title:s.definition.title,value:r}))}),n},j.prototype.formatCollapsedData=function(t){var e=document.createElement("table"),o="";return t.forEach(function(t){var e=document.createElement("div");t.value instanceof Node&&(e.appendChild(t.value),t.value=e.innerHTML),o+="<tr><td><strong>"+t.title+"</strong></td><td>"+t.value+"</td></tr>"}),e.innerHTML=o,Object.keys(t).length?e:""},u.prototype.registerModule("responsiveLayout",j);var V=function(t){this.table=t,this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],this.headerCheckboxElement=null};V.prototype.clearSelectionData=function(t){this.selecting=!1,this.lastClickedRow=!1,this.selectPrev=[],this.selectedRows=[],t||this._rowSelectionChanged()},V.prototype.initializeRow=function(t){var e=this,o=t.getElement(),i=function t(){setTimeout(function(){e.selecting=!1},50),document.body.removeEventListener("mouseup",t)};t.modules.select={selected:!1},
+e.table.options.selectableCheck.call(this.table,t.getComponent())?(o.classList.add("tabulator-selectable"),o.classList.remove("tabulator-unselectable"),e.table.options.selectable&&"highlight"!=e.table.options.selectable&&("click"===e.table.options.selectableRangeMode?o.addEventListener("click",function(o){if(e.table._clearSelection(),o.shiftKey){e.lastClickedRow=e.lastClickedRow||t;var i=e.table.rowManager.getDisplayRowIndex(e.lastClickedRow),n=e.table.rowManager.getDisplayRowIndex(t),s=i<=n?i:n,r=i>=n?i:n,a=e.table.rowManager.getDisplayRows().slice(0),l=a.splice(s,r-s+1);o.ctrlKey||o.metaKey?(l.forEach(function(o){o!==e.lastClickedRow&&(!0===e.table.options.selectable||e.isRowSelected(t)?e.toggleRow(o):e.selectedRows.length<e.table.options.selectable&&e.toggleRow(o))}),e.lastClickedRow=t):(e.deselectRows(),!0!==e.table.options.selectable&&l.length>e.table.options.selectable&&(l=l.slice(0,e.table.options.selectable)),e.selectRows(l))}else o.ctrlKey||o.metaKey?(e.toggleRow(t),e.lastClickedRow=t):(e.deselectRows(),e.selectRows(t),e.lastClickedRow=t);e.table._clearSelection()}):(o.addEventListener("click",function(o){e.table._clearSelection(),e.selecting||e.toggleRow(t)}),o.addEventListener("mousedown",function(o){if(o.shiftKey)return e.table._clearSelection(),e.selecting=!0,e.selectPrev=[],document.body.addEventListener("mouseup",i),document.body.addEventListener("keyup",i),e.toggleRow(t),!1}),o.addEventListener("mouseenter",function(o){e.selecting&&(e.table._clearSelection(),e.toggleRow(t),e.selectPrev[1]==t&&e.toggleRow(e.selectPrev[0]))}),o.addEventListener("mouseout",function(o){e.selecting&&(e.table._clearSelection(),e.selectPrev.unshift(t))})))):(o.classList.add("tabulator-unselectable"),o.classList.remove("tabulator-selectable"))},V.prototype.toggleRow=function(t){this.table.options.selectableCheck.call(this.table,t.getComponent())&&(t.modules.select&&t.modules.select.selected?this._deselectRow(t):this._selectRow(t))},V.prototype.selectRows=function(t){var e=this;switch(void 0===t?"undefined":_typeof(t)){case"undefined":e.table.rowManager.rows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged();break;case"boolean":!0===t&&(e.table.rowManager.activeRows.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged());break;default:Array.isArray(t)?(t.forEach(function(t){e._selectRow(t,!0,!0)}),e._rowSelectionChanged()):e._selectRow(t,!1,!0)}},V.prototype._selectRow=function(t,e,o){if(!isNaN(this.table.options.selectable)&&!0!==this.table.options.selectable&&!o&&this.selectedRows.length>=this.table.options.selectable){if(!this.table.options.selectableRollingSelection)return!1;this._deselectRow(this.selectedRows[0])}var i=this.table.rowManager.findRow(t);i?-1==this.selectedRows.indexOf(i)&&(i.modules.select||(i.modules.select={}),i.modules.select.selected=!0,i.modules.select.checkboxEl&&(i.modules.select.checkboxEl.checked=!0),i.getElement().classList.add("tabulator-selected"),this.selectedRows.push(i),e||(this.table.options.rowSelected.call(this.table,i.getComponent()),this._rowSelectionChanged())):e||console.warn("Selection Error - No such row found, ignoring selection:"+t)},V.prototype.isRowSelected=function(t){return-1!==this.selectedRows.indexOf(t)},V.prototype.deselectRows=function(t){var e,o=this;if(void 0===t){e=o.selectedRows.length;for(var i=0;i<e;i++)o._deselectRow(o.selectedRows[0],!0);o._rowSelectionChanged()}else Array.isArray(t)?(t.forEach(function(t){o._deselectRow(t,!0)}),o._rowSelectionChanged()):o._deselectRow(t)},V.prototype._deselectRow=function(t,e){var o,i=this,n=i.table.rowManager.findRow(t);n?(o=i.selectedRows.findIndex(function(t){return t==n}))>-1&&(n.modules.select||(n.modules.select={}),n.modules.select.selected=!1,n.modules.select.checkboxEl&&(n.modules.select.checkboxEl.checked=!1),n.getElement().classList.remove("tabulator-selected"),i.selectedRows.splice(o,1),e||(i.table.options.rowDeselected.call(this.table,n.getComponent()),i._rowSelectionChanged())):e||console.warn("Deselection Error - No such row found, ignoring selection:"+t)},V.prototype.getSelectedData=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getData())}),t},V.prototype.getSelectedRows=function(){var t=[];return this.selectedRows.forEach(function(e){t.push(e.getComponent())}),t},V.prototype._rowSelectionChanged=function(){this.headerCheckboxElement&&(0===this.selectedRows.length?(this.headerCheckboxElement.checked=!1,this.headerCheckboxElement.indeterminate=!1):this.table.rowManager.rows.length===this.selectedRows.length?(this.headerCheckboxElement.checked=!0,this.headerCheckboxElement.indeterminate=!1):(this.headerCheckboxElement.indeterminate=!0,this.headerCheckboxElement.checked=!1)),this.table.options.rowSelectionChanged.call(this.table,this.getSelectedData(),this.getSelectedRows())},V.prototype.registerRowSelectCheckbox=function(t,e){t._row.modules.select||(t._row.modules.select={}),t._row.modules.select.checkboxEl=e},V.prototype.registerHeaderSelectCheckbox=function(t){this.headerCheckboxElement=t},u.prototype.registerModule("selectRow",V);var W=function(t){this.table=t,this.sortList=[],this.changed=!1};W.prototype.initializeColumn=function(t,e){var o,i,n=this,s=!1;switch(_typeof(t.definition.sorter)){case"string":n.sorters[t.definition.sorter]?s=n.sorters[t.definition.sorter]:console.warn("Sort Error - No such sorter found: ",t.definition.sorter);break;case"function":s=t.definition.sorter}t.modules.sort={sorter:s,dir:"none",params:t.definition.sorterParams||{},startingDir:t.definition.headerSortStartingDir||"asc",tristate:void 0!==t.definition.headerSortTristate?t.definition.headerSortTristate:this.table.options.headerSortTristate},(void 0===t.definition.headerSort?!1!==this.table.options.headerSort:!1!==t.definition.headerSort)&&(o=t.getElement(),o.classList.add("tabulator-sortable"),i=document.createElement("div"),i.classList.add("tabulator-arrow"),e.appendChild(i),o.addEventListener("click",function(e){var o="",i=[],s=!1;if(t.modules.sort){if(t.modules.sort.tristate)o="none"==t.modules.sort.dir?t.modules.sort.startingDir:t.modules.sort.dir==t.modules.sort.startingDir?"asc"==t.modules.sort.dir?"desc":"asc":"none";else switch(t.modules.sort.dir){case"asc":o="desc";break;case"desc":o="asc";break;default:o=t.modules.sort.startingDir}n.table.options.columnHeaderSortMulti&&(e.shiftKey||e.ctrlKey)?(i=n.getSort(),s=i.findIndex(function(e){return e.field===t.getField()}),s>-1?(i[s].dir=o,s!=i.length-1&&(s=i.splice(s,1)[0],"none"!=o&&i.push(s))):"none"!=o&&i.push({column:t,dir:o}),n.setSort(i)):"none"==o?n.clear():n.setSort(t,o),n.table.rowManager.sorterRefresh(!n.sortList.length)}}))},W.prototype.hasChanged=function(){var t=this.changed;return this.changed=!1,t},W.prototype.getSort=function(){var t=this,e=[];return t.sortList.forEach(function(t){t.column&&e.push({column:t.column.getComponent(),field:t.column.getField(),dir:t.dir})}),e},W.prototype.setSort=function(t,e){var o=this,i=[];Array.isArray(t)||(t=[{column:t,dir:e}]),t.forEach(function(t){var e;e=o.table.columnManager.findColumn(t.column),e?(t.column=e,i.push(t),o.changed=!0):console.warn("Sort Warning - Sort field does not exist and is being ignored: ",t.column)}),o.sortList=i,this.table.options.persistentSort&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("sort")},W.prototype.clear=function(){this.setSort([])},W.prototype.findSorter=function(t){var e,o=this.table.rowManager.activeRows[0],i="string";if(o&&(o=o.getData(),t.getField()))switch(e=t.getFieldValue(o),void 0===e?"undefined":_typeof(e)){case"undefined":i="string";break;case"boolean":i="boolean";break;default:isNaN(e)||""===e?e.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)&&(i="alphanum"):i="number"}return this.sorters[i]},W.prototype.sort=function(t){var e,o=this;e=this.table.options.sortOrderReverse?o.sortList.slice().reverse():o.sortList,o.table.options.dataSorting&&o.table.options.dataSorting.call(o.table,o.getSort()),o.clearColumnHeaders(),o.table.options.ajaxSorting?e.forEach(function(t,e){o.setColumnHeader(t.column,t.dir)}):e.forEach(function(i,n){i.column&&i.column.modules.sort&&(i.column.modules.sort.sorter||(i.column.modules.sort.sorter=o.findSorter(i.column)),o._sortItem(t,i.column,i.dir,e,n)),o.setColumnHeader(i.column,i.dir)}),o.table.options.dataSorted&&o.table.options.dataSorted.call(o.table,o.getSort(),o.table.rowManager.getComponents(!0))},W.prototype.clearColumnHeaders=function(){this.table.columnManager.getRealColumns().forEach(function(t){t.modules.sort&&(t.modules.sort.dir="none",t.getElement().setAttribute("aria-sort","none"))})},W.prototype.setColumnHeader=function(t,e){t.modules.sort.dir=e,t.getElement().setAttribute("aria-sort",e)},W.prototype._sortItem=function(t,e,o,i,n){var s=this,r="function"==typeof e.modules.sort.params?e.modules.sort.params(e.getComponent(),o):e.modules.sort.params;t.sort(function(t,a){var l=s._sortRow(t,a,e,o,r);if(0===l&&n)for(var c=n-1;c>=0&&0===(l=s._sortRow(t,a,i[c].column,i[c].dir,r));c--);return l})},W.prototype._sortRow=function(t,e,o,i,n){var s,r,a="asc"==i?t:e,l="asc"==i?e:t;return t=o.getFieldValue(a.getData()),e=o.getFieldValue(l.getData()),t=void 0!==t?t:"",e=void 0!==e?e:"",s=a.getComponent(),r=l.getComponent(),o.modules.sort.sorter.call(this,t,e,s,r,o.getComponent(),i,n)},W.prototype.sorters={number:function(t,e,o,i,n,s,r){var a=r.alignEmptyValues,l=r.decimalSeparator||".",c=r.thousandSeparator||",",u=0;if(t=parseFloat(String(t).split(c).join("").split(l).join(".")),e=parseFloat(String(e).split(c).join("").split(l).join(".")),isNaN(t))u=isNaN(e)?0:-1;else{if(!isNaN(e))return t-e;u=1}return("top"===a&&"desc"===s||"bottom"===a&&"asc"===s)&&(u*=-1),u},string:function(t,e,o,i,n,s,r){var a,l=r.alignEmptyValues,c=0;if(t){if(e){switch(_typeof(r.locale)){case"boolean":r.locale&&(a=this.table.modules.localize.getLocale());break;case"string":a=r.locale}return String(t).toLowerCase().localeCompare(String(e).toLowerCase(),a)}c=1}else c=e?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c},date:function(t,e,o,i,n,s,r){return r.format||(r.format="DD/MM/YYYY"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},time:function(t,e,o,i,n,s,r){return r.format||(r.format="hh:mm"),this.sorters.datetime.call(this,t,e,o,i,n,s,r)},datetime:function(t,e,o,i,n,s,r){var a=r.format||"DD/MM/YYYY hh:mm:ss",l=r.alignEmptyValues,c=0;if("undefined"!=typeof moment){if(t=moment(t,a),e=moment(e,a),t.isValid()){if(e.isValid())return t-e;c=1}else c=e.isValid()?-1:0;return("top"===l&&"desc"===s||"bottom"===l&&"asc"===s)&&(c*=-1),c}console.error("Sort Error - 'datetime' sorter is dependant on moment.js")},boolean:function(t,e,o,i,n,s,r){return(!0===t||"true"===t||"True"===t||1===t?1:0)-(!0===e||"true"===e||"True"===e||1===e?1:0)},array:function(t,e,o,i,n,s,r){function a(t){switch(u){case"length":return t.length;case"sum":return t.reduce(function(t,e){return t+e});case"max":return Math.max.apply(null,t);case"min":return Math.min.apply(null,t);case"avg":return t.reduce(function(t,e){return t+e})/t.length}}var l=0,c=0,u=r.type||"length",d=r.alignEmptyValues,h=0;if(Array.isArray(t)){if(Array.isArray(e))return l=t?a(t):0,c=e?a(e):0,l-c;d=1}else d=Array.isArray(e)?-1:0;return("top"===d&&"desc"===s||"bottom"===d&&"asc"===s)&&(h*=-1),h},exists:function(t,e,o,i,n,s,r){return(void 0===t?0:1)-(void 0===e?0:1)},alphanum:function(t,e,o,i,n,s,r){var a,l,c,u,d,h=0,p=/(\d+)|(\D+)/g,m=/\d/,f=r.alignEmptyValues,g=0;if(t||0===t){if(e||0===e){if(isFinite(t)&&isFinite(e))return t-e;if(a=String(t).toLowerCase(),l=String(e).toLowerCase(),a===l)return 0;if(!m.test(a)||!m.test(l))return a>l?1:-1;for(a=a.match(p),l=l.match(p),d=a.length>l.length?l.length:a.length;h<d;)if(c=a[h],u=l[h++],c!==u)return isFinite(c)&&isFinite(u)?("0"===c.charAt(0)&&(c="."+c),"0"===u.charAt(0)&&(u="."+u),c-u):c>u?1:-1;return a.length>l.length}g=1}else g=e||0===e?-1:0;return("top"===f&&"desc"===s||"bottom"===f&&"asc"===s)&&(g*=-1),g}},u.prototype.registerModule("sort",W);var U=function(t){this.table=t};return U.prototype.initializeColumn=function(t){var e,o=this,i=[];t.definition.validator&&(Array.isArray(t.definition.validator)?t.definition.validator.forEach(function(t){(e=o._extractValidator(t))&&i.push(e)}):(e=this._extractValidator(t.definition.validator))&&i.push(e),t.modules.validate=!!i.length&&i)},U.prototype._extractValidator=function(t){var e,o,i;switch(void 0===t?"undefined":_typeof(t)){case"string":return e=t.split(":",2),o=e.shift(),i=e[0],this._buildValidator(o,i);case"function":return this._buildValidator(t);case"object":return this._buildValidator(t.type,t.parameters)}},U.prototype._buildValidator=function(t,e){var o="function"==typeof t?t:this.validators[t];return o?{type:"function"==typeof t?"function":t,func:o,params:e}:(console.warn("Validator Setup Error - No matching validator found:",t),!1)},U.prototype.validate=function(t,e,o){var i=this,n=[];return t&&t.forEach(function(t){t.func.call(i,e,o,t.params)||n.push({type:t.type,parameters:t.params})}),!n.length||n},U.prototype.validators={integer:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&Math.floor(e)===e},float:function(t,e,o){return""===e||null===e||void 0===e||"number"==typeof(e=Number(e))&&isFinite(e)&&e%1!=0},numeric:function(t,e,o){return""===e||null===e||void 0===e||!isNaN(e)},string:function(t,e,o){return""===e||null===e||void 0===e||isNaN(e)},max:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)<=o},min:function(t,e,o){return""===e||null===e||void 0===e||parseFloat(e)>=o},minLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length>=o},maxLength:function(t,e,o){return""===e||null===e||void 0===e||String(e).length<=o},in:function(t,e,o){return""===e||null===e||void 0===e||("string"==typeof o&&(o=o.split("|")),""===e||o.indexOf(e)>-1)},regex:function(t,e,o){return""===e||null===e||void 0===e||new RegExp(o).test(e)},unique:function(t,e,o){if(""===e||null===e||void 0===e)return!0;var i=!0,n=t.getData(),s=t.getColumn()._getSelf();return this.table.rowManager.rows.forEach(function(t){var o=t.getData();o!==n&&e==s.getFieldValue(o)&&(i=!1)}),i},required:function(t,e,o){return""!==e&&null!==e&&void 0!==e}},u.prototype.registerModule("validate",U),u});
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+
+'use strict';
+
+// https://tc39.github.io/ecma262/#sec-array.prototype.findIndex
+
+var _typeof = typeof Symbol === "function" && typeof Symbol.iterator === "symbol" ? function (obj) { return typeof obj; } : function (obj) { return obj && typeof Symbol === "function" && obj.constructor === Symbol && obj !== Symbol.prototype ? "symbol" : typeof obj; };
+
+if (!Array.prototype.findIndex) {
+
+ Object.defineProperty(Array.prototype, 'findIndex', {
+
+ value: function value(predicate) {
+
+ // 1. Let O be ? ToObject(this value).
+
+ if (this == null) {
+
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+ if (typeof predicate !== 'function') {
+
+ throw new TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+
+ var k = 0;
+
+ // 6. Repeat, while k < len
+
+ while (k < len) {
+
+ // a. Let Pk be ! ToString(k).
+
+ // b. Let kValue be ? Get(O, Pk).
+
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+
+ // d. If testResult is true, return k.
+
+ var kValue = o[k];
+
+ if (predicate.call(thisArg, kValue, k, o)) {
+
+ return k;
+ }
+
+ // e. Increase k by 1.
+
+ k++;
+ }
+
+ // 7. Return -1.
+
+ return -1;
+ }
+
+ });
+}
+
+// https://tc39.github.io/ecma262/#sec-array.prototype.find
+
+if (!Array.prototype.find) {
+
+ Object.defineProperty(Array.prototype, 'find', {
+
+ value: function value(predicate) {
+
+ // 1. Let O be ? ToObject(this value).
+
+ if (this == null) {
+
+ throw new TypeError('"this" is null or not defined');
+ }
+
+ var o = Object(this);
+
+ // 2. Let len be ? ToLength(? Get(O, "length")).
+
+ var len = o.length >>> 0;
+
+ // 3. If IsCallable(predicate) is false, throw a TypeError exception.
+
+ if (typeof predicate !== 'function') {
+
+ throw new TypeError('predicate must be a function');
+ }
+
+ // 4. If thisArg was supplied, let T be thisArg; else let T be undefined.
+
+ var thisArg = arguments[1];
+
+ // 5. Let k be 0.
+
+ var k = 0;
+
+ // 6. Repeat, while k < len
+
+ while (k < len) {
+
+ // a. Let Pk be ! ToString(k).
+
+ // b. Let kValue be ? Get(O, Pk).
+
+ // c. Let testResult be ToBoolean(? Call(predicate, T, « kValue, k, O »)).
+
+ // d. If testResult is true, return kValue.
+
+ var kValue = o[k];
+
+ if (predicate.call(thisArg, kValue, k, o)) {
+
+ return kValue;
+ }
+
+ // e. Increase k by 1.
+
+ k++;
+ }
+
+ // 7. Return undefined.
+
+ return undefined;
+ }
+
+ });
+}
+
+var ColumnManager = function ColumnManager(table) {
+
+ this.table = table; //hold parent table
+
+ this.blockHozScrollEvent = false;
+
+ this.headersElement = this.createHeadersElement();
+
+ this.element = this.createHeaderElement(); //containing element
+
+ this.rowManager = null; //hold row manager object
+
+ this.columns = []; // column definition object
+
+ this.columnsByIndex = []; //columns by index
+
+ this.columnsByField = {}; //columns by field
+
+ this.scrollLeft = 0;
+
+ this.element.insertBefore(this.headersElement, this.element.firstChild);
+};
+
+////////////// Setup Functions /////////////////
+
+
+ColumnManager.prototype.createHeadersElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-headers");
+
+ return el;
+};
+
+ColumnManager.prototype.createHeaderElement = function () {
+
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-header");
+
+ if (!this.table.options.headerVisible) {
+
+ el.classList.add("tabulator-header-hidden");
+ }
+
+ return el;
+};
+
+ColumnManager.prototype.initialize = function () {
+
+ var self = this;
+
+ //scroll body along with header
+
+ // self.element.addEventListener("scroll", function(e){
+
+ // if(!self.blockHozScrollEvent){
+
+ // self.table.rowManager.scrollHorizontal(self.element.scrollLeft);
+
+ // }
+
+ // });
+};
+
+//link to row manager
+
+ColumnManager.prototype.setRowManager = function (manager) {
+
+ this.rowManager = manager;
+};
+
+//return containing element
+
+ColumnManager.prototype.getElement = function () {
+
+ return this.element;
+};
+
+//return header containing element
+
+ColumnManager.prototype.getHeadersElement = function () {
+
+ return this.headersElement;
+};
+
+// ColumnManager.prototype.tempScrollBlock = function(){
+
+// clearTimeout(this.blockHozScrollEvent);
+
+// this.blockHozScrollEvent = setTimeout(() => {this.blockHozScrollEvent = false;}, 50);
+
+// }
+
+
+//scroll horizontally to match table body
+
+ColumnManager.prototype.scrollHorizontal = function (left) {
+
+ var hozAdjust = 0,
+ scrollWidth = this.element.scrollWidth - this.table.element.clientWidth;
+
+ // this.tempScrollBlock();
+
+ this.element.scrollLeft = left;
+
+ //adjust for vertical scrollbar moving table when present
+
+ if (left > scrollWidth) {
+
+ hozAdjust = left - scrollWidth;
+
+ this.element.style.marginLeft = -hozAdjust + "px";
+ } else {
+
+ this.element.style.marginLeft = 0;
+ }
+
+ //keep frozen columns fixed in position
+
+ //this._calcFrozenColumnsPos(hozAdjust + 3);
+
+
+ this.scrollLeft = left;
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.scrollHorizontal();
+ }
+};
+
+///////////// Column Setup Functions /////////////
+
+
+ColumnManager.prototype.generateColumnsFromRowData = function (data) {
+
+ var cols = [],
+ row,
+ sorter;
+
+ if (data && data.length) {
+
+ row = data[0];
+
+ for (var key in row) {
+
+ var col = {
+
+ field: key,
+
+ title: key
+
+ };
+
+ var value = row[key];
+
+ switch (typeof value === 'undefined' ? 'undefined' : _typeof(value)) {
+
+ case "undefined":
+
+ sorter = "string";
+
+ break;
+
+ case "boolean":
+
+ sorter = "boolean";
+
+ break;
+
+ case "object":
+
+ if (Array.isArray(value)) {
+
+ sorter = "array";
+ } else {
+
+ sorter = "string";
+ }
+
+ break;
+
+ default:
+
+ if (!isNaN(value) && value !== "") {
+
+ sorter = "number";
+ } else {
+
+ if (value.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)) {
+
+ sorter = "alphanum";
+ } else {
+
+ sorter = "string";
+ }
+ }
+
+ break;
+
+ }
+
+ col.sorter = sorter;
+
+ cols.push(col);
+ }
+
+ this.table.options.columns = cols;
+
+ this.setColumns(this.table.options.columns);
+ }
+};
+
+ColumnManager.prototype.setColumns = function (cols, row) {
+
+ var self = this;
+
+ while (self.headersElement.firstChild) {
+ self.headersElement.removeChild(self.headersElement.firstChild);
+ }self.columns = [];
+
+ self.columnsByIndex = [];
+
+ self.columnsByField = {};
+
+ //reset frozen columns
+
+ if (self.table.modExists("frozenColumns")) {
+
+ self.table.modules.frozenColumns.reset();
+ }
+
+ cols.forEach(function (def, i) {
+
+ self._addColumn(def);
+ });
+
+ self._reIndexColumns();
+
+ if (self.table.options.responsiveLayout && self.table.modExists("responsiveLayout", true)) {
+
+ self.table.modules.responsiveLayout.initialize();
+ }
+
+ self.redraw(true);
+};
+
+ColumnManager.prototype._addColumn = function (definition, before, nextToColumn) {
+
+ var column = new Column(definition, this),
+ colEl = column.getElement(),
+ index = nextToColumn ? this.findColumnIndex(nextToColumn) : nextToColumn;
+
+ if (nextToColumn && index > -1) {
+
+ var parentIndex = this.columns.indexOf(nextToColumn.getTopColumn());
+
+ var nextEl = nextToColumn.getElement();
+
+ if (before) {
+
+ this.columns.splice(parentIndex, 0, column);
+
+ nextEl.parentNode.insertBefore(colEl, nextEl);
+ } else {
+
+ this.columns.splice(parentIndex + 1, 0, column);
+
+ nextEl.parentNode.insertBefore(colEl, nextEl.nextSibling);
+ }
+ } else {
+
+ if (before) {
+
+ this.columns.unshift(column);
+
+ this.headersElement.insertBefore(column.getElement(), this.headersElement.firstChild);
+ } else {
+
+ this.columns.push(column);
+
+ this.headersElement.appendChild(column.getElement());
+ }
+ }
+
+ return column;
+};
+
+ColumnManager.prototype.registerColumnField = function (col) {
+
+ if (col.definition.field) {
+
+ this.columnsByField[col.definition.field] = col;
+ }
+};
+
+ColumnManager.prototype.registerColumnPosition = function (col) {
+
+ this.columnsByIndex.push(col);
+};
+
+ColumnManager.prototype._reIndexColumns = function () {
+
+ this.columnsByIndex = [];
+
+ this.columns.forEach(function (column) {
+
+ column.reRegisterPosition();
+ });
+};
+
+//ensure column headers take up the correct amount of space in column groups
+
+ColumnManager.prototype._verticalAlignHeaders = function () {
+
+ var self = this,
+ minHeight = 0;
+
+ self.columns.forEach(function (column) {
+
+ var height;
+
+ column.clearVerticalAlign();
+
+ height = column.getHeight();
+
+ if (height > minHeight) {
+
+ minHeight = height;
+ }
+ });
+
+ self.columns.forEach(function (column) {
+
+ column.verticalAlign(self.table.options.columnVertAlign, minHeight);
+ });
+
+ self.rowManager.adjustTableSize();
+};
+
+//////////////// Column Details /////////////////
+
+
+ColumnManager.prototype.findColumn = function (subject) {
+
+ var self = this;
+
+ if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+ if (subject instanceof Column) {
+
+ //subject is column element
+
+ return subject;
+ } else if (subject instanceof ColumnComponent) {
+
+ //subject is public column component
+
+ return subject._getSelf() || false;
+ } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+
+ //subject is a HTML element of the column header
+
+ var match = self.columns.find(function (column) {
+
+ return column.element === subject;
+ });
+
+ return match || false;
+ }
+ } else {
+
+ //subject should be treated as the field name of the column
+
+ return this.columnsByField[subject] || false;
+ }
+
+ //catch all for any other type of input
+
+
+ return false;
+};
+
+ColumnManager.prototype.getColumnByField = function (field) {
+
+ return this.columnsByField[field];
+};
+
+ColumnManager.prototype.getColumnByIndex = function (index) {
+
+ return this.columnsByIndex[index];
+};
+
+ColumnManager.prototype.getFirstVisibileColumn = function (index) {
+
+ var index = this.columnsByIndex.findIndex(function (col) {
+
+ return col.visible;
+ });
+
+ return index > -1 ? this.columnsByIndex[index] : false;
+};
+
+ColumnManager.prototype.getColumns = function () {
+
+ return this.columns;
+};
+
+ColumnManager.prototype.findColumnIndex = function (column) {
+
+ return this.columnsByIndex.findIndex(function (col) {
+
+ return column === col;
+ });
+};
+
+//return all columns that are not groups
+
+ColumnManager.prototype.getRealColumns = function () {
+
+ return this.columnsByIndex;
+};
+
+//travers across columns and call action
+
+ColumnManager.prototype.traverse = function (callback) {
+
+ var self = this;
+
+ self.columnsByIndex.forEach(function (column, i) {
+
+ callback(column, i);
+ });
+};
+
+//get defintions of actual columns
+
+ColumnManager.prototype.getDefinitions = function (active) {
+
+ var self = this,
+ output = [];
+
+ self.columnsByIndex.forEach(function (column) {
+
+ if (!active || active && column.visible) {
+
+ output.push(column.getDefinition());
+ }
+ });
+
+ return output;
+};
+
+//get full nested definition tree
+
+ColumnManager.prototype.getDefinitionTree = function () {
+
+ var self = this,
+ output = [];
+
+ self.columns.forEach(function (column) {
+
+ output.push(column.getDefinition(true));
+ });
+
+ return output;
+};
+
+ColumnManager.prototype.getComponents = function (structured) {
+
+ var self = this,
+ output = [],
+ columns = structured ? self.columns : self.columnsByIndex;
+
+ columns.forEach(function (column) {
+
+ output.push(column.getComponent());
+ });
+
+ return output;
+};
+
+ColumnManager.prototype.getWidth = function () {
+
+ var width = 0;
+
+ this.columnsByIndex.forEach(function (column) {
+
+ if (column.visible) {
+
+ width += column.getWidth();
+ }
+ });
+
+ return width;
+};
+
+ColumnManager.prototype.moveColumn = function (from, to, after) {
+
+ this.moveColumnActual(from, to, after);
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ to.element.parentNode.insertBefore(from.element, to.element);
+
+ if (after) {
+
+ to.element.parentNode.insertBefore(to.element, from.element);
+ }
+
+ this._verticalAlignHeaders();
+
+ this.table.rowManager.reinitialize();
+};
+
+ColumnManager.prototype.moveColumnActual = function (from, to, after) {
+
+ this._moveColumnInArray(this.columns, from, to, after);
+
+ this._moveColumnInArray(this.columnsByIndex, from, to, after, true);
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.options.columnMoved) {
+
+ this.table.options.columnMoved.call(this.table, from.getComponent(), this.table.columnManager.getComponents());
+ }
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+};
+
+ColumnManager.prototype._moveColumnInArray = function (columns, from, to, after, updateRows) {
+
+ var fromIndex = columns.indexOf(from),
+ toIndex;
+
+ if (fromIndex > -1) {
+
+ columns.splice(fromIndex, 1);
+
+ toIndex = columns.indexOf(to);
+
+ if (toIndex > -1) {
+
+ if (after) {
+
+ toIndex = toIndex + 1;
+ }
+ } else {
+
+ toIndex = fromIndex;
+ }
+
+ columns.splice(toIndex, 0, from);
+
+ if (updateRows) {
+
+ this.table.rowManager.rows.forEach(function (row) {
+
+ if (row.cells.length) {
+
+ var cell = row.cells.splice(fromIndex, 1)[0];
+
+ row.cells.splice(toIndex, 0, cell);
+ }
+ });
+ }
+ }
+};
+
+ColumnManager.prototype.scrollToColumn = function (column, position, ifVisible) {
+ var _this = this;
+
+ var left = 0,
+ offset = 0,
+ adjust = 0,
+ colEl = column.getElement();
+
+ return new Promise(function (resolve, reject) {
+
+ if (typeof position === "undefined") {
+
+ position = _this.table.options.scrollToColumnPosition;
+ }
+
+ if (typeof ifVisible === "undefined") {
+
+ ifVisible = _this.table.options.scrollToColumnIfVisible;
+ }
+
+ if (column.visible) {
+
+ //align to correct position
+
+ switch (position) {
+
+ case "middle":
+
+ case "center":
+
+ adjust = -_this.element.clientWidth / 2;
+
+ break;
+
+ case "right":
+
+ adjust = colEl.clientWidth - _this.headersElement.clientWidth;
+
+ break;
+
+ }
+
+ //check column visibility
+
+ if (!ifVisible) {
+
+ offset = colEl.offsetLeft;
+
+ if (offset > 0 && offset + colEl.offsetWidth < _this.element.clientWidth) {
+
+ return false;
+ }
+ }
+
+ //calculate scroll position
+
+ left = colEl.offsetLeft + _this.element.scrollLeft + adjust;
+
+ left = Math.max(Math.min(left, _this.table.rowManager.element.scrollWidth - _this.table.rowManager.element.clientWidth), 0);
+
+ _this.table.rowManager.scrollHorizontal(left);
+
+ _this.scrollHorizontal(left);
+
+ resolve();
+ } else {
+
+ console.warn("Scroll Error - Column not visible");
+
+ reject("Scroll Error - Column not visible");
+ }
+ });
+};
+
+//////////////// Cell Management /////////////////
+
+
+ColumnManager.prototype.generateCells = function (row) {
+
+ var self = this;
+
+ var cells = [];
+
+ self.columnsByIndex.forEach(function (column) {
+
+ cells.push(column.generateCell(row));
+ });
+
+ return cells;
+};
+
+//////////////// Column Management /////////////////
+
+
+ColumnManager.prototype.getFlexBaseWidth = function () {
+
+ var self = this,
+ totalWidth = self.table.element.clientWidth,
+ //table element width
+
+ fixedWidth = 0;
+
+ //adjust for vertical scrollbar if present
+
+ if (self.rowManager.element.scrollHeight > self.rowManager.element.clientHeight) {
+
+ totalWidth -= self.rowManager.element.offsetWidth - self.rowManager.element.clientWidth;
+ }
+
+ this.columnsByIndex.forEach(function (column) {
+
+ var width, minWidth, colWidth;
+
+ if (column.visible) {
+
+ width = column.definition.width || 0;
+
+ minWidth = typeof column.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(column.minWidth);
+
+ if (typeof width == "string") {
+
+ if (width.indexOf("%") > -1) {
+
+ colWidth = totalWidth / 100 * parseInt(width);
+ } else {
+
+ colWidth = parseInt(width);
+ }
+ } else {
+
+ colWidth = width;
+ }
+
+ fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+ }
+ });
+
+ return fixedWidth;
+};
+
+ColumnManager.prototype.addColumn = function (definition, before, nextToColumn) {
+
+ var column = this._addColumn(definition, before, nextToColumn);
+
+ this._reIndexColumns();
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ this.redraw();
+
+ if (this.table.modules.layout.getMode() != "fitColumns") {
+
+ column.reinitializeWidth();
+ }
+
+ this._verticalAlignHeaders();
+
+ this.table.rowManager.reinitialize();
+};
+
+//remove column from system
+
+ColumnManager.prototype.deregisterColumn = function (column) {
+
+ var field = column.getField(),
+ index;
+
+ //remove from field list
+
+ if (field) {
+
+ delete this.columnsByField[field];
+ }
+
+ //remove from index list
+
+ index = this.columnsByIndex.indexOf(column);
+
+ if (index > -1) {
+
+ this.columnsByIndex.splice(index, 1);
+ }
+
+ //remove from column list
+
+ index = this.columns.indexOf(column);
+
+ if (index > -1) {
+
+ this.columns.splice(index, 1);
+ }
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.initialize();
+ }
+
+ this.redraw();
+};
+
+//redraw columns
+
+ColumnManager.prototype.redraw = function (force) {
+
+ if (force) {
+
+ if (Tabulator.prototype.helpers.elVisible(this.element)) {
+
+ this._verticalAlignHeaders();
+ }
+
+ this.table.rowManager.resetScroll();
+
+ this.table.rowManager.reinitialize();
+ }
+
+ if (this.table.modules.layout.getMode() == "fitColumns") {
+
+ this.table.modules.layout.layout();
+ } else {
+
+ if (force) {
+
+ this.table.modules.layout.layout();
+ } else {
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ }
+ }
+
+ if (this.table.modExists("frozenColumns")) {
+
+ this.table.modules.frozenColumns.layout();
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ if (force) {
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+
+ this.table.modules.columnCalcs.redraw();
+ }
+ }
+
+ this.table.footerManager.redraw();
+};
+
+//public column object
+var ColumnComponent = function ColumnComponent(column) {
+ this._column = column;
+ this.type = "ColumnComponent";
+};
+
+ColumnComponent.prototype.getElement = function () {
+ return this._column.getElement();
+};
+
+ColumnComponent.prototype.getDefinition = function () {
+ return this._column.getDefinition();
+};
+
+ColumnComponent.prototype.getField = function () {
+ return this._column.getField();
+};
+
+ColumnComponent.prototype.getCells = function () {
+ var cells = [];
+
+ this._column.cells.forEach(function (cell) {
+ cells.push(cell.getComponent());
+ });
+
+ return cells;
+};
+
+ColumnComponent.prototype.getVisibility = function () {
+ return this._column.visible;
+};
+
+ColumnComponent.prototype.show = function () {
+ if (this._column.isGroup) {
+ this._column.columns.forEach(function (column) {
+ column.show();
+ });
+ } else {
+ this._column.show();
+ }
+};
+
+ColumnComponent.prototype.hide = function () {
+ if (this._column.isGroup) {
+ this._column.columns.forEach(function (column) {
+ column.hide();
+ });
+ } else {
+ this._column.hide();
+ }
+};
+
+ColumnComponent.prototype.toggle = function () {
+ if (this._column.visible) {
+ this.hide();
+ } else {
+ this.show();
+ }
+};
+
+ColumnComponent.prototype.delete = function () {
+ this._column.delete();
+};
+
+ColumnComponent.prototype.getSubColumns = function () {
+ var output = [];
+
+ if (this._column.columns.length) {
+ this._column.columns.forEach(function (column) {
+ output.push(column.getComponent());
+ });
+ }
+
+ return output;
+};
+
+ColumnComponent.prototype.getParentColumn = function () {
+ return this._column.parent instanceof Column ? this._column.parent.getComponent() : false;
+};
+
+ColumnComponent.prototype._getSelf = function () {
+ return this._column;
+};
+
+ColumnComponent.prototype.scrollTo = function () {
+ return this._column.table.columnManager.scrollToColumn(this._column);
+};
+
+ColumnComponent.prototype.getTable = function () {
+ return this._column.table;
+};
+
+ColumnComponent.prototype.headerFilterFocus = function () {
+ if (this._column.table.modExists("filter", true)) {
+ this._column.table.modules.filter.setHeaderFilterFocus(this._column);
+ }
+};
+
+ColumnComponent.prototype.reloadHeaderFilter = function () {
+ if (this._column.table.modExists("filter", true)) {
+ this._column.table.modules.filter.reloadHeaderFilter(this._column);
+ }
+};
+
+ColumnComponent.prototype.setHeaderFilterValue = function (value) {
+ if (this._column.table.modExists("filter", true)) {
+ this._column.table.modules.filter.setHeaderFilterValue(this._column, value);
+ }
+};
+
+ColumnComponent.prototype.move = function (to, after) {
+ var toColumn = this._column.table.columnManager.findColumn(to);
+
+ if (toColumn) {
+ this._column.table.columnManager.moveColumn(this._column, toColumn, after);
+ } else {
+ console.warn("Move Error - No matching column found:", toColumn);
+ }
+};
+
+ColumnComponent.prototype.getNextColumn = function () {
+ var nextCol = this._column.nextColumn();
+
+ return nextCol ? nextCol.getComponent() : false;
+};
+
+ColumnComponent.prototype.getPrevColumn = function () {
+ var prevCol = this._column.prevColumn();
+
+ return prevCol ? prevCol.getComponent() : false;
+};
+
+var Column = function Column(def, parent) {
+ var self = this;
+
+ this.table = parent.table;
+ this.definition = def; //column definition
+ this.parent = parent; //hold parent object
+ this.type = "column"; //type of element
+ this.columns = []; //child columns
+ this.cells = []; //cells bound to this column
+ this.element = this.createElement(); //column header element
+ this.contentElement = false;
+ this.groupElement = this.createGroupElement(); //column group holder element
+ this.isGroup = false;
+ this.tooltip = false; //hold column tooltip
+ this.hozAlign = ""; //horizontal text alignment
+
+ //multi dimensional filed handling
+ this.field = "";
+ this.fieldStructure = "";
+ this.getFieldValue = "";
+ this.setFieldValue = "";
+
+ this.setField(this.definition.field);
+
+ if (this.table.options.invalidOptionWarnings) {
+ this.checkDefinition();
+ }
+
+ this.modules = {}; //hold module variables;
+
+ this.cellEvents = {
+ cellClick: false,
+ cellDblClick: false,
+ cellContext: false,
+ cellTap: false,
+ cellDblTap: false,
+ cellTapHold: false,
+ cellMouseEnter: false,
+ cellMouseLeave: false,
+ cellMouseOver: false,
+ cellMouseOut: false,
+ cellMouseMove: false
+ };
+
+ this.width = null; //column width
+ this.widthStyled = ""; //column width prestyled to improve render efficiency
+ this.minWidth = null; //column minimum width
+ this.minWidthStyled = ""; //column minimum prestyled to improve render efficiency
+ this.widthFixed = false; //user has specified a width for this column
+
+ this.visible = true; //default visible state
+
+ this._mapDepricatedFunctionality();
+
+ //initialize column
+ if (def.columns) {
+
+ this.isGroup = true;
+
+ def.columns.forEach(function (def, i) {
+ var newCol = new Column(def, self);
+ self.attachColumn(newCol);
+ });
+
+ self.checkColumnVisibility();
+ } else {
+ parent.registerColumnField(this);
+ }
+
+ if (def.rowHandle && this.table.options.movableRows !== false && this.table.modExists("moveRow")) {
+ this.table.modules.moveRow.setHandle(true);
+ }
+
+ this._buildHeader();
+};
+
+Column.prototype.createElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col");
+ el.setAttribute("role", "columnheader");
+ el.setAttribute("aria-sort", "none");
+
+ return el;
+};
+
+Column.prototype.createGroupElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-col-group-cols");
+
+ return el;
+};
+
+Column.prototype.checkDefinition = function () {
+ var _this2 = this;
+
+ Object.keys(this.definition).forEach(function (key) {
+ if (_this2.defaultOptionList.indexOf(key) === -1) {
+ console.warn("Invalid column definition option in '" + (_this2.field || _this2.definition.title) + "' column:", key);
+ }
+ });
+};
+
+Column.prototype.setField = function (field) {
+ this.field = field;
+ this.fieldStructure = field ? this.table.options.nestedFieldSeparator ? field.split(this.table.options.nestedFieldSeparator) : [field] : [];
+ this.getFieldValue = this.fieldStructure.length > 1 ? this._getNestedData : this._getFlatData;
+ this.setFieldValue = this.fieldStructure.length > 1 ? this._setNesteData : this._setFlatData;
+};
+
+//register column position with column manager
+Column.prototype.registerColumnPosition = function (column) {
+ this.parent.registerColumnPosition(column);
+};
+
+//register column position with column manager
+Column.prototype.registerColumnField = function (column) {
+ this.parent.registerColumnField(column);
+};
+
+//trigger position registration
+Column.prototype.reRegisterPosition = function () {
+ if (this.isGroup) {
+ this.columns.forEach(function (column) {
+ column.reRegisterPosition();
+ });
+ } else {
+ this.registerColumnPosition(this);
+ }
+};
+
+Column.prototype._mapDepricatedFunctionality = function () {
+ if (typeof this.definition.hideInHtml !== "undefined") {
+ this.definition.htmlOutput = !this.definition.hideInHtml;
+ console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput");
+ }
+};
+
+Column.prototype.setTooltip = function () {
+ var self = this,
+ def = self.definition;
+
+ //set header tooltips
+ var tooltip = def.headerTooltip || def.tooltip === false ? def.headerTooltip : self.table.options.tooltipsHeader;
+
+ if (tooltip) {
+ if (tooltip === true) {
+ if (def.field) {
+ self.table.modules.localize.bind("columns|" + def.field, function (value) {
+ self.element.setAttribute("title", value || def.title);
+ });
+ } else {
+ self.element.setAttribute("title", def.title);
+ }
+ } else {
+ if (typeof tooltip == "function") {
+ tooltip = tooltip(self.getComponent());
+
+ if (tooltip === false) {
+ tooltip = "";
+ }
+ }
+
+ self.element.setAttribute("title", tooltip);
+ }
+ } else {
+ self.element.setAttribute("title", "");
+ }
+};
+
+//build header element
+Column.prototype._buildHeader = function () {
+ var self = this,
+ def = self.definition;
+
+ while (self.element.firstChild) {
+ self.element.removeChild(self.element.firstChild);
+ }if (def.headerVertical) {
+ self.element.classList.add("tabulator-col-vertical");
+
+ if (def.headerVertical === "flip") {
+ self.element.classList.add("tabulator-col-vertical-flip");
+ }
+ }
+
+ self.contentElement = self._bindEvents();
+
+ self.contentElement = self._buildColumnHeaderContent();
+
+ self.element.appendChild(self.contentElement);
+
+ if (self.isGroup) {
+ self._buildGroupHeader();
+ } else {
+ self._buildColumnHeader();
+ }
+
+ self.setTooltip();
+
+ //set resizable handles
+ if (self.table.options.resizableColumns && self.table.modExists("resizeColumns")) {
+ self.table.modules.resizeColumns.initializeColumn("header", self, self.element);
+ }
+
+ //set resizable handles
+ if (def.headerFilter && self.table.modExists("filter") && self.table.modExists("edit")) {
+ if (typeof def.headerFilterPlaceholder !== "undefined" && def.field) {
+ self.table.modules.localize.setHeaderFilterColumnPlaceholder(def.field, def.headerFilterPlaceholder);
+ }
+
+ self.table.modules.filter.initializeColumn(self);
+ }
+
+ //set resizable handles
+ if (self.table.modExists("frozenColumns")) {
+ self.table.modules.frozenColumns.initializeColumn(self);
+ }
+
+ //set movable column
+ if (self.table.options.movableColumns && !self.isGroup && self.table.modExists("moveColumn")) {
+ self.table.modules.moveColumn.initializeColumn(self);
+ }
+
+ //set calcs column
+ if ((def.topCalc || def.bottomCalc) && self.table.modExists("columnCalcs")) {
+ self.table.modules.columnCalcs.initializeColumn(self);
+ }
+
+ //update header tooltip on mouse enter
+ self.element.addEventListener("mouseenter", function (e) {
+ self.setTooltip();
+ });
+};
+
+Column.prototype._bindEvents = function () {
+
+ var self = this,
+ def = self.definition,
+ dblTap,
+ tapHold,
+ tap;
+
+ //setup header click event bindings
+ if (typeof def.headerClick == "function") {
+ self.element.addEventListener("click", function (e) {
+ def.headerClick(e, self.getComponent());
+ });
+ }
+
+ if (typeof def.headerDblClick == "function") {
+ self.element.addEventListener("dblclick", function (e) {
+ def.headerDblClick(e, self.getComponent());
+ });
+ }
+
+ if (typeof def.headerContext == "function") {
+ self.element.addEventListener("contextmenu", function (e) {
+ def.headerContext(e, self.getComponent());
+ });
+ }
+
+ //setup header tap event bindings
+ if (typeof def.headerTap == "function") {
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ if (tap) {
+ def.headerTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (typeof def.headerDblTap == "function") {
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+ clearTimeout(dblTap);
+ dblTap = null;
+
+ def.headerDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+ clearTimeout(dblTap);
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (typeof def.headerTapHold == "function") {
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+ clearTimeout(tapHold);
+ tapHold = null;
+ tap = false;
+ def.headerTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ clearTimeout(tapHold);
+ tapHold = null;
+ });
+ }
+
+ //store column cell click event bindings
+ if (typeof def.cellClick == "function") {
+ self.cellEvents.cellClick = def.cellClick;
+ }
+
+ if (typeof def.cellDblClick == "function") {
+ self.cellEvents.cellDblClick = def.cellDblClick;
+ }
+
+ if (typeof def.cellContext == "function") {
+ self.cellEvents.cellContext = def.cellContext;
+ }
+
+ //store column mouse event bindings
+ if (typeof def.cellMouseEnter == "function") {
+ self.cellEvents.cellMouseEnter = def.cellMouseEnter;
+ }
+
+ if (typeof def.cellMouseLeave == "function") {
+ self.cellEvents.cellMouseLeave = def.cellMouseLeave;
+ }
+
+ if (typeof def.cellMouseOver == "function") {
+ self.cellEvents.cellMouseOver = def.cellMouseOver;
+ }
+
+ if (typeof def.cellMouseOut == "function") {
+ self.cellEvents.cellMouseOut = def.cellMouseOut;
+ }
+
+ if (typeof def.cellMouseMove == "function") {
+ self.cellEvents.cellMouseMove = def.cellMouseMove;
+ }
+
+ //setup column cell tap event bindings
+ if (typeof def.cellTap == "function") {
+ self.cellEvents.cellTap = def.cellTap;
+ }
+
+ if (typeof def.cellDblTap == "function") {
+ self.cellEvents.cellDblTap = def.cellDblTap;
+ }
+
+ if (typeof def.cellTapHold == "function") {
+ self.cellEvents.cellTapHold = def.cellTapHold;
+ }
+
+ //setup column cell edit callbacks
+ if (typeof def.cellEdited == "function") {
+ self.cellEvents.cellEdited = def.cellEdited;
+ }
+
+ if (typeof def.cellEditing == "function") {
+ self.cellEvents.cellEditing = def.cellEditing;
+ }
+
+ if (typeof def.cellEditCancelled == "function") {
+ self.cellEvents.cellEditCancelled = def.cellEditCancelled;
+ }
+};
+
+//build header element for header
+Column.prototype._buildColumnHeader = function () {
+ var self = this,
+ def = self.definition,
+ table = self.table,
+ sortable;
+
+ //set column sorter
+ if (table.modExists("sort")) {
+ table.modules.sort.initializeColumn(self, self.contentElement);
+ }
+
+ //set column formatter
+ if (table.modExists("format")) {
+ table.modules.format.initializeColumn(self);
+ }
+
+ //set column editor
+ if (typeof def.editor != "undefined" && table.modExists("edit")) {
+ table.modules.edit.initializeColumn(self);
+ }
+
+ //set colum validator
+ if (typeof def.validator != "undefined" && table.modExists("validate")) {
+ table.modules.validate.initializeColumn(self);
+ }
+
+ //set column mutator
+ if (table.modExists("mutator")) {
+ table.modules.mutator.initializeColumn(self);
+ }
+
+ //set column accessor
+ if (table.modExists("accessor")) {
+ table.modules.accessor.initializeColumn(self);
+ }
+
+ //set respoviveLayout
+ if (_typeof(table.options.responsiveLayout) && table.modExists("responsiveLayout")) {
+ table.modules.responsiveLayout.initializeColumn(self);
+ }
+
+ //set column visibility
+ if (typeof def.visible != "undefined") {
+ if (def.visible) {
+ self.show(true);
+ } else {
+ self.hide(true);
+ }
+ }
+
+ //asign additional css classes to column header
+ if (def.cssClass) {
+ var classeNames = def.cssClass.split(" ");
+ classeNames.forEach(function (className) {
+ self.element.classList.add(className);
+ });
+ }
+
+ if (def.field) {
+ this.element.setAttribute("tabulator-field", def.field);
+ }
+
+ //set min width if present
+ self.setMinWidth(typeof def.minWidth == "undefined" ? self.table.options.columnMinWidth : parseInt(def.minWidth));
+
+ self.reinitializeWidth();
+
+ //set tooltip if present
+ self.tooltip = self.definition.tooltip || self.definition.tooltip === false ? self.definition.tooltip : self.table.options.tooltips;
+
+ //set orizontal text alignment
+ self.hozAlign = typeof self.definition.align == "undefined" ? "" : self.definition.align;
+};
+
+Column.prototype._buildColumnHeaderContent = function () {
+ var self = this,
+ def = self.definition,
+ table = self.table;
+
+ var contentElement = document.createElement("div");
+ contentElement.classList.add("tabulator-col-content");
+
+ contentElement.appendChild(self._buildColumnHeaderTitle());
+
+ return contentElement;
+};
+
+//build title element of column
+Column.prototype._buildColumnHeaderTitle = function () {
+ var self = this,
+ def = self.definition,
+ table = self.table,
+ title;
+
+ var titleHolderElement = document.createElement("div");
+ titleHolderElement.classList.add("tabulator-col-title");
+
+ if (def.editableTitle) {
+ var titleElement = document.createElement("input");
+ titleElement.classList.add("tabulator-title-editor");
+
+ titleElement.addEventListener("click", function (e) {
+ e.stopPropagation();
+ titleElement.focus();
+ });
+
+ titleElement.addEventListener("change", function () {
+ def.title = titleElement.value;
+ table.options.columnTitleChanged.call(self.table, self.getComponent());
+ });
+
+ titleHolderElement.appendChild(titleElement);
+
+ if (def.field) {
+ table.modules.localize.bind("columns|" + def.field, function (text) {
+ titleElement.value = text || def.title || " ";
+ });
+ } else {
+ titleElement.value = def.title || " ";
+ }
+ } else {
+ if (def.field) {
+ table.modules.localize.bind("columns|" + def.field, function (text) {
+ self._formatColumnHeaderTitle(titleHolderElement, text || def.title || " ");
+ });
+ } else {
+ self._formatColumnHeaderTitle(titleHolderElement, def.title || " ");
+ }
+ }
+
+ return titleHolderElement;
+};
+
+Column.prototype._formatColumnHeaderTitle = function (el, title) {
+ var formatter, contents, params, mockCell;
+
+ if (this.definition.titleFormatter && this.table.modExists("format")) {
+
+ formatter = this.table.modules.format.getFormatter(this.definition.titleFormatter);
+
+ mockCell = {
+ getValue: function getValue() {
+ return title;
+ },
+ getElement: function getElement() {
+ return el;
+ }
+ };
+
+ params = this.definition.titleFormatterParams || {};
+
+ params = typeof params === "function" ? params() : params;
+
+ contents = formatter.call(this.table.modules.format, mockCell, params);
+
+ switch (typeof contents === 'undefined' ? 'undefined' : _typeof(contents)) {
+ case "object":
+ if (contents instanceof Node) {
+ el.appendChild(contents);
+ } else {
+ el.innerHTML = "";
+ console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", contents);
+ }
+ break;
+ case "undefined":
+ case "null":
+ el.innerHTML = "";
+ break;
+ default:
+ el.innerHTML = contents;
+ }
+ } else {
+ el.innerHTML = title;
+ }
+};
+
+//build header element for column group
+Column.prototype._buildGroupHeader = function () {
+ this.element.classList.add("tabulator-col-group");
+ this.element.setAttribute("role", "columngroup");
+ this.element.setAttribute("aria-title", this.definition.title);
+
+ this.element.appendChild(this.groupElement);
+};
+
+//flat field lookup
+Column.prototype._getFlatData = function (data) {
+ return data[this.field];
+};
+
+//nested field lookup
+Column.prototype._getNestedData = function (data) {
+ var dataObj = data,
+ structure = this.fieldStructure,
+ length = structure.length,
+ output;
+
+ for (var i = 0; i < length; i++) {
+
+ dataObj = dataObj[structure[i]];
+
+ output = dataObj;
+
+ if (!dataObj) {
+ break;
+ }
+ }
+
+ return output;
+};
+
+//flat field set
+Column.prototype._setFlatData = function (data, value) {
+ if (this.field) {
+ data[this.field] = value;
+ }
+};
+
+//nested field set
+Column.prototype._setNesteData = function (data, value) {
+ var dataObj = data,
+ structure = this.fieldStructure,
+ length = structure.length;
+
+ for (var i = 0; i < length; i++) {
+
+ if (i == length - 1) {
+ dataObj[structure[i]] = value;
+ } else {
+ if (!dataObj[structure[i]]) {
+ dataObj[structure[i]] = {};
+ }
+
+ dataObj = dataObj[structure[i]];
+ }
+ }
+};
+
+//attach column to this group
+Column.prototype.attachColumn = function (column) {
+ var self = this;
+
+ if (self.groupElement) {
+ self.columns.push(column);
+ self.groupElement.appendChild(column.getElement());
+ } else {
+ console.warn("Column Warning - Column being attached to another column instead of column group");
+ }
+};
+
+//vertically align header in column
+Column.prototype.verticalAlign = function (alignment, height) {
+
+ //calculate height of column header and group holder element
+ var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : height || this.parent.getHeadersElement().clientHeight;
+ // var parentHeight = this.parent.isGroup ? this.parent.getGroupElement().clientHeight : this.parent.getHeadersElement().clientHeight;
+
+ this.element.style.height = parentHeight + "px";
+
+ if (this.isGroup) {
+ this.groupElement.style.minHeight = parentHeight - this.contentElement.offsetHeight + "px";
+ }
+
+ //vertically align cell contents
+ if (!this.isGroup && alignment !== "top") {
+ if (alignment === "bottom") {
+ this.element.style.paddingTop = this.element.clientHeight - this.contentElement.offsetHeight + "px";
+ } else {
+ this.element.style.paddingTop = (this.element.clientHeight - this.contentElement.offsetHeight) / 2 + "px";
+ }
+ }
+
+ this.columns.forEach(function (column) {
+ column.verticalAlign(alignment);
+ });
+};
+
+//clear vertical alignmenet
+Column.prototype.clearVerticalAlign = function () {
+ this.element.style.paddingTop = "";
+ this.element.style.height = "";
+ this.element.style.minHeight = "";
+ this.groupElement.style.minHeight = "";
+
+ this.columns.forEach(function (column) {
+ column.clearVerticalAlign();
+ });
+};
+
+//// Retreive Column Information ////
+
+//return column header element
+Column.prototype.getElement = function () {
+ return this.element;
+};
+
+//return colunm group element
+Column.prototype.getGroupElement = function () {
+ return this.groupElement;
+};
+
+//return field name
+Column.prototype.getField = function () {
+ return this.field;
+};
+
+//return the first column in a group
+Column.prototype.getFirstColumn = function () {
+ if (!this.isGroup) {
+ return this;
+ } else {
+ if (this.columns.length) {
+ return this.columns[0].getFirstColumn();
+ } else {
+ return false;
+ }
+ }
+};
+
+//return the last column in a group
+Column.prototype.getLastColumn = function () {
+ if (!this.isGroup) {
+ return this;
+ } else {
+ if (this.columns.length) {
+ return this.columns[this.columns.length - 1].getLastColumn();
+ } else {
+ return false;
+ }
+ }
+};
+
+//return all columns in a group
+Column.prototype.getColumns = function () {
+ return this.columns;
+};
+
+//return all columns in a group
+Column.prototype.getCells = function () {
+ return this.cells;
+};
+
+//retreive the top column in a group of columns
+Column.prototype.getTopColumn = function () {
+ if (this.parent.isGroup) {
+ return this.parent.getTopColumn();
+ } else {
+ return this;
+ }
+};
+
+//return column definition object
+Column.prototype.getDefinition = function (updateBranches) {
+ var colDefs = [];
+
+ if (this.isGroup && updateBranches) {
+ this.columns.forEach(function (column) {
+ colDefs.push(column.getDefinition(true));
+ });
+
+ this.definition.columns = colDefs;
+ }
+
+ return this.definition;
+};
+
+//////////////////// Actions ////////////////////
+
+Column.prototype.checkColumnVisibility = function () {
+ var visible = false;
+
+ this.columns.forEach(function (column) {
+ if (column.visible) {
+ visible = true;
+ }
+ });
+
+ if (visible) {
+ this.show();
+ this.parent.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+ } else {
+ this.hide();
+ }
+};
+
+//show column
+Column.prototype.show = function (silent, responsiveToggle) {
+ if (!this.visible) {
+ this.visible = true;
+
+ this.element.style.display = "";
+
+ if (this.parent.isGroup) {
+ this.parent.checkColumnVisibility();
+ }
+
+ this.cells.forEach(function (cell) {
+ cell.show();
+ });
+
+ if (!this.isGroup && this.width === null) {
+ this.reinitializeWidth();
+ }
+
+ this.table.columnManager._verticalAlignHeaders();
+
+ if (this.table.options.persistentLayout && this.table.modExists("responsiveLayout", true)) {
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+ this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+ }
+
+ if (!silent) {
+ this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), true);
+ }
+
+ if (this.parent.isGroup) {
+ this.parent.matchChildWidths();
+ }
+ }
+};
+
+//hide column
+Column.prototype.hide = function (silent, responsiveToggle) {
+ if (this.visible) {
+ this.visible = false;
+
+ this.element.style.display = "none";
+
+ this.table.columnManager._verticalAlignHeaders();
+
+ if (this.parent.isGroup) {
+ this.parent.checkColumnVisibility();
+ }
+
+ this.cells.forEach(function (cell) {
+ cell.hide();
+ });
+
+ if (this.table.options.persistentLayout && this.table.modExists("persistence", true)) {
+ this.table.modules.persistence.save("columns");
+ }
+
+ if (!responsiveToggle && this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+ this.table.modules.responsiveLayout.updateColumnVisibility(this, this.visible);
+ }
+
+ if (!silent) {
+ this.table.options.columnVisibilityChanged.call(this.table, this.getComponent(), false);
+ }
+
+ if (this.parent.isGroup) {
+ this.parent.matchChildWidths();
+ }
+ }
+};
+
+Column.prototype.matchChildWidths = function () {
+ var childWidth = 0;
+
+ if (this.contentElement && this.columns.length) {
+ this.columns.forEach(function (column) {
+ if (column.visible) {
+ childWidth += column.getWidth();
+ }
+ });
+
+ this.contentElement.style.maxWidth = childWidth - 1 + "px";
+ }
+};
+
+Column.prototype.setWidth = function (width) {
+ this.widthFixed = true;
+ this.setWidthActual(width);
+};
+
+Column.prototype.setWidthActual = function (width) {
+ if (isNaN(width)) {
+ width = Math.floor(this.table.element.clientWidth / 100 * parseInt(width));
+ }
+
+ width = Math.max(this.minWidth, width);
+
+ this.width = width;
+ this.widthStyled = width ? width + "px" : "";
+
+ this.element.style.width = this.widthStyled;
+
+ if (!this.isGroup) {
+ this.cells.forEach(function (cell) {
+ cell.setWidth();
+ });
+ }
+
+ if (this.parent.isGroup) {
+ this.parent.matchChildWidths();
+ }
+
+ //set resizable handles
+ if (this.table.modExists("frozenColumns")) {
+ this.table.modules.frozenColumns.layout();
+ }
+};
+
+Column.prototype.checkCellHeights = function () {
+ var rows = [];
+
+ this.cells.forEach(function (cell) {
+ if (cell.row.heightInitialized) {
+ if (cell.row.getElement().offsetParent !== null) {
+ rows.push(cell.row);
+ cell.row.clearCellHeight();
+ } else {
+ cell.row.heightInitialized = false;
+ }
+ }
+ });
+
+ rows.forEach(function (row) {
+ row.calcHeight();
+ });
+
+ rows.forEach(function (row) {
+ row.setCellHeight();
+ });
+};
+
+Column.prototype.getWidth = function () {
+ // return this.element.offsetWidth;
+ return this.width;
+};
+
+Column.prototype.getHeight = function () {
+ return this.element.offsetHeight;
+};
+
+Column.prototype.setMinWidth = function (minWidth) {
+ this.minWidth = minWidth;
+ this.minWidthStyled = minWidth ? minWidth + "px" : "";
+
+ this.element.style.minWidth = this.minWidthStyled;
+
+ this.cells.forEach(function (cell) {
+ cell.setMinWidth();
+ });
+};
+
+Column.prototype.delete = function () {
+ if (this.isGroup) {
+ this.columns.forEach(function (column) {
+ column.delete();
+ });
+ }
+
+ var cellCount = this.cells.length;
+
+ for (var i = 0; i < cellCount; i++) {
+ this.cells[0].delete();
+ }
+
+ this.element.parentNode.removeChild(this.element);
+
+ this.table.columnManager.deregisterColumn(this);
+};
+
+//////////////// Cell Management /////////////////
+
+//generate cell for this column
+Column.prototype.generateCell = function (row) {
+ var self = this;
+
+ var cell = new Cell(self, row);
+
+ this.cells.push(cell);
+
+ return cell;
+};
+
+Column.prototype.nextColumn = function () {
+ var index = this.table.columnManager.findColumnIndex(this);
+ return index > -1 ? this._nextVisibleColumn(index + 1) : false;
+};
+
+Column.prototype._nextVisibleColumn = function (index) {
+ var column = this.table.columnManager.getColumnByIndex(index);
+ return !column || column.visible ? column : this._nextVisibleColumn(index + 1);
+};
+
+Column.prototype.prevColumn = function () {
+ var index = this.table.columnManager.findColumnIndex(this);
+ return index > -1 ? this._prevVisibleColumn(index - 1) : false;
+};
+
+Column.prototype._prevVisibleColumn = function (index) {
+ var column = this.table.columnManager.getColumnByIndex(index);
+ return !column || column.visible ? column : this._prevVisibleColumn(index - 1);
+};
+
+Column.prototype.reinitializeWidth = function (force) {
+ this.widthFixed = false;
+
+ //set width if present
+ if (typeof this.definition.width !== "undefined" && !force) {
+ this.setWidth(this.definition.width);
+ }
+
+ //hide header filters to prevent them altering column width
+ if (this.table.modExists("filter")) {
+ this.table.modules.filter.hideHeaderFilterElements();
+ }
+
+ this.fitToData();
+
+ //show header filters again after layout is complete
+ if (this.table.modExists("filter")) {
+ this.table.modules.filter.showHeaderFilterElements();
+ }
+};
+
+//set column width to maximum cell width
+Column.prototype.fitToData = function () {
+ var self = this;
+
+ if (!this.widthFixed) {
+ this.element.style.width = "";
+
+ self.cells.forEach(function (cell) {
+ cell.clearWidth();
+ });
+ }
+
+ var maxWidth = this.element.offsetWidth;
+
+ if (!self.width || !this.widthFixed) {
+ self.cells.forEach(function (cell) {
+ var width = cell.getWidth();
+
+ if (width > maxWidth) {
+ maxWidth = width;
+ }
+ });
+
+ if (maxWidth) {
+ self.setWidthActual(maxWidth + 1);
+ }
+ }
+};
+
+Column.prototype.deleteCell = function (cell) {
+ var index = this.cells.indexOf(cell);
+
+ if (index > -1) {
+ this.cells.splice(index, 1);
+ }
+};
+
+Column.prototype.defaultOptionList = ["title", "field", "columns", "visible", "align", "width", "minWidth", "widthGrow", "widthShrink", "resizable", "frozen", "responsive", "tooltip", "cssClass", "rowHandle", "hideInHtml", "print", "htmlOutput", "sorter", "sorterParams", "formatter", "formatterParams", "variableHeight", "editable", "editor", "editorParams", "validator", "mutator", "mutatorParams", "mutatorData", "mutatorDataParams", "mutatorEdit", "mutatorEditParams", "mutatorClipboard", "mutatorClipboardParams", "accessor", "accessorParams", "accessorData", "accessorDataParams", "accessorDownload", "accessorDownloadParams", "accessorClipboard", "accessorClipboardParams", "clipboard", "download", "downloadTitle", "topCalc", "topCalcParams", "topCalcFormatter", "topCalcFormatterParams", "bottomCalc", "bottomCalcParams", "bottomCalcFormatter", "bottomCalcFormatterParams", "cellClick", "cellDblClick", "cellContext", "cellTap", "cellDblTap", "cellTapHold", "cellMouseEnter", "cellMouseLeave", "cellMouseOver", "cellMouseOut", "cellMouseMove", "cellEditing", "cellEdited", "cellEditCancelled", "headerSort", "headerSortStartingDir", "headerSortTristate", "headerClick", "headerDblClick", "headerContext", "headerTap", "headerDblTap", "headerTapHold", "headerTooltip", "headerVertical", "editableTitle", "titleFormatter", "titleFormatterParams", "headerFilter", "headerFilterPlaceholder", "headerFilterParams", "headerFilterEmptyCheck", "headerFilterFunc", "headerFilterFuncParams", "headerFilterLiveFilter", "print"];
+
+//////////////// Event Bindings /////////////////
+
+//////////////// Object Generation /////////////////
+Column.prototype.getComponent = function () {
+ return new ColumnComponent(this);
+};
+
+var RowManager = function RowManager(table) {
+
+ this.table = table;
+ this.element = this.createHolderElement(); //containing element
+ this.tableElement = this.createTableElement(); //table element
+ this.columnManager = null; //hold column manager object
+ this.height = 0; //hold height of table element
+
+ this.firstRender = false; //handle first render
+ this.renderMode = "classic"; //current rendering mode
+
+ this.rows = []; //hold row data objects
+ this.activeRows = []; //rows currently available to on display in the table
+ this.activeRowsCount = 0; //count of active rows
+
+ this.displayRows = []; //rows currently on display in the table
+ this.displayRowsCount = 0; //count of display rows
+
+ this.scrollTop = 0;
+ this.scrollLeft = 0;
+
+ this.vDomRowHeight = 20; //approximation of row heights for padding
+
+ this.vDomTop = 0; //hold position for first rendered row in the virtual DOM
+ this.vDomBottom = 0; //hold possition for last rendered row in the virtual DOM
+
+ this.vDomScrollPosTop = 0; //last scroll position of the vDom top;
+ this.vDomScrollPosBottom = 0; //last scroll position of the vDom bottom;
+
+ this.vDomTopPad = 0; //hold value of padding for top of virtual DOM
+ this.vDomBottomPad = 0; //hold value of padding for bottom of virtual DOM
+
+ this.vDomMaxRenderChain = 90; //the maximum number of dom elements that can be rendered in 1 go
+
+ this.vDomWindowBuffer = 0; //window row buffer before removing elements, to smooth scrolling
+
+ this.vDomWindowMinTotalRows = 20; //minimum number of rows to be generated in virtual dom (prevent buffering issues on tables with tall rows)
+ this.vDomWindowMinMarginRows = 5; //minimum number of rows to be generated in virtual dom margin
+
+ this.vDomTopNewRows = []; //rows to normalize after appending to optimize render speed
+ this.vDomBottomNewRows = []; //rows to normalize after appending to optimize render speed
+};
+
+//////////////// Setup Functions /////////////////
+
+RowManager.prototype.createHolderElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-tableHolder");
+ el.setAttribute("tabindex", 0);
+
+ return el;
+};
+
+RowManager.prototype.createTableElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-table");
+
+ return el;
+};
+
+//return containing element
+RowManager.prototype.getElement = function () {
+ return this.element;
+};
+
+//return table element
+RowManager.prototype.getTableElement = function () {
+ return this.tableElement;
+};
+
+//return position of row in table
+RowManager.prototype.getRowPosition = function (row, active) {
+ if (active) {
+ return this.activeRows.indexOf(row);
+ } else {
+ return this.rows.indexOf(row);
+ }
+};
+
+//link to column manager
+RowManager.prototype.setColumnManager = function (manager) {
+ this.columnManager = manager;
+};
+
+RowManager.prototype.initialize = function () {
+ var self = this;
+
+ self.setRenderMode();
+
+ //initialize manager
+ self.element.appendChild(self.tableElement);
+
+ self.firstRender = true;
+
+ //scroll header along with table body
+ self.element.addEventListener("scroll", function () {
+ var left = self.element.scrollLeft;
+
+ //handle horizontal scrolling
+ if (self.scrollLeft != left) {
+ self.columnManager.scrollHorizontal(left);
+
+ if (self.table.options.groupBy) {
+ self.table.modules.groupRows.scrollHeaders(left);
+ }
+
+ if (self.table.modExists("columnCalcs")) {
+ self.table.modules.columnCalcs.scrollHorizontal(left);
+ }
+ }
+
+ self.scrollLeft = left;
+ });
+
+ //handle virtual dom scrolling
+ if (this.renderMode === "virtual") {
+
+ self.element.addEventListener("scroll", function () {
+ var top = self.element.scrollTop;
+ var dir = self.scrollTop > top;
+
+ //handle verical scrolling
+ if (self.scrollTop != top) {
+ self.scrollTop = top;
+ self.scrollVertical(dir);
+
+ if (self.table.options.ajaxProgressiveLoad == "scroll") {
+ self.table.modules.ajax.nextPage(self.element.scrollHeight - self.element.clientHeight - top);
+ }
+ } else {
+ self.scrollTop = top;
+ }
+ });
+ }
+};
+
+////////////////// Row Manipulation //////////////////
+
+RowManager.prototype.findRow = function (subject) {
+ var self = this;
+
+ if ((typeof subject === 'undefined' ? 'undefined' : _typeof(subject)) == "object") {
+
+ if (subject instanceof Row) {
+ //subject is row element
+ return subject;
+ } else if (subject instanceof RowComponent) {
+ //subject is public row component
+ return subject._getSelf() || false;
+ } else if (typeof HTMLElement !== "undefined" && subject instanceof HTMLElement) {
+ //subject is a HTML element of the row
+ var match = self.rows.find(function (row) {
+ return row.element === subject;
+ });
+
+ return match || false;
+ }
+ } else if (typeof subject == "undefined" || subject === null) {
+ return false;
+ } else {
+ //subject should be treated as the index of the row
+ var _match = self.rows.find(function (row) {
+ return row.data[self.table.options.index] == subject;
+ });
+
+ return _match || false;
+ }
+
+ //catch all for any other type of input
+
+ return false;
+};
+
+RowManager.prototype.getRowFromDataObject = function (data) {
+ var match = this.rows.find(function (row) {
+ return row.data === data;
+ });
+
+ return match || false;
+};
+
+RowManager.prototype.getRowFromPosition = function (position, active) {
+ if (active) {
+ return this.activeRows[position];
+ } else {
+ return this.rows[position];
+ }
+};
+
+RowManager.prototype.scrollToRow = function (row, position, ifVisible) {
+ var _this3 = this;
+
+ var rowIndex = this.getDisplayRows().indexOf(row),
+ rowEl = row.getElement(),
+ rowTop,
+ offset = 0;
+
+ return new Promise(function (resolve, reject) {
+ if (rowIndex > -1) {
+
+ if (typeof position === "undefined") {
+ position = _this3.table.options.scrollToRowPosition;
+ }
+
+ if (typeof ifVisible === "undefined") {
+ ifVisible = _this3.table.options.scrollToRowIfVisible;
+ }
+
+ if (position === "nearest") {
+ switch (_this3.renderMode) {
+ case "classic":
+ rowTop = Tabulator.prototype.helpers.elOffset(rowEl).top;
+ position = Math.abs(_this3.element.scrollTop - rowTop) > Math.abs(_this3.element.scrollTop + _this3.element.clientHeight - rowTop) ? "bottom" : "top";
+ break;
+ case "virtual":
+ position = Math.abs(_this3.vDomTop - rowIndex) > Math.abs(_this3.vDomBottom - rowIndex) ? "bottom" : "top";
+ break;
+ }
+ }
+
+ //check row visibility
+ if (!ifVisible) {
+ if (Tabulator.prototype.helpers.elVisible(rowEl)) {
+ offset = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top;
+
+ if (offset > 0 && offset < _this3.element.clientHeight - rowEl.offsetHeight) {
+ return false;
+ }
+ }
+ }
+
+ //scroll to row
+ switch (_this3.renderMode) {
+ case "classic":
+ _this3.element.scrollTop = Tabulator.prototype.helpers.elOffset(rowEl).top - Tabulator.prototype.helpers.elOffset(_this3.element).top + _this3.element.scrollTop;
+ break;
+ case "virtual":
+ _this3._virtualRenderFill(rowIndex, true);
+ break;
+ }
+
+ //align to correct position
+ switch (position) {
+ case "middle":
+ case "center":
+ _this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight / 2;
+ break;
+
+ case "bottom":
+ _this3.element.scrollTop = _this3.element.scrollTop - _this3.element.clientHeight + rowEl.offsetHeight;
+ break;
+ }
+
+ resolve();
+ } else {
+ console.warn("Scroll Error - Row not visible");
+ reject("Scroll Error - Row not visible");
+ }
+ });
+};
+
+////////////////// Data Handling //////////////////
+
+RowManager.prototype.setData = function (data, renderInPosition) {
+ var _this4 = this;
+
+ var self = this;
+
+ return new Promise(function (resolve, reject) {
+ if (renderInPosition && _this4.getDisplayRows().length) {
+ if (self.table.options.pagination) {
+ self._setDataActual(data, true);
+ } else {
+ _this4.reRenderInPosition(function () {
+ self._setDataActual(data);
+ });
+ }
+ } else {
+ if (_this4.table.options.autoColumns) {
+ _this4.table.columnManager.generateColumnsFromRowData(data);
+ }
+ _this4.resetScroll();
+ _this4._setDataActual(data);
+ }
+
+ resolve();
+ });
+};
+
+RowManager.prototype._setDataActual = function (data, renderInPosition) {
+ var self = this;
+
+ self.table.options.dataLoading.call(this.table, data);
+
+ this._wipeElements();
+
+ if (this.table.options.history && this.table.modExists("history")) {
+ this.table.modules.history.clear();
+ }
+
+ if (Array.isArray(data)) {
+
+ if (this.table.modExists("selectRow")) {
+ this.table.modules.selectRow.clearSelectionData();
+ }
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+ this.table.modules.reactiveData.watchData(data);
+ }
+
+ data.forEach(function (def, i) {
+ if (def && (typeof def === 'undefined' ? 'undefined' : _typeof(def)) === "object") {
+ var row = new Row(def, self);
+ self.rows.push(row);
+ } else {
+ console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:", def);
+ }
+ });
+
+ self.table.options.dataLoaded.call(this.table, data);
+
+ self.refreshActiveData(false, false, renderInPosition);
+ } else {
+ console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ", typeof data === 'undefined' ? 'undefined' : _typeof(data), "\nData: ", data);
+ }
+};
+
+RowManager.prototype._wipeElements = function () {
+ this.rows.forEach(function (row) {
+ row.wipe();
+ });
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.table.modules.groupRows.wipe();
+ }
+
+ this.rows = [];
+};
+
+RowManager.prototype.deleteRow = function (row, blockRedraw) {
+ var allIndex = this.rows.indexOf(row),
+ activeIndex = this.activeRows.indexOf(row);
+
+ if (activeIndex > -1) {
+ this.activeRows.splice(activeIndex, 1);
+ }
+
+ if (allIndex > -1) {
+ this.rows.splice(allIndex, 1);
+ }
+
+ this.setActiveRows(this.activeRows);
+
+ this.displayRowIterator(function (rows) {
+ var displayIndex = rows.indexOf(row);
+
+ if (displayIndex > -1) {
+ rows.splice(displayIndex, 1);
+ }
+ });
+
+ if (!blockRedraw) {
+ this.reRenderInPosition();
+ }
+
+ this.table.options.rowDeleted.call(this.table, row.getComponent());
+
+ this.table.options.dataEdited.call(this.table, this.getData());
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.table.modules.groupRows.updateGroupRows(true);
+ } else if (this.table.options.pagination && this.table.modExists("page")) {
+ this.refreshActiveData(false, false, true);
+ } else {
+ if (this.table.options.pagination && this.table.modExists("page")) {
+ this.refreshActiveData("page");
+ }
+ }
+};
+
+RowManager.prototype.addRow = function (data, pos, index, blockRedraw) {
+
+ var row = this.addRowActual(data, pos, index, blockRedraw);
+
+ if (this.table.options.history && this.table.modExists("history")) {
+ this.table.modules.history.action("rowAdd", row, { data: data, pos: pos, index: index });
+ }
+
+ return row;
+};
+
+//add multiple rows
+RowManager.prototype.addRows = function (data, pos, index) {
+ var _this5 = this;
+
+ var self = this,
+ length = 0,
+ rows = [];
+
+ return new Promise(function (resolve, reject) {
+ pos = _this5.findAddRowPos(pos);
+
+ if (!Array.isArray(data)) {
+ data = [data];
+ }
+
+ length = data.length - 1;
+
+ if (typeof index == "undefined" && pos || typeof index !== "undefined" && !pos) {
+ data.reverse();
+ }
+
+ data.forEach(function (item, i) {
+ var row = self.addRow(item, pos, index, true);
+ rows.push(row);
+ });
+
+ if (_this5.table.options.groupBy && _this5.table.modExists("groupRows")) {
+ _this5.table.modules.groupRows.updateGroupRows(true);
+ } else if (_this5.table.options.pagination && _this5.table.modExists("page")) {
+ _this5.refreshActiveData(false, false, true);
+ } else {
+ _this5.reRenderInPosition();
+ }
+
+ //recalc column calculations if present
+ if (_this5.table.modExists("columnCalcs")) {
+ _this5.table.modules.columnCalcs.recalc(_this5.table.rowManager.activeRows);
+ }
+
+ resolve(rows);
+ });
+};
+
+RowManager.prototype.findAddRowPos = function (pos) {
+ if (typeof pos === "undefined") {
+ pos = this.table.options.addRowPos;
+ }
+
+ if (pos === "pos") {
+ pos = true;
+ }
+
+ if (pos === "bottom") {
+ pos = false;
+ }
+
+ return pos;
+};
+
+RowManager.prototype.addRowActual = function (data, pos, index, blockRedraw) {
+ var row = data instanceof Row ? data : new Row(data || {}, this),
+ top = this.findAddRowPos(pos),
+ dispRows;
+
+ if (!index && this.table.options.pagination && this.table.options.paginationAddRow == "page") {
+ dispRows = this.getDisplayRows();
+
+ if (top) {
+ if (dispRows.length) {
+ index = dispRows[0];
+ } else {
+ if (this.activeRows.length) {
+ index = this.activeRows[this.activeRows.length - 1];
+ top = false;
+ }
+ }
+ } else {
+ if (dispRows.length) {
+ index = dispRows[dispRows.length - 1];
+ top = dispRows.length < this.table.modules.page.getPageSize() ? false : true;
+ }
+ }
+ }
+
+ if (index) {
+ index = this.findRow(index);
+ }
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.table.modules.groupRows.assignRowToGroup(row);
+
+ var groupRows = row.getGroup().rows;
+
+ if (groupRows.length > 1) {
+
+ if (!index || index && groupRows.indexOf(index) == -1) {
+ if (top) {
+ if (groupRows[0] !== row) {
+ index = groupRows[0];
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ } else {
+ if (groupRows[groupRows.length - 1] !== row) {
+ index = groupRows[groupRows.length - 1];
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ }
+ } else {
+ this._moveRowInArray(row.getGroup().rows, row, index, top);
+ }
+ }
+ }
+
+ if (index) {
+ var allIndex = this.rows.indexOf(index),
+ activeIndex = this.activeRows.indexOf(index);
+
+ this.displayRowIterator(function (rows) {
+ var displayIndex = rows.indexOf(index);
+
+ if (displayIndex > -1) {
+ rows.splice(top ? displayIndex : displayIndex + 1, 0, row);
+ }
+ });
+
+ if (activeIndex > -1) {
+ this.activeRows.splice(top ? activeIndex : activeIndex + 1, 0, row);
+ }
+
+ if (allIndex > -1) {
+ this.rows.splice(top ? allIndex : allIndex + 1, 0, row);
+ }
+ } else {
+
+ if (top) {
+
+ this.displayRowIterator(function (rows) {
+ rows.unshift(row);
+ });
+
+ this.activeRows.unshift(row);
+ this.rows.unshift(row);
+ } else {
+ this.displayRowIterator(function (rows) {
+ rows.push(row);
+ });
+
+ this.activeRows.push(row);
+ this.rows.push(row);
+ }
+ }
+
+ this.setActiveRows(this.activeRows);
+
+ this.table.options.rowAdded.call(this.table, row.getComponent());
+
+ this.table.options.dataEdited.call(this.table, this.getData());
+
+ if (!blockRedraw) {
+ this.reRenderInPosition();
+ }
+
+ return row;
+};
+
+RowManager.prototype.moveRow = function (from, to, after) {
+ if (this.table.options.history && this.table.modExists("history")) {
+ this.table.modules.history.action("rowMove", from, { pos: this.getRowPosition(from), to: to, after: after });
+ }
+
+ this.moveRowActual(from, to, after);
+
+ this.table.options.rowMoved.call(this.table, from.getComponent());
+};
+
+RowManager.prototype.moveRowActual = function (from, to, after) {
+ var self = this;
+ this._moveRowInArray(this.rows, from, to, after);
+ this._moveRowInArray(this.activeRows, from, to, after);
+
+ this.displayRowIterator(function (rows) {
+ self._moveRowInArray(rows, from, to, after);
+ });
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ var toGroup = to.getGroup();
+ var fromGroup = from.getGroup();
+
+ if (toGroup === fromGroup) {
+ this._moveRowInArray(toGroup.rows, from, to, after);
+ } else {
+ if (fromGroup) {
+ fromGroup.removeRow(from);
+ }
+
+ toGroup.insertRow(from, to, after);
+ }
+ }
+};
+
+RowManager.prototype._moveRowInArray = function (rows, from, to, after) {
+ var fromIndex, toIndex, start, end;
+
+ if (from !== to) {
+
+ fromIndex = rows.indexOf(from);
+
+ if (fromIndex > -1) {
+
+ rows.splice(fromIndex, 1);
+
+ toIndex = rows.indexOf(to);
+
+ if (toIndex > -1) {
+
+ if (after) {
+ rows.splice(toIndex + 1, 0, from);
+ } else {
+ rows.splice(toIndex, 0, from);
+ }
+ } else {
+ rows.splice(fromIndex, 0, from);
+ }
+ }
+
+ //restyle rows
+ if (rows === this.getDisplayRows()) {
+
+ start = fromIndex < toIndex ? fromIndex : toIndex;
+ end = toIndex > fromIndex ? toIndex : fromIndex + 1;
+
+ for (var i = start; i <= end; i++) {
+ if (rows[i]) {
+ this.styleRow(rows[i], i);
+ }
+ }
+ }
+ }
+};
+
+RowManager.prototype.clearData = function () {
+ this.setData([]);
+};
+
+RowManager.prototype.getRowIndex = function (row) {
+ return this.findRowIndex(row, this.rows);
+};
+
+RowManager.prototype.getDisplayRowIndex = function (row) {
+ var index = this.getDisplayRows().indexOf(row);
+ return index > -1 ? index : false;
+};
+
+RowManager.prototype.nextDisplayRow = function (row, rowOnly) {
+ var index = this.getDisplayRowIndex(row),
+ nextRow = false;
+
+ if (index !== false && index < this.displayRowsCount - 1) {
+ nextRow = this.getDisplayRows()[index + 1];
+ }
+
+ if (nextRow && (!(nextRow instanceof Row) || nextRow.type != "row")) {
+ return this.nextDisplayRow(nextRow, rowOnly);
+ }
+
+ return nextRow;
+};
+
+RowManager.prototype.prevDisplayRow = function (row, rowOnly) {
+ var index = this.getDisplayRowIndex(row),
+ prevRow = false;
+
+ if (index) {
+ prevRow = this.getDisplayRows()[index - 1];
+ }
+
+ if (prevRow && (!(prevRow instanceof Row) || prevRow.type != "row")) {
+ return this.prevDisplayRow(prevRow, rowOnly);
+ }
+
+ return prevRow;
+};
+
+RowManager.prototype.findRowIndex = function (row, list) {
+ var rowIndex;
+
+ row = this.findRow(row);
+
+ if (row) {
+ rowIndex = list.indexOf(row);
+
+ if (rowIndex > -1) {
+ return rowIndex;
+ }
+ }
+
+ return false;
+};
+
+RowManager.prototype.getData = function (active, transform) {
+ var self = this,
+ output = [];
+
+ var rows = active ? self.activeRows : self.rows;
+
+ rows.forEach(function (row) {
+ output.push(row.getData(transform || "data"));
+ });
+
+ return output;
+};
+
+RowManager.prototype.getComponents = function (active) {
+ var self = this,
+ output = [];
+
+ var rows = active ? self.activeRows : self.rows;
+
+ rows.forEach(function (row) {
+ output.push(row.getComponent());
+ });
+
+ return output;
+};
+
+RowManager.prototype.getDataCount = function (active) {
+ return active ? this.activeRows.length : this.rows.length;
+};
+
+RowManager.prototype._genRemoteRequest = function () {
+ var self = this,
+ table = self.table,
+ options = table.options,
+ params = {};
+
+ if (table.modExists("page")) {
+ //set sort data if defined
+ if (options.ajaxSorting) {
+ var sorters = self.table.modules.sort.getSort();
+
+ sorters.forEach(function (item) {
+ delete item.column;
+ });
+
+ params[self.table.modules.page.paginationDataSentNames.sorters] = sorters;
+ }
+
+ //set filter data if defined
+ if (options.ajaxFiltering) {
+ var filters = self.table.modules.filter.getFilters(true, true);
+
+ params[self.table.modules.page.paginationDataSentNames.filters] = filters;
+ }
+
+ self.table.modules.ajax.setParams(params, true);
+ }
+
+ table.modules.ajax.sendRequest().then(function (data) {
+ self.setData(data);
+ }).catch(function (e) {});
+};
+
+//choose the path to refresh data after a filter update
+RowManager.prototype.filterRefresh = function () {
+ var table = this.table,
+ options = table.options,
+ left = this.scrollLeft;
+
+ if (options.ajaxFiltering) {
+ if (options.pagination == "remote" && table.modExists("page")) {
+ table.modules.page.reset(true);
+ table.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else if (options.ajaxProgressiveLoad) {
+ table.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+ //assume data is url, make ajax call to url to get data
+ this._genRemoteRequest();
+ }
+ } else {
+ this.refreshActiveData("filter");
+ }
+
+ this.scrollHorizontal(left);
+};
+
+//choose the path to refresh data after a sorter update
+RowManager.prototype.sorterRefresh = function (loadOrignalData) {
+ var table = this.table,
+ options = this.table.options,
+ left = this.scrollLeft;
+
+ if (options.ajaxSorting) {
+ if ((options.pagination == "remote" || options.progressiveLoad) && table.modExists("page")) {
+ table.modules.page.reset(true);
+ table.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else if (options.ajaxProgressiveLoad) {
+ table.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+ //assume data is url, make ajax call to url to get data
+ this._genRemoteRequest();
+ }
+ } else {
+ this.refreshActiveData(loadOrignalData ? "filter" : "sort");
+ }
+
+ this.scrollHorizontal(left);
+};
+
+RowManager.prototype.scrollHorizontal = function (left) {
+ this.scrollLeft = left;
+ this.element.scrollLeft = left;
+
+ if (this.table.options.groupBy) {
+ this.table.modules.groupRows.scrollHeaders(left);
+ }
+
+ if (this.table.modExists("columnCalcs")) {
+ this.table.modules.columnCalcs.scrollHorizontal(left);
+ }
+};
+
+//set active data set
+RowManager.prototype.refreshActiveData = function (stage, skipStage, renderInPosition) {
+ var self = this,
+ table = this.table,
+ displayIndex;
+
+ if (self.table.modExists("edit")) {
+ self.table.modules.edit.cancelEdit();
+ }
+
+ if (!stage) {
+ stage = "all";
+ }
+
+ if (table.options.selectable && !table.options.selectablePersistence && table.modExists("selectRow")) {
+ table.modules.selectRow.deselectRows();
+ }
+
+ //cascade through data refresh stages
+ switch (stage) {
+ case "all":
+
+ case "filter":
+ if (!skipStage) {
+ if (table.modExists("filter")) {
+ self.setActiveRows(table.modules.filter.filter(self.rows));
+ } else {
+ self.setActiveRows(self.rows.slice(0));
+ }
+ } else {
+ skipStage = false;
+ }
+
+ case "sort":
+ if (!skipStage) {
+ if (table.modExists("sort")) {
+ table.modules.sort.sort(this.activeRows);
+ }
+ } else {
+ skipStage = false;
+ }
+
+ //generic stage to allow for pipeline trigger after the data manipulation stage
+ case "display":
+ this.resetDisplayRows();
+
+ case "freeze":
+ if (!skipStage) {
+ if (this.table.modExists("frozenRows")) {
+ if (table.modules.frozenRows.isFrozen()) {
+ if (!table.modules.frozenRows.getDisplayIndex()) {
+ table.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.frozenRows.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.frozenRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+ table.modules.frozenRows.setDisplayIndex(displayIndex);
+ }
+ }
+ }
+ } else {
+ skipStage = false;
+ }
+
+ case "group":
+ if (!skipStage) {
+ if (table.options.groupBy && table.modExists("groupRows")) {
+
+ if (!table.modules.groupRows.getDisplayIndex()) {
+ table.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.groupRows.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.groupRows.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+ table.modules.groupRows.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+ skipStage = false;
+ }
+
+ case "tree":
+
+ if (!skipStage) {
+ if (table.options.dataTree && table.modExists("dataTree")) {
+ if (!table.modules.dataTree.getDisplayIndex()) {
+ table.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.dataTree.getDisplayIndex();
+
+ displayIndex = self.setDisplayRows(table.modules.dataTree.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+ table.modules.dataTree.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+ skipStage = false;
+ }
+
+ if (table.options.pagination && table.modExists("page") && !renderInPosition) {
+ if (table.modules.page.getMode() == "local") {
+ table.modules.page.reset();
+ }
+ }
+
+ case "page":
+ if (!skipStage) {
+ if (table.options.pagination && table.modExists("page")) {
+
+ if (!table.modules.page.getDisplayIndex()) {
+ table.modules.page.setDisplayIndex(this.getNextDisplayIndex());
+ }
+
+ displayIndex = table.modules.page.getDisplayIndex();
+
+ if (table.modules.page.getMode() == "local") {
+ table.modules.page.setMaxRows(this.getDisplayRows(displayIndex - 1).length);
+ }
+
+ displayIndex = self.setDisplayRows(table.modules.page.getRows(this.getDisplayRows(displayIndex - 1)), displayIndex);
+
+ if (displayIndex !== true) {
+ table.modules.page.setDisplayIndex(displayIndex);
+ }
+ }
+ } else {
+ skipStage = false;
+ }
+ }
+
+ if (Tabulator.prototype.helpers.elVisible(self.element)) {
+ if (renderInPosition) {
+ self.reRenderInPosition();
+ } else {
+ self.renderTable();
+ if (table.options.layoutColumnsOnNewData) {
+ self.table.columnManager.redraw(true);
+ }
+ }
+ }
+
+ if (table.modExists("columnCalcs")) {
+ table.modules.columnCalcs.recalc(this.activeRows);
+ }
+};
+
+RowManager.prototype.setActiveRows = function (activeRows) {
+ this.activeRows = activeRows;
+ this.activeRowsCount = this.activeRows.length;
+};
+
+//reset display rows array
+RowManager.prototype.resetDisplayRows = function () {
+ this.displayRows = [];
+
+ this.displayRows.push(this.activeRows.slice(0));
+
+ this.displayRowsCount = this.displayRows[0].length;
+
+ if (this.table.modExists("frozenRows")) {
+ this.table.modules.frozenRows.setDisplayIndex(0);
+ }
+
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.table.modules.groupRows.setDisplayIndex(0);
+ }
+
+ if (this.table.options.pagination && this.table.modExists("page")) {
+ this.table.modules.page.setDisplayIndex(0);
+ }
+};
+
+RowManager.prototype.getNextDisplayIndex = function () {
+ return this.displayRows.length;
+};
+
+//set display row pipeline data
+RowManager.prototype.setDisplayRows = function (displayRows, index) {
+
+ var output = true;
+
+ if (index && typeof this.displayRows[index] != "undefined") {
+ this.displayRows[index] = displayRows;
+ output = true;
+ } else {
+ this.displayRows.push(displayRows);
+ output = index = this.displayRows.length - 1;
+ }
+
+ if (index == this.displayRows.length - 1) {
+ this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+ }
+
+ return output;
+};
+
+RowManager.prototype.getDisplayRows = function (index) {
+ if (typeof index == "undefined") {
+ return this.displayRows.length ? this.displayRows[this.displayRows.length - 1] : [];
+ } else {
+ return this.displayRows[index] || [];
+ }
+};
+
+RowManager.prototype.getVisibleRows = function (viewable) {
+ var topEdge = this.element.scrollTop,
+ bottomEdge = this.element.clientHeight + topEdge,
+ topFound = false,
+ topRow = 0,
+ bottomRow = 0,
+ rows = this.getDisplayRows();
+
+ if (viewable) {
+
+ this.getDisplayRows();
+
+ for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+ if (rows[i]) {
+ if (!topFound) {
+ if (topEdge - rows[i].getElement().offsetTop >= 0) {
+ topRow = i;
+ } else {
+ topFound = true;
+ }
+ } else {
+ if (bottomEdge - rows[i].getElement().offsetTop >= 0) {
+ bottomRow = i;
+ } else {
+ break;
+ }
+ }
+ }
+ }
+ } else {
+ topRow = this.vDomTop;
+ bottomRow = this.vDomBottom;
+ }
+
+ return rows.slice(topRow, bottomRow + 1);
+};
+
+//repeat action accross display rows
+RowManager.prototype.displayRowIterator = function (callback) {
+ this.displayRows.forEach(callback);
+
+ this.displayRowsCount = this.displayRows[this.displayRows.length - 1].length;
+};
+
+//return only actual rows (not group headers etc)
+RowManager.prototype.getRows = function () {
+ return this.rows;
+};
+
+///////////////// Table Rendering /////////////////
+
+//trigger rerender of table in current position
+RowManager.prototype.reRenderInPosition = function (callback) {
+ if (this.getRenderMode() == "virtual") {
+
+ var scrollTop = this.element.scrollTop;
+ var topRow = false;
+ var topOffset = false;
+
+ var left = this.scrollLeft;
+
+ var rows = this.getDisplayRows();
+
+ for (var i = this.vDomTop; i <= this.vDomBottom; i++) {
+
+ if (rows[i]) {
+ var diff = scrollTop - rows[i].getElement().offsetTop;
+
+ if (topOffset === false || Math.abs(diff) < topOffset) {
+ topOffset = diff;
+ topRow = i;
+ } else {
+ break;
+ }
+ }
+ }
+
+ if (callback) {
+ callback();
+ }
+
+ this._virtualRenderFill(topRow === false ? this.displayRowsCount - 1 : topRow, true, topOffset || 0);
+
+ this.scrollHorizontal(left);
+ } else {
+ this.renderTable();
+
+ if (callback) {
+ callback();
+ }
+ }
+};
+
+RowManager.prototype.setRenderMode = function () {
+ if ((this.table.element.clientHeight || this.table.options.height) && this.table.options.virtualDom) {
+ this.renderMode = "virtual";
+ } else {
+ this.renderMode = "classic";
+ }
+};
+
+RowManager.prototype.getRenderMode = function () {
+ return this.renderMode;
+};
+
+RowManager.prototype.renderTable = function () {
+ var self = this;
+
+ self.table.options.renderStarted.call(this.table);
+
+ self.element.scrollTop = 0;
+
+ switch (self.renderMode) {
+ case "classic":
+ self._simpleRender();
+ break;
+
+ case "virtual":
+ self._virtualRenderFill();
+ break;
+ }
+
+ if (self.firstRender) {
+ if (self.displayRowsCount) {
+ self.firstRender = false;
+ self.table.modules.layout.layout();
+ } else {
+ self.renderEmptyScroll();
+ }
+ }
+
+ if (self.table.modExists("frozenColumns")) {
+ self.table.modules.frozenColumns.layout();
+ }
+
+ if (!self.displayRowsCount) {
+ if (self.table.options.placeholder) {
+
+ if (this.renderMode) {
+ self.table.options.placeholder.setAttribute("tabulator-render-mode", this.renderMode);
+ }
+
+ self.getElement().appendChild(self.table.options.placeholder);
+ }
+ }
+
+ self.table.options.renderComplete.call(this.table);
+};
+
+//simple render on heightless table
+RowManager.prototype._simpleRender = function () {
+ this._clearVirtualDom();
+
+ if (this.displayRowsCount) {
+ this.checkClassicModeGroupHeaderWidth();
+ } else {
+ this.renderEmptyScroll();
+ }
+};
+
+RowManager.prototype.checkClassicModeGroupHeaderWidth = function () {
+ var self = this,
+ element = this.tableElement,
+ onlyGroupHeaders = true;
+
+ self.getDisplayRows().forEach(function (row, index) {
+ self.styleRow(row, index);
+ element.appendChild(row.getElement());
+ row.initialize(true);
+
+ if (row.type !== "group") {
+ onlyGroupHeaders = false;
+ }
+ });
+
+ if (onlyGroupHeaders) {
+ element.style.minWidth = self.table.columnManager.getWidth() + "px";
+ } else {
+ element.style.minWidth = "";
+ }
+};
+
+//show scrollbars on empty table div
+RowManager.prototype.renderEmptyScroll = function () {
+ this.tableElement.style.minWidth = this.table.columnManager.getWidth() + "px";
+ this.tableElement.style.minHeight = "1px";
+ this.tableElement.style.visibility = "hidden";
+};
+
+RowManager.prototype._clearVirtualDom = function () {
+ var element = this.tableElement;
+
+ if (this.table.options.placeholder && this.table.options.placeholder.parentNode) {
+ this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);
+ }
+
+ // element.children.detach();
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.style.paddingTop = "";
+ element.style.paddingBottom = "";
+ element.style.minWidth = "";
+ element.style.minHeight = "";
+ element.style.visibility = "";
+
+ this.scrollTop = 0;
+ this.scrollLeft = 0;
+ this.vDomTop = 0;
+ this.vDomBottom = 0;
+ this.vDomTopPad = 0;
+ this.vDomBottomPad = 0;
+};
+
+RowManager.prototype.styleRow = function (row, index) {
+ var rowEl = row.getElement();
+
+ if (index % 2) {
+ rowEl.classList.add("tabulator-row-even");
+ rowEl.classList.remove("tabulator-row-odd");
+ } else {
+ rowEl.classList.add("tabulator-row-odd");
+ rowEl.classList.remove("tabulator-row-even");
+ }
+};
+
+//full virtual render
+RowManager.prototype._virtualRenderFill = function (position, forceMove, offset) {
+ var self = this,
+ element = self.tableElement,
+ holder = self.element,
+ topPad = 0,
+ rowsHeight = 0,
+ topPadHeight = 0,
+ i = 0,
+ onlyGroupHeaders = true,
+ rows = self.getDisplayRows();
+
+ position = position || 0;
+
+ offset = offset || 0;
+
+ if (!position) {
+ self._clearVirtualDom();
+ } else {
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ } //check if position is too close to bottom of table
+ var heightOccupied = (self.displayRowsCount - position + 1) * self.vDomRowHeight;
+
+ if (heightOccupied < self.height) {
+ position -= Math.ceil((self.height - heightOccupied) / self.vDomRowHeight);
+
+ if (position < 0) {
+ position = 0;
+ }
+ }
+
+ //calculate initial pad
+ topPad = Math.min(Math.max(Math.floor(self.vDomWindowBuffer / self.vDomRowHeight), self.vDomWindowMinMarginRows), position);
+ position -= topPad;
+ }
+
+ if (self.displayRowsCount && Tabulator.prototype.helpers.elVisible(self.element)) {
+
+ self.vDomTop = position;
+
+ self.vDomBottom = position - 1;
+
+ while ((rowsHeight <= self.height + self.vDomWindowBuffer || i < self.vDomWindowMinTotalRows) && self.vDomBottom < self.displayRowsCount - 1) {
+ var index = self.vDomBottom + 1,
+ row = rows[index],
+ rowHeight = 0;
+
+ self.styleRow(row, index);
+
+ element.appendChild(row.getElement());
+ if (!row.initialized) {
+ row.initialize(true);
+ } else {
+ if (!row.heightInitialized) {
+ row.normalizeHeight(true);
+ }
+ }
+
+ rowHeight = row.getHeight();
+
+ if (i < topPad) {
+ topPadHeight += rowHeight;
+ } else {
+ rowsHeight += rowHeight;
+ }
+
+ if (rowHeight > this.vDomWindowBuffer) {
+ this.vDomWindowBuffer = rowHeight * 2;
+ }
+
+ if (row.type !== "group") {
+ onlyGroupHeaders = false;
+ }
+
+ self.vDomBottom++;
+ i++;
+ }
+
+ if (!position) {
+ this.vDomTopPad = 0;
+ //adjust rowheight to match average of rendered elements
+ self.vDomRowHeight = Math.floor((rowsHeight + topPadHeight) / i);
+ self.vDomBottomPad = self.vDomRowHeight * (self.displayRowsCount - self.vDomBottom - 1);
+
+ self.vDomScrollHeight = topPadHeight + rowsHeight + self.vDomBottomPad - self.height;
+ } else {
+ self.vDomTopPad = !forceMove ? self.scrollTop - topPadHeight : self.vDomRowHeight * this.vDomTop + offset;
+ self.vDomBottomPad = self.vDomBottom == self.displayRowsCount - 1 ? 0 : Math.max(self.vDomScrollHeight - self.vDomTopPad - rowsHeight - topPadHeight, 0);
+ }
+
+ element.style.paddingTop = self.vDomTopPad + "px";
+ element.style.paddingBottom = self.vDomBottomPad + "px";
+
+ if (forceMove) {
+ this.scrollTop = self.vDomTopPad + topPadHeight + offset - (this.element.scrollWidth > this.element.clientWidth ? this.element.offsetHeight - this.element.clientHeight : 0);
+ }
+
+ this.scrollTop = Math.min(this.scrollTop, this.element.scrollHeight - this.height);
+
+ //adjust for horizontal scrollbar if present (and not at top of table)
+ if (this.element.scrollWidth > this.element.offsetWidth && forceMove) {
+ this.scrollTop += this.element.offsetHeight - this.element.clientHeight;
+ }
+
+ this.vDomScrollPosTop = this.scrollTop;
+ this.vDomScrollPosBottom = this.scrollTop;
+
+ holder.scrollTop = this.scrollTop;
+
+ element.style.minWidth = onlyGroupHeaders ? self.table.columnManager.getWidth() + "px" : "";
+
+ if (self.table.options.groupBy) {
+ if (self.table.modules.layout.getMode() != "fitDataFill" && self.displayRowsCount == self.table.modules.groupRows.countGroups()) {
+ self.tableElement.style.minWidth = self.table.columnManager.getWidth();
+ }
+ }
+ } else {
+ this.renderEmptyScroll();
+ }
+};
+
+//handle vertical scrolling
+RowManager.prototype.scrollVertical = function (dir) {
+ var topDiff = this.scrollTop - this.vDomScrollPosTop;
+ var bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+ var margin = this.vDomWindowBuffer * 2;
+
+ if (-topDiff > margin || bottomDiff > margin) {
+ //if big scroll redraw table;
+ var left = this.scrollLeft;
+ this._virtualRenderFill(Math.floor(this.element.scrollTop / this.element.scrollHeight * this.displayRowsCount));
+ this.scrollHorizontal(left);
+ } else {
+
+ if (dir) {
+ //scrolling up
+ if (topDiff < 0) {
+ this._addTopRow(-topDiff);
+ }
+
+ if (bottomDiff < 0) {
+
+ //hide bottom row if needed
+ if (this.vDomScrollHeight - this.scrollTop > this.vDomWindowBuffer) {
+ this._removeBottomRow(-bottomDiff);
+ }
+ }
+ } else {
+ //scrolling down
+ if (topDiff >= 0) {
+
+ //hide top row if needed
+ if (this.scrollTop > this.vDomWindowBuffer) {
+ this._removeTopRow(topDiff);
+ }
+ }
+
+ if (bottomDiff >= 0) {
+ this._addBottomRow(bottomDiff);
+ }
+ }
+ }
+};
+
+RowManager.prototype._addTopRow = function (topDiff) {
+ var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+ var table = this.tableElement,
+ rows = this.getDisplayRows();
+
+ if (this.vDomTop) {
+ var index = this.vDomTop - 1,
+ topRow = rows[index],
+ topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+ //hide top row if needed
+ if (topDiff >= topRowHeight) {
+ this.styleRow(topRow, index);
+ table.insertBefore(topRow.getElement(), table.firstChild);
+ if (!topRow.initialized || !topRow.heightInitialized) {
+ this.vDomTopNewRows.push(topRow);
+
+ if (!topRow.heightInitialized) {
+ topRow.clearCellHeight();
+ }
+ }
+ topRow.initialize();
+
+ this.vDomTopPad -= topRowHeight;
+
+ if (this.vDomTopPad < 0) {
+ this.vDomTopPad = index * this.vDomRowHeight;
+ }
+
+ if (!index) {
+ this.vDomTopPad = 0;
+ }
+
+ table.style.paddingTop = this.vDomTopPad + "px";
+ this.vDomScrollPosTop -= topRowHeight;
+ this.vDomTop--;
+ }
+
+ topDiff = -(this.scrollTop - this.vDomScrollPosTop);
+
+ if (topRow.getHeight() > this.vDomWindowBuffer) {
+ this.vDomWindowBuffer = topRow.getHeight() * 2;
+ }
+
+ if (i < this.vDomMaxRenderChain && this.vDomTop && topDiff >= (rows[this.vDomTop - 1].getHeight() || this.vDomRowHeight)) {
+ this._addTopRow(topDiff, i + 1);
+ } else {
+ this._quickNormalizeRowHeight(this.vDomTopNewRows);
+ }
+ }
+};
+
+RowManager.prototype._removeTopRow = function (topDiff) {
+ var table = this.tableElement,
+ topRow = this.getDisplayRows()[this.vDomTop],
+ topRowHeight = topRow.getHeight() || this.vDomRowHeight;
+
+ if (topDiff >= topRowHeight) {
+
+ var rowEl = topRow.getElement();
+ rowEl.parentNode.removeChild(rowEl);
+
+ this.vDomTopPad += topRowHeight;
+ table.style.paddingTop = this.vDomTopPad + "px";
+ this.vDomScrollPosTop += this.vDomTop ? topRowHeight : topRowHeight + this.vDomWindowBuffer;
+ this.vDomTop++;
+
+ topDiff = this.scrollTop - this.vDomScrollPosTop;
+
+ this._removeTopRow(topDiff);
+ }
+};
+
+RowManager.prototype._addBottomRow = function (bottomDiff) {
+ var i = arguments.length > 1 && arguments[1] !== undefined ? arguments[1] : 0;
+
+ var table = this.tableElement,
+ rows = this.getDisplayRows();
+
+ if (this.vDomBottom < this.displayRowsCount - 1) {
+ var index = this.vDomBottom + 1,
+ bottomRow = rows[index],
+ bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+ //hide bottom row if needed
+ if (bottomDiff >= bottomRowHeight) {
+ this.styleRow(bottomRow, index);
+ table.appendChild(bottomRow.getElement());
+
+ if (!bottomRow.initialized || !bottomRow.heightInitialized) {
+ this.vDomBottomNewRows.push(bottomRow);
+
+ if (!bottomRow.heightInitialized) {
+ bottomRow.clearCellHeight();
+ }
+ }
+
+ bottomRow.initialize();
+
+ this.vDomBottomPad -= bottomRowHeight;
+
+ if (this.vDomBottomPad < 0 || index == this.displayRowsCount - 1) {
+ this.vDomBottomPad = 0;
+ }
+
+ table.style.paddingBottom = this.vDomBottomPad + "px";
+ this.vDomScrollPosBottom += bottomRowHeight;
+ this.vDomBottom++;
+ }
+
+ bottomDiff = this.scrollTop - this.vDomScrollPosBottom;
+
+ if (bottomRow.getHeight() > this.vDomWindowBuffer) {
+ this.vDomWindowBuffer = bottomRow.getHeight() * 2;
+ }
+
+ if (i < this.vDomMaxRenderChain && this.vDomBottom < this.displayRowsCount - 1 && bottomDiff >= (rows[this.vDomBottom + 1].getHeight() || this.vDomRowHeight)) {
+ this._addBottomRow(bottomDiff, i + 1);
+ } else {
+ this._quickNormalizeRowHeight(this.vDomBottomNewRows);
+ }
+ }
+};
+
+RowManager.prototype._removeBottomRow = function (bottomDiff) {
+ var table = this.tableElement,
+ bottomRow = this.getDisplayRows()[this.vDomBottom],
+ bottomRowHeight = bottomRow.getHeight() || this.vDomRowHeight;
+
+ if (bottomDiff >= bottomRowHeight) {
+
+ var rowEl = bottomRow.getElement();
+
+ if (rowEl.parentNode) {
+ rowEl.parentNode.removeChild(rowEl);
+ }
+
+ this.vDomBottomPad += bottomRowHeight;
+
+ if (this.vDomBottomPad < 0) {
+ this.vDomBottomPad = 0;
+ }
+
+ table.style.paddingBottom = this.vDomBottomPad + "px";
+ this.vDomScrollPosBottom -= bottomRowHeight;
+ this.vDomBottom--;
+
+ bottomDiff = -(this.scrollTop - this.vDomScrollPosBottom);
+
+ this._removeBottomRow(bottomDiff);
+ }
+};
+
+RowManager.prototype._quickNormalizeRowHeight = function (rows) {
+ rows.forEach(function (row) {
+ row.calcHeight();
+ });
+
+ rows.forEach(function (row) {
+ row.setCellHeight();
+ });
+
+ rows.length = 0;
+};
+
+//normalize height of active rows
+RowManager.prototype.normalizeHeight = function () {
+ this.activeRows.forEach(function (row) {
+ row.normalizeHeight();
+ });
+};
+
+//adjust the height of the table holder to fit in the Tabulator element
+RowManager.prototype.adjustTableSize = function () {
+
+ if (this.renderMode === "virtual") {
+ this.height = this.element.clientHeight;
+ this.vDomWindowBuffer = this.table.options.virtualDomBuffer || this.height;
+
+ var otherHeight = this.columnManager.getElement().offsetHeight + (this.table.footerManager && !this.table.footerManager.external ? this.table.footerManager.getElement().offsetHeight : 0);
+
+ this.element.style.minHeight = "calc(100% - " + otherHeight + "px)";
+ this.element.style.height = "calc(100% - " + otherHeight + "px)";
+ this.element.style.maxHeight = "calc(100% - " + otherHeight + "px)";
+ }
+};
+
+//renitialize all rows
+RowManager.prototype.reinitialize = function () {
+ this.rows.forEach(function (row) {
+ row.reinitialize();
+ });
+};
+
+//redraw table
+RowManager.prototype.redraw = function (force) {
+ var pos = 0,
+ left = this.scrollLeft;
+
+ this.adjustTableSize();
+
+ this.table.tableWidth = this.table.element.clientWidth;
+
+ if (!force) {
+ if (this.renderMode == "classic") {
+
+ if (this.table.options.groupBy) {
+ this.refreshActiveData("group", false, false);
+ } else {
+ this._simpleRender();
+ }
+ } else {
+ this.reRenderInPosition();
+ this.scrollHorizontal(left);
+ }
+
+ if (!this.displayRowsCount) {
+ if (this.table.options.placeholder) {
+ this.getElement().appendChild(this.table.options.placeholder);
+ }
+ }
+ } else {
+ this.renderTable();
+ }
+};
+
+RowManager.prototype.resetScroll = function () {
+ this.element.scrollLeft = 0;
+ this.element.scrollTop = 0;
+
+ if (this.table.browser === "ie") {
+ var event = document.createEvent("Event");
+ event.initEvent("scroll", false, true);
+ this.element.dispatchEvent(event);
+ } else {
+ this.element.dispatchEvent(new Event('scroll'));
+ }
+};
+
+//public row object
+var RowComponent = function RowComponent(row) {
+ this._row = row;
+};
+
+RowComponent.prototype.getData = function (transform) {
+ return this._row.getData(transform);
+};
+
+RowComponent.prototype.getElement = function () {
+ return this._row.getElement();
+};
+
+RowComponent.prototype.getCells = function () {
+ var cells = [];
+
+ this._row.getCells().forEach(function (cell) {
+ cells.push(cell.getComponent());
+ });
+
+ return cells;
+};
+
+RowComponent.prototype.getCell = function (column) {
+ var cell = this._row.getCell(column);
+ return cell ? cell.getComponent() : false;
+};
+
+RowComponent.prototype.getIndex = function () {
+ return this._row.getData("data")[this._row.table.options.index];
+};
+
+RowComponent.prototype.getPosition = function (active) {
+ return this._row.table.rowManager.getRowPosition(this._row, active);
+};
+
+RowComponent.prototype.delete = function () {
+ return this._row.delete();
+};
+
+RowComponent.prototype.scrollTo = function () {
+ return this._row.table.rowManager.scrollToRow(this._row);
+};
+
+RowComponent.prototype.pageTo = function () {
+ if (this._row.table.modExists("page", true)) {
+ return this._row.table.modules.page.setPageToRow(this._row);
+ }
+};
+
+RowComponent.prototype.move = function (to, after) {
+ this._row.moveToRow(to, after);
+};
+
+RowComponent.prototype.update = function (data) {
+ return this._row.updateData(data);
+};
+
+RowComponent.prototype.normalizeHeight = function () {
+ this._row.normalizeHeight(true);
+};
+
+RowComponent.prototype.select = function () {
+ this._row.table.modules.selectRow.selectRows(this._row);
+};
+
+RowComponent.prototype.deselect = function () {
+ this._row.table.modules.selectRow.deselectRows(this._row);
+};
+
+RowComponent.prototype.toggleSelect = function () {
+ this._row.table.modules.selectRow.toggleRow(this._row);
+};
+
+RowComponent.prototype.isSelected = function () {
+ return this._row.table.modules.selectRow.isRowSelected(this._row);
+};
+
+RowComponent.prototype._getSelf = function () {
+ return this._row;
+};
+
+RowComponent.prototype.freeze = function () {
+ if (this._row.table.modExists("frozenRows", true)) {
+ this._row.table.modules.frozenRows.freezeRow(this._row);
+ }
+};
+
+RowComponent.prototype.unfreeze = function () {
+ if (this._row.table.modExists("frozenRows", true)) {
+ this._row.table.modules.frozenRows.unfreezeRow(this._row);
+ }
+};
+
+RowComponent.prototype.treeCollapse = function () {
+ if (this._row.table.modExists("dataTree", true)) {
+ this._row.table.modules.dataTree.collapseRow(this._row);
+ }
+};
+
+RowComponent.prototype.treeExpand = function () {
+ if (this._row.table.modExists("dataTree", true)) {
+ this._row.table.modules.dataTree.expandRow(this._row);
+ }
+};
+
+RowComponent.prototype.treeToggle = function () {
+ if (this._row.table.modExists("dataTree", true)) {
+ this._row.table.modules.dataTree.toggleRow(this._row);
+ }
+};
+
+RowComponent.prototype.getTreeParent = function () {
+ if (this._row.table.modExists("dataTree", true)) {
+ return this._row.table.modules.dataTree.getTreeParent(this._row);
+ }
+
+ return false;
+};
+
+RowComponent.prototype.getTreeChildren = function () {
+ if (this._row.table.modExists("dataTree", true)) {
+ return this._row.table.modules.dataTree.getTreeChildren(this._row);
+ }
+
+ return false;
+};
+
+RowComponent.prototype.reformat = function () {
+ return this._row.reinitialize();
+};
+
+RowComponent.prototype.getGroup = function () {
+ return this._row.getGroup().getComponent();
+};
+
+RowComponent.prototype.getTable = function () {
+ return this._row.table;
+};
+
+RowComponent.prototype.getNextRow = function () {
+ var row = this._row.nextRow();
+ return row ? row.getComponent() : row;
+};
+
+RowComponent.prototype.getPrevRow = function () {
+ var row = this._row.prevRow();
+ return row ? row.getComponent() : row;
+};
+
+var Row = function Row(data, parent) {
+ this.table = parent.table;
+ this.parent = parent;
+ this.data = {};
+ this.type = "row"; //type of element
+ this.element = this.createElement();
+ this.modules = {}; //hold module variables;
+ this.cells = [];
+ this.height = 0; //hold element height
+ this.heightStyled = ""; //hold element height prestyled to improve render efficiency
+ this.manualHeight = false; //user has manually set row height
+ this.outerHeight = 0; //holde lements outer height
+ this.initialized = false; //element has been rendered
+ this.heightInitialized = false; //element has resized cells to fit
+
+ this.setData(data);
+ this.generateElement();
+};
+
+Row.prototype.createElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-row");
+ el.setAttribute("role", "row");
+
+ return el;
+};
+
+Row.prototype.getElement = function () {
+ return this.element;
+};
+
+Row.prototype.detachElement = function () {
+ if (this.element && this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ }
+};
+
+Row.prototype.generateElement = function () {
+ var self = this,
+ dblTap,
+ tapHold,
+ tap;
+
+ //set row selection characteristics
+ if (self.table.options.selectable !== false && self.table.modExists("selectRow")) {
+ self.table.modules.selectRow.initializeRow(this);
+ }
+
+ //setup movable rows
+ if (self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+ self.table.modules.moveRow.initializeRow(this);
+ }
+
+ //setup data tree
+ if (self.table.options.dataTree !== false && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.initializeRow(this);
+ }
+
+ //handle row click events
+ if (self.table.options.rowClick) {
+ self.element.addEventListener("click", function (e) {
+ self.table.options.rowClick(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowDblClick) {
+ self.element.addEventListener("dblclick", function (e) {
+ self.table.options.rowDblClick(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowContext) {
+ self.element.addEventListener("contextmenu", function (e) {
+ self.table.options.rowContext(e, self.getComponent());
+ });
+ }
+
+ //handle mouse events
+ if (self.table.options.rowMouseEnter) {
+ self.element.addEventListener("mouseenter", function (e) {
+ self.table.options.rowMouseEnter(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseLeave) {
+ self.element.addEventListener("mouseleave", function (e) {
+ self.table.options.rowMouseLeave(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseOver) {
+ self.element.addEventListener("mouseover", function (e) {
+ self.table.options.rowMouseOver(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseOut) {
+ self.element.addEventListener("mouseout", function (e) {
+ self.table.options.rowMouseOut(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowMouseMove) {
+ self.element.addEventListener("mousemove", function (e) {
+ self.table.options.rowMouseMove(e, self.getComponent());
+ });
+ }
+
+ if (self.table.options.rowTap) {
+
+ tap = false;
+
+ self.element.addEventListener("touchstart", function (e) {
+ tap = true;
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ if (tap) {
+ self.table.options.rowTap(e, self.getComponent());
+ }
+
+ tap = false;
+ });
+ }
+
+ if (self.table.options.rowDblTap) {
+
+ dblTap = null;
+
+ self.element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+ clearTimeout(dblTap);
+ dblTap = null;
+
+ self.table.options.rowDblTap(e, self.getComponent());
+ } else {
+
+ dblTap = setTimeout(function () {
+ clearTimeout(dblTap);
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (self.table.options.rowTapHold) {
+
+ tapHold = null;
+
+ self.element.addEventListener("touchstart", function (e) {
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+ clearTimeout(tapHold);
+ tapHold = null;
+ tap = false;
+ self.table.options.rowTapHold(e, self.getComponent());
+ }, 1000);
+ }, { passive: true });
+
+ self.element.addEventListener("touchend", function (e) {
+ clearTimeout(tapHold);
+ tapHold = null;
+ });
+ }
+};
+
+Row.prototype.generateCells = function () {
+ this.cells = this.table.columnManager.generateCells(this);
+};
+
+//functions to setup on first render
+Row.prototype.initialize = function (force) {
+ var self = this;
+
+ if (!self.initialized || force) {
+
+ self.deleteCells();
+
+ while (self.element.firstChild) {
+ self.element.removeChild(self.element.firstChild);
+ } //handle frozen cells
+ if (this.table.modExists("frozenColumns")) {
+ this.table.modules.frozenColumns.layoutRow(this);
+ }
+
+ this.generateCells();
+
+ self.cells.forEach(function (cell) {
+ self.element.appendChild(cell.getElement());
+ cell.cellRendered();
+ });
+
+ if (force) {
+ self.normalizeHeight();
+ }
+
+ //setup movable rows
+ if (self.table.options.dataTree && self.table.modExists("dataTree")) {
+ self.table.modules.dataTree.layoutRow(this);
+ }
+
+ //setup movable rows
+ if (self.table.options.responsiveLayout === "collapse" && self.table.modExists("responsiveLayout")) {
+ self.table.modules.responsiveLayout.layoutRow(this);
+ }
+
+ if (self.table.options.rowFormatter) {
+ self.table.options.rowFormatter(self.getComponent());
+ }
+
+ //set resizable handles
+ if (self.table.options.resizableRows && self.table.modExists("resizeRows")) {
+ self.table.modules.resizeRows.initializeRow(self);
+ }
+
+ self.initialized = true;
+ }
+};
+
+Row.prototype.reinitializeHeight = function () {
+ this.heightInitialized = false;
+
+ if (this.element.offsetParent !== null) {
+ this.normalizeHeight(true);
+ }
+};
+
+Row.prototype.reinitialize = function () {
+ this.initialized = false;
+ this.heightInitialized = false;
+
+ if (!this.manualHeight) {
+ this.height = 0;
+ this.heightStyled = "";
+ }
+
+ if (this.element.offsetParent !== null) {
+ this.initialize(true);
+ }
+};
+
+//get heights when doing bulk row style calcs in virtual DOM
+Row.prototype.calcHeight = function (force) {
+
+ var maxHeight = 0,
+ minHeight = this.table.options.resizableRows ? this.element.clientHeight : 0;
+
+ this.cells.forEach(function (cell) {
+ var height = cell.getHeight();
+ if (height > maxHeight) {
+ maxHeight = height;
+ }
+ });
+
+ if (force) {
+ this.height = Math.max(maxHeight, minHeight);
+ } else {
+ this.height = this.manualHeight ? this.height : Math.max(maxHeight, minHeight);
+ }
+
+ this.heightStyled = this.height ? this.height + "px" : "";
+ this.outerHeight = this.element.offsetHeight;
+};
+
+//set of cells
+Row.prototype.setCellHeight = function () {
+ this.cells.forEach(function (cell) {
+ cell.setHeight();
+ });
+
+ this.heightInitialized = true;
+};
+
+Row.prototype.clearCellHeight = function () {
+ this.cells.forEach(function (cell) {
+ cell.clearHeight();
+ });
+};
+
+//normalize the height of elements in the row
+Row.prototype.normalizeHeight = function (force) {
+
+ if (force) {
+ this.clearCellHeight();
+ }
+
+ this.calcHeight(force);
+
+ this.setCellHeight();
+};
+
+// Row.prototype.setHeight = function(height){
+// this.height = height;
+
+// this.setCellHeight();
+// };
+
+//set height of rows
+Row.prototype.setHeight = function (height, force) {
+ if (this.height != height || force) {
+
+ this.manualHeight = true;
+
+ this.height = height;
+ this.heightStyled = height ? height + "px" : "";
+
+ this.setCellHeight();
+
+ // this.outerHeight = this.element.outerHeight();
+ this.outerHeight = this.element.offsetHeight;
+ }
+};
+
+//return rows outer height
+Row.prototype.getHeight = function () {
+ return this.outerHeight;
+};
+
+//return rows outer Width
+Row.prototype.getWidth = function () {
+ return this.element.offsetWidth;
+};
+
+//////////////// Cell Management /////////////////
+
+Row.prototype.deleteCell = function (cell) {
+ var index = this.cells.indexOf(cell);
+
+ if (index > -1) {
+ this.cells.splice(index, 1);
+ }
+};
+
+//////////////// Data Management /////////////////
+
+Row.prototype.setData = function (data) {
+ if (this.table.modExists("mutator")) {
+ data = this.table.modules.mutator.transformRow(data, "data");
+ }
+
+ this.data = data;
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {
+ this.table.modules.reactiveData.watchRow(this);
+ }
+};
+
+//update the rows data
+Row.prototype.updateData = function (data) {
+ var _this6 = this;
+
+ var self = this,
+ visible = Tabulator.prototype.helpers.elVisible(this.element);
+
+ return new Promise(function (resolve, reject) {
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (_this6.table.options.reactiveData && _this6.table.modExists("reactiveData", true)) {
+ _this6.table.modules.reactiveData.block();
+ }
+
+ //mutate incomming data if needed
+ if (self.table.modExists("mutator")) {
+ data = self.table.modules.mutator.transformRow(data, "data", true);
+ }
+
+ //set data
+ for (var attrname in data) {
+ self.data[attrname] = data[attrname];
+ }
+
+ if (_this6.table.options.reactiveData && _this6.table.modExists("reactiveData", true)) {
+ _this6.table.modules.reactiveData.unblock();
+ }
+
+ //update affected cells only
+ for (var attrname in data) {
+ var cell = _this6.getCell(attrname);
+
+ if (cell) {
+ if (cell.getValue() != data[attrname]) {
+ cell.setValueProcessData(data[attrname]);
+
+ if (visible) {
+ cell.cellRendered();
+ }
+ }
+ }
+ }
+
+ //Partial reinitialization if visible
+ if (visible) {
+ self.normalizeHeight();
+
+ if (self.table.options.rowFormatter) {
+ self.table.options.rowFormatter(self.getComponent());
+ }
+ } else {
+ _this6.initialized = false;
+ _this6.height = 0;
+ _this6.heightStyled = "";
+ }
+
+ if (self.table.options.dataTree !== false && self.table.modExists("dataTree") && typeof data[_this6.table.modules.dataTree.getChildField()] !== "undefined") {
+ _this6.table.modules.dataTree.initializeRow(_this6);
+ _this6.table.rowManager.refreshActiveData("tree", false, true);
+ }
+
+ //self.reinitialize();
+
+ self.table.options.rowUpdated.call(_this6.table, self.getComponent());
+
+ resolve();
+ });
+};
+
+Row.prototype.getData = function (transform) {
+ var self = this;
+
+ if (transform) {
+ if (self.table.modExists("accessor")) {
+ return self.table.modules.accessor.transformRow(self.data, transform);
+ }
+ } else {
+ return this.data;
+ }
+};
+
+Row.prototype.getCell = function (column) {
+ var match = false;
+
+ column = this.table.columnManager.findColumn(column);
+
+ match = this.cells.find(function (cell) {
+ return cell.column === column;
+ });
+
+ return match;
+};
+
+Row.prototype.getCellIndex = function (findCell) {
+ return this.cells.findIndex(function (cell) {
+ return cell === findCell;
+ });
+};
+
+Row.prototype.findNextEditableCell = function (index) {
+ var nextCell = false;
+
+ if (index < this.cells.length - 1) {
+ for (var i = index + 1; i < this.cells.length; i++) {
+ var cell = this.cells[i];
+
+ if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+ var allowEdit = true;
+
+ if (typeof cell.column.modules.edit.check == "function") {
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ }
+
+ if (allowEdit) {
+ nextCell = cell;
+ break;
+ }
+ }
+ }
+ }
+
+ return nextCell;
+};
+
+Row.prototype.findPrevEditableCell = function (index) {
+ var prevCell = false;
+
+ if (index > 0) {
+ for (var i = index - 1; i >= 0; i--) {
+ var cell = this.cells[i],
+ allowEdit = true;
+
+ if (cell.column.modules.edit && Tabulator.prototype.helpers.elVisible(cell.getElement())) {
+ if (typeof cell.column.modules.edit.check == "function") {
+ allowEdit = cell.column.modules.edit.check(cell.getComponent());
+ }
+
+ if (allowEdit) {
+ prevCell = cell;
+ break;
+ }
+ }
+ }
+ }
+
+ return prevCell;
+};
+
+Row.prototype.getCells = function () {
+ return this.cells;
+};
+
+Row.prototype.nextRow = function () {
+ var row = this.table.rowManager.nextDisplayRow(this, true);
+ return row || false;
+};
+
+Row.prototype.prevRow = function () {
+ var row = this.table.rowManager.prevDisplayRow(this, true);
+ return row || false;
+};
+
+Row.prototype.moveToRow = function (to, before) {
+ var toRow = this.table.rowManager.findRow(to);
+
+ if (toRow) {
+ this.table.rowManager.moveRowActual(this, toRow, !before);
+ this.table.rowManager.refreshActiveData("display", false, true);
+ } else {
+ console.warn("Move Error - No matching row found:", to);
+ }
+};
+
+///////////////////// Actions /////////////////////
+
+Row.prototype.delete = function () {
+ var _this7 = this;
+
+ return new Promise(function (resolve, reject) {
+ var index = _this7.table.rowManager.getRowIndex(_this7);
+
+ _this7.deleteActual();
+
+ if (_this7.table.options.history && _this7.table.modExists("history")) {
+
+ if (index) {
+ index = _this7.table.rowManager.rows[index - 1];
+ }
+
+ _this7.table.modules.history.action("rowDelete", _this7, { data: _this7.getData(), pos: !index, index: index });
+ }
+
+ resolve();
+ });
+};
+
+Row.prototype.deleteActual = function (blockRedraw) {
+ var index = this.table.rowManager.getRowIndex(this);
+
+ //deselect row if it is selected
+ if (this.table.modExists("selectRow")) {
+ this.table.modules.selectRow._deselectRow(this, true);
+ }
+
+ // if(this.table.options.dataTree && this.table.modExists("dataTree")){
+ // this.table.modules.dataTree.collapseRow(this, true);
+ // }
+
+ //remove any reactive data watchers from row object
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData", true)) {}
+ // this.table.modules.reactiveData.unwatchRow(this);
+
+
+ //remove from group
+ if (this.modules.group) {
+ this.modules.group.removeRow(this);
+ }
+
+ this.table.rowManager.deleteRow(this, blockRedraw);
+
+ this.deleteCells();
+
+ this.initialized = false;
+ this.heightInitialized = false;
+
+ //recalc column calculations if present
+ if (this.table.modExists("columnCalcs")) {
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+ this.table.modules.columnCalcs.recalcRowGroup(this);
+ } else {
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+ }
+};
+
+Row.prototype.deleteCells = function () {
+ var cellCount = this.cells.length;
+
+ for (var i = 0; i < cellCount; i++) {
+ this.cells[0].delete();
+ }
+};
+
+Row.prototype.wipe = function () {
+ this.deleteCells();
+
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }this.element = false;
+ this.modules = {};
+
+ if (this.element.parentNode) {
+ this.element.parentNode.removeChild(this.element);
+ }
+};
+
+Row.prototype.getGroup = function () {
+ return this.modules.group || false;
+};
+
+//////////////// Object Generation /////////////////
+Row.prototype.getComponent = function () {
+ return new RowComponent(this);
+};
+
+//public row object
+var CellComponent = function CellComponent(cell) {
+ this._cell = cell;
+};
+
+CellComponent.prototype.getValue = function () {
+ return this._cell.getValue();
+};
+
+CellComponent.prototype.getOldValue = function () {
+ return this._cell.getOldValue();
+};
+
+CellComponent.prototype.getElement = function () {
+ return this._cell.getElement();
+};
+
+CellComponent.prototype.getRow = function () {
+ return this._cell.row.getComponent();
+};
+
+CellComponent.prototype.getData = function () {
+ return this._cell.row.getData();
+};
+
+CellComponent.prototype.getField = function () {
+ return this._cell.column.getField();
+};
+
+CellComponent.prototype.getColumn = function () {
+ return this._cell.column.getComponent();
+};
+
+CellComponent.prototype.setValue = function (value, mutate) {
+ if (typeof mutate == "undefined") {
+ mutate = true;
+ }
+
+ this._cell.setValue(value, mutate);
+};
+
+CellComponent.prototype.restoreOldValue = function () {
+ this._cell.setValueActual(this._cell.getOldValue());
+};
+
+CellComponent.prototype.edit = function (force) {
+ return this._cell.edit(force);
+};
+
+CellComponent.prototype.cancelEdit = function () {
+ this._cell.cancelEdit();
+};
+
+CellComponent.prototype.nav = function () {
+ return this._cell.nav();
+};
+
+CellComponent.prototype.checkHeight = function () {
+ this._cell.checkHeight();
+};
+
+CellComponent.prototype.getTable = function () {
+ return this._cell.table;
+};
+
+CellComponent.prototype._getSelf = function () {
+ return this._cell;
+};
+
+var Cell = function Cell(column, row) {
+
+ this.table = column.table;
+ this.column = column;
+ this.row = row;
+ this.element = null;
+ this.value = null;
+ this.oldValue = null;
+
+ this.height = null;
+ this.width = null;
+ this.minWidth = null;
+
+ this.build();
+};
+
+//////////////// Setup Functions /////////////////
+
+//generate element
+Cell.prototype.build = function () {
+ this.generateElement();
+
+ this.setWidth();
+
+ this._configureCell();
+
+ this.setValueActual(this.column.getFieldValue(this.row.data));
+};
+
+Cell.prototype.generateElement = function () {
+ this.element = document.createElement('div');
+ this.element.className = "tabulator-cell";
+ this.element.setAttribute("role", "gridcell");
+ this.element = this.element;
+};
+
+Cell.prototype._configureCell = function () {
+ var self = this,
+ cellEvents = self.column.cellEvents,
+ element = self.element,
+ field = this.column.getField();
+
+ //set text alignment
+ element.style.textAlign = self.column.hozAlign;
+
+ if (field) {
+ element.setAttribute("tabulator-field", field);
+ }
+
+ //add class to cell if needed
+ if (self.column.definition.cssClass) {
+ var classNames = self.column.definition.cssClass.split(" ");
+ classNames.forEach(function (className) {
+ element.classList.add(className);
+ });
+ }
+
+ //update tooltip on mouse enter
+ if (this.table.options.tooltipGenerationMode === "hover") {
+ element.addEventListener("mouseenter", function (e) {
+ self._generateTooltip();
+ });
+ }
+
+ self._bindClickEvents(cellEvents);
+
+ self._bindTouchEvents(cellEvents);
+
+ self._bindMouseEvents(cellEvents);
+
+ if (self.column.modules.edit) {
+ self.table.modules.edit.bindEditor(self);
+ }
+
+ if (self.column.definition.rowHandle && self.table.options.movableRows !== false && self.table.modExists("moveRow")) {
+ self.table.modules.moveRow.initializeCell(self);
+ }
+
+ //hide cell if not visible
+ if (!self.column.visible) {
+ self.hide();
+ }
+};
+
+Cell.prototype._bindClickEvents = function (cellEvents) {
+ var self = this,
+ element = self.element;
+
+ //set event bindings
+ if (cellEvents.cellClick || self.table.options.cellClick) {
+ element.addEventListener("click", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellClick) {
+ cellEvents.cellClick.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellClick) {
+ self.table.options.cellClick.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellDblClick || this.table.options.cellDblClick) {
+ element.addEventListener("dblclick", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellDblClick) {
+ cellEvents.cellDblClick.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellDblClick) {
+ self.table.options.cellDblClick.call(self.table, e, component);
+ }
+ });
+ } else {
+ element.addEventListener("dblclick", function (e) {
+ e.preventDefault();
+
+ if (document.selection) {
+ // IE
+ var range = document.body.createTextRange();
+ range.moveToElementText(self.element);
+ range.select();
+ } else if (window.getSelection) {
+ var range = document.createRange();
+ range.selectNode(self.element);
+ window.getSelection().removeAllRanges();
+ window.getSelection().addRange(range);
+ }
+ });
+ }
+
+ if (cellEvents.cellContext || this.table.options.cellContext) {
+ element.addEventListener("contextmenu", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellContext) {
+ cellEvents.cellContext.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellContext) {
+ self.table.options.cellContext.call(self.table, e, component);
+ }
+ });
+ }
+};
+
+Cell.prototype._bindMouseEvents = function (cellEvents) {
+ var self = this,
+ element = self.element;
+
+ if (cellEvents.cellMouseEnter || self.table.options.cellMouseEnter) {
+ element.addEventListener("mouseenter", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseEnter) {
+ cellEvents.cellMouseEnter.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseEnter) {
+ self.table.options.cellMouseEnter.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseLeave || self.table.options.cellMouseLeave) {
+ element.addEventListener("mouseleave", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseLeave) {
+ cellEvents.cellMouseLeave.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseLeave) {
+ self.table.options.cellMouseLeave.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseOver || self.table.options.cellMouseOver) {
+ element.addEventListener("mouseover", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseOver) {
+ cellEvents.cellMouseOver.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseOver) {
+ self.table.options.cellMouseOver.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseOut || self.table.options.cellMouseOut) {
+ element.addEventListener("mouseout", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseOut) {
+ cellEvents.cellMouseOut.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseOut) {
+ self.table.options.cellMouseOut.call(self.table, e, component);
+ }
+ });
+ }
+
+ if (cellEvents.cellMouseMove || self.table.options.cellMouseMove) {
+ element.addEventListener("mousemove", function (e) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellMouseMove) {
+ cellEvents.cellMouseMove.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellMouseMove) {
+ self.table.options.cellMouseMove.call(self.table, e, component);
+ }
+ });
+ }
+};
+
+Cell.prototype._bindTouchEvents = function (cellEvents) {
+ var self = this,
+ element = self.element,
+ dblTap,
+ tapHold,
+ tap;
+
+ if (cellEvents.cellTap || this.table.options.cellTap) {
+ tap = false;
+
+ element.addEventListener("touchstart", function (e) {
+ tap = true;
+ }, { passive: true });
+
+ element.addEventListener("touchend", function (e) {
+ if (tap) {
+ var component = self.getComponent();
+
+ if (cellEvents.cellTap) {
+ cellEvents.cellTap.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellTap) {
+ self.table.options.cellTap.call(self.table, e, component);
+ }
+ }
+
+ tap = false;
+ });
+ }
+
+ if (cellEvents.cellDblTap || this.table.options.cellDblTap) {
+ dblTap = null;
+
+ element.addEventListener("touchend", function (e) {
+
+ if (dblTap) {
+ clearTimeout(dblTap);
+ dblTap = null;
+
+ var component = self.getComponent();
+
+ if (cellEvents.cellDblTap) {
+ cellEvents.cellDblTap.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellDblTap) {
+ self.table.options.cellDblTap.call(self.table, e, component);
+ }
+ } else {
+
+ dblTap = setTimeout(function () {
+ clearTimeout(dblTap);
+ dblTap = null;
+ }, 300);
+ }
+ });
+ }
+
+ if (cellEvents.cellTapHold || this.table.options.cellTapHold) {
+ tapHold = null;
+
+ element.addEventListener("touchstart", function (e) {
+ clearTimeout(tapHold);
+
+ tapHold = setTimeout(function () {
+ clearTimeout(tapHold);
+ tapHold = null;
+ tap = false;
+ var component = self.getComponent();
+
+ if (cellEvents.cellTapHold) {
+ cellEvents.cellTapHold.call(self.table, e, component);
+ }
+
+ if (self.table.options.cellTapHold) {
+ self.table.options.cellTapHold.call(self.table, e, component);
+ }
+ }, 1000);
+ }, { passive: true });
+
+ element.addEventListener("touchend", function (e) {
+ clearTimeout(tapHold);
+ tapHold = null;
+ });
+ }
+};
+
+//generate cell contents
+Cell.prototype._generateContents = function () {
+ var val;
+
+ if (this.table.modExists("format")) {
+ val = this.table.modules.format.formatValue(this);
+ } else {
+ val = this.element.innerHTML = this.value;
+ }
+
+ switch (typeof val === 'undefined' ? 'undefined' : _typeof(val)) {
+ case "object":
+ if (val instanceof Node) {
+
+ //clear previous cell contents
+ while (this.element.firstChild) {
+ this.element.removeChild(this.element.firstChild);
+ }this.element.appendChild(val);
+ } else {
+ this.element.innerHTML = "";
+
+ if (val != null) {
+ console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:", val);
+ }
+ }
+ break;
+ case "undefined":
+ case "null":
+ this.element.innerHTML = "";
+ break;
+ default:
+ this.element.innerHTML = val;
+ }
+};
+
+Cell.prototype.cellRendered = function () {
+ if (this.table.modExists("format") && this.table.modules.format.cellRendered) {
+ this.table.modules.format.cellRendered(this);
+ }
+};
+
+//generate tooltip text
+Cell.prototype._generateTooltip = function () {
+ var tooltip = this.column.tooltip;
+
+ if (tooltip) {
+ if (tooltip === true) {
+ tooltip = this.value;
+ } else if (typeof tooltip == "function") {
+ tooltip = tooltip(this.getComponent());
+
+ if (tooltip === false) {
+ tooltip = "";
+ }
+ }
+
+ if (typeof tooltip === "undefined") {
+ tooltip = "";
+ }
+
+ this.element.setAttribute("title", tooltip);
+ } else {
+ this.element.setAttribute("title", "");
+ }
+};
+
+//////////////////// Getters ////////////////////
+Cell.prototype.getElement = function () {
+ return this.element;
+};
+
+Cell.prototype.getValue = function () {
+ return this.value;
+};
+
+Cell.prototype.getOldValue = function () {
+ return this.oldValue;
+};
+
+//////////////////// Actions ////////////////////
+
+Cell.prototype.setValue = function (value, mutate) {
+
+ var changed = this.setValueProcessData(value, mutate),
+ component;
+
+ if (changed) {
+ if (this.table.options.history && this.table.modExists("history")) {
+ this.table.modules.history.action("cellEdit", this, { oldValue: this.oldValue, newValue: this.value });
+ }
+
+ component = this.getComponent();
+
+ if (this.column.cellEvents.cellEdited) {
+ this.column.cellEvents.cellEdited.call(this.table, component);
+ }
+
+ this.table.options.cellEdited.call(this.table, component);
+
+ this.table.options.dataEdited.call(this.table, this.table.rowManager.getData());
+ }
+};
+
+Cell.prototype.setValueProcessData = function (value, mutate) {
+ var changed = false;
+
+ if (this.value != value) {
+
+ changed = true;
+
+ if (mutate) {
+ if (this.column.modules.mutate) {
+ value = this.table.modules.mutator.transformCell(this, value);
+ }
+ }
+ }
+
+ this.setValueActual(value);
+
+ if (changed && this.table.modExists("columnCalcs")) {
+ if (this.column.definition.topCalc || this.column.definition.bottomCalc) {
+ if (this.table.options.groupBy && this.table.modExists("groupRows")) {
+
+ if (this.table.options.columnCalcs == "table" || this.table.options.columnCalcs == "both") {
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+
+ if (this.table.options.columnCalcs != "table") {
+ this.table.modules.columnCalcs.recalcRowGroup(this.row);
+ }
+ } else {
+ this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows);
+ }
+ }
+ }
+
+ return changed;
+};
+
+Cell.prototype.setValueActual = function (value) {
+ this.oldValue = this.value;
+
+ this.value = value;
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+ this.table.modules.reactiveData.block();
+ }
+
+ this.column.setFieldValue(this.row.data, value);
+
+ if (this.table.options.reactiveData && this.table.modExists("reactiveData")) {
+ this.table.modules.reactiveData.unblock();
+ }
+
+ this._generateContents();
+ this._generateTooltip();
+
+ //set resizable handles
+ if (this.table.options.resizableColumns && this.table.modExists("resizeColumns")) {
+ this.table.modules.resizeColumns.initializeColumn("cell", this.column, this.element);
+ }
+
+ //handle frozen cells
+ if (this.table.modExists("frozenColumns")) {
+ this.table.modules.frozenColumns.layoutElement(this.element, this.column);
+ }
+};
+
+Cell.prototype.setWidth = function () {
+ this.width = this.column.width;
+ this.element.style.width = this.column.widthStyled;
+};
+
+Cell.prototype.clearWidth = function () {
+ this.width = "";
+ this.element.style.width = "";
+};
+
+Cell.prototype.getWidth = function () {
+ return this.width || this.element.offsetWidth;
+};
+
+Cell.prototype.setMinWidth = function () {
+ this.minWidth = this.column.minWidth;
+ this.element.style.minWidth = this.column.minWidthStyled;
+};
+
+Cell.prototype.checkHeight = function () {
+ // var height = this.element.css("height");
+ this.row.reinitializeHeight();
+};
+
+Cell.prototype.clearHeight = function () {
+ this.element.style.height = "";
+ this.height = null;
+};
+
+Cell.prototype.setHeight = function () {
+ this.height = this.row.height;
+ this.element.style.height = this.row.heightStyled;
+};
+
+Cell.prototype.getHeight = function () {
+ return this.height || this.element.offsetHeight;
+};
+
+Cell.prototype.show = function () {
+ this.element.style.display = "";
+};
+
+Cell.prototype.hide = function () {
+ this.element.style.display = "none";
+};
+
+Cell.prototype.edit = function (force) {
+ if (this.table.modExists("edit", true)) {
+ return this.table.modules.edit.editCell(this, force);
+ }
+};
+
+Cell.prototype.cancelEdit = function () {
+ if (this.table.modExists("edit", true)) {
+ var editing = this.table.modules.edit.getCurrentCell();
+
+ if (editing && editing._getSelf() === this) {
+ this.table.modules.edit.cancelEdit();
+ } else {
+ console.warn("Cancel Editor Error - This cell is not currently being edited ");
+ }
+ }
+};
+
+Cell.prototype.delete = function () {
+ this.element.parentNode.removeChild(this.element);
+ this.element = false;
+ this.column.deleteCell(this);
+ this.row.deleteCell(this);
+ this.calcs = {};
+};
+
+//////////////// Navigation /////////////////
+
+Cell.prototype.nav = function () {
+
+ var self = this,
+ nextCell = false,
+ index = this.row.getCellIndex(this);
+
+ return {
+ next: function next() {
+ var nextCell = this.right(),
+ nextRow;
+
+ if (!nextCell) {
+ nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+ if (nextRow) {
+ nextCell = nextRow.findNextEditableCell(-1);
+
+ if (nextCell) {
+ nextCell.edit();
+ return true;
+ }
+ }
+ } else {
+ return true;
+ }
+
+ return false;
+ },
+ prev: function prev() {
+ var nextCell = this.left(),
+ prevRow;
+
+ if (!nextCell) {
+ prevRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+ if (prevRow) {
+ nextCell = prevRow.findPrevEditableCell(prevRow.cells.length);
+
+ if (nextCell) {
+ nextCell.edit();
+ return true;
+ }
+ }
+ } else {
+ return true;
+ }
+
+ return false;
+ },
+ left: function left() {
+
+ nextCell = self.row.findPrevEditableCell(index);
+
+ if (nextCell) {
+ nextCell.edit();
+ return true;
+ } else {
+ return false;
+ }
+ },
+ right: function right() {
+ nextCell = self.row.findNextEditableCell(index);
+
+ if (nextCell) {
+ nextCell.edit();
+ return true;
+ } else {
+ return false;
+ }
+ },
+ up: function up() {
+ var nextRow = self.table.rowManager.prevDisplayRow(self.row, true);
+
+ if (nextRow) {
+ nextRow.cells[index].edit();
+ }
+ },
+ down: function down() {
+ var nextRow = self.table.rowManager.nextDisplayRow(self.row, true);
+
+ if (nextRow) {
+ nextRow.cells[index].edit();
+ }
+ }
+
+ };
+};
+
+Cell.prototype.getIndex = function () {
+ this.row.getCellIndex(this);
+};
+
+//////////////// Object Generation /////////////////
+Cell.prototype.getComponent = function () {
+ return new CellComponent(this);
+};
+var FooterManager = function FooterManager(table) {
+ this.table = table;
+ this.active = false;
+ this.element = this.createElement(); //containing element
+ this.external = false;
+ this.links = [];
+
+ this._initialize();
+};
+
+FooterManager.prototype.createElement = function () {
+ var el = document.createElement("div");
+
+ el.classList.add("tabulator-footer");
+
+ return el;
+};
+
+FooterManager.prototype._initialize = function (element) {
+ if (this.table.options.footerElement) {
+
+ switch (_typeof(this.table.options.footerElement)) {
+ case "string":
+
+ if (this.table.options.footerElement[0] === "<") {
+ this.element.innerHTML = this.table.options.footerElement;
+ } else {
+ this.external = true;
+ this.element = document.querySelector(this.table.options.footerElement);
+ }
+ break;
+ default:
+ this.element = this.table.options.footerElement;
+ break;
+ }
+ }
+};
+
+FooterManager.prototype.getElement = function () {
+ return this.element;
+};
+
+FooterManager.prototype.append = function (element, parent) {
+ this.activate(parent);
+
+ this.element.appendChild(element);
+ this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.prepend = function (element, parent) {
+ this.activate(parent);
+
+ this.element.insertBefore(element, this.element.firstChild);
+ this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.remove = function (element) {
+ element.parentNode.removeChild(element);
+ this.deactivate();
+};
+
+FooterManager.prototype.deactivate = function (force) {
+ if (!this.element.firstChild || force) {
+ if (!this.external) {
+ this.element.parentNode.removeChild(this.element);
+ }
+ this.active = false;
+ }
+
+ // this.table.rowManager.adjustTableSize();
+};
+
+FooterManager.prototype.activate = function (parent) {
+ if (!this.active) {
+ this.active = true;
+ if (!this.external) {
+ this.table.element.appendChild(this.getElement());
+ this.table.element.style.display = '';
+ }
+ }
+
+ if (parent) {
+ this.links.push(parent);
+ }
+};
+
+FooterManager.prototype.redraw = function () {
+ this.links.forEach(function (link) {
+ link.footerRedraw();
+ });
+};
+
+var Tabulator = function Tabulator(element, options) {
+
+ this.options = {};
+
+ this.columnManager = null; // hold Column Manager
+ this.rowManager = null; //hold Row Manager
+ this.footerManager = null; //holder Footer Manager
+ this.browser = ""; //hold current browser type
+ this.browserSlow = false; //handle reduced functionality for slower browsers
+
+ this.modules = {}; //hold all modules bound to this table
+
+ this.initializeElement(element);
+ this.initializeOptions(options || {});
+ this._create();
+
+ Tabulator.prototype.comms.register(this); //register table for inderdevice communication
+};
+
+//default setup options
+Tabulator.prototype.defaultOptions = {
+
+ height: false, //height of tabulator
+
+ layout: "fitData", ///layout type "fitColumns" | "fitData"
+ layoutColumnsOnNewData: false, //update column widths on setData
+
+ columnMinWidth: 40, //minimum global width for a column
+ columnVertAlign: "top", //vertical alignment of column headers
+
+ resizableColumns: true, //resizable columns
+ resizableRows: false, //resizable rows
+ autoResize: true, //auto resize table
+
+ columns: [], //store for colum header info
+
+ data: [], //default starting data
+
+ autoColumns: false, //build columns from data row structure
+
+ reactiveData: false, //enable data reactivity
+
+ nestedFieldSeparator: ".", //seperatpr for nested data
+
+ tooltips: false, //Tool tip value
+ tooltipsHeader: false, //Tool tip for headers
+ tooltipGenerationMode: "load", //when to generate tooltips
+
+ initialSort: false, //initial sorting criteria
+ initialFilter: false, //initial filtering criteria
+ initialHeaderFilter: false, //initial header filtering criteria
+
+ columnHeaderSortMulti: true, //multiple or single column sorting
+
+ sortOrderReverse: false, //reverse internal sort ordering
+
+ headerSort: true, //set default global header sort
+ headerSortTristate: false, //set default tristate header sorting
+
+ footerElement: false, //hold footer element
+
+ index: "id", //filed for row index
+
+ keybindings: [], //array for keybindings
+
+ tabEndNewRow: false, //create new row when tab to end of table
+
+ invalidOptionWarnings: true, //allow toggling of invalid option warnings
+
+ clipboard: false, //enable clipboard
+ clipboardCopyStyled: true, //formatted table data
+ clipboardCopySelector: "active", //method of chosing which data is coppied to the clipboard
+ clipboardCopyFormatter: "table", //convert data to a clipboard string
+ clipboardPasteParser: "table", //convert pasted clipboard data to rows
+ clipboardPasteAction: "insert", //how to insert pasted data into the table
+ clipboardCopyConfig: false, //clipboard config
+
+ clipboardCopied: function clipboardCopied() {}, //data has been copied to the clipboard
+ clipboardPasted: function clipboardPasted() {}, //data has been pasted into the table
+ clipboardPasteError: function clipboardPasteError() {}, //data has not successfully been pasted into the table
+
+ downloadDataFormatter: false, //function to manipulate table data before it is downloaded
+ downloadReady: function downloadReady(data, blob) {
+ return blob;
+ }, //function to manipulate download data
+ downloadComplete: false, //function to manipulate download data
+ downloadConfig: false, //download config
+
+ dataTree: false, //enable data tree
+ dataTreeElementColumn: false,
+ dataTreeBranchElement: true, //show data tree branch element
+ dataTreeChildIndent: 9, //data tree child indent in px
+ dataTreeChildField: "_children", //data tre column field to look for child rows
+ dataTreeCollapseElement: false, //data tree row collapse element
+ dataTreeExpandElement: false, //data tree row expand element
+ dataTreeStartExpanded: false,
+ dataTreeRowExpanded: function dataTreeRowExpanded() {}, //row has been expanded
+ dataTreeRowCollapsed: function dataTreeRowCollapsed() {}, //row has been collapsed
+
+ printAsHtml: false, //enable print as html
+ printFormatter: false, //printing page formatter
+ printHeader: false, //page header contents
+ printFooter: false, //page footer contents
+ printCopyStyle: true, //enable print as html styling
+ printVisibleRows: true, //restrict print to visible rows only
+ printConfig: {}, //print config options
+
+ addRowPos: "bottom", //position to insert blank rows, top|bottom
+
+ selectable: "highlight", //highlight rows on hover
+ selectableRangeMode: "drag", //highlight rows on hover
+ selectableRollingSelection: true, //roll selection once maximum number of selectable rows is reached
+ selectablePersistence: true, // maintain selection when table view is updated
+ selectableCheck: function selectableCheck(data, row) {
+ return true;
+ }, //check wheather row is selectable
+
+ headerFilterPlaceholder: false, //placeholder text to display in header filters
+
+ headerVisible: true, //hide header
+
+ history: false, //enable edit history
+
+ locale: false, //current system language
+ langs: {},
+
+ virtualDom: true, //enable DOM virtualization
+ virtualDomBuffer: 0, // set virtual DOM buffer size
+
+ persistentLayout: false, //store column layout in memory
+ persistentSort: false, //store sorting in memory
+ persistentFilter: false, //store filters in memory
+ persistenceID: "", //key for persistent storage
+ persistenceMode: true, //mode for storing persistence information
+
+ responsiveLayout: false, //responsive layout flags
+ responsiveLayoutCollapseStartOpen: true, //start showing collapsed data
+ responsiveLayoutCollapseUseFormatters: true, //responsive layout collapse formatter
+ responsiveLayoutCollapseFormatter: false, //responsive layout collapse formatter
+
+ pagination: false, //set pagination type
+ paginationSize: false, //set number of rows to a page
+ paginationButtonCount: 5, // set count of page button
+ paginationSizeSelector: false, //add pagination size selector element
+ paginationElement: false, //element to hold pagination numbers
+ paginationDataSent: {}, //pagination data sent to the server
+ paginationDataReceived: {}, //pagination data received from the server
+ paginationAddRow: "page", //add rows on table or page
+
+ ajaxURL: false, //url for ajax loading
+ ajaxURLGenerator: false,
+ ajaxParams: {}, //params for ajax loading
+ ajaxConfig: "get", //ajax request type
+ ajaxContentType: "form", //ajax request type
+ ajaxRequestFunc: false, //promise function
+ ajaxLoader: true, //show loader
+ ajaxLoaderLoading: false, //loader element
+ ajaxLoaderError: false, //loader element
+ ajaxFiltering: false,
+ ajaxSorting: false,
+ ajaxProgressiveLoad: false, //progressive loading
+ ajaxProgressiveLoadDelay: 0, //delay between requests
+ ajaxProgressiveLoadScrollMargin: 0, //margin before scroll begins
+
+ groupBy: false, //enable table grouping and set field to group by
+ groupStartOpen: true, //starting state of group
+ groupValues: false,
+
+ groupHeader: false, //header generation function
+
+ htmlOutputConfig: false, //html outypu config
+
+ movableColumns: false, //enable movable columns
+
+ movableRows: false, //enable movable rows
+ movableRowsConnectedTables: false, //tables for movable rows to be connected to
+ movableRowsSender: false,
+ movableRowsReceiver: "insert",
+ movableRowsSendingStart: function movableRowsSendingStart() {},
+ movableRowsSent: function movableRowsSent() {},
+ movableRowsSentFailed: function movableRowsSentFailed() {},
+ movableRowsSendingStop: function movableRowsSendingStop() {},
+ movableRowsReceivingStart: function movableRowsReceivingStart() {},
+ movableRowsReceived: function movableRowsReceived() {},
+ movableRowsReceivedFailed: function movableRowsReceivedFailed() {},
+ movableRowsReceivingStop: function movableRowsReceivingStop() {},
+
+ scrollToRowPosition: "top",
+ scrollToRowIfVisible: true,
+
+ scrollToColumnPosition: "left",
+ scrollToColumnIfVisible: true,
+
+ rowFormatter: false,
+
+ placeholder: false,
+
+ //table building callbacks
+ tableBuilding: function tableBuilding() {},
+ tableBuilt: function tableBuilt() {},
+
+ //render callbacks
+ renderStarted: function renderStarted() {},
+ renderComplete: function renderComplete() {},
+
+ //row callbacks
+ rowClick: false,
+ rowDblClick: false,
+ rowContext: false,
+ rowTap: false,
+ rowDblTap: false,
+ rowTapHold: false,
+ rowMouseEnter: false,
+ rowMouseLeave: false,
+ rowMouseOver: false,
+ rowMouseOut: false,
+ rowMouseMove: false,
+ rowAdded: function rowAdded() {},
+ rowDeleted: function rowDeleted() {},
+ rowMoved: function rowMoved() {},
+ rowUpdated: function rowUpdated() {},
+ rowSelectionChanged: function rowSelectionChanged() {},
+ rowSelected: function rowSelected() {},
+ rowDeselected: function rowDeselected() {},
+ rowResized: function rowResized() {},
+
+ //cell callbacks
+ //row callbacks
+ cellClick: false,
+ cellDblClick: false,
+ cellContext: false,
+ cellTap: false,
+ cellDblTap: false,
+ cellTapHold: false,
+ cellMouseEnter: false,
+ cellMouseLeave: false,
+ cellMouseOver: false,
+ cellMouseOut: false,
+ cellMouseMove: false,
+ cellEditing: function cellEditing() {},
+ cellEdited: function cellEdited() {},
+ cellEditCancelled: function cellEditCancelled() {},
+
+ //column callbacks
+ columnMoved: false,
+ columnResized: function columnResized() {},
+ columnTitleChanged: function columnTitleChanged() {},
+ columnVisibilityChanged: function columnVisibilityChanged() {},
+
+ //HTML iport callbacks
+ htmlImporting: function htmlImporting() {},
+ htmlImported: function htmlImported() {},
+
+ //data callbacks
+ dataLoading: function dataLoading() {},
+ dataLoaded: function dataLoaded() {},
+ dataEdited: function dataEdited() {},
+
+ //ajax callbacks
+ ajaxRequesting: function ajaxRequesting() {},
+ ajaxResponse: false,
+ ajaxError: function ajaxError() {},
+
+ //filtering callbacks
+ dataFiltering: false,
+ dataFiltered: false,
+
+ //sorting callbacks
+ dataSorting: function dataSorting() {},
+ dataSorted: function dataSorted() {},
+
+ //grouping callbacks
+ groupToggleElement: "arrow",
+ groupClosedShowCalcs: false,
+ dataGrouping: function dataGrouping() {},
+ dataGrouped: false,
+ groupVisibilityChanged: function groupVisibilityChanged() {},
+ groupClick: false,
+ groupDblClick: false,
+ groupContext: false,
+ groupTap: false,
+ groupDblTap: false,
+ groupTapHold: false,
+
+ columnCalcs: true,
+
+ //pagination callbacks
+ pageLoaded: function pageLoaded() {},
+
+ //localization callbacks
+ localized: function localized() {},
+
+ //validation has failed
+ validationFailed: function validationFailed() {},
+
+ //history callbacks
+ historyUndo: function historyUndo() {},
+ historyRedo: function historyRedo() {}
+
+};
+
+Tabulator.prototype.initializeOptions = function (options) {
+
+ //warn user if option is not available
+ if (options.invalidOptionWarnings !== false) {
+ for (var key in options) {
+ if (typeof this.defaultOptions[key] === "undefined") {
+ console.warn("Invalid table constructor option:", key);
+ }
+ }
+ }
+
+ //assign options to table
+ for (var key in this.defaultOptions) {
+ if (key in options) {
+ this.options[key] = options[key];
+ } else {
+ if (Array.isArray(this.defaultOptions[key])) {
+ this.options[key] = [];
+ } else if (_typeof(this.defaultOptions[key]) === "object") {
+ this.options[key] = {};
+ } else {
+ this.options[key] = this.defaultOptions[key];
+ }
+ }
+ }
+};
+
+Tabulator.prototype.initializeElement = function (element) {
+
+ if (typeof HTMLElement !== "undefined" && element instanceof HTMLElement) {
+ this.element = element;
+ return true;
+ } else if (typeof element === "string") {
+ this.element = document.querySelector(element);
+
+ if (this.element) {
+ return true;
+ } else {
+ console.error("Tabulator Creation Error - no element found matching selector: ", element);
+ return false;
+ }
+ } else {
+ console.error("Tabulator Creation Error - Invalid element provided:", element);
+ return false;
+ }
+};
+
+//convert depricated functionality to new functions
+Tabulator.prototype._mapDepricatedFunctionality = function () {};
+
+Tabulator.prototype._clearSelection = function () {
+
+ this.element.classList.add("tabulator-block-select");
+
+ if (window.getSelection) {
+ if (window.getSelection().empty) {
+ // Chrome
+ window.getSelection().empty();
+ } else if (window.getSelection().removeAllRanges) {
+ // Firefox
+ window.getSelection().removeAllRanges();
+ }
+ } else if (document.selection) {
+ // IE?
+ document.selection.empty();
+ }
+
+ this.element.classList.remove("tabulator-block-select");
+};
+
+//concreate table
+Tabulator.prototype._create = function () {
+ this._clearObjectPointers();
+
+ this._mapDepricatedFunctionality();
+
+ this.bindModules();
+
+ if (this.element.tagName === "TABLE") {
+ if (this.modExists("htmlTableImport", true)) {
+ this.modules.htmlTableImport.parseTable();
+ }
+ }
+
+ this.columnManager = new ColumnManager(this);
+ this.rowManager = new RowManager(this);
+ this.footerManager = new FooterManager(this);
+
+ this.columnManager.setRowManager(this.rowManager);
+ this.rowManager.setColumnManager(this.columnManager);
+
+ this._buildElement();
+
+ this._loadInitialData();
+};
+
+//clear pointers to objects in default config object
+Tabulator.prototype._clearObjectPointers = function () {
+ this.options.columns = this.options.columns.slice(0);
+
+ if (!this.options.reactiveData) {
+ this.options.data = this.options.data.slice(0);
+ }
+};
+
+//build tabulator element
+Tabulator.prototype._buildElement = function () {
+ var _this8 = this;
+
+ var element = this.element,
+ mod = this.modules,
+ options = this.options;
+
+ options.tableBuilding.call(this);
+
+ element.classList.add("tabulator");
+ element.setAttribute("role", "grid");
+
+ //empty element
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ } //set table height
+ if (options.height) {
+ options.height = isNaN(options.height) ? options.height : options.height + "px";
+ element.style.height = options.height;
+ }
+
+ this.columnManager.initialize();
+ this.rowManager.initialize();
+
+ this._detectBrowser();
+
+ if (this.modExists("layout", true)) {
+ mod.layout.initialize(options.layout);
+ }
+
+ //set localization
+ if (options.headerFilterPlaceholder !== false) {
+ mod.localize.setHeaderFilterPlaceholder(options.headerFilterPlaceholder);
+ }
+
+ for (var locale in options.langs) {
+ mod.localize.installLang(locale, options.langs[locale]);
+ }
+
+ mod.localize.setLocale(options.locale);
+
+ //configure placeholder element
+ if (typeof options.placeholder == "string") {
+
+ var el = document.createElement("div");
+ el.classList.add("tabulator-placeholder");
+
+ var span = document.createElement("span");
+ span.innerHTML = options.placeholder;
+
+ el.appendChild(span);
+
+ options.placeholder = el;
+ }
+
+ //build table elements
+ element.appendChild(this.columnManager.getElement());
+ element.appendChild(this.rowManager.getElement());
+
+ if (options.footerElement) {
+ this.footerManager.activate();
+ }
+
+ if ((options.persistentLayout || options.persistentSort || options.persistentFilter) && this.modExists("persistence", true)) {
+ mod.persistence.initialize(options.persistenceMode, options.persistenceID);
+ }
+
+ if (options.persistentLayout && this.modExists("persistence", true)) {
+ options.columns = mod.persistence.load("columns", options.columns);
+ }
+
+ if (options.movableRows && this.modExists("moveRow")) {
+ mod.moveRow.initialize();
+ }
+
+ if (options.autoColumns && this.options.data) {
+ this.columnManager.generateColumnsFromRowData(this.options.data);
+ }
+
+ if (this.modExists("columnCalcs")) {
+ mod.columnCalcs.initialize();
+ }
+
+ this.columnManager.setColumns(options.columns);
+
+ if (options.dataTree && this.modExists("dataTree", true)) {
+ mod.dataTree.initialize();
+ }
+
+ if (this.modExists("frozenRows")) {
+ this.modules.frozenRows.initialize();
+ }
+
+ if ((options.persistentSort || options.initialSort) && this.modExists("sort", true)) {
+ var sorters = [];
+
+ if (options.persistentSort && this.modExists("persistence", true)) {
+ sorters = mod.persistence.load("sort");
+
+ if (sorters === false && options.initialSort) {
+ sorters = options.initialSort;
+ }
+ } else if (options.initialSort) {
+ sorters = options.initialSort;
+ }
+
+ mod.sort.setSort(sorters);
+ }
+
+ if ((options.persistentFilter || options.initialFilter) && this.modExists("filter", true)) {
+ var filters = [];
+
+ if (options.persistentFilter && this.modExists("persistence", true)) {
+ filters = mod.persistence.load("filter");
+
+ if (filters === false && options.initialFilter) {
+ filters = options.initialFilter;
+ }
+ } else if (options.initialFilter) {
+ filters = options.initialFilter;
+ }
+
+ mod.filter.setFilter(filters);
+ }
+
+ if (options.initialHeaderFilter && this.modExists("filter", true)) {
+ options.initialHeaderFilter.forEach(function (item) {
+
+ var column = _this8.columnManager.findColumn(item.field);
+
+ if (column) {
+ mod.filter.setHeaderFilterValue(column, item.value);
+ } else {
+ console.warn("Column Filter Error - No matching column found:", item.field);
+ return false;
+ }
+ });
+ }
+
+ if (this.modExists("ajax")) {
+ mod.ajax.initialize();
+ }
+
+ if (options.pagination && this.modExists("page", true)) {
+ mod.page.initialize();
+ }
+
+ if (options.groupBy && this.modExists("groupRows", true)) {
+ mod.groupRows.initialize();
+ }
+
+ if (this.modExists("keybindings")) {
+ mod.keybindings.initialize();
+ }
+
+ if (this.modExists("selectRow")) {
+ mod.selectRow.clearSelectionData(true);
+ }
+
+ if (options.autoResize && this.modExists("resizeTable")) {
+ mod.resizeTable.initialize();
+ }
+
+ if (this.modExists("clipboard")) {
+ mod.clipboard.initialize();
+ }
+
+ if (options.printAsHtml && this.modExists("print")) {
+ mod.print.initialize();
+ }
+
+ options.tableBuilt.call(this);
+};
+
+Tabulator.prototype._loadInitialData = function () {
+ var self = this;
+
+ if (self.options.pagination && self.modExists("page")) {
+ self.modules.page.reset(true);
+
+ if (self.options.pagination == "local") {
+ if (self.options.data.length) {
+ self.rowManager.setData(self.options.data);
+ } else {
+ if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+ self.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+ self.rowManager.setData(self.options.data);
+ }
+ }
+ } else {
+ if (self.options.ajaxURL) {
+ self.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else {
+ self.rowManager.setData([]);
+ }
+ }
+ } else {
+ if (self.options.data.length) {
+ self.rowManager.setData(self.options.data);
+ } else {
+ if ((self.options.ajaxURL || self.options.ajaxURLGenerator) && self.modExists("ajax")) {
+ self.modules.ajax.loadData().then(function () {}).catch(function () {});
+ } else {
+ self.rowManager.setData(self.options.data);
+ }
+ }
+ }
+};
+
+//deconstructor
+Tabulator.prototype.destroy = function () {
+ var element = this.element;
+
+ Tabulator.prototype.comms.deregister(this); //deregister table from inderdevice communication
+
+ if (this.options.reactiveData && this.modExists("reactiveData", true)) {
+ this.modules.reactiveData.unwatchData();
+ }
+
+ //clear row data
+ this.rowManager.rows.forEach(function (row) {
+ row.wipe();
+ });
+
+ this.rowManager.rows = [];
+ this.rowManager.activeRows = [];
+ this.rowManager.displayRows = [];
+
+ //clear event bindings
+ if (this.options.autoResize && this.modExists("resizeTable")) {
+ this.modules.resizeTable.clearBindings();
+ }
+
+ if (this.modExists("keybindings")) {
+ this.modules.keybindings.clearBindings();
+ }
+
+ //clear DOM
+ while (element.firstChild) {
+ element.removeChild(element.firstChild);
+ }element.classList.remove("tabulator");
+};
+
+Tabulator.prototype._detectBrowser = function () {
+ var ua = navigator.userAgent;
+
+ if (ua.indexOf("Trident") > -1) {
+ this.browser = "ie";
+ this.browserSlow = true;
+ } else if (ua.indexOf("Edge") > -1) {
+ this.browser = "edge";
+ this.browserSlow = true;
+ } else if (ua.indexOf("Firefox") > -1) {
+ this.browser = "firefox";
+ this.browserSlow = false;
+ } else {
+ this.browser = "other";
+ this.browserSlow = false;
+ }
+};
+
+////////////////// Data Handling //////////////////
+
+//loca data from local file
+Tabulator.prototype.setDataFromLocalFile = function (extensions) {
+ var _this9 = this;
+
+ return new Promise(function (resolve, reject) {
+ var input = document.createElement("input");
+ input.type = "file";
+ input.accept = extensions || ".json,application/json";
+
+ input.addEventListener("change", function (e) {
+ var file = input.files[0],
+ reader = new FileReader(),
+ data;
+
+ reader.readAsText(file);
+
+ reader.onload = function (e) {
+
+ try {
+ data = JSON.parse(reader.result);
+ } catch (e) {
+ console.warn("File Load Error - File contents is invalid JSON", e);
+ reject(e);
+ return;
+ }
+
+ _this9._setData(data).then(function (data) {
+ resolve(data);
+ }).catch(function (err) {
+ resolve(err);
+ });
+ };
+
+ reader.onerror = function (e) {
+ console.warn("File Load Error - Unable to read file");
+ reject();
+ };
+ });
+
+ input.click();
+ });
+};
+
+//load data
+Tabulator.prototype.setData = function (data, params, config) {
+ if (this.modExists("ajax")) {
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ return this._setData(data, params, config);
+};
+
+Tabulator.prototype._setData = function (data, params, config, inPosition) {
+ var self = this;
+
+ if (typeof data === "string") {
+ if (data.indexOf("{") == 0 || data.indexOf("[") == 0) {
+ //data is a json encoded string
+ return self.rowManager.setData(JSON.parse(data), inPosition);
+ } else {
+
+ if (self.modExists("ajax", true)) {
+ if (params) {
+ self.modules.ajax.setParams(params);
+ }
+
+ if (config) {
+ self.modules.ajax.setConfig(config);
+ }
+
+ self.modules.ajax.setUrl(data);
+
+ if (self.options.pagination == "remote" && self.modExists("page", true)) {
+ self.modules.page.reset(true);
+ return self.modules.page.setPage(1);
+ } else {
+ //assume data is url, make ajax call to url to get data
+ return self.modules.ajax.loadData(inPosition);
+ }
+ }
+ }
+ } else {
+ if (data) {
+ //asume data is already an object
+ return self.rowManager.setData(data, inPosition);
+ } else {
+
+ //no data provided, check if ajaxURL is present;
+ if (self.modExists("ajax") && (self.modules.ajax.getUrl || self.options.ajaxURLGenerator)) {
+
+ if (self.options.pagination == "remote" && self.modExists("page", true)) {
+ self.modules.page.reset(true);
+ return self.modules.page.setPage(1);
+ } else {
+ return self.modules.ajax.loadData(inPosition);
+ }
+ } else {
+ //empty data
+ return self.rowManager.setData([], inPosition);
+ }
+ }
+ }
+};
+
+//clear data
+Tabulator.prototype.clearData = function () {
+ if (this.modExists("ajax")) {
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ this.rowManager.clearData();
+};
+
+//get table data array
+Tabulator.prototype.getData = function (active) {
+ return this.rowManager.getData(active);
+};
+
+//get table data array count
+Tabulator.prototype.getDataCount = function (active) {
+ return this.rowManager.getDataCount(active);
+};
+
+//search for specific row components
+Tabulator.prototype.searchRows = function (field, type, value) {
+ if (this.modExists("filter", true)) {
+ return this.modules.filter.search("rows", field, type, value);
+ }
+};
+
+//search for specific data
+Tabulator.prototype.searchData = function (field, type, value) {
+ if (this.modExists("filter", true)) {
+ return this.modules.filter.search("data", field, type, value);
+ }
+};
+
+//get table html
+Tabulator.prototype.getHtml = function (visible, style, config) {
+ if (this.modExists("htmlTableExport", true)) {
+ return this.modules.htmlTableExport.getHtml(visible, style, config);
+ }
+};
+
+//get print html
+Tabulator.prototype.print = function (visible, style, config) {
+ if (this.modExists("print", true)) {
+ return this.modules.print.printFullscreen(visible, style, config);
+ }
+};
+
+//retrieve Ajax URL
+Tabulator.prototype.getAjaxUrl = function () {
+ if (this.modExists("ajax", true)) {
+ return this.modules.ajax.getUrl();
+ }
+};
+
+//replace data, keeping table in position with same sort
+Tabulator.prototype.replaceData = function (data, params, config) {
+ if (this.modExists("ajax")) {
+ this.modules.ajax.blockActiveRequest();
+ }
+
+ return this._setData(data, params, config, true);
+};
+
+//update table data
+Tabulator.prototype.updateData = function (data) {
+ var _this10 = this;
+
+ var self = this;
+ var responses = 0;
+
+ return new Promise(function (resolve, reject) {
+ if (_this10.modExists("ajax")) {
+ _this10.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+ data.forEach(function (item) {
+ var row = self.rowManager.findRow(item[self.options.index]);
+
+ if (row) {
+ responses++;
+
+ row.updateData(item).then(function () {
+ responses--;
+
+ if (!responses) {
+ resolve();
+ }
+ });
+ }
+ });
+ } else {
+ console.warn("Update Error - No data provided");
+ reject("Update Error - No data provided");
+ }
+ });
+};
+
+Tabulator.prototype.addData = function (data, pos, index) {
+ var _this11 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this11.modExists("ajax")) {
+ _this11.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+ _this11.rowManager.addRows(data, pos, index).then(function (rows) {
+ var output = [];
+
+ rows.forEach(function (row) {
+ output.push(row.getComponent());
+ });
+
+ resolve(output);
+ });
+ } else {
+ console.warn("Update Error - No data provided");
+ reject("Update Error - No data provided");
+ }
+ });
+};
+
+//update table data
+Tabulator.prototype.updateOrAddData = function (data) {
+ var _this12 = this;
+
+ var self = this,
+ rows = [],
+ responses = 0;
+
+ return new Promise(function (resolve, reject) {
+ if (_this12.modExists("ajax")) {
+ _this12.modules.ajax.blockActiveRequest();
+ }
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (data) {
+ data.forEach(function (item) {
+ var row = self.rowManager.findRow(item[self.options.index]);
+
+ responses++;
+
+ if (row) {
+ row.updateData(item).then(function () {
+ responses--;
+ rows.push(row.getComponent());
+
+ if (!responses) {
+ resolve(rows);
+ }
+ });
+ } else {
+ self.rowManager.addRows(item).then(function (newRows) {
+ responses--;
+ rows.push(newRows[0].getComponent());
+
+ if (!responses) {
+ resolve(rows);
+ }
+ });
+ }
+ });
+ } else {
+ console.warn("Update Error - No data provided");
+ reject("Update Error - No data provided");
+ }
+ });
+};
+
+//get row object
+Tabulator.prototype.getRow = function (index) {
+ var row = this.rowManager.findRow(index);
+
+ if (row) {
+ return row.getComponent();
+ } else {
+ console.warn("Find Error - No matching row found:", index);
+ return false;
+ }
+};
+
+//get row object
+Tabulator.prototype.getRowFromPosition = function (position, active) {
+ var row = this.rowManager.getRowFromPosition(position, active);
+
+ if (row) {
+ return row.getComponent();
+ } else {
+ console.warn("Find Error - No matching row found:", position);
+ return false;
+ }
+};
+
+//delete row from table
+Tabulator.prototype.deleteRow = function (index) {
+ var _this13 = this;
+
+ return new Promise(function (resolve, reject) {
+ var row = _this13.rowManager.findRow(index);
+
+ if (row) {
+ row.delete().then(function () {
+ resolve();
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ console.warn("Delete Error - No matching row found:", index);
+ reject("Delete Error - No matching row found");
+ }
+ });
+};
+
+//add row to table
+Tabulator.prototype.addRow = function (data, pos, index) {
+ var _this14 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ _this14.rowManager.addRows(data, pos, index).then(function (rows) {
+ //recalc column calculations if present
+ if (_this14.modExists("columnCalcs")) {
+ _this14.modules.columnCalcs.recalc(_this14.rowManager.activeRows);
+ }
+
+ resolve(rows[0].getComponent());
+ });
+ });
+};
+
+//update a row if it exitsts otherwise create it
+Tabulator.prototype.updateOrAddRow = function (index, data) {
+ var _this15 = this;
+
+ return new Promise(function (resolve, reject) {
+ var row = _this15.rowManager.findRow(index);
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (row) {
+ row.updateData(data).then(function () {
+ //recalc column calculations if present
+ if (_this15.modExists("columnCalcs")) {
+ _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+ }
+
+ resolve(row.getComponent());
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ row = _this15.rowManager.addRows(data).then(function (rows) {
+ //recalc column calculations if present
+ if (_this15.modExists("columnCalcs")) {
+ _this15.modules.columnCalcs.recalc(_this15.rowManager.activeRows);
+ }
+
+ resolve(rows[0].getComponent());
+ }).catch(function (err) {
+ reject(err);
+ });
+ }
+ });
+};
+
+//update row data
+Tabulator.prototype.updateRow = function (index, data) {
+ var _this16 = this;
+
+ return new Promise(function (resolve, reject) {
+ var row = _this16.rowManager.findRow(index);
+
+ if (typeof data === "string") {
+ data = JSON.parse(data);
+ }
+
+ if (row) {
+ row.updateData(data).then(function () {
+ resolve(row.getComponent());
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ console.warn("Update Error - No matching row found:", index);
+ reject("Update Error - No matching row found");
+ }
+ });
+};
+
+//scroll to row in DOM
+Tabulator.prototype.scrollToRow = function (index, position, ifVisible) {
+ var _this17 = this;
+
+ return new Promise(function (resolve, reject) {
+ var row = _this17.rowManager.findRow(index);
+
+ if (row) {
+ _this17.rowManager.scrollToRow(row, position, ifVisible).then(function () {
+ resolve();
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ console.warn("Scroll Error - No matching row found:", index);
+ reject("Scroll Error - No matching row found");
+ }
+ });
+};
+
+Tabulator.prototype.moveRow = function (from, to, after) {
+ var fromRow = this.rowManager.findRow(from);
+
+ if (fromRow) {
+ fromRow.moveToRow(to, after);
+ } else {
+ console.warn("Move Error - No matching row found:", from);
+ }
+};
+
+Tabulator.prototype.getRows = function (active) {
+ return this.rowManager.getComponents(active);
+};
+
+//get position of row in table
+Tabulator.prototype.getRowPosition = function (index, active) {
+ var row = this.rowManager.findRow(index);
+
+ if (row) {
+ return this.rowManager.getRowPosition(row, active);
+ } else {
+ console.warn("Position Error - No matching row found:", index);
+ return false;
+ }
+};
+
+//copy table data to clipboard
+Tabulator.prototype.copyToClipboard = function (selector, selectorParams, formatter, formatterParams) {
+ if (this.modExists("clipboard", true)) {
+ this.modules.clipboard.copy(selector, selectorParams, formatter, formatterParams);
+ }
+};
+
+/////////////// Column Functions ///////////////
+
+Tabulator.prototype.setColumns = function (definition) {
+ this.columnManager.setColumns(definition);
+};
+
+Tabulator.prototype.getColumns = function (structured) {
+ return this.columnManager.getComponents(structured);
+};
+
+Tabulator.prototype.getColumn = function (field) {
+ var col = this.columnManager.findColumn(field);
+
+ if (col) {
+ return col.getComponent();
+ } else {
+ console.warn("Find Error - No matching column found:", field);
+ return false;
+ }
+};
+
+Tabulator.prototype.getColumnDefinitions = function () {
+ return this.columnManager.getDefinitionTree();
+};
+
+Tabulator.prototype.getColumnLayout = function () {
+ if (this.modExists("persistence", true)) {
+ return this.modules.persistence.parseColumns(this.columnManager.getColumns());
+ }
+};
+
+Tabulator.prototype.setColumnLayout = function (layout) {
+ if (this.modExists("persistence", true)) {
+ this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns, layout));
+ return true;
+ }
+ return false;
+};
+
+Tabulator.prototype.showColumn = function (field) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ column.show();
+
+ if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+ this.modules.responsiveLayout.update();
+ }
+ } else {
+ console.warn("Column Show Error - No matching column found:", field);
+ return false;
+ }
+};
+
+Tabulator.prototype.hideColumn = function (field) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ column.hide();
+
+ if (this.options.responsiveLayout && this.modExists("responsiveLayout", true)) {
+ this.modules.responsiveLayout.update();
+ }
+ } else {
+ console.warn("Column Hide Error - No matching column found:", field);
+ return false;
+ }
+};
+
+Tabulator.prototype.toggleColumn = function (field) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ if (column.visible) {
+ column.hide();
+ } else {
+ column.show();
+ }
+ } else {
+ console.warn("Column Visibility Toggle Error - No matching column found:", field);
+ return false;
+ }
+};
+
+Tabulator.prototype.addColumn = function (definition, before, field) {
+ var column = this.columnManager.findColumn(field);
+
+ this.columnManager.addColumn(definition, before, column);
+};
+
+Tabulator.prototype.deleteColumn = function (field) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ column.delete();
+ } else {
+ console.warn("Column Delete Error - No matching column found:", field);
+ return false;
+ }
+};
+
+Tabulator.prototype.moveColumn = function (from, to, after) {
+ var fromColumn = this.columnManager.findColumn(from);
+ var toColumn = this.columnManager.findColumn(to);
+
+ if (fromColumn) {
+ if (toColumn) {
+ this.columnManager.moveColumn(fromColumn, toColumn, after);
+ } else {
+ console.warn("Move Error - No matching column found:", toColumn);
+ }
+ } else {
+ console.warn("Move Error - No matching column found:", from);
+ }
+};
+
+//scroll to column in DOM
+Tabulator.prototype.scrollToColumn = function (field, position, ifVisible) {
+ var _this18 = this;
+
+ return new Promise(function (resolve, reject) {
+ var column = _this18.columnManager.findColumn(field);
+
+ if (column) {
+ _this18.columnManager.scrollToColumn(column, position, ifVisible).then(function () {
+ resolve();
+ }).catch(function (err) {
+ reject(err);
+ });
+ } else {
+ console.warn("Scroll Error - No matching column found:", field);
+ reject("Scroll Error - No matching column found");
+ }
+ });
+};
+
+//////////// Localization Functions ////////////
+Tabulator.prototype.setLocale = function (locale) {
+ this.modules.localize.setLocale(locale);
+};
+
+Tabulator.prototype.getLocale = function () {
+ return this.modules.localize.getLocale();
+};
+
+Tabulator.prototype.getLang = function (locale) {
+ return this.modules.localize.getLang(locale);
+};
+
+//////////// General Public Functions ////////////
+
+//redraw list without updating data
+Tabulator.prototype.redraw = function (force) {
+ this.columnManager.redraw(force);
+ this.rowManager.redraw(force);
+};
+
+Tabulator.prototype.setHeight = function (height) {
+ this.options.height = isNaN(height) ? height : height + "px";
+ this.element.style.height = this.options.height;
+ this.rowManager.redraw();
+};
+
+///////////////////// Sorting ////////////////////
+
+//trigger sort
+Tabulator.prototype.setSort = function (sortList, dir) {
+ if (this.modExists("sort", true)) {
+ this.modules.sort.setSort(sortList, dir);
+ this.rowManager.sorterRefresh();
+ }
+};
+
+Tabulator.prototype.getSorters = function () {
+ if (this.modExists("sort", true)) {
+ return this.modules.sort.getSort();
+ }
+};
+
+Tabulator.prototype.clearSort = function () {
+ if (this.modExists("sort", true)) {
+ this.modules.sort.clear();
+ this.rowManager.sorterRefresh();
+ }
+};
+
+///////////////////// Filtering ////////////////////
+
+//set standard filters
+Tabulator.prototype.setFilter = function (field, type, value) {
+ if (this.modExists("filter", true)) {
+ this.modules.filter.setFilter(field, type, value);
+ this.rowManager.filterRefresh();
+ }
+};
+
+//add filter to array
+Tabulator.prototype.addFilter = function (field, type, value) {
+ if (this.modExists("filter", true)) {
+ this.modules.filter.addFilter(field, type, value);
+ this.rowManager.filterRefresh();
+ }
+};
+
+//get all filters
+Tabulator.prototype.getFilters = function (all) {
+ if (this.modExists("filter", true)) {
+ return this.modules.filter.getFilters(all);
+ }
+};
+
+Tabulator.prototype.setHeaderFilterFocus = function (field) {
+ if (this.modExists("filter", true)) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ this.modules.filter.setHeaderFilterFocus(column);
+ } else {
+ console.warn("Column Filter Focus Error - No matching column found:", field);
+ return false;
+ }
+ }
+};
+
+Tabulator.prototype.setHeaderFilterValue = function (field, value) {
+ if (this.modExists("filter", true)) {
+ var column = this.columnManager.findColumn(field);
+
+ if (column) {
+ this.modules.filter.setHeaderFilterValue(column, value);
+ } else {
+ console.warn("Column Filter Error - No matching column found:", field);
+ return false;
+ }
+ }
+};
+
+Tabulator.prototype.getHeaderFilters = function () {
+ if (this.modExists("filter", true)) {
+ return this.modules.filter.getHeaderFilters();
+ }
+};
+
+//remove filter from array
+Tabulator.prototype.removeFilter = function (field, type, value) {
+ if (this.modExists("filter", true)) {
+ this.modules.filter.removeFilter(field, type, value);
+ this.rowManager.filterRefresh();
+ }
+};
+
+//clear filters
+Tabulator.prototype.clearFilter = function (all) {
+ if (this.modExists("filter", true)) {
+ this.modules.filter.clearFilter(all);
+ this.rowManager.filterRefresh();
+ }
+};
+
+//clear header filters
+Tabulator.prototype.clearHeaderFilter = function () {
+ if (this.modExists("filter", true)) {
+ this.modules.filter.clearHeaderFilter();
+ this.rowManager.filterRefresh();
+ }
+};
+
+///////////////////// Filtering ////////////////////
+Tabulator.prototype.selectRow = function (rows) {
+ if (this.modExists("selectRow", true)) {
+ this.modules.selectRow.selectRows(rows);
+ }
+};
+
+Tabulator.prototype.deselectRow = function (rows) {
+ if (this.modExists("selectRow", true)) {
+ this.modules.selectRow.deselectRows(rows);
+ }
+};
+
+Tabulator.prototype.toggleSelectRow = function (row) {
+ if (this.modExists("selectRow", true)) {
+ this.modules.selectRow.toggleRow(row);
+ }
+};
+
+Tabulator.prototype.getSelectedRows = function () {
+ if (this.modExists("selectRow", true)) {
+ return this.modules.selectRow.getSelectedRows();
+ }
+};
+
+Tabulator.prototype.getSelectedData = function () {
+ if (this.modExists("selectRow", true)) {
+ return this.modules.selectRow.getSelectedData();
+ }
+};
+
+//////////// Pagination Functions ////////////
+
+Tabulator.prototype.setMaxPage = function (max) {
+ if (this.options.pagination && this.modExists("page")) {
+ this.modules.page.setMaxPage(max);
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.setPage = function (page) {
+ if (this.options.pagination && this.modExists("page")) {
+ return this.modules.page.setPage(page);
+ } else {
+ return new Promise(function (resolve, reject) {
+ reject();
+ });
+ }
+};
+
+Tabulator.prototype.setPageToRow = function (row) {
+ var _this19 = this;
+
+ return new Promise(function (resolve, reject) {
+ if (_this19.options.pagination && _this19.modExists("page")) {
+ row = _this19.rowManager.findRow(row);
+
+ if (row) {
+ _this19.modules.page.setPageToRow(row).then(function () {
+ resolve();
+ }).catch(function () {
+ reject();
+ });
+ } else {
+ reject();
+ }
+ } else {
+ reject();
+ }
+ });
+};
+
+Tabulator.prototype.setPageSize = function (size) {
+ if (this.options.pagination && this.modExists("page")) {
+ this.modules.page.setPageSize(size);
+ this.modules.page.setPage(1).then(function () {}).catch(function () {});
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getPageSize = function () {
+ if (this.options.pagination && this.modExists("page", true)) {
+ return this.modules.page.getPageSize();
+ }
+};
+
+Tabulator.prototype.previousPage = function () {
+ if (this.options.pagination && this.modExists("page")) {
+ this.modules.page.previousPage();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.nextPage = function () {
+ if (this.options.pagination && this.modExists("page")) {
+ this.modules.page.nextPage();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getPage = function () {
+ if (this.options.pagination && this.modExists("page")) {
+ return this.modules.page.getPage();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getPageMax = function () {
+ if (this.options.pagination && this.modExists("page")) {
+ return this.modules.page.getPageMax();
+ } else {
+ return false;
+ }
+};
+
+///////////////// Grouping Functions ///////////////
+
+Tabulator.prototype.setGroupBy = function (groups) {
+ if (this.modExists("groupRows", true)) {
+ this.options.groupBy = groups;
+ this.modules.groupRows.initialize();
+ this.rowManager.refreshActiveData("display");
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.setGroupStartOpen = function (values) {
+ if (this.modExists("groupRows", true)) {
+ this.options.groupStartOpen = values;
+ this.modules.groupRows.initialize();
+ if (this.options.groupBy) {
+ this.rowManager.refreshActiveData("group");
+ } else {
+ console.warn("Grouping Update - cant refresh view, no groups have been set");
+ }
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.setGroupHeader = function (values) {
+ if (this.modExists("groupRows", true)) {
+ this.options.groupHeader = values;
+ this.modules.groupRows.initialize();
+ if (this.options.groupBy) {
+ this.rowManager.refreshActiveData("group");
+ } else {
+ console.warn("Grouping Update - cant refresh view, no groups have been set");
+ }
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getGroups = function (values) {
+ if (this.modExists("groupRows", true)) {
+ return this.modules.groupRows.getGroups(true);
+ } else {
+ return false;
+ }
+};
+
+// get grouped table data in the same format as getData()
+Tabulator.prototype.getGroupedData = function () {
+ if (this.modExists("groupRows", true)) {
+ return this.options.groupBy ? this.modules.groupRows.getGroupedData() : this.getData();
+ }
+};
+
+///////////////// Column Calculation Functions ///////////////
+Tabulator.prototype.getCalcResults = function () {
+ if (this.modExists("columnCalcs", true)) {
+ return this.modules.columnCalcs.getResults();
+ } else {
+ return false;
+ }
+};
+
+/////////////// Navigation Management //////////////
+
+Tabulator.prototype.navigatePrev = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ return cell.nav().prev();
+ }
+ }
+
+ return false;
+};
+
+Tabulator.prototype.navigateNext = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ return cell.nav().next();
+ }
+ }
+
+ return false;
+};
+
+Tabulator.prototype.navigateLeft = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ return cell.nav().left();
+ }
+ }
+
+ return false;
+};
+
+Tabulator.prototype.navigateRight = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ return cell.nav().right();
+ }
+ }
+
+ return false;
+};
+
+Tabulator.prototype.navigateUp = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ return cell.nav().up();
+ }
+ }
+
+ return false;
+};
+
+Tabulator.prototype.navigateDown = function () {
+ var cell = false;
+
+ if (this.modExists("edit", true)) {
+ cell = this.modules.edit.currentCell;
+
+ if (cell) {
+ e.preventDefault();
+ return cell.nav().down();
+ }
+ }
+
+ return false;
+};
+
+/////////////// History Management //////////////
+Tabulator.prototype.undo = function () {
+ if (this.options.history && this.modExists("history", true)) {
+ return this.modules.history.undo();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.redo = function () {
+ if (this.options.history && this.modExists("history", true)) {
+ return this.modules.history.redo();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getHistoryUndoSize = function () {
+ if (this.options.history && this.modExists("history", true)) {
+ return this.modules.history.getHistoryUndoSize();
+ } else {
+ return false;
+ }
+};
+
+Tabulator.prototype.getHistoryRedoSize = function () {
+ if (this.options.history && this.modExists("history", true)) {
+ return this.modules.history.getHistoryRedoSize();
+ } else {
+ return false;
+ }
+};
+
+/////////////// Download Management //////////////
+
+Tabulator.prototype.download = function (type, filename, options) {
+ if (this.modExists("download", true)) {
+ this.modules.download.download(type, filename, options);
+ }
+};
+
+Tabulator.prototype.downloadToTab = function (type, filename, options) {
+ if (this.modExists("download", true)) {
+ this.modules.download.download(type, filename, options, true);
+ }
+};
+
+/////////// Inter Table Communications ///////////
+
+Tabulator.prototype.tableComms = function (table, module, action, data) {
+ this.modules.comms.receive(table, module, action, data);
+};
+
+////////////// Extension Management //////////////
+
+//object to hold module
+Tabulator.prototype.moduleBindings = {};
+
+//extend module
+Tabulator.prototype.extendModule = function (name, property, values) {
+
+ if (Tabulator.prototype.moduleBindings[name]) {
+ var source = Tabulator.prototype.moduleBindings[name].prototype[property];
+
+ if (source) {
+ if ((typeof values === 'undefined' ? 'undefined' : _typeof(values)) == "object") {
+ for (var key in values) {
+ source[key] = values[key];
+ }
+ } else {
+ console.warn("Module Error - Invalid value type, it must be an object");
+ }
+ } else {
+ console.warn("Module Error - property does not exist:", property);
+ }
+ } else {
+ console.warn("Module Error - module does not exist:", name);
+ }
+};
+
+//add module to tabulator
+Tabulator.prototype.registerModule = function (name, module) {
+ var self = this;
+ Tabulator.prototype.moduleBindings[name] = module;
+};
+
+//ensure that module are bound to instantiated function
+Tabulator.prototype.bindModules = function () {
+ this.modules = {};
+
+ for (var name in Tabulator.prototype.moduleBindings) {
+ this.modules[name] = new Tabulator.prototype.moduleBindings[name](this);
+ }
+};
+
+//Check for module
+Tabulator.prototype.modExists = function (plugin, required) {
+ if (this.modules[plugin]) {
+ return true;
+ } else {
+ if (required) {
+ console.error("Tabulator Module Not Installed: " + plugin);
+ }
+ return false;
+ }
+};
+
+Tabulator.prototype.helpers = {
+
+ elVisible: function elVisible(el) {
+ return !(el.offsetWidth <= 0 && el.offsetHeight <= 0);
+ },
+
+ elOffset: function elOffset(el) {
+ var box = el.getBoundingClientRect();
+
+ return {
+ top: box.top + window.pageYOffset - document.documentElement.clientTop,
+ left: box.left + window.pageXOffset - document.documentElement.clientLeft
+ };
+ },
+
+ deepClone: function deepClone(obj) {
+ var clone = Array.isArray(obj) ? [] : {};
+
+ for (var i in obj) {
+ if (obj[i] != null && _typeof(obj[i]) === "object") {
+ if (obj[i] instanceof Date) {
+ clone[i] = new Date(obj[i]);
+ } else {
+ clone[i] = this.deepClone(obj[i]);
+ }
+ } else {
+ clone[i] = obj[i];
+ }
+ }
+ return clone;
+ }
+};
+
+Tabulator.prototype.comms = {
+ tables: [],
+ register: function register(table) {
+ Tabulator.prototype.comms.tables.push(table);
+ },
+ deregister: function deregister(table) {
+ var index = Tabulator.prototype.comms.tables.indexOf(table);
+
+ if (index > -1) {
+ Tabulator.prototype.comms.tables.splice(index, 1);
+ }
+ },
+ lookupTable: function lookupTable(query) {
+ var results = [],
+ matches,
+ match;
+
+ if (typeof query === "string") {
+ matches = document.querySelectorAll(query);
+
+ if (matches.length) {
+ for (var i = 0; i < matches.length; i++) {
+ match = Tabulator.prototype.comms.matchElement(matches[i]);
+
+ if (match) {
+ results.push(match);
+ }
+ }
+ }
+ } else if (typeof HTMLElement !== "undefined" && query instanceof HTMLElement || query instanceof Tabulator) {
+ match = Tabulator.prototype.comms.matchElement(query);
+
+ if (match) {
+ results.push(match);
+ }
+ } else if (Array.isArray(query)) {
+ query.forEach(function (item) {
+ results = results.concat(Tabulator.prototype.comms.lookupTable(item));
+ });
+ } else {
+ console.warn("Table Connection Error - Invalid Selector", query);
+ }
+
+ return results;
+ },
+ matchElement: function matchElement(element) {
+ return Tabulator.prototype.comms.tables.find(function (table) {
+ return element instanceof Tabulator ? table === element : table.element === element;
+ });
+ }
+};
+
+var Layout = function Layout(table) {
+
+ this.table = table;
+
+ this.mode = null;
+};
+
+//initialize layout system
+
+Layout.prototype.initialize = function (layout) {
+
+ if (this.modes[layout]) {
+
+ this.mode = layout;
+ } else {
+
+ console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : " + layout);
+
+ this.mode = 'fitData';
+ }
+
+ this.table.element.setAttribute("tabulator-layout", this.mode);
+};
+
+Layout.prototype.getMode = function () {
+
+ return this.mode;
+};
+
+//trigger table layout
+
+Layout.prototype.layout = function () {
+
+ this.modes[this.mode].call(this, this.table.columnManager.columnsByIndex);
+};
+
+//layout render functions
+
+Layout.prototype.modes = {
+
+ //resize columns to fit data the contain
+
+ "fitData": function fitData(columns) {
+
+ columns.forEach(function (column) {
+
+ column.reinitializeWidth();
+ });
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ },
+
+ //resize columns to fit data the contain
+
+ "fitDataFill": function fitDataFill(columns) {
+
+ columns.forEach(function (column) {
+
+ column.reinitializeWidth();
+ });
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+ },
+
+ //resize columns to fit
+
+ "fitColumns": function fitColumns(columns) {
+
+ var self = this;
+
+ var totalWidth = self.table.element.clientWidth; //table element width
+
+ var fixedWidth = 0; //total width of columns with a defined width
+
+ var flexWidth = 0; //total width available to flexible columns
+
+ var flexGrowUnits = 0; //total number of widthGrow blocks accross all columns
+
+ var flexColWidth = 0; //desired width of flexible columns
+
+ var flexColumns = []; //array of flexible width columns
+
+ var fixedShrinkColumns = []; //array of fixed width columns that can shrink
+
+ var flexShrinkUnits = 0; //total number of widthShrink blocks accross all columns
+
+ var overflowWidth = 0; //horizontal overflow width
+
+ var gapFill = 0; //number of pixels to be added to final column to close and half pixel gaps
+
+
+ function calcWidth(width) {
+
+ var colWidth;
+
+ if (typeof width == "string") {
+
+ if (width.indexOf("%") > -1) {
+
+ colWidth = totalWidth / 100 * parseInt(width);
+ } else {
+
+ colWidth = parseInt(width);
+ }
+ } else {
+
+ colWidth = width;
+ }
+
+ return colWidth;
+ }
+
+ //ensure columns resize to take up the correct amount of space
+
+ function scaleColumns(columns, freeSpace, colWidth, shrinkCols) {
+
+ var oversizeCols = [],
+ oversizeSpace = 0,
+ remainingSpace = 0,
+ nextColWidth = 0,
+ gap = 0,
+ changeUnits = 0,
+ undersizeCols = [];
+
+ function calcGrow(col) {
+
+ return colWidth * (col.column.definition.widthGrow || 1);
+ }
+
+ function calcShrink(col) {
+
+ return calcWidth(col.width) - colWidth * (col.column.definition.widthShrink || 0);
+ }
+
+ columns.forEach(function (col, i) {
+
+ var width = shrinkCols ? calcShrink(col) : calcGrow(col);
+
+ if (col.column.minWidth >= width) {
+
+ oversizeCols.push(col);
+ } else {
+
+ undersizeCols.push(col);
+
+ changeUnits += shrinkCols ? col.column.definition.widthShrink || 1 : col.column.definition.widthGrow || 1;
+ }
+ });
+
+ if (oversizeCols.length) {
+
+ oversizeCols.forEach(function (col) {
+
+ oversizeSpace += shrinkCols ? col.width - col.column.minWidth : col.column.minWidth;
+
+ col.width = col.column.minWidth;
+ });
+
+ remainingSpace = freeSpace - oversizeSpace;
+
+ nextColWidth = changeUnits ? Math.floor(remainingSpace / changeUnits) : remainingSpace;
+
+ gap = remainingSpace - nextColWidth * changeUnits;
+
+ gap += scaleColumns(undersizeCols, remainingSpace, nextColWidth, shrinkCols);
+ } else {
+
+ gap = changeUnits ? freeSpace - Math.floor(freeSpace / changeUnits) * changeUnits : freeSpace;
+
+ undersizeCols.forEach(function (column) {
+
+ column.width = shrinkCols ? calcShrink(column) : calcGrow(column);
+ });
+ }
+
+ return gap;
+ }
+
+ if (this.table.options.responsiveLayout && this.table.modExists("responsiveLayout", true)) {
+
+ this.table.modules.responsiveLayout.update();
+ }
+
+ //adjust for vertical scrollbar if present
+
+ if (this.table.rowManager.element.scrollHeight > this.table.rowManager.element.clientHeight) {
+
+ totalWidth -= this.table.rowManager.element.offsetWidth - this.table.rowManager.element.clientWidth;
+ }
+
+ columns.forEach(function (column) {
+
+ var width, minWidth, colWidth;
+
+ if (column.visible) {
+
+ width = column.definition.width;
+
+ minWidth = parseInt(column.minWidth);
+
+ if (width) {
+
+ colWidth = calcWidth(width);
+
+ fixedWidth += colWidth > minWidth ? colWidth : minWidth;
+
+ if (column.definition.widthShrink) {
+
+ fixedShrinkColumns.push({
+
+ column: column,
+
+ width: colWidth > minWidth ? colWidth : minWidth
+
+ });
+
+ flexShrinkUnits += column.definition.widthShrink;
+ }
+ } else {
+
+ flexColumns.push({
+
+ column: column,
+
+ width: 0
+
+ });
+
+ flexGrowUnits += column.definition.widthGrow || 1;
+ }
+ }
+ });
+
+ //calculate available space
+
+ flexWidth = totalWidth - fixedWidth;
+
+ //calculate correct column size
+
+ flexColWidth = Math.floor(flexWidth / flexGrowUnits);
+
+ //generate column widths
+
+ var gapFill = scaleColumns(flexColumns, flexWidth, flexColWidth, false);
+
+ //increase width of last column to account for rounding errors
+
+ if (flexColumns.length && gapFill > 0) {
+
+ flexColumns[flexColumns.length - 1].width += +gapFill;
+ }
+
+ //caculate space for columns to be shrunk into
+
+ flexColumns.forEach(function (col) {
+
+ flexWidth -= col.width;
+ });
+
+ overflowWidth = Math.abs(gapFill) + flexWidth;
+
+ //shrink oversize columns if there is no available space
+
+ if (overflowWidth > 0 && flexShrinkUnits) {
+
+ gapFill = scaleColumns(fixedShrinkColumns, overflowWidth, Math.floor(overflowWidth / flexShrinkUnits), true);
+ }
+
+ //decrease width of last column to account for rounding errors
+
+ if (fixedShrinkColumns.length) {
+
+ fixedShrinkColumns[fixedShrinkColumns.length - 1].width -= gapFill;
+ }
+
+ flexColumns.forEach(function (col) {
+
+ col.column.setWidth(col.width);
+ });
+
+ fixedShrinkColumns.forEach(function (col) {
+
+ col.column.setWidth(col.width);
+ });
+ }
+
+};
+
+Tabulator.prototype.registerModule("layout", Layout);
+var Localize = function Localize(table) {
+ this.table = table; //hold Tabulator object
+ this.locale = "default"; //current locale
+ this.lang = false; //current language
+ this.bindings = {}; //update events to call when locale is changed
+};
+
+//set header placehoder
+Localize.prototype.setHeaderFilterPlaceholder = function (placeholder) {
+ this.langs.default.headerFilters.default = placeholder;
+};
+
+//set header filter placeholder by column
+Localize.prototype.setHeaderFilterColumnPlaceholder = function (column, placeholder) {
+ this.langs.default.headerFilters.columns[column] = placeholder;
+
+ if (this.lang && !this.lang.headerFilters.columns[column]) {
+ this.lang.headerFilters.columns[column] = placeholder;
+ }
+};
+
+//setup a lang description object
+Localize.prototype.installLang = function (locale, lang) {
+ if (this.langs[locale]) {
+ this._setLangProp(this.langs[locale], lang);
+ } else {
+ this.langs[locale] = lang;
+ }
+};
+
+Localize.prototype._setLangProp = function (lang, values) {
+ for (var key in values) {
+ if (lang[key] && _typeof(lang[key]) == "object") {
+ this._setLangProp(lang[key], values[key]);
+ } else {
+ lang[key] = values[key];
+ }
+ }
+};
+
+//set current locale
+Localize.prototype.setLocale = function (desiredLocale) {
+ var self = this;
+
+ desiredLocale = desiredLocale || "default";
+
+ //fill in any matching languge values
+ function traverseLang(trans, path) {
+ for (var prop in trans) {
+
+ if (_typeof(trans[prop]) == "object") {
+ if (!path[prop]) {
+ path[prop] = {};
+ }
+ traverseLang(trans[prop], path[prop]);
+ } else {
+ path[prop] = trans[prop];
+ }
+ }
+ }
+
+ //determing correct locale to load
+ if (desiredLocale === true && navigator.language) {
+ //get local from system
+ desiredLocale = navigator.language.toLowerCase();
+ }
+
+ if (desiredLocale) {
+
+ //if locale is not set, check for matching top level locale else use default
+ if (!self.langs[desiredLocale]) {
+ var prefix = desiredLocale.split("-")[0];
+
+ if (self.langs[prefix]) {
+ console.warn("Localization Error - Exact matching locale not found, using closest match: ", desiredLocale, prefix);
+ desiredLocale = prefix;
+ } else {
+ console.warn("Localization Error - Matching locale not found, using default: ", desiredLocale);
+ desiredLocale = "default";
+ }
+ }
+ }
+
+ self.locale = desiredLocale;
+
+ //load default lang template
+ self.lang = Tabulator.prototype.helpers.deepClone(self.langs.default || {});
+
+ if (desiredLocale != "default") {
+ traverseLang(self.langs[desiredLocale], self.lang);
+ }
+
+ self.table.options.localized.call(self.table, self.locale, self.lang);
+
+ self._executeBindings();
+};
+
+//get current locale
+Localize.prototype.getLocale = function (locale) {
+ return self.locale;
+};
+
+//get lang object for given local or current if none provided
+Localize.prototype.getLang = function (locale) {
+ return locale ? this.langs[locale] : this.lang;
+};
+
+//get text for current locale
+Localize.prototype.getText = function (path, value) {
+ var path = value ? path + "|" + value : path,
+ pathArray = path.split("|"),
+ text = this._getLangElement(pathArray, this.locale);
+
+ // if(text === false){
+ // console.warn("Localization Error - Matching localized text not found for given path: ", path);
+ // }
+
+ return text || "";
+};
+
+//traverse langs object and find localized copy
+Localize.prototype._getLangElement = function (path, locale) {
+ var self = this;
+ var root = self.lang;
+
+ path.forEach(function (level) {
+ var rootPath;
+
+ if (root) {
+ rootPath = root[level];
+
+ if (typeof rootPath != "undefined") {
+ root = rootPath;
+ } else {
+ root = false;
+ }
+ }
+ });
+
+ return root;
+};
+
+//set update binding
+Localize.prototype.bind = function (path, callback) {
+ if (!this.bindings[path]) {
+ this.bindings[path] = [];
+ }
+
+ this.bindings[path].push(callback);
+
+ callback(this.getText(path), this.lang);
+};
+
+//itterate through bindings and trigger updates
+Localize.prototype._executeBindings = function () {
+ var self = this;
+
+ var _loop = function _loop(path) {
+ self.bindings[path].forEach(function (binding) {
+ binding(self.getText(path), self.lang);
+ });
+ };
+
+ for (var path in self.bindings) {
+ _loop(path);
+ }
+};
+
+//Localized text listings
+Localize.prototype.langs = {
+ "default": { //hold default locale text
+ "groups": {
+ "item": "item",
+ "items": "items"
+ },
+ "columns": {},
+ "ajax": {
+ "loading": "Loading",
+ "error": "Error"
+ },
+ "pagination": {
+ "page_size": "Page Size",
+ "first": "First",
+ "first_title": "First Page",
+ "last": "Last",
+ "last_title": "Last Page",
+ "prev": "Prev",
+ "prev_title": "Prev Page",
+ "next": "Next",
+ "next_title": "Next Page"
+ },
+ "headerFilters": {
+ "default": "filter column...",
+ "columns": {}
+ }
+ }
+};
+
+Tabulator.prototype.registerModule("localize", Localize);
+var Comms = function Comms(table) {
+ this.table = table;
+};
+
+Comms.prototype.getConnections = function (selectors) {
+ var self = this,
+ connections = [],
+ connection;
+
+ connection = Tabulator.prototype.comms.lookupTable(selectors);
+
+ connection.forEach(function (con) {
+ if (self.table !== con) {
+ connections.push(con);
+ }
+ });
+
+ return connections;
+};
+
+Comms.prototype.send = function (selectors, module, action, data) {
+ var self = this,
+ connections = this.getConnections(selectors);
+
+ connections.forEach(function (connection) {
+ connection.tableComms(self.table.element, module, action, data);
+ });
+
+ if (!connections.length && selectors) {
+ console.warn("Table Connection Error - No tables matching selector found", selectors);
+ }
+};
+
+Comms.prototype.receive = function (table, module, action, data) {
+ if (this.table.modExists(module)) {
+ return this.table.modules[module].commsReceived(table, action, data);
+ } else {
+ console.warn("Inter-table Comms Error - no such module:", module);
+ }
+};
+
+Tabulator.prototype.registerModule("comms", Comms);
\ No newline at end of file
--- /dev/null
+/* Tabulator v4.4.1 (c) Oliver Folkerd */
+"use strict";var _typeof="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(t){return typeof t}:function(t){return t&&"function"==typeof Symbol&&t.constructor===Symbol&&t!==Symbol.prototype?"symbol":typeof t};Array.prototype.findIndex||Object.defineProperty(Array.prototype,"findIndex",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return n;n++}return-1}}),Array.prototype.find||Object.defineProperty(Array.prototype,"find",{value:function(t){if(null==this)throw new TypeError('"this" is null or not defined');var e=Object(this),o=e.length>>>0;if("function"!=typeof t)throw new TypeError("predicate must be a function");for(var i=arguments[1],n=0;n<o;){var l=e[n];if(t.call(i,l,n,e))return l;n++}}});var ColumnManager=function(t){this.table=t,this.blockHozScrollEvent=!1,this.headersElement=this.createHeadersElement(),this.element=this.createHeaderElement(),this.rowManager=null,this.columns=[],this.columnsByIndex=[],this.columnsByField={},this.scrollLeft=0,this.element.insertBefore(this.headersElement,this.element.firstChild)};ColumnManager.prototype.createHeadersElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-headers"),t},ColumnManager.prototype.createHeaderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-header"),this.table.options.headerVisible||t.classList.add("tabulator-header-hidden"),t},ColumnManager.prototype.initialize=function(){},ColumnManager.prototype.setRowManager=function(t){this.rowManager=t},ColumnManager.prototype.getElement=function(){return this.element},ColumnManager.prototype.getHeadersElement=function(){return this.headersElement},ColumnManager.prototype.scrollHorizontal=function(t){var e=0,o=this.element.scrollWidth-this.table.element.clientWidth;this.element.scrollLeft=t,t>o?(e=t-o,this.element.style.marginLeft=-e+"px"):this.element.style.marginLeft=0,this.scrollLeft=t,this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.scrollHorizontal()},ColumnManager.prototype.generateColumnsFromRowData=function(t){var e,o,i=[];if(t&&t.length){e=t[0];for(var n in e){var l={field:n,title:n},s=e[n];switch(void 0===s?"undefined":_typeof(s)){case"undefined":o="string";break;case"boolean":o="boolean";break;case"object":o=Array.isArray(s)?"array":"string";break;default:o=isNaN(s)||""===s?s.match(/((^[0-9]+[a-z]+)|(^[a-z]+[0-9]+))+$/i)?"alphanum":"string":"number"}l.sorter=o,i.push(l)}this.table.options.columns=i,this.setColumns(this.table.options.columns)}},ColumnManager.prototype.setColumns=function(t,e){for(var o=this;o.headersElement.firstChild;)o.headersElement.removeChild(o.headersElement.firstChild);o.columns=[],o.columnsByIndex=[],o.columnsByField={},o.table.modExists("frozenColumns")&&o.table.modules.frozenColumns.reset(),t.forEach(function(t,e){o._addColumn(t)}),o._reIndexColumns(),o.table.options.responsiveLayout&&o.table.modExists("responsiveLayout",!0)&&o.table.modules.responsiveLayout.initialize(),o.redraw(!0)},ColumnManager.prototype._addColumn=function(t,e,o){var i=new Column(t,this),n=i.getElement(),l=o?this.findColumnIndex(o):o;if(o&&l>-1){var s=this.columns.indexOf(o.getTopColumn()),a=o.getElement();e?(this.columns.splice(s,0,i),a.parentNode.insertBefore(n,a)):(this.columns.splice(s+1,0,i),a.parentNode.insertBefore(n,a.nextSibling))}else e?(this.columns.unshift(i),this.headersElement.insertBefore(i.getElement(),this.headersElement.firstChild)):(this.columns.push(i),this.headersElement.appendChild(i.getElement()));return i},ColumnManager.prototype.registerColumnField=function(t){t.definition.field&&(this.columnsByField[t.definition.field]=t)},ColumnManager.prototype.registerColumnPosition=function(t){this.columnsByIndex.push(t)},ColumnManager.prototype._reIndexColumns=function(){this.columnsByIndex=[],this.columns.forEach(function(t){t.reRegisterPosition()})},ColumnManager.prototype._verticalAlignHeaders=function(){var t=this,e=0;t.columns.forEach(function(t){var o;t.clearVerticalAlign(),(o=t.getHeight())>e&&(e=o)}),t.columns.forEach(function(o){o.verticalAlign(t.table.options.columnVertAlign,e)}),t.rowManager.adjustTableSize()},ColumnManager.prototype.findColumn=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t)))return this.columnsByField[t]||!1;if(t instanceof Column)return t;if(t instanceof ColumnComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.columns.find(function(e){return e.element===t})||!1}return!1},ColumnManager.prototype.getColumnByField=function(t){return this.columnsByField[t]},ColumnManager.prototype.getColumnByIndex=function(t){return this.columnsByIndex[t]},ColumnManager.prototype.getFirstVisibileColumn=function(t){var t=this.columnsByIndex.findIndex(function(t){return t.visible});return t>-1&&this.columnsByIndex[t]},ColumnManager.prototype.getColumns=function(){return this.columns},ColumnManager.prototype.findColumnIndex=function(t){return this.columnsByIndex.findIndex(function(e){return t===e})},ColumnManager.prototype.getRealColumns=function(){return this.columnsByIndex},ColumnManager.prototype.traverse=function(t){this.columnsByIndex.forEach(function(e,o){t(e,o)})},ColumnManager.prototype.getDefinitions=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){(!t||t&&e.visible)&&o.push(e.getDefinition())}),o},ColumnManager.prototype.getDefinitionTree=function(){var t=this,e=[];return t.columns.forEach(function(t){e.push(t.getDefinition(!0))}),e},ColumnManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.columns:e.columnsByIndex).forEach(function(t){o.push(t.getComponent())}),o},ColumnManager.prototype.getWidth=function(){var t=0;return this.columnsByIndex.forEach(function(e){e.visible&&(t+=e.getWidth())}),t},ColumnManager.prototype.moveColumn=function(t,e,o){this.moveColumnActual(t,e,o),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),e.element.parentNode.insertBefore(t.element,e.element),o&&e.element.parentNode.insertBefore(e.element,t.element),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.moveColumnActual=function(t,e,o){this._moveColumnInArray(this.columns,t,e,o),this._moveColumnInArray(this.columnsByIndex,t,e,o,!0),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.options.columnMoved&&this.table.options.columnMoved.call(this.table,t.getComponent(),this.table.columnManager.getComponents()),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns")},ColumnManager.prototype._moveColumnInArray=function(t,e,o,i,n){var l,s=t.indexOf(e);s>-1&&(t.splice(s,1),l=t.indexOf(o),l>-1?i&&(l+=1):l=s,t.splice(l,0,e),n&&this.table.rowManager.rows.forEach(function(t){if(t.cells.length){var e=t.cells.splice(s,1)[0];t.cells.splice(l,0,e)}}))},ColumnManager.prototype.scrollToColumn=function(t,e,o){var i=this,n=0,l=0,s=0,a=t.getElement();return new Promise(function(r,u){if(void 0===e&&(e=i.table.options.scrollToColumnPosition),void 0===o&&(o=i.table.options.scrollToColumnIfVisible),t.visible){switch(e){case"middle":case"center":s=-i.element.clientWidth/2;break;case"right":s=a.clientWidth-i.headersElement.clientWidth}if(!o&&(l=a.offsetLeft)>0&&l+a.offsetWidth<i.element.clientWidth)return!1;n=a.offsetLeft+i.element.scrollLeft+s,n=Math.max(Math.min(n,i.table.rowManager.element.scrollWidth-i.table.rowManager.element.clientWidth),0),i.table.rowManager.scrollHorizontal(n),i.scrollHorizontal(n),r()}else console.warn("Scroll Error - Column not visible"),u("Scroll Error - Column not visible")})},ColumnManager.prototype.generateCells=function(t){var e=this,o=[];return e.columnsByIndex.forEach(function(e){o.push(e.generateCell(t))}),o},ColumnManager.prototype.getFlexBaseWidth=function(){var t=this,e=t.table.element.clientWidth,o=0;return t.rowManager.element.scrollHeight>t.rowManager.element.clientHeight&&(e-=t.rowManager.element.offsetWidth-t.rowManager.element.clientWidth),this.columnsByIndex.forEach(function(i){var n,l,s;i.visible&&(n=i.definition.width||0,l=void 0===i.minWidth?t.table.options.columnMinWidth:parseInt(i.minWidth),s="string"==typeof n?n.indexOf("%")>-1?e/100*parseInt(n):parseInt(n):n,o+=s>l?s:l)}),o},ColumnManager.prototype.addColumn=function(t,e,o){var i=this._addColumn(t,e,o);this._reIndexColumns(),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),this.redraw(),"fitColumns"!=this.table.modules.layout.getMode()&&i.reinitializeWidth(),this._verticalAlignHeaders(),this.table.rowManager.reinitialize()},ColumnManager.prototype.deregisterColumn=function(t){var e,o=t.getField();o&&delete this.columnsByField[o],e=this.columnsByIndex.indexOf(t),e>-1&&this.columnsByIndex.splice(e,1),e=this.columns.indexOf(t),e>-1&&this.columns.splice(e,1),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.initialize(),this.redraw()},ColumnManager.prototype.redraw=function(t){t&&(Tabulator.prototype.helpers.elVisible(this.element)&&this._verticalAlignHeaders(),this.table.rowManager.resetScroll(),this.table.rowManager.reinitialize()),"fitColumns"==this.table.modules.layout.getMode()?this.table.modules.layout.layout():t?this.table.modules.layout.layout():this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout(),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),t&&(this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.redraw()),this.table.footerManager.redraw()};var ColumnComponent=function(t){this._column=t,this.type="ColumnComponent"};ColumnComponent.prototype.getElement=function(){return this._column.getElement()},ColumnComponent.prototype.getDefinition=function(){return this._column.getDefinition()},ColumnComponent.prototype.getField=function(){return this._column.getField()},ColumnComponent.prototype.getCells=function(){var t=[];return this._column.cells.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getVisibility=function(){return this._column.visible},ColumnComponent.prototype.show=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.show()}):this._column.show()},ColumnComponent.prototype.hide=function(){this._column.isGroup?this._column.columns.forEach(function(t){t.hide()}):this._column.hide()},ColumnComponent.prototype.toggle=function(){this._column.visible?this.hide():this.show()},ColumnComponent.prototype.delete=function(){this._column.delete()},ColumnComponent.prototype.getSubColumns=function(){var t=[];return this._column.columns.length&&this._column.columns.forEach(function(e){t.push(e.getComponent())}),t},ColumnComponent.prototype.getParentColumn=function(){return this._column.parent instanceof Column&&this._column.parent.getComponent()},ColumnComponent.prototype._getSelf=function(){return this._column},ColumnComponent.prototype.scrollTo=function(){return this._column.table.columnManager.scrollToColumn(this._column)},ColumnComponent.prototype.getTable=function(){return this._column.table},ColumnComponent.prototype.headerFilterFocus=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterFocus(this._column)},ColumnComponent.prototype.reloadHeaderFilter=function(){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.reloadHeaderFilter(this._column)},ColumnComponent.prototype.setHeaderFilterValue=function(t){this._column.table.modExists("filter",!0)&&this._column.table.modules.filter.setHeaderFilterValue(this._column,t)},ColumnComponent.prototype.move=function(t,e){var o=this._column.table.columnManager.findColumn(t);o?this._column.table.columnManager.moveColumn(this._column,o,e):console.warn("Move Error - No matching column found:",o)},ColumnComponent.prototype.getNextColumn=function(){var t=this._column.nextColumn();return!!t&&t.getComponent()},ColumnComponent.prototype.getPrevColumn=function(){var t=this._column.prevColumn();return!!t&&t.getComponent()};var Column=function t(e,o){var i=this;this.table=o.table,this.definition=e,this.parent=o,this.type="column",this.columns=[],this.cells=[],this.element=this.createElement(),this.contentElement=!1,this.groupElement=this.createGroupElement(),this.isGroup=!1,this.tooltip=!1,this.hozAlign="",this.field="",this.fieldStructure="",this.getFieldValue="",this.setFieldValue="",this.setField(this.definition.field),this.table.options.invalidOptionWarnings&&this.checkDefinition(),this.modules={},this.cellEvents={cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1},this.width=null,this.widthStyled="",this.minWidth=null,this.minWidthStyled="",this.widthFixed=!1,this.visible=!0,this._mapDepricatedFunctionality(),e.columns?(this.isGroup=!0,e.columns.forEach(function(e,o){var n=new t(e,i);i.attachColumn(n)}),i.checkColumnVisibility()):o.registerColumnField(this),e.rowHandle&&!1!==this.table.options.movableRows&&this.table.modExists("moveRow")&&this.table.modules.moveRow.setHandle(!0),this._buildHeader()};Column.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col"),t.setAttribute("role","columnheader"),t.setAttribute("aria-sort","none"),t},Column.prototype.createGroupElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-col-group-cols"),t},Column.prototype.checkDefinition=function(){var t=this;Object.keys(this.definition).forEach(function(e){-1===t.defaultOptionList.indexOf(e)&&console.warn("Invalid column definition option in '"+(t.field||t.definition.title)+"' column:",e)})},Column.prototype.setField=function(t){this.field=t,this.fieldStructure=t?this.table.options.nestedFieldSeparator?t.split(this.table.options.nestedFieldSeparator):[t]:[],this.getFieldValue=this.fieldStructure.length>1?this._getNestedData:this._getFlatData,this.setFieldValue=this.fieldStructure.length>1?this._setNesteData:this._setFlatData},Column.prototype.registerColumnPosition=function(t){this.parent.registerColumnPosition(t)},Column.prototype.registerColumnField=function(t){this.parent.registerColumnField(t)},Column.prototype.reRegisterPosition=function(){this.isGroup?this.columns.forEach(function(t){t.reRegisterPosition()}):this.registerColumnPosition(this)},Column.prototype._mapDepricatedFunctionality=function(){void 0!==this.definition.hideInHtml&&(this.definition.htmlOutput=!this.definition.hideInHtml,console.warn("hideInHtml column definition property is deprecated, you should now use htmlOutput"))},Column.prototype.setTooltip=function(){var t=this,e=t.definition,o=e.headerTooltip||!1===e.tooltip?e.headerTooltip:t.table.options.tooltipsHeader;o?!0===o?e.field?t.table.modules.localize.bind("columns|"+e.field,function(o){t.element.setAttribute("title",o||e.title)}):t.element.setAttribute("title",e.title):("function"==typeof o&&!1===(o=o(t.getComponent()))&&(o=""),t.element.setAttribute("title",o)):t.element.setAttribute("title","")},Column.prototype._buildHeader=function(){for(var t=this,e=t.definition;t.element.firstChild;)t.element.removeChild(t.element.firstChild);e.headerVertical&&(t.element.classList.add("tabulator-col-vertical"),"flip"===e.headerVertical&&t.element.classList.add("tabulator-col-vertical-flip")),t.contentElement=t._bindEvents(),t.contentElement=t._buildColumnHeaderContent(),t.element.appendChild(t.contentElement),t.isGroup?t._buildGroupHeader():t._buildColumnHeader(),t.setTooltip(),t.table.options.resizableColumns&&t.table.modExists("resizeColumns")&&t.table.modules.resizeColumns.initializeColumn("header",t,t.element),e.headerFilter&&t.table.modExists("filter")&&t.table.modExists("edit")&&(void 0!==e.headerFilterPlaceholder&&e.field&&t.table.modules.localize.setHeaderFilterColumnPlaceholder(e.field,e.headerFilterPlaceholder),t.table.modules.filter.initializeColumn(t)),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.initializeColumn(t),t.table.options.movableColumns&&!t.isGroup&&t.table.modExists("moveColumn")&&t.table.modules.moveColumn.initializeColumn(t),(e.topCalc||e.bottomCalc)&&t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.initializeColumn(t),t.element.addEventListener("mouseenter",function(e){t.setTooltip()})},Column.prototype._bindEvents=function(){var t,e,o,i=this,n=i.definition;"function"==typeof n.headerClick&&i.element.addEventListener("click",function(t){n.headerClick(t,i.getComponent())}),"function"==typeof n.headerDblClick&&i.element.addEventListener("dblclick",function(t){n.headerDblClick(t,i.getComponent())}),"function"==typeof n.headerContext&&i.element.addEventListener("contextmenu",function(t){n.headerContext(t,i.getComponent())}),"function"==typeof n.headerTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&n.headerTap(t,i.getComponent()),o=!1})),"function"==typeof n.headerDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,n.headerDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),"function"==typeof n.headerTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,n.headerTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null})),"function"==typeof n.cellClick&&(i.cellEvents.cellClick=n.cellClick),"function"==typeof n.cellDblClick&&(i.cellEvents.cellDblClick=n.cellDblClick),"function"==typeof n.cellContext&&(i.cellEvents.cellContext=n.cellContext),"function"==typeof n.cellMouseEnter&&(i.cellEvents.cellMouseEnter=n.cellMouseEnter),"function"==typeof n.cellMouseLeave&&(i.cellEvents.cellMouseLeave=n.cellMouseLeave),"function"==typeof n.cellMouseOver&&(i.cellEvents.cellMouseOver=n.cellMouseOver),"function"==typeof n.cellMouseOut&&(i.cellEvents.cellMouseOut=n.cellMouseOut),"function"==typeof n.cellMouseMove&&(i.cellEvents.cellMouseMove=n.cellMouseMove),"function"==typeof n.cellTap&&(i.cellEvents.cellTap=n.cellTap),"function"==typeof n.cellDblTap&&(i.cellEvents.cellDblTap=n.cellDblTap),"function"==typeof n.cellTapHold&&(i.cellEvents.cellTapHold=n.cellTapHold),"function"==typeof n.cellEdited&&(i.cellEvents.cellEdited=n.cellEdited),"function"==typeof n.cellEditing&&(i.cellEvents.cellEditing=n.cellEditing),"function"==typeof n.cellEditCancelled&&(i.cellEvents.cellEditCancelled=n.cellEditCancelled)},Column.prototype._buildColumnHeader=function(){var t=this,e=t.definition,o=t.table;if(o.modExists("sort")&&o.modules.sort.initializeColumn(t,t.contentElement),o.modExists("format")&&o.modules.format.initializeColumn(t),void 0!==e.editor&&o.modExists("edit")&&o.modules.edit.initializeColumn(t),void 0!==e.validator&&o.modExists("validate")&&o.modules.validate.initializeColumn(t),o.modExists("mutator")&&o.modules.mutator.initializeColumn(t),o.modExists("accessor")&&o.modules.accessor.initializeColumn(t),_typeof(o.options.responsiveLayout)&&o.modExists("responsiveLayout")&&o.modules.responsiveLayout.initializeColumn(t),void 0!==e.visible&&(e.visible?t.show(!0):t.hide(!0)),e.cssClass){e.cssClass.split(" ").forEach(function(e){t.element.classList.add(e)})}e.field&&this.element.setAttribute("tabulator-field",e.field),t.setMinWidth(void 0===e.minWidth?t.table.options.columnMinWidth:parseInt(e.minWidth)),t.reinitializeWidth(),t.tooltip=t.definition.tooltip||!1===t.definition.tooltip?t.definition.tooltip:t.table.options.tooltips,t.hozAlign=void 0===t.definition.align?"":t.definition.align},Column.prototype._buildColumnHeaderContent=function(){var t=this,e=(t.definition,t.table,document.createElement("div"));return e.classList.add("tabulator-col-content"),e.appendChild(t._buildColumnHeaderTitle()),e},Column.prototype._buildColumnHeaderTitle=function(){var t=this,e=t.definition,o=t.table,i=document.createElement("div");if(i.classList.add("tabulator-col-title"),e.editableTitle){var n=document.createElement("input");n.classList.add("tabulator-title-editor"),n.addEventListener("click",function(t){t.stopPropagation(),n.focus()}),n.addEventListener("change",function(){e.title=n.value,o.options.columnTitleChanged.call(t.table,t.getComponent())}),i.appendChild(n),e.field?o.modules.localize.bind("columns|"+e.field,function(t){n.value=t||e.title||" "}):n.value=e.title||" "}else e.field?o.modules.localize.bind("columns|"+e.field,function(o){t._formatColumnHeaderTitle(i,o||e.title||" ")}):t._formatColumnHeaderTitle(i,e.title||" ");return i},Column.prototype._formatColumnHeaderTitle=function(t,e){var o,i,n,l;if(this.definition.titleFormatter&&this.table.modExists("format"))switch(o=this.table.modules.format.getFormatter(this.definition.titleFormatter),l={getValue:function(){return e},getElement:function(){return t}},n=this.definition.titleFormatterParams||{},n="function"==typeof n?n():n,i=o.call(this.table.modules.format,l,n),void 0===i?"undefined":_typeof(i)){case"object":i instanceof Node?t.appendChild(i):(t.innerHTML="",console.warn("Format Error - Title formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",i));break;case"undefined":case"null":t.innerHTML="";break;default:t.innerHTML=i}else t.innerHTML=e},Column.prototype._buildGroupHeader=function(){this.element.classList.add("tabulator-col-group"),this.element.setAttribute("role","columngroup"),this.element.setAttribute("aria-title",this.definition.title),this.element.appendChild(this.groupElement)},Column.prototype._getFlatData=function(t){return t[this.field]},Column.prototype._getNestedData=function(t){for(var e,o=t,i=this.fieldStructure,n=i.length,l=0;l<n&&(o=o[i[l]],e=o,o);l++);return e},Column.prototype._setFlatData=function(t,e){this.field&&(t[this.field]=e)},Column.prototype._setNesteData=function(t,e){for(var o=t,i=this.fieldStructure,n=i.length,l=0;l<n;l++)l==n-1?o[i[l]]=e:(o[i[l]]||(o[i[l]]={}),o=o[i[l]])},Column.prototype.attachColumn=function(t){var e=this;e.groupElement?(e.columns.push(t),e.groupElement.appendChild(t.getElement())):console.warn("Column Warning - Column being attached to another column instead of column group")},Column.prototype.verticalAlign=function(t,e){var o=this.parent.isGroup?this.parent.getGroupElement().clientHeight:e||this.parent.getHeadersElement().clientHeight;this.element.style.height=o+"px",this.isGroup&&(this.groupElement.style.minHeight=o-this.contentElement.offsetHeight+"px"),this.isGroup||"top"===t||(this.element.style.paddingTop="bottom"===t?this.element.clientHeight-this.contentElement.offsetHeight+"px":(this.element.clientHeight-this.contentElement.offsetHeight)/2+"px"),this.columns.forEach(function(e){e.verticalAlign(t)})},Column.prototype.clearVerticalAlign=function(){this.element.style.paddingTop="",this.element.style.height="",this.element.style.minHeight="",this.groupElement.style.minHeight="",this.columns.forEach(function(t){t.clearVerticalAlign()})},Column.prototype.getElement=function(){return this.element},Column.prototype.getGroupElement=function(){return this.groupElement},Column.prototype.getField=function(){return this.field},Column.prototype.getFirstColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[0].getFirstColumn():this},Column.prototype.getLastColumn=function(){return this.isGroup?!!this.columns.length&&this.columns[this.columns.length-1].getLastColumn():this},Column.prototype.getColumns=function(){return this.columns},Column.prototype.getCells=function(){return this.cells},Column.prototype.getTopColumn=function(){return this.parent.isGroup?this.parent.getTopColumn():this},Column.prototype.getDefinition=function(t){var e=[];return this.isGroup&&t&&(this.columns.forEach(function(t){e.push(t.getDefinition(!0))}),this.definition.columns=e),this.definition},Column.prototype.checkColumnVisibility=function(){var t=!1;this.columns.forEach(function(e){e.visible&&(t=!0)}),t?(this.show(),this.parent.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1)):this.hide()},Column.prototype.show=function(t,e){this.visible||(this.visible=!0,this.element.style.display="",this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.show()}),this.isGroup||null!==this.width||this.reinitializeWidth(),this.table.columnManager._verticalAlignHeaders(),this.table.options.persistentLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!0),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.hide=function(t,e){this.visible&&(this.visible=!1,this.element.style.display="none",this.table.columnManager._verticalAlignHeaders(),this.parent.isGroup&&this.parent.checkColumnVisibility(),this.cells.forEach(function(t){t.hide()}),this.table.options.persistentLayout&&this.table.modExists("persistence",!0)&&this.table.modules.persistence.save("columns"),!e&&this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.updateColumnVisibility(this,this.visible),t||this.table.options.columnVisibilityChanged.call(this.table,this.getComponent(),!1),this.parent.isGroup&&this.parent.matchChildWidths())},Column.prototype.matchChildWidths=function(){var t=0;this.contentElement&&this.columns.length&&(this.columns.forEach(function(e){e.visible&&(t+=e.getWidth())}),this.contentElement.style.maxWidth=t-1+"px")},Column.prototype.setWidth=function(t){this.widthFixed=!0,this.setWidthActual(t)},Column.prototype.setWidthActual=function(t){isNaN(t)&&(t=Math.floor(this.table.element.clientWidth/100*parseInt(t))),t=Math.max(this.minWidth,t),this.width=t,this.widthStyled=t?t+"px":"",this.element.style.width=this.widthStyled,this.isGroup||this.cells.forEach(function(t){t.setWidth()}),this.parent.isGroup&&this.parent.matchChildWidths(),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layout()},Column.prototype.checkCellHeights=function(){var t=[];this.cells.forEach(function(e){e.row.heightInitialized&&(null!==e.row.getElement().offsetParent?(t.push(e.row),e.row.clearCellHeight()):e.row.heightInitialized=!1)}),t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()})},Column.prototype.getWidth=function(){return this.width},Column.prototype.getHeight=function(){return this.element.offsetHeight},Column.prototype.setMinWidth=function(t){this.minWidth=t,this.minWidthStyled=t?t+"px":"",this.element.style.minWidth=this.minWidthStyled,this.cells.forEach(function(t){t.setMinWidth()})},Column.prototype.delete=function(){this.isGroup&&this.columns.forEach(function(t){t.delete()});for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete();this.element.parentNode.removeChild(this.element),this.table.columnManager.deregisterColumn(this)},Column.prototype.generateCell=function(t){var e=this,o=new Cell(e,t);return this.cells.push(o),o},Column.prototype.nextColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._nextVisibleColumn(t+1)},Column.prototype._nextVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._nextVisibleColumn(t+1)},Column.prototype.prevColumn=function(){var t=this.table.columnManager.findColumnIndex(this);return t>-1&&this._prevVisibleColumn(t-1)},Column.prototype._prevVisibleColumn=function(t){var e=this.table.columnManager.getColumnByIndex(t);return!e||e.visible?e:this._prevVisibleColumn(t-1)},Column.prototype.reinitializeWidth=function(t){this.widthFixed=!1,void 0===this.definition.width||t||this.setWidth(this.definition.width),this.table.modExists("filter")&&this.table.modules.filter.hideHeaderFilterElements(),this.fitToData(),this.table.modExists("filter")&&this.table.modules.filter.showHeaderFilterElements()},Column.prototype.fitToData=function(){var t=this;this.widthFixed||(this.element.style.width="",t.cells.forEach(function(t){t.clearWidth()}));var e=this.element.offsetWidth;t.width&&this.widthFixed||(t.cells.forEach(function(t){var o=t.getWidth();o>e&&(e=o)}),e&&t.setWidthActual(e+1))},Column.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Column.prototype.defaultOptionList=["title","field","columns","visible","align","width","minWidth","widthGrow","widthShrink","resizable","frozen","responsive","tooltip","cssClass","rowHandle","hideInHtml","print","htmlOutput","sorter","sorterParams","formatter","formatterParams","variableHeight","editable","editor","editorParams","validator","mutator","mutatorParams","mutatorData","mutatorDataParams","mutatorEdit","mutatorEditParams","mutatorClipboard","mutatorClipboardParams","accessor","accessorParams","accessorData","accessorDataParams","accessorDownload","accessorDownloadParams","accessorClipboard","accessorClipboardParams","clipboard","download","downloadTitle","topCalc","topCalcParams","topCalcFormatter","topCalcFormatterParams","bottomCalc","bottomCalcParams","bottomCalcFormatter","bottomCalcFormatterParams","cellClick","cellDblClick","cellContext","cellTap","cellDblTap","cellTapHold","cellMouseEnter","cellMouseLeave","cellMouseOver","cellMouseOut","cellMouseMove","cellEditing","cellEdited","cellEditCancelled","headerSort","headerSortStartingDir","headerSortTristate","headerClick","headerDblClick","headerContext","headerTap","headerDblTap","headerTapHold","headerTooltip","headerVertical","editableTitle","titleFormatter","titleFormatterParams","headerFilter","headerFilterPlaceholder","headerFilterParams","headerFilterEmptyCheck","headerFilterFunc","headerFilterFuncParams","headerFilterLiveFilter","print"],Column.prototype.getComponent=function(){return new ColumnComponent(this)};var RowManager=function(t){this.table=t,this.element=this.createHolderElement(),this.tableElement=this.createTableElement(),this.columnManager=null,this.height=0,this.firstRender=!1,this.renderMode="classic",this.rows=[],this.activeRows=[],this.activeRowsCount=0,this.displayRows=[],this.displayRowsCount=0,this.scrollTop=0,this.scrollLeft=0,this.vDomRowHeight=20,this.vDomTop=0,this.vDomBottom=0,this.vDomScrollPosTop=0,this.vDomScrollPosBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0,this.vDomMaxRenderChain=90,this.vDomWindowBuffer=0,this.vDomWindowMinTotalRows=20,this.vDomWindowMinMarginRows=5,this.vDomTopNewRows=[],this.vDomBottomNewRows=[]};RowManager.prototype.createHolderElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-tableHolder"),t.setAttribute("tabindex",0),t},RowManager.prototype.createTableElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-table"),t},RowManager.prototype.getElement=function(){return this.element},
+RowManager.prototype.getTableElement=function(){return this.tableElement},RowManager.prototype.getRowPosition=function(t,e){return e?this.activeRows.indexOf(t):this.rows.indexOf(t)},RowManager.prototype.setColumnManager=function(t){this.columnManager=t},RowManager.prototype.initialize=function(){var t=this;t.setRenderMode(),t.element.appendChild(t.tableElement),t.firstRender=!0,t.element.addEventListener("scroll",function(){var e=t.element.scrollLeft;t.scrollLeft!=e&&(t.columnManager.scrollHorizontal(e),t.table.options.groupBy&&t.table.modules.groupRows.scrollHeaders(e),t.table.modExists("columnCalcs")&&t.table.modules.columnCalcs.scrollHorizontal(e)),t.scrollLeft=e}),"virtual"===this.renderMode&&t.element.addEventListener("scroll",function(){var e=t.element.scrollTop,o=t.scrollTop>e;t.scrollTop!=e?(t.scrollTop=e,t.scrollVertical(o),"scroll"==t.table.options.ajaxProgressiveLoad&&t.table.modules.ajax.nextPage(t.element.scrollHeight-t.element.clientHeight-e)):t.scrollTop=e})},RowManager.prototype.findRow=function(t){var e=this;if("object"!=(void 0===t?"undefined":_typeof(t))){if(void 0===t||null===t)return!1;return e.rows.find(function(o){return o.data[e.table.options.index]==t})||!1}if(t instanceof Row)return t;if(t instanceof RowComponent)return t._getSelf()||!1;if("undefined"!=typeof HTMLElement&&t instanceof HTMLElement){return e.rows.find(function(e){return e.element===t})||!1}return!1},RowManager.prototype.getRowFromDataObject=function(t){return this.rows.find(function(e){return e.data===t})||!1},RowManager.prototype.getRowFromPosition=function(t,e){return e?this.activeRows[t]:this.rows[t]},RowManager.prototype.scrollToRow=function(t,e,o){var i,n=this,l=this.getDisplayRows().indexOf(t),s=t.getElement(),a=0;return new Promise(function(t,r){if(l>-1){if(void 0===e&&(e=n.table.options.scrollToRowPosition),void 0===o&&(o=n.table.options.scrollToRowIfVisible),"nearest"===e)switch(n.renderMode){case"classic":i=Tabulator.prototype.helpers.elOffset(s).top,e=Math.abs(n.element.scrollTop-i)>Math.abs(n.element.scrollTop+n.element.clientHeight-i)?"bottom":"top";break;case"virtual":e=Math.abs(n.vDomTop-l)>Math.abs(n.vDomBottom-l)?"bottom":"top"}if(!o&&Tabulator.prototype.helpers.elVisible(s)&&(a=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top)>0&&a<n.element.clientHeight-s.offsetHeight)return!1;switch(n.renderMode){case"classic":n.element.scrollTop=Tabulator.prototype.helpers.elOffset(s).top-Tabulator.prototype.helpers.elOffset(n.element).top+n.element.scrollTop;break;case"virtual":n._virtualRenderFill(l,!0)}switch(e){case"middle":case"center":n.element.scrollTop=n.element.scrollTop-n.element.clientHeight/2;break;case"bottom":n.element.scrollTop=n.element.scrollTop-n.element.clientHeight+s.offsetHeight}t()}else console.warn("Scroll Error - Row not visible"),r("Scroll Error - Row not visible")})},RowManager.prototype.setData=function(t,e){var o=this,i=this;return new Promise(function(n,l){e&&o.getDisplayRows().length?i.table.options.pagination?i._setDataActual(t,!0):o.reRenderInPosition(function(){i._setDataActual(t)}):(o.table.options.autoColumns&&o.table.columnManager.generateColumnsFromRowData(t),o.resetScroll(),o._setDataActual(t)),n()})},RowManager.prototype._setDataActual=function(t,e){var o=this;o.table.options.dataLoading.call(this.table,t),this._wipeElements(),this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.clear(),Array.isArray(t)?(this.table.modExists("selectRow")&&this.table.modules.selectRow.clearSelectionData(),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchData(t),t.forEach(function(t,e){if(t&&"object"===(void 0===t?"undefined":_typeof(t))){var i=new Row(t,o);o.rows.push(i)}else console.warn("Data Loading Warning - Invalid row data detected and ignored, expecting object but received:",t)}),o.table.options.dataLoaded.call(this.table,t),o.refreshActiveData(!1,!1,e)):console.error("Data Loading Error - Unable to process data due to invalid data type \nExpecting: array \nReceived: ",void 0===t?"undefined":_typeof(t),"\nData: ",t)},RowManager.prototype._wipeElements=function(){this.rows.forEach(function(t){t.wipe()}),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.wipe(),this.rows=[]},RowManager.prototype.deleteRow=function(t,e){var o=this.rows.indexOf(t),i=this.activeRows.indexOf(t);i>-1&&this.activeRows.splice(i,1),o>-1&&this.rows.splice(o,1),this.setActiveRows(this.activeRows),this.displayRowIterator(function(e){var o=e.indexOf(t);o>-1&&e.splice(o,1)}),e||this.reRenderInPosition(),this.table.options.rowDeleted.call(this.table,t.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.groupRows.updateGroupRows(!0):this.table.options.pagination&&this.table.modExists("page")?this.refreshActiveData(!1,!1,!0):this.table.options.pagination&&this.table.modExists("page")&&this.refreshActiveData("page")},RowManager.prototype.addRow=function(t,e,o,i){var n=this.addRowActual(t,e,o,i);return this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowAdd",n,{data:t,pos:e,index:o}),n},RowManager.prototype.addRows=function(t,e,o){var i=this,n=this,l=0,s=[];return new Promise(function(a,r){e=i.findAddRowPos(e),Array.isArray(t)||(t=[t]),l=t.length-1,(void 0===o&&e||void 0!==o&&!e)&&t.reverse(),t.forEach(function(t,i){var l=n.addRow(t,e,o,!0);s.push(l)}),i.table.options.groupBy&&i.table.modExists("groupRows")?i.table.modules.groupRows.updateGroupRows(!0):i.table.options.pagination&&i.table.modExists("page")?i.refreshActiveData(!1,!1,!0):i.reRenderInPosition(),i.table.modExists("columnCalcs")&&i.table.modules.columnCalcs.recalc(i.table.rowManager.activeRows),a(s)})},RowManager.prototype.findAddRowPos=function(t){return void 0===t&&(t=this.table.options.addRowPos),"pos"===t&&(t=!0),"bottom"===t&&(t=!1),t},RowManager.prototype.addRowActual=function(t,e,o,i){var n,l=t instanceof Row?t:new Row(t||{},this),s=this.findAddRowPos(e);if(!o&&this.table.options.pagination&&"page"==this.table.options.paginationAddRow&&(n=this.getDisplayRows(),s?n.length?o=n[0]:this.activeRows.length&&(o=this.activeRows[this.activeRows.length-1],s=!1):n.length&&(o=n[n.length-1],s=!(n.length<this.table.modules.page.getPageSize()))),o&&(o=this.findRow(o)),this.table.options.groupBy&&this.table.modExists("groupRows")){this.table.modules.groupRows.assignRowToGroup(l);var a=l.getGroup().rows;a.length>1&&(!o||o&&-1==a.indexOf(o)?s?a[0]!==l&&(o=a[0],this._moveRowInArray(l.getGroup().rows,l,o,s)):a[a.length-1]!==l&&(o=a[a.length-1],this._moveRowInArray(l.getGroup().rows,l,o,s)):this._moveRowInArray(l.getGroup().rows,l,o,s))}if(o){var r=this.rows.indexOf(o),u=this.activeRows.indexOf(o);this.displayRowIterator(function(t){var e=t.indexOf(o);e>-1&&t.splice(s?e:e+1,0,l)}),u>-1&&this.activeRows.splice(s?u:u+1,0,l),r>-1&&this.rows.splice(s?r:r+1,0,l)}else s?(this.displayRowIterator(function(t){t.unshift(l)}),this.activeRows.unshift(l),this.rows.unshift(l)):(this.displayRowIterator(function(t){t.push(l)}),this.activeRows.push(l),this.rows.push(l));return this.setActiveRows(this.activeRows),this.table.options.rowAdded.call(this.table,l.getComponent()),this.table.options.dataEdited.call(this.table,this.getData()),i||this.reRenderInPosition(),l},RowManager.prototype.moveRow=function(t,e,o){this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("rowMove",t,{pos:this.getRowPosition(t),to:e,after:o}),this.moveRowActual(t,e,o),this.table.options.rowMoved.call(this.table,t.getComponent())},RowManager.prototype.moveRowActual=function(t,e,o){var i=this;if(this._moveRowInArray(this.rows,t,e,o),this._moveRowInArray(this.activeRows,t,e,o),this.displayRowIterator(function(n){i._moveRowInArray(n,t,e,o)}),this.table.options.groupBy&&this.table.modExists("groupRows")){var n=e.getGroup(),l=t.getGroup();n===l?this._moveRowInArray(n.rows,t,e,o):(l&&l.removeRow(t),n.insertRow(t,e,o))}},RowManager.prototype._moveRowInArray=function(t,e,o,i){var n,l,s,a;if(e!==o&&(n=t.indexOf(e),n>-1&&(t.splice(n,1),l=t.indexOf(o),l>-1?i?t.splice(l+1,0,e):t.splice(l,0,e):t.splice(n,0,e)),t===this.getDisplayRows())){s=n<l?n:l,a=l>n?l:n+1;for(var r=s;r<=a;r++)t[r]&&this.styleRow(t[r],r)}},RowManager.prototype.clearData=function(){this.setData([])},RowManager.prototype.getRowIndex=function(t){return this.findRowIndex(t,this.rows)},RowManager.prototype.getDisplayRowIndex=function(t){var e=this.getDisplayRows().indexOf(t);return e>-1&&e},RowManager.prototype.nextDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return!1!==o&&o<this.displayRowsCount-1&&(i=this.getDisplayRows()[o+1]),!i||i instanceof Row&&"row"==i.type?i:this.nextDisplayRow(i,e)},RowManager.prototype.prevDisplayRow=function(t,e){var o=this.getDisplayRowIndex(t),i=!1;return o&&(i=this.getDisplayRows()[o-1]),!i||i instanceof Row&&"row"==i.type?i:this.prevDisplayRow(i,e)},RowManager.prototype.findRowIndex=function(t,e){var o;return!!((t=this.findRow(t))&&(o=e.indexOf(t))>-1)&&o},RowManager.prototype.getData=function(t,e){var o=this,i=[];return(t?o.activeRows:o.rows).forEach(function(t){i.push(t.getData(e||"data"))}),i},RowManager.prototype.getComponents=function(t){var e=this,o=[];return(t?e.activeRows:e.rows).forEach(function(t){o.push(t.getComponent())}),o},RowManager.prototype.getDataCount=function(t){return t?this.activeRows.length:this.rows.length},RowManager.prototype._genRemoteRequest=function(){var t=this,e=t.table,o=e.options,i={};if(e.modExists("page")){if(o.ajaxSorting){var n=t.table.modules.sort.getSort();n.forEach(function(t){delete t.column}),i[t.table.modules.page.paginationDataSentNames.sorters]=n}if(o.ajaxFiltering){var l=t.table.modules.filter.getFilters(!0,!0);i[t.table.modules.page.paginationDataSentNames.filters]=l}t.table.modules.ajax.setParams(i,!0)}e.modules.ajax.sendRequest().then(function(e){t.setData(e)}).catch(function(t){})},RowManager.prototype.filterRefresh=function(){var t=this.table,e=t.options,o=this.scrollLeft;e.ajaxFiltering?"remote"==e.pagination&&t.modExists("page")?(t.modules.page.reset(!0),t.modules.page.setPage(1).then(function(){}).catch(function(){})):e.ajaxProgressiveLoad?t.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData("filter"),this.scrollHorizontal(o)},RowManager.prototype.sorterRefresh=function(t){var e=this.table,o=this.table.options,i=this.scrollLeft;o.ajaxSorting?("remote"==o.pagination||o.progressiveLoad)&&e.modExists("page")?(e.modules.page.reset(!0),e.modules.page.setPage(1).then(function(){}).catch(function(){})):o.ajaxProgressiveLoad?e.modules.ajax.loadData().then(function(){}).catch(function(){}):this._genRemoteRequest():this.refreshActiveData(t?"filter":"sort"),this.scrollHorizontal(i)},RowManager.prototype.scrollHorizontal=function(t){this.scrollLeft=t,this.element.scrollLeft=t,this.table.options.groupBy&&this.table.modules.groupRows.scrollHeaders(t),this.table.modExists("columnCalcs")&&this.table.modules.columnCalcs.scrollHorizontal(t)},RowManager.prototype.refreshActiveData=function(t,e,o){var i,n=this,l=this.table;switch(n.table.modExists("edit")&&n.table.modules.edit.cancelEdit(),t||(t="all"),l.options.selectable&&!l.options.selectablePersistence&&l.modExists("selectRow")&&l.modules.selectRow.deselectRows(),t){case"all":case"filter":e?e=!1:l.modExists("filter")?n.setActiveRows(l.modules.filter.filter(n.rows)):n.setActiveRows(n.rows.slice(0));case"sort":e?e=!1:l.modExists("sort")&&l.modules.sort.sort(this.activeRows);case"display":this.resetDisplayRows();case"freeze":e?e=!1:this.table.modExists("frozenRows")&&l.modules.frozenRows.isFrozen()&&(l.modules.frozenRows.getDisplayIndex()||l.modules.frozenRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.frozenRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.frozenRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.frozenRows.setDisplayIndex(i));case"group":e?e=!1:l.options.groupBy&&l.modExists("groupRows")&&(l.modules.groupRows.getDisplayIndex()||l.modules.groupRows.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.groupRows.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.groupRows.getRows(this.getDisplayRows(i-1)),i))&&l.modules.groupRows.setDisplayIndex(i));case"tree":e?e=!1:l.options.dataTree&&l.modExists("dataTree")&&(l.modules.dataTree.getDisplayIndex()||l.modules.dataTree.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.dataTree.getDisplayIndex(),!0!==(i=n.setDisplayRows(l.modules.dataTree.getRows(this.getDisplayRows(i-1)),i))&&l.modules.dataTree.setDisplayIndex(i)),l.options.pagination&&l.modExists("page")&&!o&&"local"==l.modules.page.getMode()&&l.modules.page.reset();case"page":e?e=!1:l.options.pagination&&l.modExists("page")&&(l.modules.page.getDisplayIndex()||l.modules.page.setDisplayIndex(this.getNextDisplayIndex()),i=l.modules.page.getDisplayIndex(),"local"==l.modules.page.getMode()&&l.modules.page.setMaxRows(this.getDisplayRows(i-1).length),!0!==(i=n.setDisplayRows(l.modules.page.getRows(this.getDisplayRows(i-1)),i))&&l.modules.page.setDisplayIndex(i))}Tabulator.prototype.helpers.elVisible(n.element)&&(o?n.reRenderInPosition():(n.renderTable(),l.options.layoutColumnsOnNewData&&n.table.columnManager.redraw(!0))),l.modExists("columnCalcs")&&l.modules.columnCalcs.recalc(this.activeRows)},RowManager.prototype.setActiveRows=function(t){this.activeRows=t,this.activeRowsCount=this.activeRows.length},RowManager.prototype.resetDisplayRows=function(){this.displayRows=[],this.displayRows.push(this.activeRows.slice(0)),this.displayRowsCount=this.displayRows[0].length,this.table.modExists("frozenRows")&&this.table.modules.frozenRows.setDisplayIndex(0),this.table.options.groupBy&&this.table.modExists("groupRows")&&this.table.modules.groupRows.setDisplayIndex(0),this.table.options.pagination&&this.table.modExists("page")&&this.table.modules.page.setDisplayIndex(0)},RowManager.prototype.getNextDisplayIndex=function(){return this.displayRows.length},RowManager.prototype.setDisplayRows=function(t,e){var o=!0;return e&&void 0!==this.displayRows[e]?(this.displayRows[e]=t,o=!0):(this.displayRows.push(t),o=e=this.displayRows.length-1),e==this.displayRows.length-1&&(this.displayRowsCount=this.displayRows[this.displayRows.length-1].length),o},RowManager.prototype.getDisplayRows=function(t){return void 0===t?this.displayRows.length?this.displayRows[this.displayRows.length-1]:[]:this.displayRows[t]||[]},RowManager.prototype.getVisibleRows=function(t){var e=this.element.scrollTop,o=this.element.clientHeight+e,i=!1,n=0,l=0,s=this.getDisplayRows();if(t){this.getDisplayRows();for(var a=this.vDomTop;a<=this.vDomBottom;a++)if(s[a])if(i){if(!(o-s[a].getElement().offsetTop>=0))break;l=a}else e-s[a].getElement().offsetTop>=0?n=a:i=!0}else n=this.vDomTop,l=this.vDomBottom;return s.slice(n,l+1)},RowManager.prototype.displayRowIterator=function(t){this.displayRows.forEach(t),this.displayRowsCount=this.displayRows[this.displayRows.length-1].length},RowManager.prototype.getRows=function(){return this.rows},RowManager.prototype.reRenderInPosition=function(t){if("virtual"==this.getRenderMode()){for(var e=this.element.scrollTop,o=!1,i=!1,n=this.scrollLeft,l=this.getDisplayRows(),s=this.vDomTop;s<=this.vDomBottom;s++)if(l[s]){var a=e-l[s].getElement().offsetTop;if(!(!1===i||Math.abs(a)<i))break;i=a,o=s}t&&t(),this._virtualRenderFill(!1===o?this.displayRowsCount-1:o,!0,i||0),this.scrollHorizontal(n)}else this.renderTable(),t&&t()},RowManager.prototype.setRenderMode=function(){(this.table.element.clientHeight||this.table.options.height)&&this.table.options.virtualDom?this.renderMode="virtual":this.renderMode="classic"},RowManager.prototype.getRenderMode=function(){return this.renderMode},RowManager.prototype.renderTable=function(){var t=this;switch(t.table.options.renderStarted.call(this.table),t.element.scrollTop=0,t.renderMode){case"classic":t._simpleRender();break;case"virtual":t._virtualRenderFill()}t.firstRender&&(t.displayRowsCount?(t.firstRender=!1,t.table.modules.layout.layout()):t.renderEmptyScroll()),t.table.modExists("frozenColumns")&&t.table.modules.frozenColumns.layout(),t.displayRowsCount||t.table.options.placeholder&&(this.renderMode&&t.table.options.placeholder.setAttribute("tabulator-render-mode",this.renderMode),t.getElement().appendChild(t.table.options.placeholder)),t.table.options.renderComplete.call(this.table)},RowManager.prototype._simpleRender=function(){this._clearVirtualDom(),this.displayRowsCount?this.checkClassicModeGroupHeaderWidth():this.renderEmptyScroll()},RowManager.prototype.checkClassicModeGroupHeaderWidth=function(){var t=this,e=this.tableElement,o=!0;t.getDisplayRows().forEach(function(i,n){t.styleRow(i,n),e.appendChild(i.getElement()),i.initialize(!0),"group"!==i.type&&(o=!1)}),e.style.minWidth=o?t.table.columnManager.getWidth()+"px":""},RowManager.prototype.renderEmptyScroll=function(){this.tableElement.style.minWidth=this.table.columnManager.getWidth()+"px",this.tableElement.style.minHeight="1px",this.tableElement.style.visibility="hidden"},RowManager.prototype._clearVirtualDom=function(){var t=this.tableElement;for(this.table.options.placeholder&&this.table.options.placeholder.parentNode&&this.table.options.placeholder.parentNode.removeChild(this.table.options.placeholder);t.firstChild;)t.removeChild(t.firstChild);t.style.paddingTop="",t.style.paddingBottom="",t.style.minWidth="",t.style.minHeight="",t.style.visibility="",this.scrollTop=0,this.scrollLeft=0,this.vDomTop=0,this.vDomBottom=0,this.vDomTopPad=0,this.vDomBottomPad=0},RowManager.prototype.styleRow=function(t,e){var o=t.getElement();e%2?(o.classList.add("tabulator-row-even"),o.classList.remove("tabulator-row-odd")):(o.classList.add("tabulator-row-odd"),o.classList.remove("tabulator-row-even"))},RowManager.prototype._virtualRenderFill=function(t,e,o){var i=this,n=i.tableElement,l=i.element,s=0,a=0,r=0,u=0,c=!0,h=i.getDisplayRows();if(t=t||0,o=o||0,t){for(;n.firstChild;)n.removeChild(n.firstChild);var p=(i.displayRowsCount-t+1)*i.vDomRowHeight;p<i.height&&(t-=Math.ceil((i.height-p)/i.vDomRowHeight))<0&&(t=0),s=Math.min(Math.max(Math.floor(i.vDomWindowBuffer/i.vDomRowHeight),i.vDomWindowMinMarginRows),t),t-=s}else i._clearVirtualDom();if(i.displayRowsCount&&Tabulator.prototype.helpers.elVisible(i.element)){for(i.vDomTop=t,i.vDomBottom=t-1;(a<=i.height+i.vDomWindowBuffer||u<i.vDomWindowMinTotalRows)&&i.vDomBottom<i.displayRowsCount-1;){var d=i.vDomBottom+1,m=h[d],f=0;i.styleRow(m,d),n.appendChild(m.getElement()),m.initialized?m.heightInitialized||m.normalizeHeight(!0):m.initialize(!0),f=m.getHeight(),u<s?r+=f:a+=f,f>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*f),"group"!==m.type&&(c=!1),i.vDomBottom++,u++}t?(i.vDomTopPad=e?i.vDomRowHeight*this.vDomTop+o:i.scrollTop-r,i.vDomBottomPad=i.vDomBottom==i.displayRowsCount-1?0:Math.max(i.vDomScrollHeight-i.vDomTopPad-a-r,0)):(this.vDomTopPad=0,i.vDomRowHeight=Math.floor((a+r)/u),i.vDomBottomPad=i.vDomRowHeight*(i.displayRowsCount-i.vDomBottom-1),i.vDomScrollHeight=r+a+i.vDomBottomPad-i.height),n.style.paddingTop=i.vDomTopPad+"px",n.style.paddingBottom=i.vDomBottomPad+"px",e&&(this.scrollTop=i.vDomTopPad+r+o-(this.element.scrollWidth>this.element.clientWidth?this.element.offsetHeight-this.element.clientHeight:0)),this.scrollTop=Math.min(this.scrollTop,this.element.scrollHeight-this.height),this.element.scrollWidth>this.element.offsetWidth&&e&&(this.scrollTop+=this.element.offsetHeight-this.element.clientHeight),this.vDomScrollPosTop=this.scrollTop,this.vDomScrollPosBottom=this.scrollTop,l.scrollTop=this.scrollTop,n.style.minWidth=c?i.table.columnManager.getWidth()+"px":"",i.table.options.groupBy&&"fitDataFill"!=i.table.modules.layout.getMode()&&i.displayRowsCount==i.table.modules.groupRows.countGroups()&&(i.tableElement.style.minWidth=i.table.columnManager.getWidth())}else this.renderEmptyScroll()},RowManager.prototype.scrollVertical=function(t){var e=this.scrollTop-this.vDomScrollPosTop,o=this.scrollTop-this.vDomScrollPosBottom,i=2*this.vDomWindowBuffer;if(-e>i||o>i){var n=this.scrollLeft;this._virtualRenderFill(Math.floor(this.element.scrollTop/this.element.scrollHeight*this.displayRowsCount)),this.scrollHorizontal(n)}else t?(e<0&&this._addTopRow(-e),o<0&&this.vDomScrollHeight-this.scrollTop>this.vDomWindowBuffer&&this._removeBottomRow(-o)):(e>=0&&this.scrollTop>this.vDomWindowBuffer&&this._removeTopRow(e),o>=0&&this._addBottomRow(o))},RowManager.prototype._addTopRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomTop){var n=this.vDomTop-1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.insertBefore(l.getElement(),o.firstChild),l.initialized&&l.heightInitialized||(this.vDomTopNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomTopPad-=s,this.vDomTopPad<0&&(this.vDomTopPad=n*this.vDomRowHeight),n||(this.vDomTopPad=0),o.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop-=s,this.vDomTop--),t=-(this.scrollTop-this.vDomScrollPosTop),l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomTop&&t>=(i[this.vDomTop-1].getHeight()||this.vDomRowHeight)?this._addTopRow(t,e+1):this._quickNormalizeRowHeight(this.vDomTopNewRows)}},RowManager.prototype._removeTopRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomTop],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode.removeChild(n),this.vDomTopPad+=i,e.style.paddingTop=this.vDomTopPad+"px",this.vDomScrollPosTop+=this.vDomTop?i:i+this.vDomWindowBuffer,this.vDomTop++,t=this.scrollTop-this.vDomScrollPosTop,this._removeTopRow(t)}},RowManager.prototype._addBottomRow=function(t){var e=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0,o=this.tableElement,i=this.getDisplayRows();if(this.vDomBottom<this.displayRowsCount-1){var n=this.vDomBottom+1,l=i[n],s=l.getHeight()||this.vDomRowHeight;t>=s&&(this.styleRow(l,n),o.appendChild(l.getElement()),l.initialized&&l.heightInitialized||(this.vDomBottomNewRows.push(l),l.heightInitialized||l.clearCellHeight()),l.initialize(),this.vDomBottomPad-=s,(this.vDomBottomPad<0||n==this.displayRowsCount-1)&&(this.vDomBottomPad=0),o.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom+=s,this.vDomBottom++),t=this.scrollTop-this.vDomScrollPosBottom,l.getHeight()>this.vDomWindowBuffer&&(this.vDomWindowBuffer=2*l.getHeight()),e<this.vDomMaxRenderChain&&this.vDomBottom<this.displayRowsCount-1&&t>=(i[this.vDomBottom+1].getHeight()||this.vDomRowHeight)?this._addBottomRow(t,e+1):this._quickNormalizeRowHeight(this.vDomBottomNewRows)}},RowManager.prototype._removeBottomRow=function(t){var e=this.tableElement,o=this.getDisplayRows()[this.vDomBottom],i=o.getHeight()||this.vDomRowHeight;if(t>=i){var n=o.getElement();n.parentNode&&n.parentNode.removeChild(n),this.vDomBottomPad+=i,this.vDomBottomPad<0&&(this.vDomBottomPad=0),e.style.paddingBottom=this.vDomBottomPad+"px",this.vDomScrollPosBottom-=i,this.vDomBottom--,t=-(this.scrollTop-this.vDomScrollPosBottom),this._removeBottomRow(t)}},RowManager.prototype._quickNormalizeRowHeight=function(t){t.forEach(function(t){t.calcHeight()}),t.forEach(function(t){t.setCellHeight()}),t.length=0},RowManager.prototype.normalizeHeight=function(){this.activeRows.forEach(function(t){t.normalizeHeight()})},RowManager.prototype.adjustTableSize=function(){if("virtual"===this.renderMode){this.height=this.element.clientHeight,this.vDomWindowBuffer=this.table.options.virtualDomBuffer||this.height;var t=this.columnManager.getElement().offsetHeight+(this.table.footerManager&&!this.table.footerManager.external?this.table.footerManager.getElement().offsetHeight:0);this.element.style.minHeight="calc(100% - "+t+"px)",this.element.style.height="calc(100% - "+t+"px)",this.element.style.maxHeight="calc(100% - "+t+"px)"}},RowManager.prototype.reinitialize=function(){this.rows.forEach(function(t){t.reinitialize()})},RowManager.prototype.redraw=function(t){var e=this.scrollLeft;this.adjustTableSize(),this.table.tableWidth=this.table.element.clientWidth,t?this.renderTable():("classic"==this.renderMode?this.table.options.groupBy?this.refreshActiveData("group",!1,!1):this._simpleRender():(this.reRenderInPosition(),this.scrollHorizontal(e)),this.displayRowsCount||this.table.options.placeholder&&this.getElement().appendChild(this.table.options.placeholder))},RowManager.prototype.resetScroll=function(){if(this.element.scrollLeft=0,this.element.scrollTop=0,"ie"===this.table.browser){var t=document.createEvent("Event");t.initEvent("scroll",!1,!0),this.element.dispatchEvent(t)}else this.element.dispatchEvent(new Event("scroll"))};var RowComponent=function(t){this._row=t};RowComponent.prototype.getData=function(t){return this._row.getData(t)},RowComponent.prototype.getElement=function(){return this._row.getElement()},RowComponent.prototype.getCells=function(){var t=[];return this._row.getCells().forEach(function(e){t.push(e.getComponent())}),t},RowComponent.prototype.getCell=function(t){var e=this._row.getCell(t);return!!e&&e.getComponent()},RowComponent.prototype.getIndex=function(){return this._row.getData("data")[this._row.table.options.index]},RowComponent.prototype.getPosition=function(t){return this._row.table.rowManager.getRowPosition(this._row,t)},RowComponent.prototype.delete=function(){return this._row.delete()},RowComponent.prototype.scrollTo=function(){return this._row.table.rowManager.scrollToRow(this._row)},RowComponent.prototype.pageTo=function(){if(this._row.table.modExists("page",!0))return this._row.table.modules.page.setPageToRow(this._row)},RowComponent.prototype.move=function(t,e){this._row.moveToRow(t,e)},RowComponent.prototype.update=function(t){return this._row.updateData(t)},RowComponent.prototype.normalizeHeight=function(){this._row.normalizeHeight(!0)},RowComponent.prototype.select=function(){this._row.table.modules.selectRow.selectRows(this._row)},RowComponent.prototype.deselect=function(){this._row.table.modules.selectRow.deselectRows(this._row)},RowComponent.prototype.toggleSelect=function(){this._row.table.modules.selectRow.toggleRow(this._row)},RowComponent.prototype.isSelected=function(){return this._row.table.modules.selectRow.isRowSelected(this._row)},RowComponent.prototype._getSelf=function(){return this._row},RowComponent.prototype.freeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.freezeRow(this._row)},RowComponent.prototype.unfreeze=function(){this._row.table.modExists("frozenRows",!0)&&this._row.table.modules.frozenRows.unfreezeRow(this._row)},RowComponent.prototype.treeCollapse=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.collapseRow(this._row)},RowComponent.prototype.treeExpand=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.expandRow(this._row)},RowComponent.prototype.treeToggle=function(){this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.toggleRow(this._row)},RowComponent.prototype.getTreeParent=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeParent(this._row)},RowComponent.prototype.getTreeChildren=function(){return!!this._row.table.modExists("dataTree",!0)&&this._row.table.modules.dataTree.getTreeChildren(this._row)},RowComponent.prototype.reformat=function(){return this._row.reinitialize()},RowComponent.prototype.getGroup=function(){return this._row.getGroup().getComponent()},RowComponent.prototype.getTable=function(){return this._row.table},RowComponent.prototype.getNextRow=function(){var t=this._row.nextRow();return t?t.getComponent():t},RowComponent.prototype.getPrevRow=function(){var t=this._row.prevRow();return t?t.getComponent():t};var Row=function(t,e){this.table=e.table,this.parent=e,this.data={},this.type="row",this.element=this.createElement(),this.modules={},this.cells=[],this.height=0,this.heightStyled="",this.manualHeight=!1,this.outerHeight=0,this.initialized=!1,this.heightInitialized=!1,this.setData(t),this.generateElement()};Row.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-row"),t.setAttribute("role","row"),t},Row.prototype.getElement=function(){return this.element},Row.prototype.detachElement=function(){this.element&&this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.generateElement=function(){var t,e,o,i=this;!1!==i.table.options.selectable&&i.table.modExists("selectRow")&&i.table.modules.selectRow.initializeRow(this),!1!==i.table.options.movableRows&&i.table.modExists("moveRow")&&i.table.modules.moveRow.initializeRow(this),!1!==i.table.options.dataTree&&i.table.modExists("dataTree")&&i.table.modules.dataTree.initializeRow(this),i.table.options.rowClick&&i.element.addEventListener("click",function(t){i.table.options.rowClick(t,i.getComponent())}),i.table.options.rowDblClick&&i.element.addEventListener("dblclick",function(t){i.table.options.rowDblClick(t,i.getComponent())}),i.table.options.rowContext&&i.element.addEventListener("contextmenu",function(t){i.table.options.rowContext(t,i.getComponent())}),i.table.options.rowMouseEnter&&i.element.addEventListener("mouseenter",function(t){i.table.options.rowMouseEnter(t,i.getComponent())}),i.table.options.rowMouseLeave&&i.element.addEventListener("mouseleave",function(t){i.table.options.rowMouseLeave(t,i.getComponent())}),i.table.options.rowMouseOver&&i.element.addEventListener("mouseover",function(t){i.table.options.rowMouseOver(t,i.getComponent())}),i.table.options.rowMouseOut&&i.element.addEventListener("mouseout",function(t){i.table.options.rowMouseOut(t,i.getComponent())}),i.table.options.rowMouseMove&&i.element.addEventListener("mousemove",function(t){i.table.options.rowMouseMove(t,i.getComponent())}),i.table.options.rowTap&&(o=!1,i.element.addEventListener("touchstart",function(t){o=!0},{passive:!0}),i.element.addEventListener("touchend",function(t){o&&i.table.options.rowTap(t,i.getComponent()),o=!1})),i.table.options.rowDblTap&&(t=null,i.element.addEventListener("touchend",function(e){t?(clearTimeout(t),t=null,i.table.options.rowDblTap(e,i.getComponent())):t=setTimeout(function(){clearTimeout(t),t=null},300)})),i.table.options.rowTapHold&&(e=null,i.element.addEventListener("touchstart",function(t){clearTimeout(e),e=setTimeout(function(){clearTimeout(e),e=null,o=!1,i.table.options.rowTapHold(t,i.getComponent())},1e3)},{passive:!0}),i.element.addEventListener("touchend",function(t){clearTimeout(e),e=null}))},Row.prototype.generateCells=function(){this.cells=this.table.columnManager.generateCells(this)},Row.prototype.initialize=function(t){var e=this;if(!e.initialized||t){for(e.deleteCells();e.element.firstChild;)e.element.removeChild(e.element.firstChild);this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutRow(this),this.generateCells(),e.cells.forEach(function(t){e.element.appendChild(t.getElement()),t.cellRendered()}),t&&e.normalizeHeight(),e.table.options.dataTree&&e.table.modExists("dataTree")&&e.table.modules.dataTree.layoutRow(this),"collapse"===e.table.options.responsiveLayout&&e.table.modExists("responsiveLayout")&&e.table.modules.responsiveLayout.layoutRow(this),e.table.options.rowFormatter&&e.table.options.rowFormatter(e.getComponent()),e.table.options.resizableRows&&e.table.modExists("resizeRows")&&e.table.modules.resizeRows.initializeRow(e),e.initialized=!0}},Row.prototype.reinitializeHeight=function(){this.heightInitialized=!1,null!==this.element.offsetParent&&this.normalizeHeight(!0)},Row.prototype.reinitialize=function(){this.initialized=!1,this.heightInitialized=!1,this.manualHeight||(this.height=0,this.heightStyled=""),
+null!==this.element.offsetParent&&this.initialize(!0)},Row.prototype.calcHeight=function(t){var e=0,o=this.table.options.resizableRows?this.element.clientHeight:0;this.cells.forEach(function(t){var o=t.getHeight();o>e&&(e=o)}),this.height=t?Math.max(e,o):this.manualHeight?this.height:Math.max(e,o),this.heightStyled=this.height?this.height+"px":"",this.outerHeight=this.element.offsetHeight},Row.prototype.setCellHeight=function(){this.cells.forEach(function(t){t.setHeight()}),this.heightInitialized=!0},Row.prototype.clearCellHeight=function(){this.cells.forEach(function(t){t.clearHeight()})},Row.prototype.normalizeHeight=function(t){t&&this.clearCellHeight(),this.calcHeight(t),this.setCellHeight()},Row.prototype.setHeight=function(t,e){(this.height!=t||e)&&(this.manualHeight=!0,this.height=t,this.heightStyled=t?t+"px":"",this.setCellHeight(),this.outerHeight=this.element.offsetHeight)},Row.prototype.getHeight=function(){return this.outerHeight},Row.prototype.getWidth=function(){return this.element.offsetWidth},Row.prototype.deleteCell=function(t){var e=this.cells.indexOf(t);e>-1&&this.cells.splice(e,1)},Row.prototype.setData=function(t){this.table.modExists("mutator")&&(t=this.table.modules.mutator.transformRow(t,"data")),this.data=t,this.table.options.reactiveData&&this.table.modExists("reactiveData",!0)&&this.table.modules.reactiveData.watchRow(this)},Row.prototype.updateData=function(t){var e=this,o=this,i=Tabulator.prototype.helpers.elVisible(this.element);return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.block(),o.table.modExists("mutator")&&(t=o.table.modules.mutator.transformRow(t,"data",!0));for(var s in t)o.data[s]=t[s];e.table.options.reactiveData&&e.table.modExists("reactiveData",!0)&&e.table.modules.reactiveData.unblock();for(var s in t){var a=e.getCell(s);a&&a.getValue()!=t[s]&&(a.setValueProcessData(t[s]),i&&a.cellRendered())}i?(o.normalizeHeight(),o.table.options.rowFormatter&&o.table.options.rowFormatter(o.getComponent())):(e.initialized=!1,e.height=0,e.heightStyled=""),!1!==o.table.options.dataTree&&o.table.modExists("dataTree")&&void 0!==t[e.table.modules.dataTree.getChildField()]&&(e.table.modules.dataTree.initializeRow(e),e.table.rowManager.refreshActiveData("tree",!1,!0)),o.table.options.rowUpdated.call(e.table,o.getComponent()),n()})},Row.prototype.getData=function(t){var e=this;return t?e.table.modExists("accessor")?e.table.modules.accessor.transformRow(e.data,t):void 0:this.data},Row.prototype.getCell=function(t){return t=this.table.columnManager.findColumn(t),this.cells.find(function(e){return e.column===t})},Row.prototype.getCellIndex=function(t){return this.cells.findIndex(function(e){return e===t})},Row.prototype.findNextEditableCell=function(t){var e=!1;if(t<this.cells.length-1)for(var o=t+1;o<this.cells.length;o++){var i=this.cells[o];if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())){var n=!0;if("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n){e=i;break}}}return e},Row.prototype.findPrevEditableCell=function(t){var e=!1;if(t>0)for(var o=t-1;o>=0;o--){var i=this.cells[o],n=!0;if(i.column.modules.edit&&Tabulator.prototype.helpers.elVisible(i.getElement())&&("function"==typeof i.column.modules.edit.check&&(n=i.column.modules.edit.check(i.getComponent())),n)){e=i;break}}return e},Row.prototype.getCells=function(){return this.cells},Row.prototype.nextRow=function(){return this.table.rowManager.nextDisplayRow(this,!0)||!1},Row.prototype.prevRow=function(){return this.table.rowManager.prevDisplayRow(this,!0)||!1},Row.prototype.moveToRow=function(t,e){var o=this.table.rowManager.findRow(t);o?(this.table.rowManager.moveRowActual(this,o,!e),this.table.rowManager.refreshActiveData("display",!1,!0)):console.warn("Move Error - No matching row found:",t)},Row.prototype.delete=function(){var t=this;return new Promise(function(e,o){var i=t.table.rowManager.getRowIndex(t);t.deleteActual(),t.table.options.history&&t.table.modExists("history")&&(i&&(i=t.table.rowManager.rows[i-1]),t.table.modules.history.action("rowDelete",t,{data:t.getData(),pos:!i,index:i})),e()})},Row.prototype.deleteActual=function(t){this.table.rowManager.getRowIndex(this);this.table.modExists("selectRow")&&this.table.modules.selectRow._deselectRow(this,!0),this.table.options.reactiveData&&this.table.modExists("reactiveData",!0),this.modules.group&&this.modules.group.removeRow(this),this.table.rowManager.deleteRow(this,t),this.deleteCells(),this.initialized=!1,this.heightInitialized=!1,this.table.modExists("columnCalcs")&&(this.table.options.groupBy&&this.table.modExists("groupRows")?this.table.modules.columnCalcs.recalcRowGroup(this):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows))},Row.prototype.deleteCells=function(){for(var t=this.cells.length,e=0;e<t;e++)this.cells[0].delete()},Row.prototype.wipe=function(){for(this.deleteCells();this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element=!1,this.modules={},this.element.parentNode&&this.element.parentNode.removeChild(this.element)},Row.prototype.getGroup=function(){return this.modules.group||!1},Row.prototype.getComponent=function(){return new RowComponent(this)};var CellComponent=function(t){this._cell=t};CellComponent.prototype.getValue=function(){return this._cell.getValue()},CellComponent.prototype.getOldValue=function(){return this._cell.getOldValue()},CellComponent.prototype.getElement=function(){return this._cell.getElement()},CellComponent.prototype.getRow=function(){return this._cell.row.getComponent()},CellComponent.prototype.getData=function(){return this._cell.row.getData()},CellComponent.prototype.getField=function(){return this._cell.column.getField()},CellComponent.prototype.getColumn=function(){return this._cell.column.getComponent()},CellComponent.prototype.setValue=function(t,e){void 0===e&&(e=!0),this._cell.setValue(t,e)},CellComponent.prototype.restoreOldValue=function(){this._cell.setValueActual(this._cell.getOldValue())},CellComponent.prototype.edit=function(t){return this._cell.edit(t)},CellComponent.prototype.cancelEdit=function(){this._cell.cancelEdit()},CellComponent.prototype.nav=function(){return this._cell.nav()},CellComponent.prototype.checkHeight=function(){this._cell.checkHeight()},CellComponent.prototype.getTable=function(){return this._cell.table},CellComponent.prototype._getSelf=function(){return this._cell};var Cell=function(t,e){this.table=t.table,this.column=t,this.row=e,this.element=null,this.value=null,this.oldValue=null,this.height=null,this.width=null,this.minWidth=null,this.build()};Cell.prototype.build=function(){this.generateElement(),this.setWidth(),this._configureCell(),this.setValueActual(this.column.getFieldValue(this.row.data))},Cell.prototype.generateElement=function(){this.element=document.createElement("div"),this.element.className="tabulator-cell",this.element.setAttribute("role","gridcell"),this.element=this.element},Cell.prototype._configureCell=function(){var t=this,e=t.column.cellEvents,o=t.element,i=this.column.getField();if(o.style.textAlign=t.column.hozAlign,i&&o.setAttribute("tabulator-field",i),t.column.definition.cssClass){t.column.definition.cssClass.split(" ").forEach(function(t){o.classList.add(t)})}"hover"===this.table.options.tooltipGenerationMode&&o.addEventListener("mouseenter",function(e){t._generateTooltip()}),t._bindClickEvents(e),t._bindTouchEvents(e),t._bindMouseEvents(e),t.column.modules.edit&&t.table.modules.edit.bindEditor(t),t.column.definition.rowHandle&&!1!==t.table.options.movableRows&&t.table.modExists("moveRow")&&t.table.modules.moveRow.initializeCell(t),t.column.visible||t.hide()},Cell.prototype._bindClickEvents=function(t){var e=this,o=e.element;(t.cellClick||e.table.options.cellClick)&&o.addEventListener("click",function(o){var i=e.getComponent();t.cellClick&&t.cellClick.call(e.table,o,i),e.table.options.cellClick&&e.table.options.cellClick.call(e.table,o,i)}),t.cellDblClick||this.table.options.cellDblClick?o.addEventListener("dblclick",function(o){var i=e.getComponent();t.cellDblClick&&t.cellDblClick.call(e.table,o,i),e.table.options.cellDblClick&&e.table.options.cellDblClick.call(e.table,o,i)}):o.addEventListener("dblclick",function(t){if(t.preventDefault(),document.selection){var o=document.body.createTextRange();o.moveToElementText(e.element),o.select()}else if(window.getSelection){var o=document.createRange();o.selectNode(e.element),window.getSelection().removeAllRanges(),window.getSelection().addRange(o)}}),(t.cellContext||this.table.options.cellContext)&&o.addEventListener("contextmenu",function(o){var i=e.getComponent();t.cellContext&&t.cellContext.call(e.table,o,i),e.table.options.cellContext&&e.table.options.cellContext.call(e.table,o,i)})},Cell.prototype._bindMouseEvents=function(t){var e=this,o=e.element;(t.cellMouseEnter||e.table.options.cellMouseEnter)&&o.addEventListener("mouseenter",function(o){var i=e.getComponent();t.cellMouseEnter&&t.cellMouseEnter.call(e.table,o,i),e.table.options.cellMouseEnter&&e.table.options.cellMouseEnter.call(e.table,o,i)}),(t.cellMouseLeave||e.table.options.cellMouseLeave)&&o.addEventListener("mouseleave",function(o){var i=e.getComponent();t.cellMouseLeave&&t.cellMouseLeave.call(e.table,o,i),e.table.options.cellMouseLeave&&e.table.options.cellMouseLeave.call(e.table,o,i)}),(t.cellMouseOver||e.table.options.cellMouseOver)&&o.addEventListener("mouseover",function(o){var i=e.getComponent();t.cellMouseOver&&t.cellMouseOver.call(e.table,o,i),e.table.options.cellMouseOver&&e.table.options.cellMouseOver.call(e.table,o,i)}),(t.cellMouseOut||e.table.options.cellMouseOut)&&o.addEventListener("mouseout",function(o){var i=e.getComponent();t.cellMouseOut&&t.cellMouseOut.call(e.table,o,i),e.table.options.cellMouseOut&&e.table.options.cellMouseOut.call(e.table,o,i)}),(t.cellMouseMove||e.table.options.cellMouseMove)&&o.addEventListener("mousemove",function(o){var i=e.getComponent();t.cellMouseMove&&t.cellMouseMove.call(e.table,o,i),e.table.options.cellMouseMove&&e.table.options.cellMouseMove.call(e.table,o,i)})},Cell.prototype._bindTouchEvents=function(t){var e,o,i,n=this,l=n.element;(t.cellTap||this.table.options.cellTap)&&(i=!1,l.addEventListener("touchstart",function(t){i=!0},{passive:!0}),l.addEventListener("touchend",function(e){if(i){var o=n.getComponent();t.cellTap&&t.cellTap.call(n.table,e,o),n.table.options.cellTap&&n.table.options.cellTap.call(n.table,e,o)}i=!1})),(t.cellDblTap||this.table.options.cellDblTap)&&(e=null,l.addEventListener("touchend",function(o){if(e){clearTimeout(e),e=null;var i=n.getComponent();t.cellDblTap&&t.cellDblTap.call(n.table,o,i),n.table.options.cellDblTap&&n.table.options.cellDblTap.call(n.table,o,i)}else e=setTimeout(function(){clearTimeout(e),e=null},300)})),(t.cellTapHold||this.table.options.cellTapHold)&&(o=null,l.addEventListener("touchstart",function(e){clearTimeout(o),o=setTimeout(function(){clearTimeout(o),o=null,i=!1;var l=n.getComponent();t.cellTapHold&&t.cellTapHold.call(n.table,e,l),n.table.options.cellTapHold&&n.table.options.cellTapHold.call(n.table,e,l)},1e3)},{passive:!0}),l.addEventListener("touchend",function(t){clearTimeout(o),o=null}))},Cell.prototype._generateContents=function(){var t;switch(t=this.table.modExists("format")?this.table.modules.format.formatValue(this):this.element.innerHTML=this.value,void 0===t?"undefined":_typeof(t)){case"object":if(t instanceof Node){for(;this.element.firstChild;)this.element.removeChild(this.element.firstChild);this.element.appendChild(t)}else this.element.innerHTML="",null!=t&&console.warn("Format Error - Formatter has returned a type of object, the only valid formatter object return is an instance of Node, the formatter returned:",t);break;case"undefined":case"null":this.element.innerHTML="";break;default:this.element.innerHTML=t}},Cell.prototype.cellRendered=function(){this.table.modExists("format")&&this.table.modules.format.cellRendered&&this.table.modules.format.cellRendered(this)},Cell.prototype._generateTooltip=function(){var t=this.column.tooltip;t?(!0===t?t=this.value:"function"==typeof t&&!1===(t=t(this.getComponent()))&&(t=""),void 0===t&&(t=""),this.element.setAttribute("title",t)):this.element.setAttribute("title","")},Cell.prototype.getElement=function(){return this.element},Cell.prototype.getValue=function(){return this.value},Cell.prototype.getOldValue=function(){return this.oldValue},Cell.prototype.setValue=function(t,e){var o,i=this.setValueProcessData(t,e);i&&(this.table.options.history&&this.table.modExists("history")&&this.table.modules.history.action("cellEdit",this,{oldValue:this.oldValue,newValue:this.value}),o=this.getComponent(),this.column.cellEvents.cellEdited&&this.column.cellEvents.cellEdited.call(this.table,o),this.table.options.cellEdited.call(this.table,o),this.table.options.dataEdited.call(this.table,this.table.rowManager.getData()))},Cell.prototype.setValueProcessData=function(t,e){var o=!1;return this.value!=t&&(o=!0,e&&this.column.modules.mutate&&(t=this.table.modules.mutator.transformCell(this,t))),this.setValueActual(t),o&&this.table.modExists("columnCalcs")&&(this.column.definition.topCalc||this.column.definition.bottomCalc)&&(this.table.options.groupBy&&this.table.modExists("groupRows")?("table"!=this.table.options.columnCalcs&&"both"!=this.table.options.columnCalcs||this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows),"table"!=this.table.options.columnCalcs&&this.table.modules.columnCalcs.recalcRowGroup(this.row)):this.table.modules.columnCalcs.recalc(this.table.rowManager.activeRows)),o},Cell.prototype.setValueActual=function(t){this.oldValue=this.value,this.value=t,this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.block(),this.column.setFieldValue(this.row.data,t),this.table.options.reactiveData&&this.table.modExists("reactiveData")&&this.table.modules.reactiveData.unblock(),this._generateContents(),this._generateTooltip(),this.table.options.resizableColumns&&this.table.modExists("resizeColumns")&&this.table.modules.resizeColumns.initializeColumn("cell",this.column,this.element),this.table.modExists("frozenColumns")&&this.table.modules.frozenColumns.layoutElement(this.element,this.column)},Cell.prototype.setWidth=function(){this.width=this.column.width,this.element.style.width=this.column.widthStyled},Cell.prototype.clearWidth=function(){this.width="",this.element.style.width=""},Cell.prototype.getWidth=function(){return this.width||this.element.offsetWidth},Cell.prototype.setMinWidth=function(){this.minWidth=this.column.minWidth,this.element.style.minWidth=this.column.minWidthStyled},Cell.prototype.checkHeight=function(){this.row.reinitializeHeight()},Cell.prototype.clearHeight=function(){this.element.style.height="",this.height=null},Cell.prototype.setHeight=function(){this.height=this.row.height,this.element.style.height=this.row.heightStyled},Cell.prototype.getHeight=function(){return this.height||this.element.offsetHeight},Cell.prototype.show=function(){this.element.style.display=""},Cell.prototype.hide=function(){this.element.style.display="none"},Cell.prototype.edit=function(t){if(this.table.modExists("edit",!0))return this.table.modules.edit.editCell(this,t)},Cell.prototype.cancelEdit=function(){if(this.table.modExists("edit",!0)){var t=this.table.modules.edit.getCurrentCell();t&&t._getSelf()===this?this.table.modules.edit.cancelEdit():console.warn("Cancel Editor Error - This cell is not currently being edited ")}},Cell.prototype.delete=function(){this.element.parentNode.removeChild(this.element),this.element=!1,this.column.deleteCell(this),this.row.deleteCell(this),this.calcs={}},Cell.prototype.nav=function(){var t=this,e=!1,o=this.row.getCellIndex(this);return{next:function(){var e,o=this.right();return!!o||!(!(e=t.table.rowManager.nextDisplayRow(t.row,!0))||!(o=e.findNextEditableCell(-1)))&&(o.edit(),!0)},prev:function(){var e,o=this.left();return!!o||!(!(e=t.table.rowManager.prevDisplayRow(t.row,!0))||!(o=e.findPrevEditableCell(e.cells.length)))&&(o.edit(),!0)},left:function(){return!!(e=t.row.findPrevEditableCell(o))&&(e.edit(),!0)},right:function(){return!!(e=t.row.findNextEditableCell(o))&&(e.edit(),!0)},up:function(){var e=t.table.rowManager.prevDisplayRow(t.row,!0);e&&e.cells[o].edit()},down:function(){var e=t.table.rowManager.nextDisplayRow(t.row,!0);e&&e.cells[o].edit()}}},Cell.prototype.getIndex=function(){this.row.getCellIndex(this)},Cell.prototype.getComponent=function(){return new CellComponent(this)};var FooterManager=function(t){this.table=t,this.active=!1,this.element=this.createElement(),this.external=!1,this.links=[],this._initialize()};FooterManager.prototype.createElement=function(){var t=document.createElement("div");return t.classList.add("tabulator-footer"),t},FooterManager.prototype._initialize=function(t){if(this.table.options.footerElement)switch(_typeof(this.table.options.footerElement)){case"string":"<"===this.table.options.footerElement[0]?this.element.innerHTML=this.table.options.footerElement:(this.external=!0,this.element=document.querySelector(this.table.options.footerElement));break;default:this.element=this.table.options.footerElement}},FooterManager.prototype.getElement=function(){return this.element},FooterManager.prototype.append=function(t,e){this.activate(e),this.element.appendChild(t),this.table.rowManager.adjustTableSize()},FooterManager.prototype.prepend=function(t,e){this.activate(e),this.element.insertBefore(t,this.element.firstChild),this.table.rowManager.adjustTableSize()},FooterManager.prototype.remove=function(t){t.parentNode.removeChild(t),this.deactivate()},FooterManager.prototype.deactivate=function(t){this.element.firstChild&&!t||(this.external||this.element.parentNode.removeChild(this.element),this.active=!1)},FooterManager.prototype.activate=function(t){this.active||(this.active=!0,this.external||(this.table.element.appendChild(this.getElement()),this.table.element.style.display="")),t&&this.links.push(t)},FooterManager.prototype.redraw=function(){this.links.forEach(function(t){t.footerRedraw()})};var Tabulator=function t(e,o){this.options={},this.columnManager=null,this.rowManager=null,this.footerManager=null,this.browser="",this.browserSlow=!1,this.modules={},this.initializeElement(e),this.initializeOptions(o||{}),this._create(),t.prototype.comms.register(this)};Tabulator.prototype.defaultOptions={height:!1,layout:"fitData",layoutColumnsOnNewData:!1,columnMinWidth:40,columnVertAlign:"top",resizableColumns:!0,resizableRows:!1,autoResize:!0,columns:[],data:[],autoColumns:!1,reactiveData:!1,nestedFieldSeparator:".",tooltips:!1,tooltipsHeader:!1,tooltipGenerationMode:"load",initialSort:!1,initialFilter:!1,initialHeaderFilter:!1,columnHeaderSortMulti:!0,sortOrderReverse:!1,headerSort:!0,headerSortTristate:!1,footerElement:!1,index:"id",keybindings:[],tabEndNewRow:!1,invalidOptionWarnings:!0,clipboard:!1,clipboardCopyStyled:!0,clipboardCopySelector:"active",clipboardCopyFormatter:"table",clipboardPasteParser:"table",clipboardPasteAction:"insert",clipboardCopyConfig:!1,clipboardCopied:function(){},clipboardPasted:function(){},clipboardPasteError:function(){},downloadDataFormatter:!1,downloadReady:function(t,e){return e},downloadComplete:!1,downloadConfig:!1,dataTree:!1,dataTreeElementColumn:!1,dataTreeBranchElement:!0,dataTreeChildIndent:9,dataTreeChildField:"_children",dataTreeCollapseElement:!1,dataTreeExpandElement:!1,dataTreeStartExpanded:!1,dataTreeRowExpanded:function(){},dataTreeRowCollapsed:function(){},printAsHtml:!1,printFormatter:!1,printHeader:!1,printFooter:!1,printCopyStyle:!0,printVisibleRows:!0,printConfig:{},addRowPos:"bottom",selectable:"highlight",selectableRangeMode:"drag",selectableRollingSelection:!0,selectablePersistence:!0,selectableCheck:function(t,e){return!0},headerFilterPlaceholder:!1,headerVisible:!0,history:!1,locale:!1,langs:{},virtualDom:!0,virtualDomBuffer:0,persistentLayout:!1,persistentSort:!1,persistentFilter:!1,persistenceID:"",persistenceMode:!0,responsiveLayout:!1,responsiveLayoutCollapseStartOpen:!0,responsiveLayoutCollapseUseFormatters:!0,responsiveLayoutCollapseFormatter:!1,pagination:!1,paginationSize:!1,paginationButtonCount:5,paginationSizeSelector:!1,paginationElement:!1,paginationDataSent:{},paginationDataReceived:{},paginationAddRow:"page",ajaxURL:!1,ajaxURLGenerator:!1,ajaxParams:{},ajaxConfig:"get",ajaxContentType:"form",ajaxRequestFunc:!1,ajaxLoader:!0,ajaxLoaderLoading:!1,ajaxLoaderError:!1,ajaxFiltering:!1,ajaxSorting:!1,ajaxProgressiveLoad:!1,ajaxProgressiveLoadDelay:0,ajaxProgressiveLoadScrollMargin:0,groupBy:!1,groupStartOpen:!0,groupValues:!1,groupHeader:!1,htmlOutputConfig:!1,movableColumns:!1,movableRows:!1,movableRowsConnectedTables:!1,movableRowsSender:!1,movableRowsReceiver:"insert",movableRowsSendingStart:function(){},movableRowsSent:function(){},movableRowsSentFailed:function(){},movableRowsSendingStop:function(){},movableRowsReceivingStart:function(){},movableRowsReceived:function(){},movableRowsReceivedFailed:function(){},movableRowsReceivingStop:function(){},scrollToRowPosition:"top",scrollToRowIfVisible:!0,scrollToColumnPosition:"left",scrollToColumnIfVisible:!0,rowFormatter:!1,placeholder:!1,tableBuilding:function(){},tableBuilt:function(){},renderStarted:function(){},renderComplete:function(){},rowClick:!1,rowDblClick:!1,rowContext:!1,rowTap:!1,rowDblTap:!1,rowTapHold:!1,rowMouseEnter:!1,rowMouseLeave:!1,rowMouseOver:!1,rowMouseOut:!1,rowMouseMove:!1,rowAdded:function(){},rowDeleted:function(){},rowMoved:function(){},rowUpdated:function(){},rowSelectionChanged:function(){},rowSelected:function(){},rowDeselected:function(){},rowResized:function(){},cellClick:!1,cellDblClick:!1,cellContext:!1,cellTap:!1,cellDblTap:!1,cellTapHold:!1,cellMouseEnter:!1,cellMouseLeave:!1,cellMouseOver:!1,cellMouseOut:!1,cellMouseMove:!1,cellEditing:function(){},cellEdited:function(){},cellEditCancelled:function(){},columnMoved:!1,columnResized:function(){},columnTitleChanged:function(){},columnVisibilityChanged:function(){},htmlImporting:function(){},htmlImported:function(){},dataLoading:function(){},dataLoaded:function(){},dataEdited:function(){},ajaxRequesting:function(){},ajaxResponse:!1,ajaxError:function(){},dataFiltering:!1,dataFiltered:!1,dataSorting:function(){},dataSorted:function(){},groupToggleElement:"arrow",groupClosedShowCalcs:!1,dataGrouping:function(){},dataGrouped:!1,groupVisibilityChanged:function(){},groupClick:!1,groupDblClick:!1,groupContext:!1,groupTap:!1,groupDblTap:!1,groupTapHold:!1,columnCalcs:!0,pageLoaded:function(){},localized:function(){},validationFailed:function(){},historyUndo:function(){},historyRedo:function(){}},Tabulator.prototype.initializeOptions=function(t){if(!1!==t.invalidOptionWarnings)for(var e in t)void 0===this.defaultOptions[e]&&console.warn("Invalid table constructor option:",e);for(var e in this.defaultOptions)e in t?this.options[e]=t[e]:Array.isArray(this.defaultOptions[e])?this.options[e]=[]:"object"===_typeof(this.defaultOptions[e])?this.options[e]={}:this.options[e]=this.defaultOptions[e]},Tabulator.prototype.initializeElement=function(t){return"undefined"!=typeof HTMLElement&&t instanceof HTMLElement?(this.element=t,!0):"string"==typeof t?(this.element=document.querySelector(t),!!this.element||(console.error("Tabulator Creation Error - no element found matching selector: ",t),!1)):(console.error("Tabulator Creation Error - Invalid element provided:",t),!1)},Tabulator.prototype._mapDepricatedFunctionality=function(){},Tabulator.prototype._clearSelection=function(){this.element.classList.add("tabulator-block-select"),window.getSelection?window.getSelection().empty?window.getSelection().empty():window.getSelection().removeAllRanges&&window.getSelection().removeAllRanges():document.selection&&document.selection.empty(),this.element.classList.remove("tabulator-block-select")},Tabulator.prototype._create=function(){this._clearObjectPointers(),this._mapDepricatedFunctionality(),this.bindModules(),"TABLE"===this.element.tagName&&this.modExists("htmlTableImport",!0)&&this.modules.htmlTableImport.parseTable(),this.columnManager=new ColumnManager(this),this.rowManager=new RowManager(this),this.footerManager=new FooterManager(this),this.columnManager.setRowManager(this.rowManager),this.rowManager.setColumnManager(this.columnManager),this._buildElement(),this._loadInitialData()},Tabulator.prototype._clearObjectPointers=function(){this.options.columns=this.options.columns.slice(0),this.options.reactiveData||(this.options.data=this.options.data.slice(0))},Tabulator.prototype._buildElement=function(){var t=this,e=this.element,o=this.modules,i=this.options;for(i.tableBuilding.call(this),e.classList.add("tabulator"),e.setAttribute("role","grid");e.firstChild;)e.removeChild(e.firstChild);i.height&&(i.height=isNaN(i.height)?i.height:i.height+"px",e.style.height=i.height),this.columnManager.initialize(),this.rowManager.initialize(),this._detectBrowser(),this.modExists("layout",!0)&&o.layout.initialize(i.layout),!1!==i.headerFilterPlaceholder&&o.localize.setHeaderFilterPlaceholder(i.headerFilterPlaceholder);for(var n in i.langs)o.localize.installLang(n,i.langs[n]);if(o.localize.setLocale(i.locale),"string"==typeof i.placeholder){var l=document.createElement("div");l.classList.add("tabulator-placeholder");var s=document.createElement("span");s.innerHTML=i.placeholder,l.appendChild(s),i.placeholder=l}if(e.appendChild(this.columnManager.getElement()),e.appendChild(this.rowManager.getElement()),i.footerElement&&this.footerManager.activate(),(i.persistentLayout||i.persistentSort||i.persistentFilter)&&this.modExists("persistence",!0)&&o.persistence.initialize(i.persistenceMode,i.persistenceID),i.persistentLayout&&this.modExists("persistence",!0)&&(i.columns=o.persistence.load("columns",i.columns)),i.movableRows&&this.modExists("moveRow")&&o.moveRow.initialize(),i.autoColumns&&this.options.data&&this.columnManager.generateColumnsFromRowData(this.options.data),this.modExists("columnCalcs")&&o.columnCalcs.initialize(),this.columnManager.setColumns(i.columns),i.dataTree&&this.modExists("dataTree",!0)&&o.dataTree.initialize(),this.modExists("frozenRows")&&this.modules.frozenRows.initialize(),(i.persistentSort||i.initialSort)&&this.modExists("sort",!0)){var a=[];i.persistentSort&&this.modExists("persistence",!0)?!1===(a=o.persistence.load("sort"))&&i.initialSort&&(a=i.initialSort):i.initialSort&&(a=i.initialSort),o.sort.setSort(a)}if((i.persistentFilter||i.initialFilter)&&this.modExists("filter",!0)){var r=[];i.persistentFilter&&this.modExists("persistence",!0)?!1===(r=o.persistence.load("filter"))&&i.initialFilter&&(r=i.initialFilter):i.initialFilter&&(r=i.initialFilter),o.filter.setFilter(r)}i.initialHeaderFilter&&this.modExists("filter",!0)&&i.initialHeaderFilter.forEach(function(e){var i=t.columnManager.findColumn(e.field);if(!i)return console.warn("Column Filter Error - No matching column found:",e.field),!1;o.filter.setHeaderFilterValue(i,e.value)}),this.modExists("ajax")&&o.ajax.initialize(),i.pagination&&this.modExists("page",!0)&&o.page.initialize(),i.groupBy&&this.modExists("groupRows",!0)&&o.groupRows.initialize(),this.modExists("keybindings")&&o.keybindings.initialize(),this.modExists("selectRow")&&o.selectRow.clearSelectionData(!0),i.autoResize&&this.modExists("resizeTable")&&o.resizeTable.initialize(),this.modExists("clipboard")&&o.clipboard.initialize(),i.printAsHtml&&this.modExists("print")&&o.print.initialize(),i.tableBuilt.call(this)},Tabulator.prototype._loadInitialData=function(){var t=this;t.options.pagination&&t.modExists("page")?(t.modules.page.reset(!0),"local"==t.options.pagination?t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data):t.options.ajaxURL?t.modules.page.setPage(1).then(function(){}).catch(function(){}):t.rowManager.setData([])):t.options.data.length?t.rowManager.setData(t.options.data):(t.options.ajaxURL||t.options.ajaxURLGenerator)&&t.modExists("ajax")?t.modules.ajax.loadData().then(function(){}).catch(function(){}):t.rowManager.setData(t.options.data)},Tabulator.prototype.destroy=function(){var t=this.element;for(Tabulator.prototype.comms.deregister(this),this.options.reactiveData&&this.modExists("reactiveData",!0)&&this.modules.reactiveData.unwatchData(),this.rowManager.rows.forEach(function(t){t.wipe()}),this.rowManager.rows=[],this.rowManager.activeRows=[],this.rowManager.displayRows=[],this.options.autoResize&&this.modExists("resizeTable")&&this.modules.resizeTable.clearBindings(),this.modExists("keybindings")&&this.modules.keybindings.clearBindings();t.firstChild;)t.removeChild(t.firstChild);t.classList.remove("tabulator")},Tabulator.prototype._detectBrowser=function(){var t=navigator.userAgent;t.indexOf("Trident")>-1?(this.browser="ie",this.browserSlow=!0):t.indexOf("Edge")>-1?(this.browser="edge",this.browserSlow=!0):t.indexOf("Firefox")>-1?(this.browser="firefox",this.browserSlow=!1):(this.browser="other",this.browserSlow=!1)},Tabulator.prototype.setDataFromLocalFile=function(t){var e=this;return new Promise(function(o,i){var n=document.createElement("input");n.type="file",n.accept=t||".json,application/json",n.addEventListener("change",function(t){var l,s=n.files[0],a=new FileReader;a.readAsText(s),a.onload=function(t){try{l=JSON.parse(a.result)}catch(t){return console.warn("File Load Error - File contents is invalid JSON",t),void i(t)}e._setData(l).then(function(t){o(t)}).catch(function(t){o(t)})},a.onerror=function(t){console.warn("File Load Error - Unable to read file"),i()}}),n.click()})},Tabulator.prototype.setData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o)},Tabulator.prototype._setData=function(t,e,o,i){var n=this;return"string"!=typeof t?t?n.rowManager.setData(t,i):n.modExists("ajax")&&(n.modules.ajax.getUrl||n.options.ajaxURLGenerator)?"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i):n.rowManager.setData([],i):0==t.indexOf("{")||0==t.indexOf("[")?n.rowManager.setData(JSON.parse(t),i):n.modExists("ajax",!0)?(e&&n.modules.ajax.setParams(e),o&&n.modules.ajax.setConfig(o),n.modules.ajax.setUrl(t),"remote"==n.options.pagination&&n.modExists("page",!0)?(n.modules.page.reset(!0),n.modules.page.setPage(1)):n.modules.ajax.loadData(i)):void 0},Tabulator.prototype.clearData=function(){this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this.rowManager.clearData()},Tabulator.prototype.getData=function(t){return this.rowManager.getData(t)},Tabulator.prototype.getDataCount=function(t){return this.rowManager.getDataCount(t)},Tabulator.prototype.searchRows=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("rows",t,e,o)},Tabulator.prototype.searchData=function(t,e,o){if(this.modExists("filter",!0))return this.modules.filter.search("data",t,e,o)},Tabulator.prototype.getHtml=function(t,e,o){if(this.modExists("htmlTableExport",!0))return this.modules.htmlTableExport.getHtml(t,e,o)},Tabulator.prototype.print=function(t,e,o){if(this.modExists("print",!0))return this.modules.print.printFullscreen(t,e,o)},Tabulator.prototype.getAjaxUrl=function(){if(this.modExists("ajax",!0))return this.modules.ajax.getUrl()},Tabulator.prototype.replaceData=function(t,e,o){return this.modExists("ajax")&&this.modules.ajax.blockActiveRequest(),this._setData(t,e,o,!0)},Tabulator.prototype.updateData=function(t){var e=this,o=this,i=0;return new Promise(function(n,l){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);e&&(i++,e.updateData(t).then(function(){
+--i||n()}))}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.addData=function(t,e,o){var i=this;return new Promise(function(n,l){i.modExists("ajax")&&i.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?i.rowManager.addRows(t,e,o).then(function(t){var e=[];t.forEach(function(t){e.push(t.getComponent())}),n(e)}):(console.warn("Update Error - No data provided"),l("Update Error - No data provided"))})},Tabulator.prototype.updateOrAddData=function(t){var e=this,o=this,i=[],n=0;return new Promise(function(l,s){e.modExists("ajax")&&e.modules.ajax.blockActiveRequest(),"string"==typeof t&&(t=JSON.parse(t)),t?t.forEach(function(t){var e=o.rowManager.findRow(t[o.options.index]);n++,e?e.updateData(t).then(function(){n--,i.push(e.getComponent()),n||l(i)}):o.rowManager.addRows(t).then(function(t){n--,i.push(t[0].getComponent()),n||l(i)})}):(console.warn("Update Error - No data provided"),s("Update Error - No data provided"))})},Tabulator.prototype.getRow=function(t){var e=this.rowManager.findRow(t);return e?e.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.getRowFromPosition=function(t,e){var o=this.rowManager.getRowFromPosition(t,e);return o?o.getComponent():(console.warn("Find Error - No matching row found:",t),!1)},Tabulator.prototype.deleteRow=function(t){var e=this;return new Promise(function(o,i){var n=e.rowManager.findRow(t);n?n.delete().then(function(){o()}).catch(function(t){i(t)}):(console.warn("Delete Error - No matching row found:",t),i("Delete Error - No matching row found"))})},Tabulator.prototype.addRow=function(t,e,o){var i=this;return new Promise(function(n,l){"string"==typeof t&&(t=JSON.parse(t)),i.rowManager.addRows(t,e,o).then(function(t){i.modExists("columnCalcs")&&i.modules.columnCalcs.recalc(i.rowManager.activeRows),n(t[0].getComponent())})})},Tabulator.prototype.updateOrAddRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(l.getComponent())}).catch(function(t){n(t)}):l=o.rowManager.addRows(e).then(function(t){o.modExists("columnCalcs")&&o.modules.columnCalcs.recalc(o.rowManager.activeRows),i(t[0].getComponent())}).catch(function(t){n(t)})})},Tabulator.prototype.updateRow=function(t,e){var o=this;return new Promise(function(i,n){var l=o.rowManager.findRow(t);"string"==typeof e&&(e=JSON.parse(e)),l?l.updateData(e).then(function(){i(l.getComponent())}).catch(function(t){n(t)}):(console.warn("Update Error - No matching row found:",t),n("Update Error - No matching row found"))})},Tabulator.prototype.scrollToRow=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.rowManager.findRow(t);s?i.rowManager.scrollToRow(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching row found:",t),l("Scroll Error - No matching row found"))})},Tabulator.prototype.moveRow=function(t,e,o){var i=this.rowManager.findRow(t);i?i.moveToRow(e,o):console.warn("Move Error - No matching row found:",t)},Tabulator.prototype.getRows=function(t){return this.rowManager.getComponents(t)},Tabulator.prototype.getRowPosition=function(t,e){var o=this.rowManager.findRow(t);return o?this.rowManager.getRowPosition(o,e):(console.warn("Position Error - No matching row found:",t),!1)},Tabulator.prototype.copyToClipboard=function(t,e,o,i){this.modExists("clipboard",!0)&&this.modules.clipboard.copy(t,e,o,i)},Tabulator.prototype.setColumns=function(t){this.columnManager.setColumns(t)},Tabulator.prototype.getColumns=function(t){return this.columnManager.getComponents(t)},Tabulator.prototype.getColumn=function(t){var e=this.columnManager.findColumn(t);return e?e.getComponent():(console.warn("Find Error - No matching column found:",t),!1)},Tabulator.prototype.getColumnDefinitions=function(){return this.columnManager.getDefinitionTree()},Tabulator.prototype.getColumnLayout=function(){if(this.modExists("persistence",!0))return this.modules.persistence.parseColumns(this.columnManager.getColumns())},Tabulator.prototype.setColumnLayout=function(t){return!!this.modExists("persistence",!0)&&(this.columnManager.setColumns(this.modules.persistence.mergeDefinition(this.options.columns,t)),!0)},Tabulator.prototype.showColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Show Error - No matching column found:",t),!1;e.show(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.hideColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Hide Error - No matching column found:",t),!1;e.hide(),this.options.responsiveLayout&&this.modExists("responsiveLayout",!0)&&this.modules.responsiveLayout.update()},Tabulator.prototype.toggleColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Visibility Toggle Error - No matching column found:",t),!1;e.visible?e.hide():e.show()},Tabulator.prototype.addColumn=function(t,e,o){var i=this.columnManager.findColumn(o);this.columnManager.addColumn(t,e,i)},Tabulator.prototype.deleteColumn=function(t){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Delete Error - No matching column found:",t),!1;e.delete()},Tabulator.prototype.moveColumn=function(t,e,o){var i=this.columnManager.findColumn(t),n=this.columnManager.findColumn(e);i?n?this.columnManager.moveColumn(i,n,o):console.warn("Move Error - No matching column found:",n):console.warn("Move Error - No matching column found:",t)},Tabulator.prototype.scrollToColumn=function(t,e,o){var i=this;return new Promise(function(n,l){var s=i.columnManager.findColumn(t);s?i.columnManager.scrollToColumn(s,e,o).then(function(){n()}).catch(function(t){l(t)}):(console.warn("Scroll Error - No matching column found:",t),l("Scroll Error - No matching column found"))})},Tabulator.prototype.setLocale=function(t){this.modules.localize.setLocale(t)},Tabulator.prototype.getLocale=function(){return this.modules.localize.getLocale()},Tabulator.prototype.getLang=function(t){return this.modules.localize.getLang(t)},Tabulator.prototype.redraw=function(t){this.columnManager.redraw(t),this.rowManager.redraw(t)},Tabulator.prototype.setHeight=function(t){this.options.height=isNaN(t)?t:t+"px",this.element.style.height=this.options.height,this.rowManager.redraw()},Tabulator.prototype.setSort=function(t,e){this.modExists("sort",!0)&&(this.modules.sort.setSort(t,e),this.rowManager.sorterRefresh())},Tabulator.prototype.getSorters=function(){if(this.modExists("sort",!0))return this.modules.sort.getSort()},Tabulator.prototype.clearSort=function(){this.modExists("sort",!0)&&(this.modules.sort.clear(),this.rowManager.sorterRefresh())},Tabulator.prototype.setFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.setFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.addFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.addFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.getFilters=function(t){if(this.modExists("filter",!0))return this.modules.filter.getFilters(t)},Tabulator.prototype.setHeaderFilterFocus=function(t){if(this.modExists("filter",!0)){var e=this.columnManager.findColumn(t);if(!e)return console.warn("Column Filter Focus Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterFocus(e)}},Tabulator.prototype.setHeaderFilterValue=function(t,e){if(this.modExists("filter",!0)){var o=this.columnManager.findColumn(t);if(!o)return console.warn("Column Filter Error - No matching column found:",t),!1;this.modules.filter.setHeaderFilterValue(o,e)}},Tabulator.prototype.getHeaderFilters=function(){if(this.modExists("filter",!0))return this.modules.filter.getHeaderFilters()},Tabulator.prototype.removeFilter=function(t,e,o){this.modExists("filter",!0)&&(this.modules.filter.removeFilter(t,e,o),this.rowManager.filterRefresh())},Tabulator.prototype.clearFilter=function(t){this.modExists("filter",!0)&&(this.modules.filter.clearFilter(t),this.rowManager.filterRefresh())},Tabulator.prototype.clearHeaderFilter=function(){this.modExists("filter",!0)&&(this.modules.filter.clearHeaderFilter(),this.rowManager.filterRefresh())},Tabulator.prototype.selectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.selectRows(t)},Tabulator.prototype.deselectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.deselectRows(t)},Tabulator.prototype.toggleSelectRow=function(t){this.modExists("selectRow",!0)&&this.modules.selectRow.toggleRow(t)},Tabulator.prototype.getSelectedRows=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedRows()},Tabulator.prototype.getSelectedData=function(){if(this.modExists("selectRow",!0))return this.modules.selectRow.getSelectedData()},Tabulator.prototype.setMaxPage=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setMaxPage(t)},Tabulator.prototype.setPage=function(t){return this.options.pagination&&this.modExists("page")?this.modules.page.setPage(t):new Promise(function(t,e){e()})},Tabulator.prototype.setPageToRow=function(t){var e=this;return new Promise(function(o,i){e.options.pagination&&e.modExists("page")?(t=e.rowManager.findRow(t),t?e.modules.page.setPageToRow(t).then(function(){o()}).catch(function(){i()}):i()):i()})},Tabulator.prototype.setPageSize=function(t){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.setPageSize(t),this.modules.page.setPage(1).then(function(){}).catch(function(){})},Tabulator.prototype.getPageSize=function(){if(this.options.pagination&&this.modExists("page",!0))return this.modules.page.getPageSize()},Tabulator.prototype.previousPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.previousPage()},Tabulator.prototype.nextPage=function(){if(!this.options.pagination||!this.modExists("page"))return!1;this.modules.page.nextPage()},Tabulator.prototype.getPage=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPage()},Tabulator.prototype.getPageMax=function(){return!(!this.options.pagination||!this.modExists("page"))&&this.modules.page.getPageMax()},Tabulator.prototype.setGroupBy=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupBy=t,this.modules.groupRows.initialize(),this.rowManager.refreshActiveData("display")},Tabulator.prototype.setGroupStartOpen=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupStartOpen=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.setGroupHeader=function(t){if(!this.modExists("groupRows",!0))return!1;this.options.groupHeader=t,this.modules.groupRows.initialize(),this.options.groupBy?this.rowManager.refreshActiveData("group"):console.warn("Grouping Update - cant refresh view, no groups have been set")},Tabulator.prototype.getGroups=function(t){return!!this.modExists("groupRows",!0)&&this.modules.groupRows.getGroups(!0)},Tabulator.prototype.getGroupedData=function(){if(this.modExists("groupRows",!0))return this.options.groupBy?this.modules.groupRows.getGroupedData():this.getData()},Tabulator.prototype.getCalcResults=function(){return!!this.modExists("columnCalcs",!0)&&this.modules.columnCalcs.getResults()},Tabulator.prototype.navigatePrev=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().prev()},Tabulator.prototype.navigateNext=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&t.nav().next()},Tabulator.prototype.navigateLeft=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().left())},Tabulator.prototype.navigateRight=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().right())},Tabulator.prototype.navigateUp=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().up())},Tabulator.prototype.navigateDown=function(){var t=!1;return!(!this.modExists("edit",!0)||!(t=this.modules.edit.currentCell))&&(e.preventDefault(),t.nav().down())},Tabulator.prototype.undo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.undo()},Tabulator.prototype.redo=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.redo()},Tabulator.prototype.getHistoryUndoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryUndoSize()},Tabulator.prototype.getHistoryRedoSize=function(){return!(!this.options.history||!this.modExists("history",!0))&&this.modules.history.getHistoryRedoSize()},Tabulator.prototype.download=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o)},Tabulator.prototype.downloadToTab=function(t,e,o){this.modExists("download",!0)&&this.modules.download.download(t,e,o,!0)},Tabulator.prototype.tableComms=function(t,e,o,i){this.modules.comms.receive(t,e,o,i)},Tabulator.prototype.moduleBindings={},Tabulator.prototype.extendModule=function(t,e,o){if(Tabulator.prototype.moduleBindings[t]){var i=Tabulator.prototype.moduleBindings[t].prototype[e];if(i)if("object"==(void 0===o?"undefined":_typeof(o)))for(var n in o)i[n]=o[n];else console.warn("Module Error - Invalid value type, it must be an object");else console.warn("Module Error - property does not exist:",e)}else console.warn("Module Error - module does not exist:",t)},Tabulator.prototype.registerModule=function(t,e){Tabulator.prototype.moduleBindings[t]=e},Tabulator.prototype.bindModules=function(){this.modules={};for(var t in Tabulator.prototype.moduleBindings)this.modules[t]=new Tabulator.prototype.moduleBindings[t](this)},Tabulator.prototype.modExists=function(t,e){return!!this.modules[t]||(e&&console.error("Tabulator Module Not Installed: "+t),!1)},Tabulator.prototype.helpers={elVisible:function(t){return!(t.offsetWidth<=0&&t.offsetHeight<=0)},elOffset:function(t){var e=t.getBoundingClientRect();return{top:e.top+window.pageYOffset-document.documentElement.clientTop,left:e.left+window.pageXOffset-document.documentElement.clientLeft}},deepClone:function(t){var e=Array.isArray(t)?[]:{};for(var o in t)null!=t[o]&&"object"===_typeof(t[o])?t[o]instanceof Date?e[o]=new Date(t[o]):e[o]=this.deepClone(t[o]):e[o]=t[o];return e}},Tabulator.prototype.comms={tables:[],register:function(t){Tabulator.prototype.comms.tables.push(t)},deregister:function(t){var e=Tabulator.prototype.comms.tables.indexOf(t);e>-1&&Tabulator.prototype.comms.tables.splice(e,1)},lookupTable:function(t){var e,o,i=[];if("string"==typeof t){if(e=document.querySelectorAll(t),e.length)for(var n=0;n<e.length;n++)(o=Tabulator.prototype.comms.matchElement(e[n]))&&i.push(o)}else"undefined"!=typeof HTMLElement&&t instanceof HTMLElement||t instanceof Tabulator?(o=Tabulator.prototype.comms.matchElement(t))&&i.push(o):Array.isArray(t)?t.forEach(function(t){i=i.concat(Tabulator.prototype.comms.lookupTable(t))}):console.warn("Table Connection Error - Invalid Selector",t);return i},matchElement:function(t){return Tabulator.prototype.comms.tables.find(function(e){return t instanceof Tabulator?e===t:e.element===t})}};var Layout=function(t){this.table=t,this.mode=null};Layout.prototype.initialize=function(t){this.modes[t]?this.mode=t:(console.warn("Layout Error - invalid mode set, defaulting to 'fitData' : "+t),this.mode="fitData"),this.table.element.setAttribute("tabulator-layout",this.mode)},Layout.prototype.getMode=function(){return this.mode},Layout.prototype.layout=function(){this.modes[this.mode].call(this,this.table.columnManager.columnsByIndex)},Layout.prototype.modes={fitData:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitDataFill:function(t){t.forEach(function(t){t.reinitializeWidth()}),this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update()},fitColumns:function(t){function e(t){return"string"==typeof t?t.indexOf("%")>-1?n/100*parseInt(t):parseInt(t):t}function o(t,i,n,l){function s(t){return n*(t.column.definition.widthGrow||1)}function a(t){return e(t.width)-n*(t.column.definition.widthShrink||0)}var r=[],u=0,c=0,h=0,p=0,d=0,m=[];return t.forEach(function(t,e){var o=l?a(t):s(t);t.column.minWidth>=o?r.push(t):(m.push(t),d+=l?t.column.definition.widthShrink||1:t.column.definition.widthGrow||1)}),r.length?(r.forEach(function(t){u+=l?t.width-t.column.minWidth:t.column.minWidth,t.width=t.column.minWidth}),c=i-u,h=d?Math.floor(c/d):c,p=c-h*d,p+=o(m,c,h,l)):(p=d?i-Math.floor(i/d)*d:i,m.forEach(function(t){t.width=l?a(t):s(t)})),p}var i=this,n=i.table.element.clientWidth,l=0,s=0,a=0,r=0,u=[],c=[],h=0,p=0,d=0;this.table.options.responsiveLayout&&this.table.modExists("responsiveLayout",!0)&&this.table.modules.responsiveLayout.update(),this.table.rowManager.element.scrollHeight>this.table.rowManager.element.clientHeight&&(n-=this.table.rowManager.element.offsetWidth-this.table.rowManager.element.clientWidth),t.forEach(function(t){var o,i,n;t.visible&&(o=t.definition.width,i=parseInt(t.minWidth),o?(n=e(o),l+=n>i?n:i,t.definition.widthShrink&&(c.push({column:t,width:n>i?n:i}),h+=t.definition.widthShrink)):(u.push({column:t,width:0}),a+=t.definition.widthGrow||1))}),s=n-l,r=Math.floor(s/a);var d=o(u,s,r,!1);u.length&&d>0&&(u[u.length-1].width+=+d),u.forEach(function(t){s-=t.width}),p=Math.abs(d)+s,p>0&&h&&(d=o(c,p,Math.floor(p/h),!0)),c.length&&(c[c.length-1].width-=d),u.forEach(function(t){t.column.setWidth(t.width)}),c.forEach(function(t){t.column.setWidth(t.width)})}},Tabulator.prototype.registerModule("layout",Layout);var Localize=function(t){this.table=t,this.locale="default",this.lang=!1,this.bindings={}};Localize.prototype.setHeaderFilterPlaceholder=function(t){this.langs.default.headerFilters.default=t},Localize.prototype.setHeaderFilterColumnPlaceholder=function(t,e){this.langs.default.headerFilters.columns[t]=e,this.lang&&!this.lang.headerFilters.columns[t]&&(this.lang.headerFilters.columns[t]=e)},Localize.prototype.installLang=function(t,e){this.langs[t]?this._setLangProp(this.langs[t],e):this.langs[t]=e},Localize.prototype._setLangProp=function(t,e){for(var o in e)t[o]&&"object"==_typeof(t[o])?this._setLangProp(t[o],e[o]):t[o]=e[o]},Localize.prototype.setLocale=function(t){function e(t,o){for(var i in t)"object"==_typeof(t[i])?(o[i]||(o[i]={}),e(t[i],o[i])):o[i]=t[i]}var o=this;if(t=t||"default",!0===t&&navigator.language&&(t=navigator.language.toLowerCase()),t&&!o.langs[t]){var i=t.split("-")[0];o.langs[i]?(console.warn("Localization Error - Exact matching locale not found, using closest match: ",t,i),t=i):(console.warn("Localization Error - Matching locale not found, using default: ",t),t="default")}o.locale=t,o.lang=Tabulator.prototype.helpers.deepClone(o.langs.default||{}),"default"!=t&&e(o.langs[t],o.lang),o.table.options.localized.call(o.table,o.locale,o.lang),o._executeBindings()},Localize.prototype.getLocale=function(t){return self.locale},Localize.prototype.getLang=function(t){return t?this.langs[t]:this.lang},Localize.prototype.getText=function(t,e){var t=e?t+"|"+e:t,o=t.split("|");return this._getLangElement(o,this.locale)||""},Localize.prototype._getLangElement=function(t,e){var o=this,i=o.lang;return t.forEach(function(t){var e;i&&(e=i[t],i=void 0!==e&&e)}),i},Localize.prototype.bind=function(t,e){this.bindings[t]||(this.bindings[t]=[]),this.bindings[t].push(e),e(this.getText(t),this.lang)},Localize.prototype._executeBindings=function(){var t=this;for(var e in t.bindings)!function(e){t.bindings[e].forEach(function(o){o(t.getText(e),t.lang)})}(e)},Localize.prototype.langs={default:{groups:{item:"item",items:"items"},columns:{},ajax:{loading:"Loading",error:"Error"},pagination:{page_size:"Page Size",first:"First",first_title:"First Page",last:"Last",last_title:"Last Page",prev:"Prev",prev_title:"Prev Page",next:"Next",next_title:"Next Page"},headerFilters:{default:"filter column...",columns:{}}}},Tabulator.prototype.registerModule("localize",Localize);var Comms=function(t){this.table=t};Comms.prototype.getConnections=function(t){var e,o=this,i=[];return e=Tabulator.prototype.comms.lookupTable(t),e.forEach(function(t){o.table!==t&&i.push(t)}),i},Comms.prototype.send=function(t,e,o,i){var n=this,l=this.getConnections(t);l.forEach(function(t){t.tableComms(n.table.element,e,o,i)}),!l.length&&t&&console.warn("Table Connection Error - No tables matching selector found",t)},Comms.prototype.receive=function(t,e,o,i){if(this.table.modExists(e))return this.table.modules[e].commsReceived(t,o,i);console.warn("Inter-table Comms Error - no such module:",e)},Tabulator.prototype.registerModule("comms",Comms);
\ No newline at end of file
-#!/usr/bin/env perl
-use strict;
-use Getopt::Long;
-use Data::Dumper;
-use File::Basename;
-use FindBin qw($RealBin);
-use JSON::PP;
-use lib (dirname($RealBin).'/lib');
-use DB::PgSQL;
-use ConfigFile;
-use SSH;
-use POSIX qw/strftime/;
-# check if running
-#print "PID:".$$."\n";
-my $cmd = 'ps ax | grep '.basename($0).' | grep -v "grep" | awk \'{ print $1 }\'';
-my $cfgpath = dirname($RealBin).'/conf';
-my $logpath = dirname($RealBin).'/log';
-my $cfgdata = ConfigFile->new({logfile => $logpath.'/'.strftime('%Y-%m-%d',localtime()).'.log'});
-#print $cmd."\n";
-my $isrunning = `$cmd`;
-chomp($isrunning);
-#print "Result:".$isrunning."\n";
-if ($isrunning ne "$$"){
- $cfgdata->writelog("script","params","start","script already running on PID:$$!");
- print basename($0)." already runs!\n";
- exit(1);
-}
-
-
-
-my $timetracker = "";
-my $system = "";
-GetOptions( "timetracker|t=s" => \$timetracker);
-print "start htx(up) sync timetracker $timetracker to pot\n";
-
-if (($timetracker eq "") || (! -e $cfgpath.'/'.$timetracker.'.conf')){
- $cfgdata->writelog("script","params","start","no timetracker in params!");
- print "no timetracker!\n";
- exit(2);
-}
-my $ttcfgfile = dirname($RealBin).'/conf/'.$timetracker.'.conf';
-my $ttcfg = $cfgdata->read_conf($ttcfgfile);
-#print Dumper($ttcfg);
-if (exists($ttcfg->{syncdb}) && exists($ttcfg->{syncschema}) && ($ttcfg->{syncdb} ne "") && ($ttcfg->{syncschema} ne "") && -f $cfgpath.'/'.$ttcfg->{syncdb}.'.conf'){
- my $ttssh = SSH->new({host => $ttcfg->{sshhost},opts => {user => $ttcfg->{sshuser}, password => $ttcfg->{sshpwd}, port => $ttcfg->{sshport}, strict_mode => 0}});
- my $syscfgfile = dirname($RealBin).'/conf/'.$ttcfg->{syncdb}.'.conf';
- my $syscfg = $cfgdata->read_conf($syscfgfile);
- #print Dumper($syscfg);
- my $sysdb = DB::PgSQL->new({dbname => $syscfg->{dbname},dbhost => $syscfg->{dbhost},dbuser=>$syscfg->{dbuser}, dbpasswd => $syscfg->{dbpasswd}});
- my $newts = $sysdb->query("select to_char(now(),'YYYY-MM-DD HH24:MI:SS') as newts;");
- my $ttsql = "select id,id_staff,stamp_in,stamp_out from timetracks ";
- if (exists($ttcfg->{lastsyncup}) && ($ttcfg->{lastsyncup} =~ /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/)){
- $ttsql .= " where stamp_in >= '".$ttcfg->{lastsyncup}."' or stamp_out >= '".$ttcfg->{lastsyncup}."'";
- }
- $ttsql .= ";";
- my $cmd = 'sqlite3 "'.$ttcfg->{datapath}.'/'.$ttcfg->{dbfile}.'" "'.$ttsql.'"';
-
- $cfgdata->writelog("ssh","syncup","sqlite",$cmd);
- my $out = $ttssh->piperemote($cmd);
- #print "->$out<-\n";
- if ($out eq ""){
- print $ttcfg->{sshhost}.": nothing to update or Connection Time Out!\n";
- exit(3);
- }
- #print $out;
- my @ttdata = split("\n",$out);
- #print Dumper(@ttdata);
- foreach my $tt (@ttdata){
- #print $tt."\n";
- chomp($tt);
- my @cols = split(/\|/,$tt);
- #print Dumper(@cols);
- my $sysrowsql = "INSERT INTO ".$ttcfg->{syncschema}.".timetracker (id,id_staff,daydate,stamp_in) VALUES ('".$cols[0]."','".$cols[1]."',date('".substr($cols[2],0,10)."'),'".$cols[2]."') on conflict on constraint timetracker_pkey do nothing;";
- if ($cols[3] ne ""){
- $sysrowsql .= "UPDATE ".$ttcfg->{syncschema}.".timetracker set stamp_out='".$cols[3]."' where stamp_out is null and id='".$cols[0]."';";
- }
- #print $sysrowsql."\n--\n";
- $cfgdata->writelog("pot","syncup","sql",$sysrowsql);
- my $st = $sysdb->exec($sysrowsql);
- }
- print "New TS: ".$newts->{newts}."\n";
- #
- my $replts = "sed -i 's/^lastsyncup=.*/lastsyncup=".$newts->{newts}."/' ".$ttcfgfile;
- $out = `$replts`;
- if ($out ne ""){
- $cfgdata->writelog("config","sed","errror","error writing timetamp to config ".$timetracker.".conf!".$out);
- }
-
-} else {
- $cfgdata->writelog("script","params","start","no System DB or schema found!");
- print "no System DB or schema found!\n";
- exit(2);
-}
-# if (($system eq "") || (! -e $cfgpath.'/'.$system.'.conf')){
-# $cfgdata->writelog("script","params","start","no system in params!");
-# print "no system\n";
-# exit(3);
-# }
-
-#$sysdb->
-#if (! -e $cfg->{datapath}.'/'.$cfg->{dbfile}){
-# print "no database ".$cfg->{datapath}.'/'.$cfg->{dbfile}." found!\n";
-# exit(1);
-#}
-
-#my $jdata = &readdatafile();
-#my $db = DB::SQLite->new({dbfile => $cfg->{datapath}.'/'.$cfg->{dbfile}});
-#my @k = keys(%{$jdata->{result}});
-#foreach my $fn (keys(%{$jdata->{result}})){
-# foreach my $j (keys(%{$jdata->{$fn}->{data}})){
-# my $data = $jdata->{result}->{$fn}->{$j};
- #print Dumper($user);
-# if ($fn eq "getusers"){
-# my $sql = "REPLACE INTO staff (id,prename,surname,isdisabled,isdeleted) VALUES (".$db->value($data->{id}).",".$db->value($data->{prename}).",".$db->value($data->{surname}).",".(($data->{istimetrackenabled} eq "1")?'null':"'1'").",".$db->value($data->{isdeleted}).");";
-# print $sql."\n";
-# $db->exec($sql);
-# } elsif ($fn eq "getpotdata"){
-# my $sql = "REPLACE INTO staffworktimes (id,id_staff,starttime1,endtime1,starttime2,endtime2) VALUES (".$db->value($data->{id}).",".$db->value($data->{id_staff}).",".$db->value($data->{timestart1}).",".$db->value($data->{timeend1}).",".$db->value($data->{timestart2}).",".$db->value($data->{timeend2}).");";
-# print $sql."\n";
-# $db->exec($sql);
-# }
-
-# }
-#}
-
-#unlink($datafile);
+#!/usr/bin/env perl\r
+use strict;\r
+use Getopt::Long;\r
+use Data::Dumper;\r
+use File::Basename;\r
+use FindBin qw($RealBin);\r
+use JSON::PP;\r
+use lib (dirname($RealBin).'/lib');\r
+use DB::PgSQL;\r
+use ConfigFile;\r
+use SSH;\r
+use POSIX qw/strftime/;\r
+# check if running\r
+#print "PID:".$$."\n";\r
+my $cmd = 'ps ax | grep '.basename($0).' | grep -v "grep" | awk \'{ print $1 }\'';\r
+my $cfgpath = dirname($RealBin).'/conf';\r
+my $logpath = dirname($RealBin).'/log';\r
+my $cfgdata = ConfigFile->new({logfile => $logpath.'/'.strftime('%Y-%m-%d',localtime()).'.log'});\r
+#print $cmd."\n";\r
+my $isrunning = `$cmd`;\r
+chomp($isrunning);\r
+#print "Result:".$isrunning."\n";\r
+if ($isrunning ne "$$"){\r
+ $cfgdata->writelog("script","params","start","script already running on PID:$$!");\r
+ print basename($0)." already runs!\n";\r
+ exit(1);\r
+}\r
+\r
+\r
+\r
+my $timetracker = "";\r
+my $system = "";\r
+GetOptions( "timetracker|t=s" => \$timetracker);\r
+print "start htx(up) sync timetracker $timetracker to pot\n";\r
+\r
+if (($timetracker eq "") || (! -e $cfgpath.'/'.$timetracker.'.conf')){\r
+ $cfgdata->writelog("script","params","start","no timetracker in params!");\r
+ print "no timetracker!\n";\r
+ exit(2);\r
+}\r
+my $ttcfgfile = dirname($RealBin).'/conf/'.$timetracker.'.conf';\r
+my $ttcfg = $cfgdata->read_conf($ttcfgfile);\r
+#print Dumper($ttcfg);\r
+if (exists($ttcfg->{syncdb}) && exists($ttcfg->{syncschema}) && ($ttcfg->{syncdb} ne "") && ($ttcfg->{syncschema} ne "") && -f $cfgpath.'/'.$ttcfg->{syncdb}.'.conf'){\r
+ my $ttssh = SSH->new({host => $ttcfg->{sshhost},opts => {user => $ttcfg->{sshuser}, password => $ttcfg->{sshpwd}, port => $ttcfg->{sshport}, strict_mode => 0}});\r
+ my $syscfgfile = dirname($RealBin).'/conf/'.$ttcfg->{syncdb}.'.conf';\r
+ my $syscfg = $cfgdata->read_conf($syscfgfile);\r
+ #print Dumper($syscfg);\r
+ my $sysdb = DB::PgSQL->new({dbname => $syscfg->{dbname},dbhost => $syscfg->{dbhost},dbuser=>$syscfg->{dbuser}, dbpasswd => $syscfg->{dbpasswd}});\r
+ my $newts = $sysdb->query("select to_char(now(),'YYYY-MM-DD HH24:MI:SS') as newts;");\r
+ my $ttsql = "select id,id_staff,stamp_in,stamp_out from timetracks ";\r
+ if (exists($ttcfg->{lastsyncup}) && ($ttcfg->{lastsyncup} =~ /\d\d\d\d-\d\d-\d\d \d\d:\d\d:\d\d/)){\r
+ $ttsql .= " where stamp_in >= '".$ttcfg->{lastsyncup}."' or stamp_out >= '".$ttcfg->{lastsyncup}."'";\r
+ }\r
+ $ttsql .= ";";\r
+ my $cmd = 'sqlite3 "'.$ttcfg->{datapath}.'/'.$ttcfg->{dbfile}.'" "'.$ttsql.'"';\r
+\r
+ $cfgdata->writelog("ssh","syncup","sqlite",$cmd);\r
+ my $out = $ttssh->piperemote($cmd);\r
+ #print "->$out<-\n";\r
+ if ($out eq ""){\r
+ print $ttcfg->{sshhost}.": nothing to update or Connection Time Out!\n";\r
+ exit(3);\r
+ }\r
+ #print $out;\r
+ my @ttdata = split("\n",$out);\r
+ #print Dumper(@ttdata);\r
+ foreach my $tt (@ttdata){\r
+ #print $tt."\n";\r
+ chomp($tt);\r
+ my @cols = split(/\|/,$tt);\r
+ #print Dumper(@cols);\r
+ my $sysrowsql = "INSERT INTO ".$ttcfg->{syncschema}.".timetracker (id,id_staff,daydate,stamp_in) VALUES ('".$cols[0]."','".$cols[1]."',date('".substr($cols[2],0,10)."'),'".$cols[2]."') on conflict on constraint timetracker_pkey do nothing;";\r
+ if ($cols[3] ne ""){\r
+ $sysrowsql .= "UPDATE ".$ttcfg->{syncschema}.".timetracker set stamp_out='".$cols[3]."' where stamp_out is null and id='".$cols[0]."';";\r
+ }\r
+ #print $sysrowsql."\n--\n";\r
+ $cfgdata->writelog("pot","syncup","sql",$sysrowsql);\r
+ my $st = $sysdb->exec($sysrowsql);\r
+ }\r
+ print "New TS: ".$newts->{newts}."\n";\r
+ #\r
+ my $replts = "sed -i 's/^lastsyncup=.*/lastsyncup=".$newts->{newts}."/' ".$ttcfgfile;\r
+ $out = `$replts`;\r
+ if ($out ne ""){\r
+ $cfgdata->writelog("config","sed","errror","error writing timetamp to config ".$timetracker.".conf!".$out);\r
+ }\r
+\r
+} else {\r
+ $cfgdata->writelog("script","params","start","no System DB or schema found!");\r
+ print "no System DB or schema found!\n";\r
+ exit(2);\r
+}\r
+# if (($system eq "") || (! -e $cfgpath.'/'.$system.'.conf')){\r
+# $cfgdata->writelog("script","params","start","no system in params!");\r
+# print "no system\n";\r
+# exit(3);\r
+# }\r
+\r
+#$sysdb->\r
+#if (! -e $cfg->{datapath}.'/'.$cfg->{dbfile}){\r
+# print "no database ".$cfg->{datapath}.'/'.$cfg->{dbfile}." found!\n";\r
+# exit(1);\r
+#}\r
+\r
+#my $jdata = &readdatafile();\r
+#my $db = DB::SQLite->new({dbfile => $cfg->{datapath}.'/'.$cfg->{dbfile}});\r
+#my @k = keys(%{$jdata->{result}});\r
+#foreach my $fn (keys(%{$jdata->{result}})){\r
+# foreach my $j (keys(%{$jdata->{$fn}->{data}})){\r
+# my $data = $jdata->{result}->{$fn}->{$j};\r
+ #print Dumper($user);\r
+# if ($fn eq "getusers"){\r
+# my $sql = "REPLACE INTO staff (id,prename,surname,isdisabled,isdeleted) VALUES (".$db->value($data->{id}).",".$db->value($data->{prename}).",".$db->value($data->{surname}).",".(($data->{istimetrackenabled} eq "1")?'null':"'1'").",".$db->value($data->{isdeleted}).");";\r
+# print $sql."\n";\r
+# $db->exec($sql);\r
+# } elsif ($fn eq "getpotdata"){\r
+# my $sql = "REPLACE INTO staffworktimes (id,id_staff,starttime1,endtime1,starttime2,endtime2) VALUES (".$db->value($data->{id}).",".$db->value($data->{id_staff}).",".$db->value($data->{timestart1}).",".$db->value($data->{timeend1}).",".$db->value($data->{timestart2}).",".$db->value($data->{timeend2}).");";\r
+# print $sql."\n";\r
+# $db->exec($sql);\r
+# }\r
+\r
+# }\r
+#}\r
+\r
+#unlink($datafile);\r
--- /dev/null
+#!/usr/bin/env perl
+use strict;
+use File::Basename;
+use Getopt::Long;
+use Time::HiRes;
+use Data::Dumper;
+#use lib ($ENV{HOME}.'/perl5/lib/perl5');
+use FindBin qw($RealBin);
+use lib $RealBin;
+
+use Plack::Builder;
+use Plack::App::File;
+use Plack::App::WrapCGI;
+use Plack::Middleware::Auth::Basic;
+use Plack::Middleware::DirIndex;
+use Plack::Request;
+use Plack::Runner;
+use Digest::SHA::PurePerl qw(sha256_hex);
+#use Module::Service;
+#use Module::Test;
+# use Module::SQLite;
+# use Module::FileSystem;
+# use Module::System;
+
+print $^O."\n";
+print $RealBin."\n";
+my $datadir=$ENV{HOME}.'/.hourtrax';
+# if ($^O eq "MSWin32"){
+# $datadir = $ENV{APPDATA}.'/hourtrax';
+# } elsif ($^O eq "darwin"){
+# $datadir = $ENV{HOME}.'/Library/Application Support/hourtrax';
+# }
+#my $webdir = dirname($RealBin).'/web';
+print "Datadir:".$datadir."\n";
+my @match = grep { /par-.*inc$/} @INC;
+
+#if ($^O ne "MSWin32"){
+ use POSIX qw(setsid);
+ #open STDIN, '/dev/null' or die "Can't read /dev/null: $!";
+ # open STDOUT, '>/dev/null' or die "Can't write to /dev/null: $!";
+ # open STDERR, '>/dev/null' or die "Can't write to /dev/null: $!";
+
+ die "cannot start process $!" unless defined (my $child = fork);
+ exit 0 if $child;
+ setsid() or die "cannot start new session $!";
+ chdir('/');
+ umask(0);
+ system("echo ".$$." > ".$datadir."/hourtrax.pid");
+#}
+
+my $basedir = dirname($0);
+if (scalar(@match) > 0){
+ $basedir = $match[0];
+}
+
+my $cfgpath = "";
+
+
+
+# my $name = basename($0);
+# $name =~ s/srv\.pl$//;
+# $name =~ s/srv\.exe$//;
+# $name = lc($name);
+
+sub authen_cb {
+ my($username, $password, $env) = @_;
+ my $auth = 0;
+ #print "Check AUTH\n";
+ if (-e $datadir.'/auth.passwd'){
+ open(AUTH,$datadir.'/auth.passwd');
+ while (my $l = <AUTH>){
+ chomp($l);
+ if ($l eq $username.'='.$password){
+ $auth = 1;
+ last;
+ }
+ }
+ close(AUTH);
+ }
+ return $auth;
+ }
+
+
+my $allapp = builder {
+ #enable_if { $_[0]->{REMOTE_ADDR} ne 'localhost' && $_[0]->{REMOTE_ADDR} ne '127.0.0.1' } "Auth::Basic", authenticator => \&authen_cb;
+ enable "Auth::Basic", authenticator => \&authen_cb;
+ enable "Plack::Middleware::DirIndex", dir_index => 'index.html';
+ mount "/" => Plack::App::WrapCGI->new(script => $RealBin."/CGI/index.cgi")->to_app;
+
+ opendir(API,$RealBin."/CGI/api");
+ while (my $s = readdir(API)){
+ chomp($s);
+ print $s."\n";
+ if ($s =~ /\.cgi$/){
+ print "Start /api/$s\n";
+ mount "/api/".$s => Plack::App::WrapCGI->new(script => $RealBin."/CGI/api/".$s)->to_app;
+ }
+ }
+ closedir(API);
+ mount "/htdocs" => Plack::App::File->new(root => $RealBin."/htdocs")->to_app;
+};
+
+
+my @args = ("-p","6060");
+#,"--error-log",$datadir."/error.log","--access-log",$datadir."/access.log");
+my $runner = Plack::Runner->new(server => 'Starlight', env => 'deployment', ipv6 => '1' );#env => development, test
+$runner->parse_options(@args);
+$runner->run($allapp);
+
+print "Started\n";
+
+
-<?xml version="1.0" encoding="utf-8"?>
-<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
- x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64">
-<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/>
+<?xml version="1.0" encoding="utf-8"?> \r
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r
+ x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64"> \r
+<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/> \r
</svg>
\ No newline at end of file
-#!/usr/bin/env python3.5
-# -*- coding:utf-8 -*-
-
-import serial
-import time
-import threading
-import sys
-import RPi.GPIO as GPIO
-
-
-
-TRUE = 1
-FALSE = 0
-
-# Basic response message definition
-ACK_SUCCESS = 0x00
-ACK_FAIL = 0x01
-ACK_FULL = 0x04
-ACK_NO_USER = 0x05
-ACK_TIMEOUT = 0x08
-ACK_GO_OUT = 0x0F # The center of the fingerprint is out of alignment with sensor
-
-# User information definition
-ACK_ALL_USER = 0x00
-ACK_GUEST_USER = 0x01
-ACK_NORMAL_USER = 0x02
-ACK_MASTER_USER = 0x03
-
-USER_MAX_CNT = 1000 # Maximum fingerprint number
-
-# Command definition
-CMD_HEAD = 0xF5
-CMD_TAIL = 0xF5
-CMD_ADD_1 = 0x01
-CMD_ADD_2 = 0x02
-CMD_ADD_3 = 0x03
-CMD_MATCH = 0x0C
-CMD_DEL = 0x04
-CMD_DEL_ALL = 0x05
-CMD_USER_CNT = 0x09
-CMD_COM_LEV = 0x28
-CMD_LP_MODE = 0x2C
-CMD_TIMEOUT = 0x2E
-
-CMD_FINGER_DETECTED = 0x14
-
-
-
-Finger_WAKE_Pin = 23
-Finger_RST_Pin = 24
-
-GPIO.setmode(GPIO.BCM)
-GPIO.setwarnings(False)
-GPIO.setup(Finger_WAKE_Pin, GPIO.IN)
-GPIO.setup(Finger_RST_Pin, GPIO.OUT)
-GPIO.setup(Finger_RST_Pin, GPIO.OUT, initial=GPIO.HIGH)
-
-g_rx_buf = []
-PC_Command_RxBuf = []
-Finger_SleepFlag = 0
-
-#rLock = threading.RLock()
-ser = serial.Serial("/dev/ttyS0", 19200)
-
-#***************************************************************************
-# @brief send a command, and wait for the response of module
-#***************************************************************************/
-def TxAndRxCmd(command_buf, rx_bytes_need, timeout):
- global g_rx_buf
- CheckSum = 0
- tx_buf = []
- tx = ""
-
- tx_buf.append(CMD_HEAD)
- for byte in command_buf:
- tx_buf.append(byte)
- CheckSum ^= byte
-
- tx_buf.append(CheckSum)
- tx_buf.append(CMD_TAIL)
-
- for i in tx_buf:
- tx += chr(i)
-
- ser.flushInput()
- ser.write(tx)
-
- g_rx_buf = []
- time_before = time.time()
- time_after = time.time()
- while time_after - time_before < timeout and len(g_rx_buf) < rx_bytes_need: # Waiting for response
- bytes_can_recv = ser.inWaiting()
- if bytes_can_recv != 0:
- g_rx_buf += ser.read(bytes_can_recv)
- time_after = time.time()
-
- for i in range(len(g_rx_buf)):
- g_rx_buf[i] = ord(g_rx_buf[i])
-
- if len(g_rx_buf) != rx_bytes_need:
- return ACK_TIMEOUT
- if g_rx_buf[0] != CMD_HEAD:
- return ACK_FAIL
- if g_rx_buf[rx_bytes_need - 1] != CMD_TAIL:
- return ACK_FAIL
- if g_rx_buf[1] != tx_buf[1]:
- return ACK_FAIL
-
- CheckSum = 0
- for index, byte in enumerate(g_rx_buf):
- if index == 0:
- continue
- if index == 6:
- if CheckSum != byte:
- return ACK_FAIL
- CheckSum ^= byte
- return ACK_SUCCESS;
-
-#***************************************************************************
-# @brief Get Compare Level
-#***************************************************************************/
-def GetCompareLevel():
- global g_rx_buf
- command_buf = [CMD_COM_LEV, 0, 0, 1, 0]
- r = TxAndRxCmd(command_buf, 8, 0.1)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return g_rx_buf[3]
- else:
- return 0xFF
-
-#***************************************************************************
-# @brief Set Compare Level,the default value is 5,
-# can be set to 0-9, the bigger, the stricter
-#***************************************************************************/
-def SetCompareLevel(level):
- global g_rx_buf
- command_buf = [CMD_COM_LEV, 0, level, 0, 0]
- r = TxAndRxCmd(command_buf, 8, 0.1)
-
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return g_rx_buf[3]
- else:
- return 0xFF
-
-#***************************************************************************
-# @brief Query the number of existing fingerprints
-#***************************************************************************/
-def GetUserCount():
- global g_rx_buf
- command_buf = [CMD_USER_CNT, 0, 0, 0, 0]
- r = TxAndRxCmd(command_buf, 8, 0.1)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return g_rx_buf[3]
- else:
- return 0xFF
-#***************************************************************************
-# @brief Get the time that fingerprint collection wait timeout
-#***************************************************************************/
-def GetTimeOut():
- global g_rx_buf
- command_buf = [CMD_TIMEOUT, 0, 0, 1, 0]
- r = TxAndRxCmd(command_buf, 8, 0.1)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return g_rx_buf[3]
- else:
- return 0xFF
-
-
-#***************************************************************************
-# @brief Register fingerprint
-#***************************************************************************/
-def AddUser():
- global g_rx_buf
- r = GetUserCount()
- if r >= USER_MAX_CNT:
- return ACK_FULL
-
- command_buf = [CMD_ADD_1, 0, r+1, 3, 0]
- print(g_rx_buf)
- r = TxAndRxCmd(command_buf, 8, 6)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- command_buf[0] = CMD_ADD_3
- r = TxAndRxCmd(command_buf, 8, 6)
- print(g_rx_buf)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return ACK_SUCCESS
- else:
- return ACK_FAIL
- else:
- return ACK_FAIL
-
-
-#***************************************************************************
-# @brief Clear fingerprints
-#***************************************************************************/
-def ClearAllUser():
- global g_rx_buf
- command_buf = [CMD_DEL_ALL, 0, 0, 0, 0]
- r = TxAndRxCmd(command_buf, 8, 5)
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:
- return ACK_SUCCESS
- else:
- return ACK_FAIL
-
-
- #***************************************************************************
-# @brief Check if user ID is between 1 and 3
-#***************************************************************************/
-def IsMasterUser(user_id):
- if user_id == 1 or user_id == 2 or user_id == 3:
- return TRUE
- else:
- return FALSE
-
-#***************************************************************************
-# @brief Fingerprint matching
-#***************************************************************************/
-def VerifyUser():
- global g_rx_buf
- command_buf = [CMD_MATCH, 0, 0, 0, 0]
- r = TxAndRxCmd(command_buf, 8, 5);
- if r == ACK_TIMEOUT:
- return ACK_TIMEOUT
- if r == ACK_SUCCESS and IsMasterUser(g_rx_buf[4]) == TRUE:
- return ACK_SUCCESS
- elif g_rx_buf[4] == ACK_NO_USER:
- return ACK_NO_USER
- elif g_rx_buf[4] == ACK_TIMEOUT:
- return ACK_TIMEOUT
- else:
- return ACK_GO_OUT # The center of the fingerprint is out of alignment with sensor
-
-
-#***************************************************************************
-# @brief Analysis the command from PC terminal
-#***************************************************************************/
-def Analysis_PC_Command(command):
- global Finger_SleepFlag
-
- if command == "CMD1" and Finger_SleepFlag != 1:
- print ("Number of fingerprints already available: %d" % GetUserCount())
- elif command == "CMD2" and Finger_SleepFlag != 1:
- print ("Add fingerprint (Put your finger on sensor until successfully/failed information returned) ")
- r = AddUser()
- if r == ACK_SUCCESS:
- print ("Fingerprint added successfully !")
- elif r == ACK_FAIL:
- print ("Failed: Please try to place the center of the fingerprint flat to sensor, or this fingerprint already exists !")
- elif r == ACK_FULL:
- print ("Failed: The fingerprint library is full !")
- elif command == "CMD3" and Finger_SleepFlag != 1:
- print ("Waiting Finger......Please try to place the center of the fingerprint flat to sensor !")
- r = VerifyUser()
- if r == ACK_SUCCESS:
- print ("Matching successful !")
- elif r == ACK_NO_USER:
- print ("Failed: This fingerprint was not found in the library !")
- elif r == ACK_TIMEOUT:
- print ("Failed: Time out !")
- elif r == ACK_GO_OUT:
- print ("Failed: Please try to place the center of the fingerprint flat to sensor !")
- elif command == "CMD4" and Finger_SleepFlag != 1:
- ClearAllUser()
- print ("All fingerprints have been cleared !")
- elif command == "CMD5" and Finger_SleepFlag != 1:
- GPIO.output(Finger_RST_Pin, GPIO.LOW)
- Finger_SleepFlag = 1
- print ("Module has entered sleep mode: you can use the finger Automatic wake-up function, in this mode, only CMD6 is valid, send CMD6 to pull up the RST pin of module, so that the module exits sleep !")
- elif command == "CMD6":
- Finger_SleepFlag = 0
- GPIO.output(Finger_RST_Pin, GPIO.HIGH)
- print ("The module is awake. All commands are valid !")
- else:
- print ("commands are invalid !")
-
-#***************************************************************************
-# @brief If you enter the sleep mode, then open the Automatic wake-up function of the finger,
-# begin to check if the finger is pressed, and then start the module and match
-#***************************************************************************/
-def Auto_Verify_Finger():
- while True:
- # If you enter the sleep mode, then open the Automatic wake-up function of the finger,
- # begin to check if the finger is pressed, and then start the module and match
- if Finger_SleepFlag == 1:
- if GPIO.input(Finger_WAKE_Pin) == 1: # If you press your finger
- time.sleep(0.01)
- if GPIO.input(Finger_WAKE_Pin) == 1:
- GPIO.output(Finger_RST_Pin, GPIO.HIGH) # Pull up the RST to start the module and start matching the fingers
- time.sleep(0.25) # Wait for module to start
- print ("Waiting Finger......Please try to place the center of the fingerprint flat to sensor !")
- r = VerifyUser()
- if r == ACK_SUCCESS:
- print ("Matching successful !")
- elif r == ACK_NO_USER:
- print ("Failed: This fingerprint was not found in the library !")
- elif r == ACK_TIMEOUT:
- print ("Failed: Time out !")
- elif r == ACK_GO_OUT:
- print ("Failed: Please try to place the center of the fingerprint flat to sensor !")
-
- #After the matching action is completed, drag RST down to sleep
- #and continue to wait for your fingers to press
- GPIO.output(Finger_RST_Pin, GPIO.LOW)
- time.sleep(0.2)
-
-def main():
-
- GPIO.output(Finger_RST_Pin, GPIO.LOW)
- time.sleep(0.25)
- GPIO.output(Finger_RST_Pin, GPIO.HIGH)
- time.sleep(0.25) # Wait for module to start
- while SetCompareLevel(5) != 5:
- print ("***ERROR***: Please ensure that the module power supply is 3.3V or 5V, the serial line connection is correct.")
- time.sleep(1)
- print ("***************************** WaveShare Capacitive Fingerprint Reader Test *****************************")
- print ("Compare Level: 5 (can be set to 0-9, the bigger, the stricter)")
- print ("Number of fingerprints already available: %d " % GetUserCount())
- print (" send commands to operate the module: ")
- print (" CMD1 : Query the number of existing fingerprints")
- print (" CMD2 : Registered fingerprint (Put your finger on the sensor until successfully/failed information returned) ")
- print (" CMD3 : Fingerprint matching (Send the command, put your finger on sensor) ")
- print (" CMD4 : Clear fingerprints ")
- print (" CMD5 : Switch to sleep mode, you can use the finger Automatic wake-up function (In this state, only CMD6 is valid. When a finger is placed on the sensor,the module is awakened and the finger is matched, without sending commands to match each time. The CMD6 can be used to wake up) ")
- print (" CMD6 : Wake up and make all commands valid ")
- print ("***************************** WaveShare Capacitive Fingerprint Reader Test ***************************** ")
-
- t = threading.Thread(target=Auto_Verify_Finger)
- t.setDaemon(True)
- t.start()
-
- while True:
- str = raw_input("Please input command (CMD1-CMD6):")
- Analysis_PC_Command(str)
-
-if __name__ == '__main__':
- try:
- main()
- except KeyboardInterrupt:
- if ser != None:
- ser.close()
- GPIO.cleanup()
- print("\n\n Test finished ! \n")
- sys.exit()
+#!/usr/bin/env python3.5\r
+# -*- coding:utf-8 -*-\r
+\r
+import serial\r
+import time\r
+import threading\r
+import sys\r
+import RPi.GPIO as GPIO\r
+\r
+\r
+\r
+TRUE = 1\r
+FALSE = 0\r
+\r
+# Basic response message definition\r
+ACK_SUCCESS = 0x00\r
+ACK_FAIL = 0x01\r
+ACK_FULL = 0x04\r
+ACK_NO_USER = 0x05\r
+ACK_TIMEOUT = 0x08\r
+ACK_GO_OUT = 0x0F # The center of the fingerprint is out of alignment with sensor\r
+\r
+# User information definition\r
+ACK_ALL_USER = 0x00\r
+ACK_GUEST_USER = 0x01\r
+ACK_NORMAL_USER = 0x02\r
+ACK_MASTER_USER = 0x03\r
+\r
+USER_MAX_CNT = 1000 # Maximum fingerprint number\r
+\r
+# Command definition\r
+CMD_HEAD = 0xF5\r
+CMD_TAIL = 0xF5\r
+CMD_ADD_1 = 0x01\r
+CMD_ADD_2 = 0x02\r
+CMD_ADD_3 = 0x03\r
+CMD_MATCH = 0x0C\r
+CMD_DEL = 0x04\r
+CMD_DEL_ALL = 0x05\r
+CMD_USER_CNT = 0x09\r
+CMD_COM_LEV = 0x28\r
+CMD_LP_MODE = 0x2C\r
+CMD_TIMEOUT = 0x2E\r
+\r
+CMD_FINGER_DETECTED = 0x14\r
+\r
+\r
+\r
+Finger_WAKE_Pin = 23\r
+Finger_RST_Pin = 24\r
+\r
+GPIO.setmode(GPIO.BCM)\r
+GPIO.setwarnings(False)\r
+GPIO.setup(Finger_WAKE_Pin, GPIO.IN) \r
+GPIO.setup(Finger_RST_Pin, GPIO.OUT) \r
+GPIO.setup(Finger_RST_Pin, GPIO.OUT, initial=GPIO.HIGH)\r
+\r
+g_rx_buf = []\r
+PC_Command_RxBuf = []\r
+Finger_SleepFlag = 0\r
+\r
+#rLock = threading.RLock()\r
+ser = serial.Serial("/dev/ttyS0", 19200)\r
+\r
+#***************************************************************************\r
+# @brief send a command, and wait for the response of module\r
+#***************************************************************************/\r
+def TxAndRxCmd(command_buf, rx_bytes_need, timeout):\r
+ global g_rx_buf\r
+ CheckSum = 0\r
+ tx_buf = []\r
+ tx = ""\r
+ \r
+ tx_buf.append(CMD_HEAD) \r
+ for byte in command_buf:\r
+ tx_buf.append(byte) \r
+ CheckSum ^= byte\r
+ \r
+ tx_buf.append(CheckSum) \r
+ tx_buf.append(CMD_TAIL) \r
+ \r
+ for i in tx_buf:\r
+ tx += chr(i)\r
+ \r
+ ser.flushInput()\r
+ ser.write(tx)\r
+ \r
+ g_rx_buf = [] \r
+ time_before = time.time()\r
+ time_after = time.time()\r
+ while time_after - time_before < timeout and len(g_rx_buf) < rx_bytes_need: # Waiting for response\r
+ bytes_can_recv = ser.inWaiting()\r
+ if bytes_can_recv != 0:\r
+ g_rx_buf += ser.read(bytes_can_recv) \r
+ time_after = time.time()\r
+\r
+ for i in range(len(g_rx_buf)):\r
+ g_rx_buf[i] = ord(g_rx_buf[i])\r
+\r
+ if len(g_rx_buf) != rx_bytes_need:\r
+ return ACK_TIMEOUT\r
+ if g_rx_buf[0] != CMD_HEAD: \r
+ return ACK_FAIL\r
+ if g_rx_buf[rx_bytes_need - 1] != CMD_TAIL:\r
+ return ACK_FAIL\r
+ if g_rx_buf[1] != tx_buf[1]: \r
+ return ACK_FAIL\r
+\r
+ CheckSum = 0\r
+ for index, byte in enumerate(g_rx_buf):\r
+ if index == 0:\r
+ continue\r
+ if index == 6:\r
+ if CheckSum != byte:\r
+ return ACK_FAIL\r
+ CheckSum ^= byte \r
+ return ACK_SUCCESS;\r
+\r
+#***************************************************************************\r
+# @brief Get Compare Level\r
+#***************************************************************************/ \r
+def GetCompareLevel():\r
+ global g_rx_buf\r
+ command_buf = [CMD_COM_LEV, 0, 0, 1, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 0.1)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:\r
+ return g_rx_buf[3]\r
+ else:\r
+ return 0xFF\r
+ \r
+#***************************************************************************\r
+# @brief Set Compare Level,the default value is 5, \r
+# can be set to 0-9, the bigger, the stricter\r
+#***************************************************************************/\r
+def SetCompareLevel(level):\r
+ global g_rx_buf\r
+ command_buf = [CMD_COM_LEV, 0, level, 0, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 0.1) \r
+ \r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS: \r
+ return g_rx_buf[3]\r
+ else:\r
+ return 0xFF\r
+\r
+#***************************************************************************\r
+# @brief Query the number of existing fingerprints\r
+#***************************************************************************/\r
+def GetUserCount():\r
+ global g_rx_buf\r
+ command_buf = [CMD_USER_CNT, 0, 0, 0, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 0.1)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:\r
+ return g_rx_buf[3]\r
+ else:\r
+ return 0xFF\r
+#***************************************************************************\r
+# @brief Get the time that fingerprint collection wait timeout\r
+#***************************************************************************/ \r
+def GetTimeOut():\r
+ global g_rx_buf\r
+ command_buf = [CMD_TIMEOUT, 0, 0, 1, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 0.1)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:\r
+ return g_rx_buf[3]\r
+ else:\r
+ return 0xFF\r
+\r
+\r
+#***************************************************************************\r
+# @brief Register fingerprint\r
+#***************************************************************************/\r
+def AddUser():\r
+ global g_rx_buf\r
+ r = GetUserCount()\r
+ if r >= USER_MAX_CNT:\r
+ return ACK_FULL \r
+ \r
+ command_buf = [CMD_ADD_1, 0, r+1, 3, 0]\r
+ print(g_rx_buf)\r
+ r = TxAndRxCmd(command_buf, 8, 6)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:\r
+ command_buf[0] = CMD_ADD_3\r
+ r = TxAndRxCmd(command_buf, 8, 6)\r
+ print(g_rx_buf)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS:\r
+ return ACK_SUCCESS\r
+ else:\r
+ return ACK_FAIL \r
+ else:\r
+ return ACK_FAIL\r
+\r
+\r
+#***************************************************************************\r
+# @brief Clear fingerprints\r
+#***************************************************************************/\r
+def ClearAllUser():\r
+ global g_rx_buf\r
+ command_buf = [CMD_DEL_ALL, 0, 0, 0, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 5)\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and g_rx_buf[4] == ACK_SUCCESS: \r
+ return ACK_SUCCESS\r
+ else:\r
+ return ACK_FAIL\r
+\r
+ \r
+ #***************************************************************************\r
+# @brief Check if user ID is between 1 and 3\r
+#***************************************************************************/ \r
+def IsMasterUser(user_id):\r
+ if user_id == 1 or user_id == 2 or user_id == 3: \r
+ return TRUE\r
+ else: \r
+ return FALSE\r
+\r
+#***************************************************************************\r
+# @brief Fingerprint matching\r
+#***************************************************************************/ \r
+def VerifyUser():\r
+ global g_rx_buf\r
+ command_buf = [CMD_MATCH, 0, 0, 0, 0]\r
+ r = TxAndRxCmd(command_buf, 8, 5);\r
+ if r == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ if r == ACK_SUCCESS and IsMasterUser(g_rx_buf[4]) == TRUE:\r
+ return ACK_SUCCESS\r
+ elif g_rx_buf[4] == ACK_NO_USER:\r
+ return ACK_NO_USER\r
+ elif g_rx_buf[4] == ACK_TIMEOUT:\r
+ return ACK_TIMEOUT\r
+ else:\r
+ return ACK_GO_OUT # The center of the fingerprint is out of alignment with sensor\r
+\r
+ \r
+#***************************************************************************\r
+# @brief Analysis the command from PC terminal\r
+#***************************************************************************/ \r
+def Analysis_PC_Command(command):\r
+ global Finger_SleepFlag\r
+ \r
+ if command == "CMD1" and Finger_SleepFlag != 1:\r
+ print ("Number of fingerprints already available: %d" % GetUserCount())\r
+ elif command == "CMD2" and Finger_SleepFlag != 1:\r
+ print ("Add fingerprint (Put your finger on sensor until successfully/failed information returned) ")\r
+ r = AddUser()\r
+ if r == ACK_SUCCESS:\r
+ print ("Fingerprint added successfully !")\r
+ elif r == ACK_FAIL:\r
+ print ("Failed: Please try to place the center of the fingerprint flat to sensor, or this fingerprint already exists !")\r
+ elif r == ACK_FULL:\r
+ print ("Failed: The fingerprint library is full !") \r
+ elif command == "CMD3" and Finger_SleepFlag != 1:\r
+ print ("Waiting Finger......Please try to place the center of the fingerprint flat to sensor !")\r
+ r = VerifyUser()\r
+ if r == ACK_SUCCESS:\r
+ print ("Matching successful !")\r
+ elif r == ACK_NO_USER:\r
+ print ("Failed: This fingerprint was not found in the library !")\r
+ elif r == ACK_TIMEOUT:\r
+ print ("Failed: Time out !")\r
+ elif r == ACK_GO_OUT:\r
+ print ("Failed: Please try to place the center of the fingerprint flat to sensor !")\r
+ elif command == "CMD4" and Finger_SleepFlag != 1:\r
+ ClearAllUser()\r
+ print ("All fingerprints have been cleared !")\r
+ elif command == "CMD5" and Finger_SleepFlag != 1:\r
+ GPIO.output(Finger_RST_Pin, GPIO.LOW)\r
+ Finger_SleepFlag = 1\r
+ print ("Module has entered sleep mode: you can use the finger Automatic wake-up function, in this mode, only CMD6 is valid, send CMD6 to pull up the RST pin of module, so that the module exits sleep !")\r
+ elif command == "CMD6": \r
+ Finger_SleepFlag = 0\r
+ GPIO.output(Finger_RST_Pin, GPIO.HIGH)\r
+ print ("The module is awake. All commands are valid !")\r
+ else:\r
+ print ("commands are invalid !")\r
+ \r
+#***************************************************************************\r
+# @brief If you enter the sleep mode, then open the Automatic wake-up function of the finger,\r
+# begin to check if the finger is pressed, and then start the module and match\r
+#***************************************************************************/\r
+def Auto_Verify_Finger():\r
+ while True: \r
+ # If you enter the sleep mode, then open the Automatic wake-up function of the finger,\r
+ # begin to check if the finger is pressed, and then start the module and match\r
+ if Finger_SleepFlag == 1: \r
+ if GPIO.input(Finger_WAKE_Pin) == 1: # If you press your finger \r
+ time.sleep(0.01)\r
+ if GPIO.input(Finger_WAKE_Pin) == 1: \r
+ GPIO.output(Finger_RST_Pin, GPIO.HIGH) # Pull up the RST to start the module and start matching the fingers\r
+ time.sleep(0.25) # Wait for module to start\r
+ print ("Waiting Finger......Please try to place the center of the fingerprint flat to sensor !")\r
+ r = VerifyUser()\r
+ if r == ACK_SUCCESS:\r
+ print ("Matching successful !")\r
+ elif r == ACK_NO_USER:\r
+ print ("Failed: This fingerprint was not found in the library !")\r
+ elif r == ACK_TIMEOUT:\r
+ print ("Failed: Time out !")\r
+ elif r == ACK_GO_OUT:\r
+ print ("Failed: Please try to place the center of the fingerprint flat to sensor !")\r
+ \r
+ #After the matching action is completed, drag RST down to sleep\r
+ #and continue to wait for your fingers to press\r
+ GPIO.output(Finger_RST_Pin, GPIO.LOW)\r
+ time.sleep(0.2)\r
+ \r
+def main():\r
+ \r
+ GPIO.output(Finger_RST_Pin, GPIO.LOW)\r
+ time.sleep(0.25) \r
+ GPIO.output(Finger_RST_Pin, GPIO.HIGH)\r
+ time.sleep(0.25) # Wait for module to start\r
+ while SetCompareLevel(5) != 5: \r
+ print ("***ERROR***: Please ensure that the module power supply is 3.3V or 5V, the serial line connection is correct.")\r
+ time.sleep(1) \r
+ print ("***************************** WaveShare Capacitive Fingerprint Reader Test *****************************")\r
+ print ("Compare Level: 5 (can be set to 0-9, the bigger, the stricter)")\r
+ print ("Number of fingerprints already available: %d " % GetUserCount())\r
+ print (" send commands to operate the module: ")\r
+ print (" CMD1 : Query the number of existing fingerprints")\r
+ print (" CMD2 : Registered fingerprint (Put your finger on the sensor until successfully/failed information returned) ")\r
+ print (" CMD3 : Fingerprint matching (Send the command, put your finger on sensor) ")\r
+ print (" CMD4 : Clear fingerprints ")\r
+ print (" CMD5 : Switch to sleep mode, you can use the finger Automatic wake-up function (In this state, only CMD6 is valid. When a finger is placed on the sensor,the module is awakened and the finger is matched, without sending commands to match each time. The CMD6 can be used to wake up) ")\r
+ print (" CMD6 : Wake up and make all commands valid ")\r
+ print ("***************************** WaveShare Capacitive Fingerprint Reader Test ***************************** ")\r
+\r
+ t = threading.Thread(target=Auto_Verify_Finger)\r
+ t.setDaemon(True)\r
+ t.start()\r
+ \r
+ while True: \r
+ str = raw_input("Please input command (CMD1-CMD6):")\r
+ Analysis_PC_Command(str)\r
+ \r
+if __name__ == '__main__':\r
+ try:\r
+ main()\r
+ except KeyboardInterrupt:\r
+ if ser != None:\r
+ ser.close() \r
+ GPIO.cleanup()\r
+ print("\n\n Test finished ! \n") \r
+ sys.exit()\r
-CREATE TABLE staff (
- id TEXT NOT NULL,
- staffnumber TEXT,
- prename TEXT,
- surname TEXT,
- pin TEXT,
- rfid TEXT,
- isblocked BOOLEAN,
- isdisabled BOOLEAN,
- isdeleted BOOLEAN,
- fixtime integer,
- lang text,
- timetrackers text,
- restriction text,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- PRIMARY KEY (id)
-);
-CREATE TABLE timetracks (
- id text not null,
- id_staff TEXT,
- daydate date,
- stamp_in DATETIME,
- stamp_out DATETIME,
- tracktype TEXT,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id)
-);
-CREATE TABLE fingerprints (
- id_staff TEXT,
- fingerhash TEXT,
- fingertype integer,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id_staff,fingerhash)
-);
-CREATE TABLE staffworktimes (
- id TEXT not null,
- id_staff TEXT,
- daydate date,
- starttime1 TEXT,
- endtime1 TEXT,
- starttime2 TEXT,
- endtime2 TEXT,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
- primary key (id)
-);
-CREATE Table stations (
- id text not null,
- name text,
- vpnname text,
- timeout text,
- primary key(id),
- schema text,
- modified DATETIME DEFAULT (datetime('now','localtime')),
- created DATETIME DEFAULT (datetime('now','localtime')),
-);
-CREATE TRIGGER trg_stations_upd UPDATE ON stations
- BEGIN
- UPDATE stations SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
-CREATE TRIGGER trg_staff_upd UPDATE ON staff
- BEGIN
- UPDATE staff SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
-CREATE TRIGGER trg_timetracks_upd UPDATE ON staff
- BEGIN
- UPDATE timetracks SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
-CREATE TRIGGER trg_staffworktimes_upd UPDATE ON staff
- BEGIN
- UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id = NEW.id;
- END;
- CREATE TRIGGER trg_fingerprints_upd UPDATE ON staff
- BEGIN
- UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id_staff = NEW.id_staff and fingertype= NEW.fingertype;
+CREATE TABLE staff (\r
+ id TEXT NOT NULL,\r
+ staffnumber TEXT,\r
+ prename TEXT,\r
+ surname TEXT,\r
+ pin TEXT,\r
+ rfid TEXT,\r
+ isblocked BOOLEAN,\r
+ isdisabled BOOLEAN,\r
+ isdeleted BOOLEAN,\r
+ fixtime integer,\r
+ lang text,\r
+ timetrackers text,\r
+ restriction text,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ PRIMARY KEY (id)\r
+);\r
+CREATE TABLE timetracks (\r
+ id text not null,\r
+ id_staff TEXT,\r
+ daydate date,\r
+ stamp_in DATETIME,\r
+ stamp_out DATETIME,\r
+ tracktype TEXT,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ primary key (id)\r
+);\r
+CREATE TABLE fingerprints (\r
+ id_staff TEXT,\r
+ fingerhash TEXT,\r
+ fingertype integer,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')), \r
+ primary key (id_staff,fingerhash)\r
+);\r
+CREATE TABLE staffworktimes (\r
+ id TEXT not null,\r
+ id_staff TEXT,\r
+ daydate date,\r
+ starttime1 TEXT,\r
+ endtime1 TEXT,\r
+ starttime2 TEXT,\r
+ endtime2 TEXT,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+ primary key (id)\r
+);\r
+CREATE Table stations (\r
+ id text not null,\r
+ name text,\r
+ vpnname text,\r
+ timeout text,\r
+ primary key(id),\r
+ schema text,\r
+ modified DATETIME DEFAULT (datetime('now','localtime')),\r
+ created DATETIME DEFAULT (datetime('now','localtime')),\r
+);\r
+CREATE TRIGGER trg_stations_upd UPDATE ON stations\r
+ BEGIN\r
+ UPDATE stations SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+CREATE TRIGGER trg_staff_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staff SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+CREATE TRIGGER trg_timetracks_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE timetracks SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+CREATE TRIGGER trg_staffworktimes_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id = NEW.id;\r
+ END;\r
+ CREATE TRIGGER trg_fingerprints_upd UPDATE ON staff\r
+ BEGIN\r
+ UPDATE staffworktimes SET modified=datetime('now','localtime') WHERE id_staff = NEW.id_staff and fingertype= NEW.fingertype;\r
END;
\ No newline at end of file
-
- body,html {
- overflow: hidden;
- margin: 0px;
-
- }
- div {
- margin: auto;
- }
- header {
- height: 60px;
- padding-left: 5px;
- background: linear-gradient(to right, purple, gray);
- }
- h1 {
- padding-top: 5px;
- margin-top: 0px;
- color: yellow;
- }
- button {
- display: inline-block;
- text-decoration: none;
- color: #fff;
- font-weight: bold;
- background-color: #538fbe;
- /* padding: 20px 70px;
- font-size: 24px; */
- border: 1px solid #2d6898;
- background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
-
- background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(73,132,180)),
- color-stop(1, rgb(97,155,203))
- );
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- text-shadow: 0px -1px 0px rgba(0,0,0,.5);
- -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- -webkit-transition: all .1s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
- -webkit-transform: rotateX(20deg);
-}
-
-button:hover {
- background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
-
- /* background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(79,142,191)),
- color-stop(1, rgb(102,166,214))
- ); */
-}
-
-button:active {
--webkit-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
--moz-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- background-image: linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -o-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
-
- background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(88,154,204)),
- color-stop(1, rgb(90,150,199))
- );
- -webkit-transform: translate(0, 4px) rotateX(20deg);
- -moz-transform: translate(0, 4px);
- transform: translate(0, 4px);
-}
-
-button:disabled {
- background-image: none;
- background-color: #f4f4f4;
- color: #000;
- font-weight: bold;
- box-shadow: none;
- -webkit-transform: none;
-}
- /* button {
- background-color: lightgrey;
- border: 1px solid silver;
- outline: none;
- } */
- button.user {
- height: 90px;
- width: 90px;
- margin: 10px;
- white-space: nowrap;
- overflow: hidden;
- }
- button.btnkeypad {
- height: 70px;
- width: 70px;
- margin: 5px;
- font-weight: bold;
- font-size: 20px;
- white-space: nowrap;
- overflow: hidden;
- }
- button.btntrack {
- background-color:
- height: 150px;
- width: 150px;
- margin: 15px;
- font-weight: bold;
- font-size: 30px;
- white-space: nowrap;
- overflow: hidden;
- }
- #scrloader {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scruserlist {
- display: none;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scruserpin {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrnewuserpin {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrtimetracker{
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrstatus{
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #keypad {
- border: 1px solid silver;
- width: 270px;
- margin: auto;
- }
- #timetracker{
- border: 1px solid silver;
- width: 400px;
- margin: auto;
- margin-top: 20px;
- text-align: center;
- }
- div.pincode {
- text-align: center;
- }
- #pincode,#newpincode1,#newpincode2 {
- min-height: 30px;
- border: 1px solid silver;
- width: 270px;
- margin: auto;
- text-align: center;
- font-weight: bold;
- font-size: 10px;
- }
- #newpincode1,#newpincode2{
- width: 135px;
- }
- .usergreeting {
- text-align: center;
- }
- #pinmessage, #pinmessage2 {
- height: 30px;
- display: block;
- color: red;
- font-weight: bold;
- text-align: center;
- }
- #lasttrackin,#lasttrackout {
- font-size: 12px;
- color: #000;
- font-weight: bold;
- }
-
-
-/* screenheight: 480;*/
+ \r
+ body,html {\r
+ overflow: hidden;\r
+ margin: 0px;\r
+ \r
+ }\r
+ div {\r
+ margin: auto;\r
+ }\r
+ header {\r
+ height: 60px;\r
+ padding-left: 5px;\r
+ background: linear-gradient(to right, purple, gray);\r
+ }\r
+ h1 {\r
+ padding-top: 5px;\r
+ margin-top: 0px;\r
+ color: yellow;\r
+ }\r
+ button {\r
+ display: inline-block;\r
+ text-decoration: none;\r
+ color: #fff;\r
+ font-weight: bold;\r
+ background-color: #538fbe;\r
+ /* padding: 20px 70px;\r
+ font-size: 24px; */\r
+ border: 1px solid #2d6898;\r
+ background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(73,132,180)),\r
+ color-stop(1, rgb(97,155,203))\r
+ );\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ text-shadow: 0px -1px 0px rgba(0,0,0,.5);\r
+ -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -webkit-transition: all .1s ease-in-out;\r
+ -moz-transition: all .2s ease-in-out;\r
+ transition: all .2s ease-in-out;\r
+ -webkit-transform: rotateX(20deg);\r
+}\r
+\r
+button:hover {\r
+ background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ \r
+ /* background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(79,142,191)),\r
+ color-stop(1, rgb(102,166,214))\r
+ ); */\r
+}\r
+\r
+button:active {\r
+-webkit-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+-moz-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ background-image: linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(88,154,204)),\r
+ color-stop(1, rgb(90,150,199))\r
+ );\r
+ -webkit-transform: translate(0, 4px) rotateX(20deg); \r
+ -moz-transform: translate(0, 4px); \r
+ transform: translate(0, 4px); \r
+}\r
+\r
+button:disabled {\r
+ background-image: none;\r
+ background-color: #f4f4f4;\r
+ color: #000;\r
+ font-weight: bold;\r
+ box-shadow: none;\r
+ -webkit-transform: none;\r
+}\r
+ /* button {\r
+ background-color: lightgrey;\r
+ border: 1px solid silver;\r
+ outline: none;\r
+ } */\r
+ button.user {\r
+ height: 90px;\r
+ width: 90px;\r
+ margin: 10px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btnkeypad {\r
+ height: 70px;\r
+ width: 70px;\r
+ margin: 5px;\r
+ font-weight: bold;\r
+ font-size: 20px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btntrack {\r
+ background-color: \r
+ height: 150px;\r
+ width: 150px;\r
+ margin: 15px;\r
+ font-weight: bold;\r
+ font-size: 30px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ #scrloader {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserlist {\r
+ display: none;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrnewuserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrtimetracker{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrstatus{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #keypad {\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ }\r
+ #timetracker{\r
+ border: 1px solid silver;\r
+ width: 400px;\r
+ margin: auto;\r
+ margin-top: 20px;\r
+ text-align: center;\r
+ }\r
+ div.pincode {\r
+ text-align: center;\r
+ }\r
+ #pincode,#newpincode1,#newpincode2 {\r
+ min-height: 30px;\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ text-align: center;\r
+ font-weight: bold;\r
+ font-size: 10px;\r
+ }\r
+ #newpincode1,#newpincode2{\r
+ width: 135px;\r
+ }\r
+ .usergreeting {\r
+ text-align: center;\r
+ }\r
+ #pinmessage, #pinmessage2 {\r
+ height: 30px;\r
+ display: block;\r
+ color: red;\r
+ font-weight: bold;\r
+ text-align: center;\r
+ }\r
+ #lasttrackin,#lasttrackout {\r
+ font-size: 12px; \r
+ color: #000;\r
+ font-weight: bold;\r
+ }\r
+ \r
+ \r
+/* screenheight: 480;*/\r
/* screenwidth: 80px;*/
\ No newline at end of file
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.419px" height="336.419px" viewBox="0 0 336.419 336.419" style="enable-background:new 0 0 336.419 336.419;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M310.059,77.375c-2.275-1.054-4.688-1.622-6.943-1.622c-3.265,0-5.985,1.15-7.687,3.203
- c-10.058,12.245-19.267,36.062-26.683,55.199c-3.411,8.848-7.99,20.689-11.084,26.247c-1.69-16.281,5.616-75.019,8.429-97.639
- l0.048-0.365c1.954-15.713,2.262-18.471,2.163-19.698c-0.757-8.747-3.812-14.669-9.086-17.592
- c-5.332-2.964-12.576-2.327-20.615,1.802c-4.035,2.074-5.664,10.061-11.539,46.375l-0.024,0.164
- c-3.233,19.944-10.67,65.892-16.386,73.222c-5.088-11.182-8.843-72.945-10.465-99.679c-1.126-18.719-1.803-29.465-2.525-32.759
- C196.132,7.356,188.09,1.03,179.75,0.13c-6.937-0.826-12.902,2.327-16.055,8.309c-5.501,5.344-5.019,24.379-2.512,69.552
- c1.191,21.5,3.651,65.905-0.176,70.606c-6.896-1.252-16.904-29.658-29.737-84.46c-3.598-15.345-4.728-19.972-6.016-22.046
- c-2.337-7.089-11.543-13.071-20.168-13.071c-0.739,0-1.458,0.048-2.168,0.137c-4.56,0.575-15.104,4.016-14.253,23.344
- c4.192,27.017,9.416,46.986,14.467,66.383l0.101,0.381c3.027,11.613,5.891,22.592,8.414,34.721
- c5.944,28.644,1.651,45.857,1.602,46.055c-0.389,1.773-1.017,2.834-1.874,3.155c-0.313,0.113-0.698,0.186-1.129,0.186
- c-2.519,0-6.16-1.938-8.025-3.155c-3.836-8.809-23.033-50.832-42.604-57.849l-0.708-0.265l-0.729,0.021
- c-7.373,0.187-12.944,2.587-16.579,7.146c-5.744,7.208-4.259,17.003-3.869,18.964l0.241,0.719
- c0.144,0.308,14.104,30.744,15.632,44.549c1.325,11.854,11.492,25.29,19.667,36.098l0.335,0.444
- c2.667,3.535,4.965,6.595,6.753,9.394c23.899,28.815,63.098,54.396,63.423,54.611c4.824,4.127,7.399,7.963,7.476,11.129
- c0.049,2.066-1.101,3.217-1.14,3.265l-0.95,0.869l0.08,0.089h-0.385v7.009h113.93v-2.361l5.839-19.698
- c18.35-58.648,18.951-109.707,18.924-110.057c0.188-1.861,5.432-19.684,9.654-34.07l0.113-0.37
- c8.401-28.678,18.873-64.354,21.357-78.032C319.733,85.965,316.353,80.284,310.059,77.375z M310.856,90.415
- c-2.413,13.306-13.316,50.448-21.27,77.574c-6.892,23.467-9.726,33.283-9.958,35.924c0,0.489-0.212,49.354-18.606,108.133
- l-5.146,17.364h-97.364c0.397-1.19,0.681-2.566,0.669-4.168c-0.024-5.63-3.595-11.525-10.688-17.556
- c-0.392-0.253-39.279-25.872-61.717-52.879c-1.795-2.868-4.531-6.489-7.181-9.979c-7.183-9.5-17.031-22.535-18.1-32.186
- c-1.602-14.396-14.452-42.935-16.091-46.51c-0.204-1.444-0.876-7.814,2.411-11.915c1.986-2.484,5.277-3.869,9.78-4.115
- c17.539,7.31,37.574,53.824,37.772,54.296l0.428,0.993l0.859,0.657c1.201,0.875,7.5,5.263,13.604,5.263
- c1.398,0,2.715-0.219,3.891-0.667c2.435-0.914,5.602-3.176,6.812-8.74c0.204-0.753,4.808-18.908-1.548-49.527
- c-2.531-12.25-5.46-23.447-8.547-35.315l-0.053-0.173c-4.983-19.074-10.145-38.799-14.258-65.158
- c-0.383-8.831,2.248-14.046,7.376-14.7c5.852-0.828,13.246,3.983,14.062,7.775l1.027,2.929c1.086,3.54,3.136,12.338,4.507,18.219
- c11.63,49.579,22.526,90.624,37.919,90.624c1.253,0,3.092-0.364,4.749-2.127c6.33-6.673,5.33-33.511,2.913-76.937
- c-1.174-21.033-2.659-59.306-0.298-63.071l0.953-1.966c1.451-3.123,5.055-4.524,7.915-4.524c0.418,0,0.818,0.022,1.205,0.07
- c4.887,0.525,10.249,4.38,11.026,7.934c0.608,2.729,1.399,15.84,2.333,31.007l0.027,0.51c5.257,86.76,8.74,107.943,17.687,107.943
- c10.163,0,15.133-20.192,24.934-80.857l0.048-0.253c2.402-14.857,6.02-37.206,7.632-40.491c5.253-2.628,10.026-3.273,12.795-1.752
- c3.518,1.944,4.675,7.166,5.017,11.156c0.011,1.083-1.077,9.781-2.118,18.206c-9.503,76.369-10.869,102.571-5.619,107.825
- c1.393,1.38,3.357,1.979,5.116,1.574c5.359-1.129,8.901-9.185,18.415-33.83c7.193-18.591,16.125-41.708,25.396-52.982
- c0.075-0.08,0.517-0.308,1.485-0.308c1.136,0,2.433,0.308,3.668,0.876C309.032,85.657,311.339,87.751,310.856,90.415z"/>
- <g>
- <path d="M51.312,189.649c-0.109-0.64-0.15-1.267-0.187-1.903c-11.43-1.102-21.666-8.818-25.259-20.457
- c-4.772-15.468,3.932-31.929,19.397-36.701c15.464-4.769,31.923,3.929,36.697,19.397c2.091,6.791,1.525,13.75-1.023,19.839
- c2.183,1.007,4.137,2.595,5.592,4.593c3.887-7.977,4.941-17.354,2.12-26.501c-5.912-19.15-26.303-29.937-45.457-24.029
- c-19.159,5.916-29.937,26.312-24.028,45.468c4.678,15.154,18.425,25.017,33.448,25.564
- C52.083,193.181,51.617,191.429,51.312,189.649z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.419px" height="336.419px" viewBox="0 0 336.419 336.419" style="enable-background:new 0 0 336.419 336.419;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M310.059,77.375c-2.275-1.054-4.688-1.622-6.943-1.622c-3.265,0-5.985,1.15-7.687,3.203\r
+ c-10.058,12.245-19.267,36.062-26.683,55.199c-3.411,8.848-7.99,20.689-11.084,26.247c-1.69-16.281,5.616-75.019,8.429-97.639\r
+ l0.048-0.365c1.954-15.713,2.262-18.471,2.163-19.698c-0.757-8.747-3.812-14.669-9.086-17.592\r
+ c-5.332-2.964-12.576-2.327-20.615,1.802c-4.035,2.074-5.664,10.061-11.539,46.375l-0.024,0.164\r
+ c-3.233,19.944-10.67,65.892-16.386,73.222c-5.088-11.182-8.843-72.945-10.465-99.679c-1.126-18.719-1.803-29.465-2.525-32.759\r
+ C196.132,7.356,188.09,1.03,179.75,0.13c-6.937-0.826-12.902,2.327-16.055,8.309c-5.501,5.344-5.019,24.379-2.512,69.552\r
+ c1.191,21.5,3.651,65.905-0.176,70.606c-6.896-1.252-16.904-29.658-29.737-84.46c-3.598-15.345-4.728-19.972-6.016-22.046\r
+ c-2.337-7.089-11.543-13.071-20.168-13.071c-0.739,0-1.458,0.048-2.168,0.137c-4.56,0.575-15.104,4.016-14.253,23.344\r
+ c4.192,27.017,9.416,46.986,14.467,66.383l0.101,0.381c3.027,11.613,5.891,22.592,8.414,34.721\r
+ c5.944,28.644,1.651,45.857,1.602,46.055c-0.389,1.773-1.017,2.834-1.874,3.155c-0.313,0.113-0.698,0.186-1.129,0.186\r
+ c-2.519,0-6.16-1.938-8.025-3.155c-3.836-8.809-23.033-50.832-42.604-57.849l-0.708-0.265l-0.729,0.021\r
+ c-7.373,0.187-12.944,2.587-16.579,7.146c-5.744,7.208-4.259,17.003-3.869,18.964l0.241,0.719\r
+ c0.144,0.308,14.104,30.744,15.632,44.549c1.325,11.854,11.492,25.29,19.667,36.098l0.335,0.444\r
+ c2.667,3.535,4.965,6.595,6.753,9.394c23.899,28.815,63.098,54.396,63.423,54.611c4.824,4.127,7.399,7.963,7.476,11.129\r
+ c0.049,2.066-1.101,3.217-1.14,3.265l-0.95,0.869l0.08,0.089h-0.385v7.009h113.93v-2.361l5.839-19.698\r
+ c18.35-58.648,18.951-109.707,18.924-110.057c0.188-1.861,5.432-19.684,9.654-34.07l0.113-0.37\r
+ c8.401-28.678,18.873-64.354,21.357-78.032C319.733,85.965,316.353,80.284,310.059,77.375z M310.856,90.415\r
+ c-2.413,13.306-13.316,50.448-21.27,77.574c-6.892,23.467-9.726,33.283-9.958,35.924c0,0.489-0.212,49.354-18.606,108.133\r
+ l-5.146,17.364h-97.364c0.397-1.19,0.681-2.566,0.669-4.168c-0.024-5.63-3.595-11.525-10.688-17.556\r
+ c-0.392-0.253-39.279-25.872-61.717-52.879c-1.795-2.868-4.531-6.489-7.181-9.979c-7.183-9.5-17.031-22.535-18.1-32.186\r
+ c-1.602-14.396-14.452-42.935-16.091-46.51c-0.204-1.444-0.876-7.814,2.411-11.915c1.986-2.484,5.277-3.869,9.78-4.115\r
+ c17.539,7.31,37.574,53.824,37.772,54.296l0.428,0.993l0.859,0.657c1.201,0.875,7.5,5.263,13.604,5.263\r
+ c1.398,0,2.715-0.219,3.891-0.667c2.435-0.914,5.602-3.176,6.812-8.74c0.204-0.753,4.808-18.908-1.548-49.527\r
+ c-2.531-12.25-5.46-23.447-8.547-35.315l-0.053-0.173c-4.983-19.074-10.145-38.799-14.258-65.158\r
+ c-0.383-8.831,2.248-14.046,7.376-14.7c5.852-0.828,13.246,3.983,14.062,7.775l1.027,2.929c1.086,3.54,3.136,12.338,4.507,18.219\r
+ c11.63,49.579,22.526,90.624,37.919,90.624c1.253,0,3.092-0.364,4.749-2.127c6.33-6.673,5.33-33.511,2.913-76.937\r
+ c-1.174-21.033-2.659-59.306-0.298-63.071l0.953-1.966c1.451-3.123,5.055-4.524,7.915-4.524c0.418,0,0.818,0.022,1.205,0.07\r
+ c4.887,0.525,10.249,4.38,11.026,7.934c0.608,2.729,1.399,15.84,2.333,31.007l0.027,0.51c5.257,86.76,8.74,107.943,17.687,107.943\r
+ c10.163,0,15.133-20.192,24.934-80.857l0.048-0.253c2.402-14.857,6.02-37.206,7.632-40.491c5.253-2.628,10.026-3.273,12.795-1.752\r
+ c3.518,1.944,4.675,7.166,5.017,11.156c0.011,1.083-1.077,9.781-2.118,18.206c-9.503,76.369-10.869,102.571-5.619,107.825\r
+ c1.393,1.38,3.357,1.979,5.116,1.574c5.359-1.129,8.901-9.185,18.415-33.83c7.193-18.591,16.125-41.708,25.396-52.982\r
+ c0.075-0.08,0.517-0.308,1.485-0.308c1.136,0,2.433,0.308,3.668,0.876C309.032,85.657,311.339,87.751,310.856,90.415z"/>\r
+ <g>\r
+ <path d="M51.312,189.649c-0.109-0.64-0.15-1.267-0.187-1.903c-11.43-1.102-21.666-8.818-25.259-20.457\r
+ c-4.772-15.468,3.932-31.929,19.397-36.701c15.464-4.769,31.923,3.929,36.697,19.397c2.091,6.791,1.525,13.75-1.023,19.839\r
+ c2.183,1.007,4.137,2.595,5.592,4.593c3.887-7.977,4.941-17.354,2.12-26.501c-5.912-19.15-26.303-29.937-45.457-24.029\r
+ c-19.159,5.916-29.937,26.312-24.028,45.468c4.678,15.154,18.425,25.017,33.448,25.564\r
+ C52.083,193.181,51.617,191.429,51.312,189.649z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="753.658px" height="753.658px" viewBox="0 0 753.658 753.658" style="enable-background:new 0 0 753.658 753.658;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M672.523,173.331c-5.098-2.369-10.503-3.627-15.553-3.627c-7.321,0-13.401,2.561-17.22,7.177
- c-22.538,27.429-43.16,80.78-59.783,123.657c-7.634,19.815-17.893,46.34-24.822,58.799c-3.782-36.49,12.58-168.076,18.875-218.733
- l0.104-0.826c4.393-35.199,5.077-41.37,4.845-44.111c-1.687-19.61-8.539-32.877-20.346-39.417
- c-11.941-6.639-28.164-5.214-46.182,4.037c-9.044,4.661-12.695,22.546-25.852,103.898l-0.044,0.361
- c-7.262,44.687-23.912,147.612-36.716,164.04c-11.405-25.056-19.801-163.413-23.436-223.302
- c-2.529-41.95-4.056-66.022-5.667-73.394c-3.435-15.411-21.443-29.589-40.12-31.597c-15.545-1.859-28.907,5.212-35.971,18.621
- c-12.325,11.964-11.243,54.607-5.632,155.809c2.673,48.151,8.173,147.631-0.399,158.161
- c-15.438-2.799-37.872-66.441-66.615-189.21c-8.065-34.38-10.583-44.725-13.483-49.388c-5.228-15.879-25.85-29.274-45.17-29.274
- c-1.655,0-3.266,0.108-4.861,0.301c-10.211,1.294-33.843,8.995-31.933,52.307c9.399,60.506,21.101,105.247,32.412,148.702
- l0.23,0.861c6.775,26.008,13.187,50.602,18.841,77.776c13.321,64.165,3.699,102.74,3.586,103.186
- c-0.87,3.979-2.268,6.339-4.2,7.068c-0.689,0.245-1.561,0.396-2.527,0.396c-5.646,0-13.803-4.323-17.969-7.045
- c-8.606-19.74-51.609-113.891-95.447-129.61l-1.591-0.587l-1.625,0.038c-16.525,0.418-29.01,5.811-37.151,16.016
- c-12.864,16.142-9.538,38.083-8.668,42.495l0.537,1.595c0.323,0.689,31.597,68.868,35.021,99.817
- c2.974,26.541,25.74,56.652,44.062,80.85l0.755,0.994c5.965,7.914,11.117,14.768,15.118,21.039
- c53.543,64.571,141.356,121.878,142.094,122.338c10.794,9.254,16.57,17.85,16.747,24.955c0.106,4.628-2.468,7.205-2.561,7.297
- l-2.128,1.948l0.18,0.208h-0.855v15.701h255.229v-5.29l13.08-44.13c41.107-131.391,42.454-245.768,42.395-246.541
- c0.412-4.188,12.158-44.098,21.62-76.337l0.26-0.817c18.819-64.249,42.271-144.171,47.837-174.828
- C694.187,192.566,686.613,179.854,672.523,173.331z M674.31,202.537c-5.414,29.807-29.831,113.013-47.656,173.782
- c-15.425,52.589-21.784,74.579-22.293,80.481c0,1.103-0.481,110.581-41.697,242.233l-11.529,38.916H333.026
- c0.886-2.669,1.515-5.743,1.499-9.346c-0.062-12.604-8.062-25.804-23.951-39.328c-0.874-0.569-87.993-57.952-138.254-118.452
- c-4.017-6.42-10.15-14.539-16.085-22.357c-16.098-21.295-38.159-50.489-40.555-72.109c-3.587-32.26-32.366-96.166-36.047-104.181
- c-0.449-3.244-1.962-17.522,5.402-26.708c4.458-5.559,11.822-8.666,21.911-9.219c39.297,16.376,84.176,120.587,84.617,121.646
- l0.952,2.208l1.932,1.486c2.683,1.964,16.789,11.794,30.467,11.794c3.138,0,6.083-0.509,8.72-1.519
- c5.458-2.04,12.545-7.113,15.252-19.564c0.463-1.688,10.778-42.358-3.462-110.948c-5.672-27.457-12.238-52.542-19.146-79.115
- l-0.128-0.402c-11.161-42.728-22.722-86.917-31.934-145.967c-0.855-19.776,5.034-31.46,16.525-32.935
- c13.11-1.837,29.669,8.935,31.499,17.422l2.298,6.562c2.443,7.944,7.027,27.641,10.105,40.815
- c26.046,111.074,50.461,203.032,84.939,203.032c2.803,0,6.931-0.824,10.638-4.773c14.186-14.956,11.94-75.065,6.532-172.355
- c-2.637-47.117-5.965-132.866-0.675-141.284l2.144-4.42c3.25-6.995,11.312-10.135,17.723-10.135c0.936,0,1.841,0.066,2.703,0.167
- c10.95,1.176,22.957,9.82,24.696,17.781c1.366,6.1,3.146,35.47,5.229,69.447l0.061,1.142
- c11.777,194.362,19.58,241.816,39.621,241.816c22.771,0,33.902-45.234,55.855-181.122l0.116-0.575
- c5.366-33.288,13.477-83.349,17.08-90.7c11.777-5.907,22.478-7.354,28.665-3.945c7.891,4.358,10.475,16.058,11.248,24.996
- c0.017,2.427-2.416,21.927-4.753,40.786c-21.283,171.091-24.349,229.784-12.591,241.55c3.122,3.102,7.514,4.443,11.457,3.526
- c12.019-2.509,19.945-20.574,41.261-75.777c16.113-41.639,36.123-93.445,56.881-118.682c0.177-0.197,1.158-0.706,3.331-0.706
- c2.544,0,5.458,0.706,8.215,1.962C670.207,191.876,675.376,196.567,674.31,202.537z"/>
- <g>
- <path d="M216.394,16.412c-44.913,0-81.447,36.542-81.447,81.463c0,40.038,29.07,73.352,67.19,80.11
- c-1.869-5.596-2.913-11.163-3.653-16.909c-27.567-7.827-47.838-33.167-47.838-63.201c0-36.263,29.5-65.762,65.748-65.762
- c36.261,0,65.746,29.499,65.746,65.762c0,19.53-8.65,37.037-22.231,49.079c0.627,1.238,1.238,2.48,1.717,3.823
- c1.429,4.09,2.44,8.233,3.142,12.427c20.025-14.846,33.073-38.548,33.073-65.329C297.84,52.953,261.295,16.412,216.394,16.412z"
- />
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="753.658px" height="753.658px" viewBox="0 0 753.658 753.658" style="enable-background:new 0 0 753.658 753.658;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M672.523,173.331c-5.098-2.369-10.503-3.627-15.553-3.627c-7.321,0-13.401,2.561-17.22,7.177\r
+ c-22.538,27.429-43.16,80.78-59.783,123.657c-7.634,19.815-17.893,46.34-24.822,58.799c-3.782-36.49,12.58-168.076,18.875-218.733\r
+ l0.104-0.826c4.393-35.199,5.077-41.37,4.845-44.111c-1.687-19.61-8.539-32.877-20.346-39.417\r
+ c-11.941-6.639-28.164-5.214-46.182,4.037c-9.044,4.661-12.695,22.546-25.852,103.898l-0.044,0.361\r
+ c-7.262,44.687-23.912,147.612-36.716,164.04c-11.405-25.056-19.801-163.413-23.436-223.302\r
+ c-2.529-41.95-4.056-66.022-5.667-73.394c-3.435-15.411-21.443-29.589-40.12-31.597c-15.545-1.859-28.907,5.212-35.971,18.621\r
+ c-12.325,11.964-11.243,54.607-5.632,155.809c2.673,48.151,8.173,147.631-0.399,158.161\r
+ c-15.438-2.799-37.872-66.441-66.615-189.21c-8.065-34.38-10.583-44.725-13.483-49.388c-5.228-15.879-25.85-29.274-45.17-29.274\r
+ c-1.655,0-3.266,0.108-4.861,0.301c-10.211,1.294-33.843,8.995-31.933,52.307c9.399,60.506,21.101,105.247,32.412,148.702\r
+ l0.23,0.861c6.775,26.008,13.187,50.602,18.841,77.776c13.321,64.165,3.699,102.74,3.586,103.186\r
+ c-0.87,3.979-2.268,6.339-4.2,7.068c-0.689,0.245-1.561,0.396-2.527,0.396c-5.646,0-13.803-4.323-17.969-7.045\r
+ c-8.606-19.74-51.609-113.891-95.447-129.61l-1.591-0.587l-1.625,0.038c-16.525,0.418-29.01,5.811-37.151,16.016\r
+ c-12.864,16.142-9.538,38.083-8.668,42.495l0.537,1.595c0.323,0.689,31.597,68.868,35.021,99.817\r
+ c2.974,26.541,25.74,56.652,44.062,80.85l0.755,0.994c5.965,7.914,11.117,14.768,15.118,21.039\r
+ c53.543,64.571,141.356,121.878,142.094,122.338c10.794,9.254,16.57,17.85,16.747,24.955c0.106,4.628-2.468,7.205-2.561,7.297\r
+ l-2.128,1.948l0.18,0.208h-0.855v15.701h255.229v-5.29l13.08-44.13c41.107-131.391,42.454-245.768,42.395-246.541\r
+ c0.412-4.188,12.158-44.098,21.62-76.337l0.26-0.817c18.819-64.249,42.271-144.171,47.837-174.828\r
+ C694.187,192.566,686.613,179.854,672.523,173.331z M674.31,202.537c-5.414,29.807-29.831,113.013-47.656,173.782\r
+ c-15.425,52.589-21.784,74.579-22.293,80.481c0,1.103-0.481,110.581-41.697,242.233l-11.529,38.916H333.026\r
+ c0.886-2.669,1.515-5.743,1.499-9.346c-0.062-12.604-8.062-25.804-23.951-39.328c-0.874-0.569-87.993-57.952-138.254-118.452\r
+ c-4.017-6.42-10.15-14.539-16.085-22.357c-16.098-21.295-38.159-50.489-40.555-72.109c-3.587-32.26-32.366-96.166-36.047-104.181\r
+ c-0.449-3.244-1.962-17.522,5.402-26.708c4.458-5.559,11.822-8.666,21.911-9.219c39.297,16.376,84.176,120.587,84.617,121.646\r
+ l0.952,2.208l1.932,1.486c2.683,1.964,16.789,11.794,30.467,11.794c3.138,0,6.083-0.509,8.72-1.519\r
+ c5.458-2.04,12.545-7.113,15.252-19.564c0.463-1.688,10.778-42.358-3.462-110.948c-5.672-27.457-12.238-52.542-19.146-79.115\r
+ l-0.128-0.402c-11.161-42.728-22.722-86.917-31.934-145.967c-0.855-19.776,5.034-31.46,16.525-32.935\r
+ c13.11-1.837,29.669,8.935,31.499,17.422l2.298,6.562c2.443,7.944,7.027,27.641,10.105,40.815\r
+ c26.046,111.074,50.461,203.032,84.939,203.032c2.803,0,6.931-0.824,10.638-4.773c14.186-14.956,11.94-75.065,6.532-172.355\r
+ c-2.637-47.117-5.965-132.866-0.675-141.284l2.144-4.42c3.25-6.995,11.312-10.135,17.723-10.135c0.936,0,1.841,0.066,2.703,0.167\r
+ c10.95,1.176,22.957,9.82,24.696,17.781c1.366,6.1,3.146,35.47,5.229,69.447l0.061,1.142\r
+ c11.777,194.362,19.58,241.816,39.621,241.816c22.771,0,33.902-45.234,55.855-181.122l0.116-0.575\r
+ c5.366-33.288,13.477-83.349,17.08-90.7c11.777-5.907,22.478-7.354,28.665-3.945c7.891,4.358,10.475,16.058,11.248,24.996\r
+ c0.017,2.427-2.416,21.927-4.753,40.786c-21.283,171.091-24.349,229.784-12.591,241.55c3.122,3.102,7.514,4.443,11.457,3.526\r
+ c12.019-2.509,19.945-20.574,41.261-75.777c16.113-41.639,36.123-93.445,56.881-118.682c0.177-0.197,1.158-0.706,3.331-0.706\r
+ c2.544,0,5.458,0.706,8.215,1.962C670.207,191.876,675.376,196.567,674.31,202.537z"/>\r
+ <g>\r
+ <path d="M216.394,16.412c-44.913,0-81.447,36.542-81.447,81.463c0,40.038,29.07,73.352,67.19,80.11\r
+ c-1.869-5.596-2.913-11.163-3.653-16.909c-27.567-7.827-47.838-33.167-47.838-63.201c0-36.263,29.5-65.762,65.748-65.762\r
+ c36.261,0,65.746,29.499,65.746,65.762c0,19.53-8.65,37.037-22.231,49.079c0.627,1.238,1.238,2.48,1.717,3.823\r
+ c1.429,4.09,2.44,8.233,3.142,12.427c20.025-14.846,33.073-38.548,33.073-65.329C297.84,52.953,261.295,16.412,216.394,16.412z"\r
+ />\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="357.499px" height="357.499px" viewBox="0 0 357.499 357.499" style="enable-background:new 0 0 357.499 357.499;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M310.74,98.45c-2.269-1.058-4.688-1.619-6.937-1.619c-3.265,0-5.989,1.143-7.693,3.203
- c-10.054,12.245-19.267,36.059-26.679,55.2c-3.409,8.844-7.991,20.685-11.085,26.246c-1.69-16.288,5.619-75.026,8.43-97.64
- l0.051-0.368c1.951-15.713,2.262-18.468,2.159-19.691c-0.76-8.754-3.812-14.676-9.089-17.595
- c-5.328-2.963-12.573-2.327-20.608,1.802c-4.038,2.081-5.667,10.064-11.54,46.379l-0.027,0.161
- c-3.23,19.948-10.67,65.892-16.385,73.226c-5.086-11.185-8.843-72.945-10.465-99.679c-1.13-18.726-1.801-29.472-2.525-32.762
- c-1.53-6.878-9.568-13.208-17.917-14.104c-6.938-0.83-12.901,2.327-16.057,8.312c-5.501,5.34-5.017,24.376-2.512,69.55
- c1.191,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.739-84.46c-3.598-15.347-4.729-19.965-6.016-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.741,0-1.458,0.048-2.169,0.133c-4.56,0.579-15.1,4.016-14.248,23.35
- c4.187,27.009,9.413,46.981,14.462,66.378l0.101,0.385c3.032,11.61,5.895,22.588,8.418,34.718
- c5.939,28.642,1.649,45.862,1.6,46.061c-0.389,1.775-1.02,2.83-1.874,3.155c-0.316,0.109-0.698,0.178-1.129,0.178
- c-2.519,0-6.16-1.931-8.029-3.146c-3.833-8.812-23.029-50.839-42.604-57.856l-0.705-0.262l-0.732,0.017
- c-7.373,0.187-12.941,2.594-16.575,7.149c-5.744,7.205-4.257,16.998-3.872,18.969l0.245,0.712
- c0.144,0.309,14.106,30.741,15.632,44.557c1.323,11.848,11.492,25.29,19.664,36.09l0.335,0.445
- c2.671,3.531,4.971,6.591,6.757,9.391c23.899,28.824,63.098,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14
- c0.05,2.066-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.092h-0.397v7.009h113.934v-2.361l5.839-19.697
- c18.346-58.652,18.948-109.708,18.921-110.054c0.195-1.868,5.435-19.685,9.657-34.074l0.109-0.366
- c8.405-28.68,18.877-64.355,21.361-78.041C320.421,107.036,317.04,101.362,310.74,98.45z M311.544,111.486
- c-2.416,13.306-13.319,50.448-21.272,77.574c-6.893,23.476-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13
- l-5.15,17.371h-97.367c0.397-1.191,0.685-2.563,0.671-4.172c-0.022-5.626-3.593-11.519-10.686-17.556
- c-0.395-0.253-39.279-25.868-61.72-52.876c-1.795-2.864-4.531-6.488-7.18-9.979c-7.181-9.507-17.029-22.538-18.096-32.189
- c-1.602-14.4-14.456-42.927-16.093-46.507c-0.207-1.447-0.876-7.819,2.411-11.919c1.983-2.481,5.279-3.869,9.781-4.115
- c17.535,7.31,37.57,53.828,37.767,54.301l0.429,0.985l0.855,0.664c1.207,0.876,7.503,5.264,13.608,5.264
- c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525
- c-2.527-12.257-5.457-23.454-8.547-35.315l-0.049-0.18c-4.983-19.074-10.145-38.799-14.262-65.158
- c-0.382-8.827,2.253-14.042,7.376-14.702c5.852-0.819,13.249,3.989,14.065,7.777l1.028,2.929
- c1.082,3.547,3.135,12.338,4.502,18.219c11.635,49.582,22.526,90.631,37.924,90.631c1.251,0,3.087-0.368,4.748-2.13
- c6.324-6.677,5.327-33.508,2.909-76.938c-1.17-21.032-2.657-59.309-0.294-63.067l0.95-1.973c1.449-3.123,5.056-4.524,7.919-4.524
- c0.417,0,0.812,0.029,1.206,0.073c4.88,0.525,10.246,4.384,11.02,7.938c0.612,2.723,1.403,15.833,2.334,31l0.03,0.51
- c5.257,86.76,8.74,107.943,17.687,107.943c10.16,0,15.129-20.192,24.934-80.85l0.048-0.256
- c2.402-14.859,6.016-37.206,7.632-40.488c5.249-2.637,10.026-3.282,12.799-1.761c3.518,1.945,4.674,7.167,5.01,11.158
- c0.014,1.083-1.074,9.788-2.115,18.206c-9.507,76.373-10.872,102.571-5.626,107.823c1.396,1.387,3.36,1.985,5.12,1.574
- c5.358-1.118,8.897-9.185,18.411-33.824c7.196-18.587,16.128-41.713,25.399-52.979c0.074-0.087,0.52-0.314,1.484-0.314
- c1.137,0,2.437,0.314,3.672,0.876C309.713,106.728,312.023,108.822,311.544,111.486z"/>
- <g>
- <path d="M182.504,0.259c-19.905-2.38-38.035,11.887-40.416,31.792c-2.117,17.749,9.007,34.054,25.543,39.069
- c-0.525-2.584-0.696-5.103-0.725-7.693c-11.798-4.926-19.445-17.234-17.857-30.546c1.923-16.071,16.563-27.583,32.626-25.663
- c16.074,1.922,27.586,16.555,25.67,32.625c-1.04,8.667-5.794,15.963-12.457,20.581c0.213,0.585,0.418,1.167,0.555,1.788
- c0.418,1.886,0.65,3.778,0.739,5.672c9.657-5.515,16.7-15.338,18.117-27.206C216.675,20.77,202.418,2.64,182.504,0.259z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="357.499px" height="357.499px" viewBox="0 0 357.499 357.499" style="enable-background:new 0 0 357.499 357.499;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M310.74,98.45c-2.269-1.058-4.688-1.619-6.937-1.619c-3.265,0-5.989,1.143-7.693,3.203\r
+ c-10.054,12.245-19.267,36.059-26.679,55.2c-3.409,8.844-7.991,20.685-11.085,26.246c-1.69-16.288,5.619-75.026,8.43-97.64\r
+ l0.051-0.368c1.951-15.713,2.262-18.468,2.159-19.691c-0.76-8.754-3.812-14.676-9.089-17.595\r
+ c-5.328-2.963-12.573-2.327-20.608,1.802c-4.038,2.081-5.667,10.064-11.54,46.379l-0.027,0.161\r
+ c-3.23,19.948-10.67,65.892-16.385,73.226c-5.086-11.185-8.843-72.945-10.465-99.679c-1.13-18.726-1.801-29.472-2.525-32.762\r
+ c-1.53-6.878-9.568-13.208-17.917-14.104c-6.938-0.83-12.901,2.327-16.057,8.312c-5.501,5.34-5.017,24.376-2.512,69.55\r
+ c1.191,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.739-84.46c-3.598-15.347-4.729-19.965-6.016-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.741,0-1.458,0.048-2.169,0.133c-4.56,0.579-15.1,4.016-14.248,23.35\r
+ c4.187,27.009,9.413,46.981,14.462,66.378l0.101,0.385c3.032,11.61,5.895,22.588,8.418,34.718\r
+ c5.939,28.642,1.649,45.862,1.6,46.061c-0.389,1.775-1.02,2.83-1.874,3.155c-0.316,0.109-0.698,0.178-1.129,0.178\r
+ c-2.519,0-6.16-1.931-8.029-3.146c-3.833-8.812-23.029-50.839-42.604-57.856l-0.705-0.262l-0.732,0.017\r
+ c-7.373,0.187-12.941,2.594-16.575,7.149c-5.744,7.205-4.257,16.998-3.872,18.969l0.245,0.712\r
+ c0.144,0.309,14.106,30.741,15.632,44.557c1.323,11.848,11.492,25.29,19.664,36.09l0.335,0.445\r
+ c2.671,3.531,4.971,6.591,6.757,9.391c23.899,28.824,63.098,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14\r
+ c0.05,2.066-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.092h-0.397v7.009h113.934v-2.361l5.839-19.697\r
+ c18.346-58.652,18.948-109.708,18.921-110.054c0.195-1.868,5.435-19.685,9.657-34.074l0.109-0.366\r
+ c8.405-28.68,18.877-64.355,21.361-78.041C320.421,107.036,317.04,101.362,310.74,98.45z M311.544,111.486\r
+ c-2.416,13.306-13.319,50.448-21.272,77.574c-6.893,23.476-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13\r
+ l-5.15,17.371h-97.367c0.397-1.191,0.685-2.563,0.671-4.172c-0.022-5.626-3.593-11.519-10.686-17.556\r
+ c-0.395-0.253-39.279-25.868-61.72-52.876c-1.795-2.864-4.531-6.488-7.18-9.979c-7.181-9.507-17.029-22.538-18.096-32.189\r
+ c-1.602-14.4-14.456-42.927-16.093-46.507c-0.207-1.447-0.876-7.819,2.411-11.919c1.983-2.481,5.279-3.869,9.781-4.115\r
+ c17.535,7.31,37.57,53.828,37.767,54.301l0.429,0.985l0.855,0.664c1.207,0.876,7.503,5.264,13.608,5.264\r
+ c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525\r
+ c-2.527-12.257-5.457-23.454-8.547-35.315l-0.049-0.18c-4.983-19.074-10.145-38.799-14.262-65.158\r
+ c-0.382-8.827,2.253-14.042,7.376-14.702c5.852-0.819,13.249,3.989,14.065,7.777l1.028,2.929\r
+ c1.082,3.547,3.135,12.338,4.502,18.219c11.635,49.582,22.526,90.631,37.924,90.631c1.251,0,3.087-0.368,4.748-2.13\r
+ c6.324-6.677,5.327-33.508,2.909-76.938c-1.17-21.032-2.657-59.309-0.294-63.067l0.95-1.973c1.449-3.123,5.056-4.524,7.919-4.524\r
+ c0.417,0,0.812,0.029,1.206,0.073c4.88,0.525,10.246,4.384,11.02,7.938c0.612,2.723,1.403,15.833,2.334,31l0.03,0.51\r
+ c5.257,86.76,8.74,107.943,17.687,107.943c10.16,0,15.129-20.192,24.934-80.85l0.048-0.256\r
+ c2.402-14.859,6.016-37.206,7.632-40.488c5.249-2.637,10.026-3.282,12.799-1.761c3.518,1.945,4.674,7.167,5.01,11.158\r
+ c0.014,1.083-1.074,9.788-2.115,18.206c-9.507,76.373-10.872,102.571-5.626,107.823c1.396,1.387,3.36,1.985,5.12,1.574\r
+ c5.358-1.118,8.897-9.185,18.411-33.824c7.196-18.587,16.128-41.713,25.399-52.979c0.074-0.087,0.52-0.314,1.484-0.314\r
+ c1.137,0,2.437,0.314,3.672,0.876C309.713,106.728,312.023,108.822,311.544,111.486z"/>\r
+ <g>\r
+ <path d="M182.504,0.259c-19.905-2.38-38.035,11.887-40.416,31.792c-2.117,17.749,9.007,34.054,25.543,39.069\r
+ c-0.525-2.584-0.696-5.103-0.725-7.693c-11.798-4.926-19.445-17.234-17.857-30.546c1.923-16.071,16.563-27.583,32.626-25.663\r
+ c16.074,1.922,27.586,16.555,25.67,32.625c-1.04,8.667-5.794,15.963-12.457,20.581c0.213,0.585,0.418,1.167,0.555,1.788\r
+ c0.418,1.886,0.65,3.778,0.739,5.672c9.657-5.515,16.7-15.338,18.117-27.206C216.675,20.77,202.418,2.64,182.504,0.259z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.421px" height="336.421px" viewBox="0 0 336.421 336.421" style="enable-background:new 0 0 336.421 336.421;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M300.203,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203
- c-10.055,12.244-19.267,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.246c-1.69-16.288,5.619-75.025,8.429-97.639
- l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595
- c-5.328-2.964-12.572-2.327-20.607,1.802c-4.035,2.081-5.668,10.064-11.54,46.379l-0.027,0.161
- c-3.23,19.948-10.67,65.892-16.386,73.226c-5.085-11.185-8.843-72.945-10.465-99.679c-1.129-18.726-1.8-29.472-2.525-32.762
- c-1.529-6.879-9.568-13.208-17.911-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55
- c1.193,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.737-84.46c-3.6-15.347-4.731-19.965-6.018-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.048-2.169,0.134c-4.558,0.578-15.1,4.016-14.248,23.349
- c4.187,27.009,9.413,46.981,14.462,66.378l0.103,0.385c3.031,11.609,5.893,22.588,8.417,34.718
- c5.939,28.642,1.649,45.862,1.602,46.061c-0.39,1.776-1.02,2.83-1.875,3.155c-0.314,0.109-0.696,0.178-1.127,0.178
- c-2.521,0-6.162-1.93-8.028-3.145c-3.834-8.812-23.031-50.84-42.606-57.857l-0.705-0.262l-0.732,0.018
- c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.247,0.713c0.144,0.308,14.104,30.74,15.632,44.556
- c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391c23.9,28.825,63.1,54.405,63.421,54.61
- c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.093h-0.389v7.008h113.918v-2.361
- l5.839-19.697c18.346-58.652,18.951-109.708,18.921-110.054c0.195-1.868,5.438-19.684,9.661-34.074l0.105-0.366
- c8.405-28.679,18.88-64.355,21.364-78.041C309.877,85.958,306.5,80.285,300.203,77.372z M301,90.409
- c-2.416,13.305-13.319,50.448-21.272,77.573c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13
- l-5.15,17.371h-97.362c0.396-1.19,0.683-2.562,0.669-4.172c-0.021-5.626-3.592-11.519-10.684-17.556
- c-0.397-0.253-39.28-25.868-61.722-52.875c-1.793-2.864-4.531-6.489-7.18-9.979c-7.181-9.507-17.027-22.538-18.096-32.188
- c-1.602-14.4-14.456-42.928-16.091-46.506c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.78-4.115
- c17.535,7.31,37.569,53.829,37.766,54.301l0.431,0.986l0.854,0.664c1.207,0.875,7.503,5.263,13.608,5.263
- c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525
- c-2.526-12.256-5.457-23.454-8.547-35.315l-0.05-0.18C95.97,97.806,90.808,78.081,86.691,51.722
- c-0.382-8.828,2.253-14.043,7.376-14.702c5.852-0.82,13.25,3.989,14.066,7.777l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22
- c11.634,49.582,22.525,90.631,37.923,90.631c1.25,0,3.087-0.368,4.748-2.13c6.326-6.677,5.327-33.508,2.909-76.937
- c-1.17-21.033-2.657-59.31-0.294-63.067l0.95-1.973c1.451-3.123,5.056-4.524,7.918-4.524c0.418,0,0.813,0.029,1.207,0.074
- c4.883,0.525,10.245,4.384,11.022,7.938c0.609,2.722,1.399,15.833,2.334,31l0.027,0.51c5.256,86.761,8.74,107.944,17.686,107.944
- c10.164,0,15.133-20.192,24.934-80.85l0.048-0.257c2.406-14.859,6.017-37.206,7.632-40.488c5.25-2.637,10.027-3.282,12.799-1.76
- c3.518,1.945,4.675,7.167,5.01,11.158c0.014,1.083-1.074,9.788-2.114,18.206c-9.507,76.373-10.872,102.573-5.626,107.824
- c1.396,1.386,3.36,1.984,5.119,1.574c5.359-1.119,8.897-9.184,18.411-33.825c7.197-18.587,16.129-41.713,25.399-52.979
- c0.075-0.087,0.521-0.315,1.488-0.315c1.133,0,2.434,0.315,3.669,0.876C299.176,85.65,301.479,87.745,301,90.409z"/>
- <g>
- <path d="M245.691,4.16c-19.677-3.815-38.79,9.091-42.619,28.771c-3.401,17.547,6.502,34.617,22.634,40.821
- c-0.342-2.613-0.328-5.14-0.164-7.719c-11.416-5.775-18.138-18.604-15.592-31.763c3.091-15.893,18.528-26.308,34.414-23.223
- c15.885,3.08,26.303,18.512,23.216,34.405c-1.663,8.561-6.937,15.496-13.915,19.618c0.164,0.599,0.329,1.194,0.425,1.82
- c0.28,1.915,0.366,3.821,0.321,5.717c10.034-4.798,17.768-14.084,20.047-25.817C278.277,27.104,265.375,7.984,245.691,4.16z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.421px" height="336.421px" viewBox="0 0 336.421 336.421" style="enable-background:new 0 0 336.421 336.421;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M300.203,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203\r
+ c-10.055,12.244-19.267,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.246c-1.69-16.288,5.619-75.025,8.429-97.639\r
+ l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595\r
+ c-5.328-2.964-12.572-2.327-20.607,1.802c-4.035,2.081-5.668,10.064-11.54,46.379l-0.027,0.161\r
+ c-3.23,19.948-10.67,65.892-16.386,73.226c-5.085-11.185-8.843-72.945-10.465-99.679c-1.129-18.726-1.8-29.472-2.525-32.762\r
+ c-1.529-6.879-9.568-13.208-17.911-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55\r
+ c1.193,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.737-84.46c-3.6-15.347-4.731-19.965-6.018-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.048-2.169,0.134c-4.558,0.578-15.1,4.016-14.248,23.349\r
+ c4.187,27.009,9.413,46.981,14.462,66.378l0.103,0.385c3.031,11.609,5.893,22.588,8.417,34.718\r
+ c5.939,28.642,1.649,45.862,1.602,46.061c-0.39,1.776-1.02,2.83-1.875,3.155c-0.314,0.109-0.696,0.178-1.127,0.178\r
+ c-2.521,0-6.162-1.93-8.028-3.145c-3.834-8.812-23.031-50.84-42.606-57.857l-0.705-0.262l-0.732,0.018\r
+ c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.247,0.713c0.144,0.308,14.104,30.74,15.632,44.556\r
+ c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391c23.9,28.825,63.1,54.405,63.421,54.61\r
+ c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.093h-0.389v7.008h113.918v-2.361\r
+ l5.839-19.697c18.346-58.652,18.951-109.708,18.921-110.054c0.195-1.868,5.438-19.684,9.661-34.074l0.105-0.366\r
+ c8.405-28.679,18.88-64.355,21.364-78.041C309.877,85.958,306.5,80.285,300.203,77.372z M301,90.409\r
+ c-2.416,13.305-13.319,50.448-21.272,77.573c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13\r
+ l-5.15,17.371h-97.362c0.396-1.19,0.683-2.562,0.669-4.172c-0.021-5.626-3.592-11.519-10.684-17.556\r
+ c-0.397-0.253-39.28-25.868-61.722-52.875c-1.793-2.864-4.531-6.489-7.18-9.979c-7.181-9.507-17.027-22.538-18.096-32.188\r
+ c-1.602-14.4-14.456-42.928-16.091-46.506c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.78-4.115\r
+ c17.535,7.31,37.569,53.829,37.766,54.301l0.431,0.986l0.854,0.664c1.207,0.875,7.503,5.263,13.608,5.263\r
+ c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525\r
+ c-2.526-12.256-5.457-23.454-8.547-35.315l-0.05-0.18C95.97,97.806,90.808,78.081,86.691,51.722\r
+ c-0.382-8.828,2.253-14.043,7.376-14.702c5.852-0.82,13.25,3.989,14.066,7.777l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22\r
+ c11.634,49.582,22.525,90.631,37.923,90.631c1.25,0,3.087-0.368,4.748-2.13c6.326-6.677,5.327-33.508,2.909-76.937\r
+ c-1.17-21.033-2.657-59.31-0.294-63.067l0.95-1.973c1.451-3.123,5.056-4.524,7.918-4.524c0.418,0,0.813,0.029,1.207,0.074\r
+ c4.883,0.525,10.245,4.384,11.022,7.938c0.609,2.722,1.399,15.833,2.334,31l0.027,0.51c5.256,86.761,8.74,107.944,17.686,107.944\r
+ c10.164,0,15.133-20.192,24.934-80.85l0.048-0.257c2.406-14.859,6.017-37.206,7.632-40.488c5.25-2.637,10.027-3.282,12.799-1.76\r
+ c3.518,1.945,4.675,7.167,5.01,11.158c0.014,1.083-1.074,9.788-2.114,18.206c-9.507,76.373-10.872,102.573-5.626,107.824\r
+ c1.396,1.386,3.36,1.984,5.119,1.574c5.359-1.119,8.897-9.184,18.411-33.825c7.197-18.587,16.129-41.713,25.399-52.979\r
+ c0.075-0.087,0.521-0.315,1.488-0.315c1.133,0,2.434,0.315,3.669,0.876C299.176,85.65,301.479,87.745,301,90.409z"/>\r
+ <g>\r
+ <path d="M245.691,4.16c-19.677-3.815-38.79,9.091-42.619,28.771c-3.401,17.547,6.502,34.617,22.634,40.821\r
+ c-0.342-2.613-0.328-5.14-0.164-7.719c-11.416-5.775-18.138-18.604-15.592-31.763c3.091-15.893,18.528-26.308,34.414-23.223\r
+ c15.885,3.08,26.303,18.512,23.216,34.405c-1.663,8.561-6.937,15.496-13.915,19.618c0.164,0.599,0.329,1.194,0.425,1.82\r
+ c0.28,1.915,0.366,3.821,0.321,5.717c10.034-4.798,17.768-14.084,20.047-25.817C278.277,27.104,265.375,7.984,245.691,4.16z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.425px" height="336.425px" viewBox="0 0 336.425 336.425" style="enable-background:new 0 0 336.425 336.425;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M289.997,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203
- c-10.055,12.244-19.268,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.248c-1.69-16.288,5.619-75.027,8.429-97.641
- l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595
- c-5.328-2.964-12.573-2.326-20.608,1.802c-4.034,2.082-5.667,10.064-11.539,46.379l-0.027,0.162
- c-3.23,19.946-10.671,65.891-16.386,73.226c-5.085-11.187-8.843-72.946-10.465-99.681c-1.129-18.726-1.8-29.47-2.525-32.762
- c-1.53-6.879-9.568-13.206-17.912-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55
- c1.192,21.495,3.655,65.9-0.171,70.601c-6.9-1.247-16.905-29.656-29.737-84.46c-3.6-15.345-4.731-19.965-6.018-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.05-2.169,0.134c-4.559,0.578-15.101,4.016-14.249,23.349
- c4.188,27.011,9.413,46.981,14.462,66.378l0.103,0.385c3.03,11.609,5.893,22.588,8.417,34.718
- c5.939,28.642,1.649,45.862,1.602,46.063c-0.39,1.773-1.02,2.827-1.875,3.152c-0.315,0.109-0.696,0.178-1.127,0.178
- c-2.521,0-6.162-1.93-8.029-3.145c-3.834-8.809-23.031-50.84-42.605-57.855l-0.705-0.264l-0.732,0.018
- c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.246,0.713c0.144,0.308,14.104,30.74,15.633,44.556
- c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391
- c23.9,28.825,63.099,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869
- l0.08,0.096h-0.388v7.009H242.72v-2.365l5.838-19.694c18.347-58.655,18.952-109.711,18.922-110.057
- c0.194-1.868,5.438-19.684,9.66-34.074l0.106-0.366c8.405-28.679,18.88-64.355,21.364-78.041
- C299.671,85.962,296.294,80.285,289.997,77.372z M290.794,90.409c-2.416,13.305-13.318,50.448-21.271,77.573
- c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.134l-5.15,17.371h-97.362
- c0.396-1.194,0.683-2.566,0.669-4.176c-0.021-5.626-3.591-11.519-10.684-17.556c-0.397-0.253-39.28-25.864-61.722-52.872
- c-1.793-2.867-4.531-6.492-7.18-9.982c-7.182-9.507-17.027-22.538-18.097-32.188c-1.602-14.4-14.455-42.928-16.091-46.506
- c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.781-4.113c17.535,7.31,37.568,53.827,37.765,54.299
- l0.431,0.986l0.854,0.664c1.206,0.875,7.503,5.263,13.608,5.263c1.395,0,2.715-0.226,3.886-0.678
- c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.523c-2.525-12.258-5.457-23.456-8.547-35.317l-0.049-0.18
- c-4.983-19.073-10.145-38.798-14.262-65.158c-0.381-8.828,2.253-14.041,7.376-14.7c5.852-0.821,13.251,3.987,14.067,7.775
- l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22c11.634,49.582,22.524,90.631,37.922,90.631c1.251,0,3.087-0.368,4.749-2.13
- c6.326-6.675,5.327-33.508,2.909-76.937c-1.17-21.033-2.657-59.31-0.294-63.067l0.949-1.973c1.451-3.121,5.057-4.524,7.919-4.524
- c0.417,0,0.813,0.029,1.207,0.074c4.881,0.525,10.246,4.384,11.021,7.938c0.609,2.722,1.401,15.833,2.336,31l0.027,0.512
- c5.256,86.759,8.74,107.942,17.686,107.942c10.164,0,15.133-20.191,24.934-80.85l0.048-0.257
- c2.406-14.857,6.017-37.204,7.632-40.488c5.249-2.637,10.026-3.28,12.799-1.76c3.518,1.945,4.675,7.167,5.01,11.158
- c0.014,1.083-1.074,9.789-2.114,18.206c-9.508,76.373-10.873,102.574-5.627,107.827c1.396,1.383,3.361,1.981,5.12,1.571
- c5.358-1.119,8.897-9.182,18.411-33.825c7.196-18.587,16.129-41.713,25.399-52.979c0.075-0.087,0.52-0.315,1.488-0.315
- c1.133,0,2.434,0.315,3.669,0.876C288.971,85.654,291.273,87.745,290.794,90.409z"/>
- <g>
- <path d="M300.582,60.104c-17.501-9.767-39.69-3.473-49.471,14.031c-8.703,15.609-4.617,34.917,8.761,45.851
- c0.503-2.593,1.293-4.99,2.262-7.391c-9.041-9.048-11.434-23.332-4.894-35.043c7.892-14.133,25.803-19.207,39.937-11.318
- c14.123,7.885,19.209,25.794,11.317,39.935c-4.251,7.614-11.431,12.556-19.343,14.294c-0.027,0.62-0.064,1.239-0.171,1.86
- c-0.332,1.903-0.835,3.739-1.472,5.53c11.03-1.43,21.27-7.833,27.101-18.276C324.386,92.07,318.097,69.878,300.582,60.104z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.425px" height="336.425px" viewBox="0 0 336.425 336.425" style="enable-background:new 0 0 336.425 336.425;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M289.997,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203\r
+ c-10.055,12.244-19.268,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.248c-1.69-16.288,5.619-75.027,8.429-97.641\r
+ l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595\r
+ c-5.328-2.964-12.573-2.326-20.608,1.802c-4.034,2.082-5.667,10.064-11.539,46.379l-0.027,0.162\r
+ c-3.23,19.946-10.671,65.891-16.386,73.226c-5.085-11.187-8.843-72.946-10.465-99.681c-1.129-18.726-1.8-29.47-2.525-32.762\r
+ c-1.53-6.879-9.568-13.206-17.912-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55\r
+ c1.192,21.495,3.655,65.9-0.171,70.601c-6.9-1.247-16.905-29.656-29.737-84.46c-3.6-15.345-4.731-19.965-6.018-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.05-2.169,0.134c-4.559,0.578-15.101,4.016-14.249,23.349\r
+ c4.188,27.011,9.413,46.981,14.462,66.378l0.103,0.385c3.03,11.609,5.893,22.588,8.417,34.718\r
+ c5.939,28.642,1.649,45.862,1.602,46.063c-0.39,1.773-1.02,2.827-1.875,3.152c-0.315,0.109-0.696,0.178-1.127,0.178\r
+ c-2.521,0-6.162-1.93-8.029-3.145c-3.834-8.809-23.031-50.84-42.605-57.855l-0.705-0.264l-0.732,0.018\r
+ c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.246,0.713c0.144,0.308,14.104,30.74,15.633,44.556\r
+ c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391\r
+ c23.9,28.825,63.099,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869\r
+ l0.08,0.096h-0.388v7.009H242.72v-2.365l5.838-19.694c18.347-58.655,18.952-109.711,18.922-110.057\r
+ c0.194-1.868,5.438-19.684,9.66-34.074l0.106-0.366c8.405-28.679,18.88-64.355,21.364-78.041\r
+ C299.671,85.962,296.294,80.285,289.997,77.372z M290.794,90.409c-2.416,13.305-13.318,50.448-21.271,77.573\r
+ c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.134l-5.15,17.371h-97.362\r
+ c0.396-1.194,0.683-2.566,0.669-4.176c-0.021-5.626-3.591-11.519-10.684-17.556c-0.397-0.253-39.28-25.864-61.722-52.872\r
+ c-1.793-2.867-4.531-6.492-7.18-9.982c-7.182-9.507-17.027-22.538-18.097-32.188c-1.602-14.4-14.455-42.928-16.091-46.506\r
+ c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.781-4.113c17.535,7.31,37.568,53.827,37.765,54.299\r
+ l0.431,0.986l0.854,0.664c1.206,0.875,7.503,5.263,13.608,5.263c1.395,0,2.715-0.226,3.886-0.678\r
+ c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.523c-2.525-12.258-5.457-23.456-8.547-35.317l-0.049-0.18\r
+ c-4.983-19.073-10.145-38.798-14.262-65.158c-0.381-8.828,2.253-14.041,7.376-14.7c5.852-0.821,13.251,3.987,14.067,7.775\r
+ l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22c11.634,49.582,22.524,90.631,37.922,90.631c1.251,0,3.087-0.368,4.749-2.13\r
+ c6.326-6.675,5.327-33.508,2.909-76.937c-1.17-21.033-2.657-59.31-0.294-63.067l0.949-1.973c1.451-3.121,5.057-4.524,7.919-4.524\r
+ c0.417,0,0.813,0.029,1.207,0.074c4.881,0.525,10.246,4.384,11.021,7.938c0.609,2.722,1.401,15.833,2.336,31l0.027,0.512\r
+ c5.256,86.759,8.74,107.942,17.686,107.942c10.164,0,15.133-20.191,24.934-80.85l0.048-0.257\r
+ c2.406-14.857,6.017-37.204,7.632-40.488c5.249-2.637,10.026-3.28,12.799-1.76c3.518,1.945,4.675,7.167,5.01,11.158\r
+ c0.014,1.083-1.074,9.789-2.114,18.206c-9.508,76.373-10.873,102.574-5.627,107.827c1.396,1.383,3.361,1.981,5.12,1.571\r
+ c5.358-1.119,8.897-9.182,18.411-33.825c7.196-18.587,16.129-41.713,25.399-52.979c0.075-0.087,0.52-0.315,1.488-0.315\r
+ c1.133,0,2.434,0.315,3.669,0.876C288.971,85.654,291.273,87.745,290.794,90.409z"/>\r
+ <g>\r
+ <path d="M300.582,60.104c-17.501-9.767-39.69-3.473-49.471,14.031c-8.703,15.609-4.617,34.917,8.761,45.851\r
+ c0.503-2.593,1.293-4.99,2.262-7.391c-9.041-9.048-11.434-23.332-4.894-35.043c7.892-14.133,25.803-19.207,39.937-11.318\r
+ c14.123,7.885,19.209,25.794,11.317,39.935c-4.251,7.614-11.431,12.556-19.343,14.294c-0.027,0.62-0.064,1.239-0.171,1.86\r
+ c-0.332,1.903-0.835,3.739-1.472,5.53c11.03-1.43,21.27-7.833,27.101-18.276C324.386,92.07,318.097,69.878,300.582,60.104z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.765px" height="317.765px" viewBox="0 0 317.765 317.765" style="enable-background:new 0 0 317.765 317.765;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M45.472,89.304c2.127,0.465,4.1,0.435,10.171-4.227c2.689-2.067,6.671-5.554,10.354-10.418l1.608-2.134
- c13.772-18.317,46.016-61.202,92.584-58.875c38.405,2.803,65.626,31.804,78.726,83.879c0.445,1.77,0.719,2.856,1.013,3.689
- c2.002,8.516,5.355,19.126,10.194,22.617c1.201,0.869,2.588,1.283,3.967,1.283c2.102,0,4.172-0.979,5.499-2.814
- c2.118-2.93,1.554-6.985-1.225-9.23c-1.335-1.731-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.762-0.362-1.121
- c-0.124-0.443-0.37-1.406-0.589-2.272c-2.077-8.252-7.591-30.178-20.964-50.799C213.827,16.796,190.279,2.229,161.09,0.124
- c-0.05-0.005-0.094-0.005-0.144-0.009C107.148-2.627,71.838,44.33,56.764,64.382l-1.588,2.104
- c-4.127,5.457-8.999,8.853-10.677,9.837c-0.575,0.221-1.121,0.525-1.629,0.916c-2.11,1.602-3.14,4.324-2.573,6.906
- C40.868,86.718,42.894,88.736,45.472,89.304z"/>
- <path d="M215.295,115.305c5.12-12.783,5.243-25.991,0.343-36.234c-4.374-9.135-12.525-15.759-23.572-19.14
- c-16.214-4.962-35.871,4.043-53.873,24.674c-0.231,0.251-25.865,27.213-52.785,43.694c-0.2,0.12-19.903,11.943-40.478,17.547
- c-3.614,0.984-5.751,4.709-4.762,8.323c0.987,3.614,4.709,5.746,8.323,4.76c22.388-6.097,43.062-18.499,43.968-19.044
- c29.198-17.879,55.678-46.061,55.904-46.321c10.935-12.523,27.109-24.533,39.733-20.668c7.423,2.274,12.58,6.322,15.308,12.031
- c3.268,6.831,3.012,16.063-0.695,25.339c-6.916,17.263-28.424,38.109-60.573,58.697c-16.124,10.335-56.724,35.683-85.395,47.94
- c-3.443,1.472-5.039,5.455-3.568,8.901c1.097,2.57,3.599,4.113,6.233,4.113c0.89,0,1.795-0.175,2.665-0.548
- c29.607-12.658,70.969-38.472,87.375-48.98C173.866,164.75,205.104,140.768,215.295,115.305z"/>
- <path d="M106.094,64.687c-3.075,3.391-5.838,7.029-8.811,10.506c-3.893,4.555-8.158,8.809-12.602,12.821
- c-4.572,4.128-8.266,7.082-13.66,10.177c-5.722,3.284-11.546,6.602-17.472,9.486c-2.04,0.994-3.792,1.639-6.083,2.331
- c-3.54,1.061-5.73,4.712-4.738,8.34c0.963,3.498,4.803,5.799,8.343,4.738c6.935-2.086,13.214-5.653,19.474-9.209
- c5.291-3.008,10.54-5.713,15.401-9.409c9.464-7.202,17.616-15.612,25.112-24.811c3.037-3.725,6.283-7.275,9.671-10.681
- c1.854-1.862,3.765-3.657,5.722-5.409c1.013-0.911,2.046-1.8,3.095-2.68c0.525-0.445,1.068-0.883,1.602-1.321
- c0.144-0.116,1.191-0.943,1.465-1.16c4.724-3.621,9.751-6.834,15.044-9.553c4.996-2.568,10.018-4.37,16.106-5.635
- c2.012-0.421,2.457-0.467,3.963-0.621c3.675-0.382,6.786-2.796,6.786-6.781c0-3.408-3.098-7.163-6.786-6.779
- C143.211,31.567,122.255,46.888,106.094,64.687z"/>
- <path d="M53.326,194.516c14.736-5.055,90.365-33.298,132.72-92.663c2.173-3.049,1.465-7.283-1.581-9.456
- c-3.046-2.175-7.282-1.468-9.459,1.581c-39.95,55.995-112.036,82.89-126.083,87.711c-0.301,0.103-0.486,0.171-0.546,0.198
- c-3.504,1.324-5.27,5.239-3.942,8.744c1.026,2.71,3.605,4.38,6.346,4.38c0.767,0,1.545-0.133,2.313-0.41L53.326,194.516z"/>
- <path d="M141.726,223.128c1.572-7.275,4.173-14.164,7.667-20.509c-8.152,4.559-18.619,11.365-31.792,20.048
- c-16.926,11.162-36.119,23.808-44.462,26.056c-3.619,0.972-5.765,4.695-4.789,8.31c0.819,3.028,3.552,5.023,6.541,5.023
- c0.589,0,1.177-0.075,1.766-0.236c10.465-2.816,28.896-14.965,48.408-27.825C130.398,230.476,136.175,226.674,141.726,223.128z"/>
- <path d="M140.569,248.402c-9.212,5.886-21.135,14.359-36.166,25.334c-3.619,2.639-6.741,4.921-8.911,6.454
- c-3.06,2.159-3.783,6.393-1.629,9.448c1.328,1.872,3.424,2.868,5.544,2.868c1.357,0,2.722-0.4,3.906-1.242
- c2.253-1.591,5.422-3.901,9.084-6.574c6.771-4.941,19.97-14.578,31.272-22.106C142.198,258.025,141.158,253.282,140.569,248.402z"
- />
- <path d="M153.279,282.168c-11.834,4.031-28.315,20.591-31.709,24.102c-2.608,2.69-2.541,6.981,0.15,9.586
- c1.321,1.276,3.017,1.909,4.716,1.909c1.772,0,3.547-0.688,4.875-2.063c9.083-9.38,21.982-20.036,26.988-20.902
- c2.298-0.394,5.155,0.575,8.396,2.303C161.595,292.732,157.077,287.719,153.279,282.168z"/>
- <path d="M257.62,161.848c-5.653-2.389-11.56-4.897-16.316-8.858c-5.236-4.355-7.669-10.079-8.761-16.683
- c-1.424-8.614-14.489-4.948-13.079,3.605c1.926,11.663,8.274,19.763,16.84,25.814c6.981,1.906,13.565,4.773,19.603,8.47
- c1.649-0.346,3.128-1.314,4.157-3.066C261.741,168.248,261.029,163.286,257.62,161.848z"/>
- <path d="M198.533,160.681c-2.464,0.675-4.702,3.146-5.04,5.797c4.021-1.256,8.199-2.176,12.477-2.754
- C204.358,161.277,201.723,159.802,198.533,160.681z"/>
- <path d="M212.133,169.801c-36.233,0-65.705,29.476-65.705,65.706s29.472,65.705,65.705,65.705
- c36.228,0,65.706-29.475,65.706-65.705S248.36,169.801,212.133,169.801z M212.133,287.195c-28.499,0-51.688-23.188-51.688-51.688
- c0-28.5,23.189-51.688,51.688-51.688c28.5,0,51.688,23.188,51.688,51.688C263.821,264.006,240.633,287.195,212.133,287.195z"/>
- <polygon points="204.228,247.717 186.491,231.414 177.005,241.739 205.515,267.928 247.874,217.711 237.166,208.67 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.765px" height="317.765px" viewBox="0 0 317.765 317.765" style="enable-background:new 0 0 317.765 317.765;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M45.472,89.304c2.127,0.465,4.1,0.435,10.171-4.227c2.689-2.067,6.671-5.554,10.354-10.418l1.608-2.134\r
+ c13.772-18.317,46.016-61.202,92.584-58.875c38.405,2.803,65.626,31.804,78.726,83.879c0.445,1.77,0.719,2.856,1.013,3.689\r
+ c2.002,8.516,5.355,19.126,10.194,22.617c1.201,0.869,2.588,1.283,3.967,1.283c2.102,0,4.172-0.979,5.499-2.814\r
+ c2.118-2.93,1.554-6.985-1.225-9.23c-1.335-1.731-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.762-0.362-1.121\r
+ c-0.124-0.443-0.37-1.406-0.589-2.272c-2.077-8.252-7.591-30.178-20.964-50.799C213.827,16.796,190.279,2.229,161.09,0.124\r
+ c-0.05-0.005-0.094-0.005-0.144-0.009C107.148-2.627,71.838,44.33,56.764,64.382l-1.588,2.104\r
+ c-4.127,5.457-8.999,8.853-10.677,9.837c-0.575,0.221-1.121,0.525-1.629,0.916c-2.11,1.602-3.14,4.324-2.573,6.906\r
+ C40.868,86.718,42.894,88.736,45.472,89.304z"/>\r
+ <path d="M215.295,115.305c5.12-12.783,5.243-25.991,0.343-36.234c-4.374-9.135-12.525-15.759-23.572-19.14\r
+ c-16.214-4.962-35.871,4.043-53.873,24.674c-0.231,0.251-25.865,27.213-52.785,43.694c-0.2,0.12-19.903,11.943-40.478,17.547\r
+ c-3.614,0.984-5.751,4.709-4.762,8.323c0.987,3.614,4.709,5.746,8.323,4.76c22.388-6.097,43.062-18.499,43.968-19.044\r
+ c29.198-17.879,55.678-46.061,55.904-46.321c10.935-12.523,27.109-24.533,39.733-20.668c7.423,2.274,12.58,6.322,15.308,12.031\r
+ c3.268,6.831,3.012,16.063-0.695,25.339c-6.916,17.263-28.424,38.109-60.573,58.697c-16.124,10.335-56.724,35.683-85.395,47.94\r
+ c-3.443,1.472-5.039,5.455-3.568,8.901c1.097,2.57,3.599,4.113,6.233,4.113c0.89,0,1.795-0.175,2.665-0.548\r
+ c29.607-12.658,70.969-38.472,87.375-48.98C173.866,164.75,205.104,140.768,215.295,115.305z"/>\r
+ <path d="M106.094,64.687c-3.075,3.391-5.838,7.029-8.811,10.506c-3.893,4.555-8.158,8.809-12.602,12.821\r
+ c-4.572,4.128-8.266,7.082-13.66,10.177c-5.722,3.284-11.546,6.602-17.472,9.486c-2.04,0.994-3.792,1.639-6.083,2.331\r
+ c-3.54,1.061-5.73,4.712-4.738,8.34c0.963,3.498,4.803,5.799,8.343,4.738c6.935-2.086,13.214-5.653,19.474-9.209\r
+ c5.291-3.008,10.54-5.713,15.401-9.409c9.464-7.202,17.616-15.612,25.112-24.811c3.037-3.725,6.283-7.275,9.671-10.681\r
+ c1.854-1.862,3.765-3.657,5.722-5.409c1.013-0.911,2.046-1.8,3.095-2.68c0.525-0.445,1.068-0.883,1.602-1.321\r
+ c0.144-0.116,1.191-0.943,1.465-1.16c4.724-3.621,9.751-6.834,15.044-9.553c4.996-2.568,10.018-4.37,16.106-5.635\r
+ c2.012-0.421,2.457-0.467,3.963-0.621c3.675-0.382,6.786-2.796,6.786-6.781c0-3.408-3.098-7.163-6.786-6.779\r
+ C143.211,31.567,122.255,46.888,106.094,64.687z"/>\r
+ <path d="M53.326,194.516c14.736-5.055,90.365-33.298,132.72-92.663c2.173-3.049,1.465-7.283-1.581-9.456\r
+ c-3.046-2.175-7.282-1.468-9.459,1.581c-39.95,55.995-112.036,82.89-126.083,87.711c-0.301,0.103-0.486,0.171-0.546,0.198\r
+ c-3.504,1.324-5.27,5.239-3.942,8.744c1.026,2.71,3.605,4.38,6.346,4.38c0.767,0,1.545-0.133,2.313-0.41L53.326,194.516z"/>\r
+ <path d="M141.726,223.128c1.572-7.275,4.173-14.164,7.667-20.509c-8.152,4.559-18.619,11.365-31.792,20.048\r
+ c-16.926,11.162-36.119,23.808-44.462,26.056c-3.619,0.972-5.765,4.695-4.789,8.31c0.819,3.028,3.552,5.023,6.541,5.023\r
+ c0.589,0,1.177-0.075,1.766-0.236c10.465-2.816,28.896-14.965,48.408-27.825C130.398,230.476,136.175,226.674,141.726,223.128z"/>\r
+ <path d="M140.569,248.402c-9.212,5.886-21.135,14.359-36.166,25.334c-3.619,2.639-6.741,4.921-8.911,6.454\r
+ c-3.06,2.159-3.783,6.393-1.629,9.448c1.328,1.872,3.424,2.868,5.544,2.868c1.357,0,2.722-0.4,3.906-1.242\r
+ c2.253-1.591,5.422-3.901,9.084-6.574c6.771-4.941,19.97-14.578,31.272-22.106C142.198,258.025,141.158,253.282,140.569,248.402z"\r
+ />\r
+ <path d="M153.279,282.168c-11.834,4.031-28.315,20.591-31.709,24.102c-2.608,2.69-2.541,6.981,0.15,9.586\r
+ c1.321,1.276,3.017,1.909,4.716,1.909c1.772,0,3.547-0.688,4.875-2.063c9.083-9.38,21.982-20.036,26.988-20.902\r
+ c2.298-0.394,5.155,0.575,8.396,2.303C161.595,292.732,157.077,287.719,153.279,282.168z"/>\r
+ <path d="M257.62,161.848c-5.653-2.389-11.56-4.897-16.316-8.858c-5.236-4.355-7.669-10.079-8.761-16.683\r
+ c-1.424-8.614-14.489-4.948-13.079,3.605c1.926,11.663,8.274,19.763,16.84,25.814c6.981,1.906,13.565,4.773,19.603,8.47\r
+ c1.649-0.346,3.128-1.314,4.157-3.066C261.741,168.248,261.029,163.286,257.62,161.848z"/>\r
+ <path d="M198.533,160.681c-2.464,0.675-4.702,3.146-5.04,5.797c4.021-1.256,8.199-2.176,12.477-2.754\r
+ C204.358,161.277,201.723,159.802,198.533,160.681z"/>\r
+ <path d="M212.133,169.801c-36.233,0-65.705,29.476-65.705,65.706s29.472,65.705,65.705,65.705\r
+ c36.228,0,65.706-29.475,65.706-65.705S248.36,169.801,212.133,169.801z M212.133,287.195c-28.499,0-51.688-23.188-51.688-51.688\r
+ c0-28.5,23.189-51.688,51.688-51.688c28.5,0,51.688,23.188,51.688,51.688C263.821,264.006,240.633,287.195,212.133,287.195z"/>\r
+ <polygon points="204.228,247.717 186.491,231.414 177.005,241.739 205.515,267.928 247.874,217.711 237.166,208.67 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="352.968px" height="352.969px" viewBox="0 0 352.968 352.969" style="enable-background:new 0 0 352.968 352.969;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M68.922,87.914c-2.11,1.602-3.14,4.324-2.573,6.906c0.575,2.584,2.594,4.601,5.183,5.169
- c2.127,0.467,4.1,0.435,10.164-4.226c2.698-2.067,6.678-5.554,10.354-10.417l1.608-2.135
- c13.772-18.315,46.016-61.202,92.583-58.875c38.403,2.803,65.634,31.806,78.724,83.879c0.444,1.769,0.719,2.855,1.02,3.689
- c1.999,8.516,5.359,19.126,10.191,22.617c1.204,0.869,2.587,1.283,3.963,1.283c2.111,0,4.182-0.979,5.503-2.815
- c2.121-2.929,1.554-6.984-1.219-9.229c-1.342-1.731-3.86-8.981-5.352-15.461c-0.09-0.385-0.213-0.76-0.37-1.121
- c-0.123-0.441-0.366-1.406-0.582-2.271c-2.08-8.254-7.59-30.18-20.96-50.799c-17.279-26.626-40.823-41.192-70.015-43.299
- c-0.048-0.003-0.092-0.003-0.144-0.008C133.204,8.051,97.895,55.008,82.823,75.06l-1.588,2.106
- c-4.127,5.455-8.999,8.852-10.684,9.835C69.983,87.222,69.438,87.528,68.922,87.914z"/>
- <path d="M241.351,125.994c5.113-12.784,5.236-25.992,0.336-36.234c-4.374-9.136-12.525-15.759-23.565-19.14
- c-16.214-4.962-35.871,4.043-53.88,24.674c-0.231,0.251-25.865,27.214-52.778,43.694c-0.199,0.12-19.91,11.943-40.484,17.547
- c-3.614,0.984-5.744,4.709-4.755,8.323c0.977,3.612,4.709,5.748,8.322,4.758c22.381-6.095,43.056-18.495,43.961-19.042
- c29.198-17.879,55.687-46.061,55.911-46.319c10.93-12.525,27.109-24.534,39.727-20.668c7.423,2.274,12.58,6.321,15.308,12.029
- c3.274,6.831,3.019,16.063-0.695,25.339c-6.909,17.263-28.417,38.109-60.573,58.697c-16.127,10.331-56.721,35.68-85.388,47.938
- c-3.45,1.472-5.042,5.455-3.575,8.897c1.101,2.573,3.605,4.113,6.233,4.113c0.89,0,1.795-0.171,2.664-0.544
- c29.607-12.658,70.969-38.475,87.382-48.981C199.916,175.44,231.161,151.453,241.351,125.994z"/>
- <path d="M132.15,75.371c-3.082,3.393-5.838,7.029-8.817,10.506c-3.893,4.555-8.152,8.81-12.602,12.821
- c-4.565,4.129-8.267,7.084-13.66,10.178c-5.715,3.283-11.546,6.602-17.472,9.486c-2.04,0.996-3.785,1.639-6.076,2.33
- c-3.54,1.061-5.737,4.712-4.738,8.34c0.956,3.498,4.796,5.801,8.336,4.738c6.935-2.086,13.222-5.652,19.481-9.209
- c5.284-3.006,10.533-5.713,15.395-9.409c9.471-7.202,17.623-15.612,25.119-24.811c3.03-3.725,6.276-7.275,9.664-10.68
- c1.853-1.862,3.771-3.655,5.722-5.407c1.02-0.912,2.055-1.802,3.096-2.681c0.532-0.445,1.067-0.883,1.608-1.321
- c0.144-0.117,1.198-0.946,1.465-1.164c4.724-3.617,9.751-6.83,15.043-9.549c4.997-2.568,10.011-4.37,16.1-5.634
- c2.019-0.421,2.457-0.466,3.97-0.621c3.675-0.382,6.782-2.796,6.782-6.779c0-3.411-3.101-7.163-6.782-6.781
- C169.267,42.251,148.304,57.576,132.15,75.371z"/>
- <path d="M79.382,205.204c14.729-5.054,90.365-33.297,132.71-92.663c2.176-3.049,1.471-7.282-1.582-9.454
- c-3.045-2.176-7.282-1.47-9.448,1.579c-39.95,55.995-112.043,82.89-126.084,87.715c-0.303,0.1-0.481,0.164-0.548,0.191
- c-3.504,1.328-5.263,5.243-3.942,8.747c1.027,2.71,3.605,4.381,6.347,4.381c0.768,0,1.552-0.138,2.313-0.411L79.382,205.204z"/>
- <path d="M263.889,245.569c-9.396-3.132-20.902-11.321-32.018-19.24c-16.111-11.471-30.012-21.381-41.346-19.427
- c-8.515,1.472-23.389,10.975-46.872,26.456c-16.933,11.163-36.119,23.809-44.466,26.057c-3.612,0.972-5.758,4.695-4.783,8.309
- c0.813,3.029,3.552,5.024,6.542,5.024c0.582,0,1.177-0.075,1.766-0.236c10.458-2.816,28.89-14.965,48.405-27.825
- c15.762-10.391,35.38-23.322,41.714-24.414c5.76-0.985,19.849,9.041,31.173,17.11c11.933,8.494,24.276,17.286,35.594,21.061
- c3.556,1.188,7.392-0.739,8.576-4.285C269.358,250.593,267.435,246.753,263.889,245.569z"/>
- <path d="M246.909,278.784c-5.462-1.978-14.346-7.464-22.942-12.771c-18.15-11.214-29.684-18.021-37.965-16.59
- c-8.388,1.447-25.99,13.418-55.552,34.994c-3.619,2.636-6.742,4.922-8.904,6.455c-3.06,2.155-3.792,6.393-1.629,9.444
- c1.321,1.876,3.417,2.875,5.544,2.875c1.348,0,2.715-0.404,3.908-1.246c2.252-1.591,5.414-3.901,9.076-6.577
- c11.764-8.586,43.013-31.401,49.792-32.572c4.229-0.287,19.489,9.124,28.603,14.75c9.6,5.934,18.668,11.539,25.461,13.989
- c3.521,1.276,7.405-0.547,8.682-4.072C252.254,283.945,250.434,280.058,246.909,278.784z"/>
- <path d="M224.008,312.496c-3.806-2.487-7.311-4.986-10.698-7.402c-11.122-7.939-20.731-14.801-31.265-12.97
- c-11.87,2.047-30.759,21.046-34.427,24.831c-2.601,2.69-2.534,6.981,0.158,9.586c1.314,1.276,3.017,1.913,4.716,1.913
- c1.774,0,3.54-0.691,4.875-2.067c9.076-9.38,21.976-20.037,26.986-20.902c4.948-0.849,12.429,4.476,21.091,10.649
- c3.329,2.382,7.107,5.078,11.156,7.721c3.138,2.046,7.347,1.163,9.387-1.972C228.026,318.745,227.142,314.543,224.008,312.496z"/>
- <path d="M283.676,172.531c-5.653-2.387-11.56-4.895-16.316-8.856c-5.243-4.354-7.68-10.078-8.768-16.683
- c-1.417-8.614-14.482-4.949-13.072,3.605c2.895,17.592,15.844,27.11,31.312,33.647c3.404,1.437,7.234,1.061,9.273-2.434
- C287.797,178.933,287.085,173.972,283.676,172.531z"/>
- <path d="M270.515,207.911c-5.093-1.567-8.952-3.559-14.346-6.741c-9.87-5.831-18.87-14.284-23.243-25.071
- c-1.39-3.42-4.463-5.804-8.344-4.735c-3.251,0.894-6.125,4.909-4.736,8.342c8.083,19.924,26.632,34.984,47.062,41.278
- C275.292,223.567,278.844,210.479,270.515,207.911z"/>
- <polygon points="10.617,10.679 76.504,10.679 76.504,0.166 0.104,0.166 0.104,76.565 10.617,76.565 "/>
- <polygon points="276.565,0.166 276.565,10.679 342.456,10.679 342.456,76.565 352.968,76.565 352.968,0.166 "/>
- <polygon points="10.513,276.402 0,276.402 0,352.803 76.396,352.803 76.396,342.29 10.513,342.29 "/>
- <polygon points="342.346,342.29 276.456,342.29 276.456,352.803 352.859,352.803 352.859,276.402 342.346,276.402 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="352.968px" height="352.969px" viewBox="0 0 352.968 352.969" style="enable-background:new 0 0 352.968 352.969;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M68.922,87.914c-2.11,1.602-3.14,4.324-2.573,6.906c0.575,2.584,2.594,4.601,5.183,5.169\r
+ c2.127,0.467,4.1,0.435,10.164-4.226c2.698-2.067,6.678-5.554,10.354-10.417l1.608-2.135\r
+ c13.772-18.315,46.016-61.202,92.583-58.875c38.403,2.803,65.634,31.806,78.724,83.879c0.444,1.769,0.719,2.855,1.02,3.689\r
+ c1.999,8.516,5.359,19.126,10.191,22.617c1.204,0.869,2.587,1.283,3.963,1.283c2.111,0,4.182-0.979,5.503-2.815\r
+ c2.121-2.929,1.554-6.984-1.219-9.229c-1.342-1.731-3.86-8.981-5.352-15.461c-0.09-0.385-0.213-0.76-0.37-1.121\r
+ c-0.123-0.441-0.366-1.406-0.582-2.271c-2.08-8.254-7.59-30.18-20.96-50.799c-17.279-26.626-40.823-41.192-70.015-43.299\r
+ c-0.048-0.003-0.092-0.003-0.144-0.008C133.204,8.051,97.895,55.008,82.823,75.06l-1.588,2.106\r
+ c-4.127,5.455-8.999,8.852-10.684,9.835C69.983,87.222,69.438,87.528,68.922,87.914z"/>\r
+ <path d="M241.351,125.994c5.113-12.784,5.236-25.992,0.336-36.234c-4.374-9.136-12.525-15.759-23.565-19.14\r
+ c-16.214-4.962-35.871,4.043-53.88,24.674c-0.231,0.251-25.865,27.214-52.778,43.694c-0.199,0.12-19.91,11.943-40.484,17.547\r
+ c-3.614,0.984-5.744,4.709-4.755,8.323c0.977,3.612,4.709,5.748,8.322,4.758c22.381-6.095,43.056-18.495,43.961-19.042\r
+ c29.198-17.879,55.687-46.061,55.911-46.319c10.93-12.525,27.109-24.534,39.727-20.668c7.423,2.274,12.58,6.321,15.308,12.029\r
+ c3.274,6.831,3.019,16.063-0.695,25.339c-6.909,17.263-28.417,38.109-60.573,58.697c-16.127,10.331-56.721,35.68-85.388,47.938\r
+ c-3.45,1.472-5.042,5.455-3.575,8.897c1.101,2.573,3.605,4.113,6.233,4.113c0.89,0,1.795-0.171,2.664-0.544\r
+ c29.607-12.658,70.969-38.475,87.382-48.981C199.916,175.44,231.161,151.453,241.351,125.994z"/>\r
+ <path d="M132.15,75.371c-3.082,3.393-5.838,7.029-8.817,10.506c-3.893,4.555-8.152,8.81-12.602,12.821\r
+ c-4.565,4.129-8.267,7.084-13.66,10.178c-5.715,3.283-11.546,6.602-17.472,9.486c-2.04,0.996-3.785,1.639-6.076,2.33\r
+ c-3.54,1.061-5.737,4.712-4.738,8.34c0.956,3.498,4.796,5.801,8.336,4.738c6.935-2.086,13.222-5.652,19.481-9.209\r
+ c5.284-3.006,10.533-5.713,15.395-9.409c9.471-7.202,17.623-15.612,25.119-24.811c3.03-3.725,6.276-7.275,9.664-10.68\r
+ c1.853-1.862,3.771-3.655,5.722-5.407c1.02-0.912,2.055-1.802,3.096-2.681c0.532-0.445,1.067-0.883,1.608-1.321\r
+ c0.144-0.117,1.198-0.946,1.465-1.164c4.724-3.617,9.751-6.83,15.043-9.549c4.997-2.568,10.011-4.37,16.1-5.634\r
+ c2.019-0.421,2.457-0.466,3.97-0.621c3.675-0.382,6.782-2.796,6.782-6.779c0-3.411-3.101-7.163-6.782-6.781\r
+ C169.267,42.251,148.304,57.576,132.15,75.371z"/>\r
+ <path d="M79.382,205.204c14.729-5.054,90.365-33.297,132.71-92.663c2.176-3.049,1.471-7.282-1.582-9.454\r
+ c-3.045-2.176-7.282-1.47-9.448,1.579c-39.95,55.995-112.043,82.89-126.084,87.715c-0.303,0.1-0.481,0.164-0.548,0.191\r
+ c-3.504,1.328-5.263,5.243-3.942,8.747c1.027,2.71,3.605,4.381,6.347,4.381c0.768,0,1.552-0.138,2.313-0.411L79.382,205.204z"/>\r
+ <path d="M263.889,245.569c-9.396-3.132-20.902-11.321-32.018-19.24c-16.111-11.471-30.012-21.381-41.346-19.427\r
+ c-8.515,1.472-23.389,10.975-46.872,26.456c-16.933,11.163-36.119,23.809-44.466,26.057c-3.612,0.972-5.758,4.695-4.783,8.309\r
+ c0.813,3.029,3.552,5.024,6.542,5.024c0.582,0,1.177-0.075,1.766-0.236c10.458-2.816,28.89-14.965,48.405-27.825\r
+ c15.762-10.391,35.38-23.322,41.714-24.414c5.76-0.985,19.849,9.041,31.173,17.11c11.933,8.494,24.276,17.286,35.594,21.061\r
+ c3.556,1.188,7.392-0.739,8.576-4.285C269.358,250.593,267.435,246.753,263.889,245.569z"/>\r
+ <path d="M246.909,278.784c-5.462-1.978-14.346-7.464-22.942-12.771c-18.15-11.214-29.684-18.021-37.965-16.59\r
+ c-8.388,1.447-25.99,13.418-55.552,34.994c-3.619,2.636-6.742,4.922-8.904,6.455c-3.06,2.155-3.792,6.393-1.629,9.444\r
+ c1.321,1.876,3.417,2.875,5.544,2.875c1.348,0,2.715-0.404,3.908-1.246c2.252-1.591,5.414-3.901,9.076-6.577\r
+ c11.764-8.586,43.013-31.401,49.792-32.572c4.229-0.287,19.489,9.124,28.603,14.75c9.6,5.934,18.668,11.539,25.461,13.989\r
+ c3.521,1.276,7.405-0.547,8.682-4.072C252.254,283.945,250.434,280.058,246.909,278.784z"/>\r
+ <path d="M224.008,312.496c-3.806-2.487-7.311-4.986-10.698-7.402c-11.122-7.939-20.731-14.801-31.265-12.97\r
+ c-11.87,2.047-30.759,21.046-34.427,24.831c-2.601,2.69-2.534,6.981,0.158,9.586c1.314,1.276,3.017,1.913,4.716,1.913\r
+ c1.774,0,3.54-0.691,4.875-2.067c9.076-9.38,21.976-20.037,26.986-20.902c4.948-0.849,12.429,4.476,21.091,10.649\r
+ c3.329,2.382,7.107,5.078,11.156,7.721c3.138,2.046,7.347,1.163,9.387-1.972C228.026,318.745,227.142,314.543,224.008,312.496z"/>\r
+ <path d="M283.676,172.531c-5.653-2.387-11.56-4.895-16.316-8.856c-5.243-4.354-7.68-10.078-8.768-16.683\r
+ c-1.417-8.614-14.482-4.949-13.072,3.605c2.895,17.592,15.844,27.11,31.312,33.647c3.404,1.437,7.234,1.061,9.273-2.434\r
+ C287.797,178.933,287.085,173.972,283.676,172.531z"/>\r
+ <path d="M270.515,207.911c-5.093-1.567-8.952-3.559-14.346-6.741c-9.87-5.831-18.87-14.284-23.243-25.071\r
+ c-1.39-3.42-4.463-5.804-8.344-4.735c-3.251,0.894-6.125,4.909-4.736,8.342c8.083,19.924,26.632,34.984,47.062,41.278\r
+ C275.292,223.567,278.844,210.479,270.515,207.911z"/>\r
+ <polygon points="10.617,10.679 76.504,10.679 76.504,0.166 0.104,0.166 0.104,76.565 10.617,76.565 "/>\r
+ <polygon points="276.565,0.166 276.565,10.679 342.456,10.679 342.456,76.565 352.968,76.565 352.968,0.166 "/>\r
+ <polygon points="10.513,276.402 0,276.402 0,352.803 76.396,352.803 76.396,342.29 10.513,342.29 "/>\r
+ <polygon points="342.346,342.29 276.456,342.29 276.456,352.803 352.859,352.803 352.859,276.402 342.346,276.402 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134
- c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691
- c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813
- c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121
- c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122
- c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106
- c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908
- C40.874,86.72,42.894,88.739,45.479,89.304z"/>
- <path d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142
- c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545
- c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042
- c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031
- c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934
- c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548
- c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>
- <path d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823
- c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331
- c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209
- c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683
- c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321
- c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637
- c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781
- C143.217,31.57,122.251,46.891,106.099,64.685z"/>
- <path d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455
- c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198
- c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>
- <path d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047
- c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023
- c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>
- <path d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454
- c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243
- c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>
- <path d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585
- c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903
- c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>
- <path d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685
- c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47
- c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>
- <path d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754
- C204.355,161.281,201.728,159.798,198.531,160.678z"/>
- <path d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706
- c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688
- s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>
- <polygon points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914
- 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134\r
+ c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691\r
+ c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813\r
+ c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121\r
+ c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122\r
+ c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106\r
+ c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908\r
+ C40.874,86.72,42.894,88.739,45.479,89.304z"/>\r
+ <path d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142\r
+ c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545\r
+ c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042\r
+ c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031\r
+ c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934\r
+ c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548\r
+ c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>\r
+ <path d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823\r
+ c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331\r
+ c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209\r
+ c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683\r
+ c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321\r
+ c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637\r
+ c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781\r
+ C143.217,31.57,122.251,46.891,106.099,64.685z"/>\r
+ <path d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455\r
+ c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198\r
+ c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>\r
+ <path d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047\r
+ c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023\r
+ c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>\r
+ <path d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454\r
+ c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243\r
+ c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>\r
+ <path d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585\r
+ c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903\r
+ c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>\r
+ <path d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685\r
+ c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47\r
+ c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>\r
+ <path d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754\r
+ C204.355,161.281,201.728,159.798,198.531,160.678z"/>\r
+ <path d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706\r
+ c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688\r
+ s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>\r
+ <polygon points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914 \r
+ 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"
- xml:space="preserve">
-<g>
- <g>
- <path fill="#fff" d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134
- c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691
- c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813
- c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121
- c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122
- c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106
- c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908
- C40.874,86.72,42.894,88.739,45.479,89.304z"/>
- <path fill="#fff" d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142
- c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545
- c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042
- c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031
- c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934
- c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548
- c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>
- <path fill="#fff" d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823
- c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331
- c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209
- c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683
- c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321
- c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637
- c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781
- C143.217,31.57,122.251,46.891,106.099,64.685z"/>
- <path fill="#fff" d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455
- c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198
- c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>
- <path fill="#fff" d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047
- c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023
- c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>
- <path fill="#fff" d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454
- c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243
- c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>
- <path fill="#fff" d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585
- c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903
- c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>
- <path fill="#fff" d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685
- c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47
- c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>
- <path fill="#fff" d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754
- C204.355,161.281,201.728,159.798,198.531,160.678z"/>
- <path fill="#fff" d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706
- c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688
- s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>
- <polygon fill="#fff" points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914
- 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path fill="#fff" d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134\r
+ c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691\r
+ c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813\r
+ c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121\r
+ c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122\r
+ c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106\r
+ c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908\r
+ C40.874,86.72,42.894,88.739,45.479,89.304z"/>\r
+ <path fill="#fff" d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142\r
+ c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545\r
+ c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042\r
+ c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031\r
+ c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934\r
+ c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548\r
+ c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>\r
+ <path fill="#fff" d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823\r
+ c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331\r
+ c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209\r
+ c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683\r
+ c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321\r
+ c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637\r
+ c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781\r
+ C143.217,31.57,122.251,46.891,106.099,64.685z"/>\r
+ <path fill="#fff" d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455\r
+ c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198\r
+ c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>\r
+ <path fill="#fff" d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047\r
+ c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023\r
+ c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>\r
+ <path fill="#fff" d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454\r
+ c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243\r
+ c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>\r
+ <path fill="#fff" d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585\r
+ c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903\r
+ c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>\r
+ <path fill="#fff" d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685\r
+ c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47\r
+ c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>\r
+ <path fill="#fff" d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754\r
+ C204.355,161.281,201.728,159.798,198.531,160.678z"/>\r
+ <path fill="#fff" d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706\r
+ c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688\r
+ s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>\r
+ <polygon fill="#fff" points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914 \r
+ 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="322.053px" height="322.053px" viewBox="0 0 322.053 322.053" style="enable-background:new 0 0 322.053 322.053;"
- xml:space="preserve">
-<g>
- <g>
- <g>
- <path d="M98.214,48.391c0.542,0.117,1.044,0.11,2.585-1.076c0.688-0.525,1.701-1.415,2.637-2.652l0.405-0.542
- c3.508-4.661,11.712-15.578,23.567-14.98c9.773,0.71,16.702,8.093,20.033,21.347c0.116,0.449,0.187,0.726,0.26,0.939
- c0.511,2.165,1.363,4.866,2.592,5.758c0.31,0.221,0.659,0.325,1.01,0.325c0.537,0,1.066-0.248,1.398-0.715
- c0.541-0.746,0.397-1.776-0.308-2.348c-0.344-0.445-0.98-2.284-1.364-3.936c-0.027-0.098-0.055-0.191-0.094-0.287
- c-0.03-0.108-0.094-0.358-0.15-0.575c-0.525-2.101-1.93-7.681-5.33-12.927c-4.397-6.777-10.39-10.484-17.819-11.024
- c-0.01,0-0.024,0-0.04,0c-13.687-0.7-22.675,11.252-26.51,16.354l-0.402,0.534c-1.052,1.388-2.288,2.255-2.719,2.505
- c-0.144,0.056-0.28,0.137-0.411,0.231c-0.539,0.407-0.802,1.1-0.659,1.759S97.555,48.247,98.214,48.391z"/>
- <path d="M141.52,45.792c-1.114-2.327-3.188-4.018-5.999-4.875c-4.132-1.261-9.125,1.026-13.712,6.276
- c-0.06,0.07-6.581,6.932-13.432,11.122c-0.053,0.032-5.066,3.039-10.302,4.464c-0.917,0.25-1.458,1.203-1.213,2.117
- c0.253,0.922,1.203,1.464,2.122,1.213c5.694-1.549,10.958-4.711,11.185-4.846c7.43-4.553,14.171-11.726,14.231-11.786
- c2.782-3.189,6.899-6.246,10.113-5.264c1.889,0.582,3.2,1.608,3.895,3.063c0.83,1.739,0.767,4.089-0.18,6.448
- c-1.054,2.638-3.477,5.604-6.992,8.687c0.421,0.511,0.803,1.059,1.126,1.668c0.238,0.465,0.396,0.95,0.589,1.431
- c3.704-3.155,6.988-6.764,8.48-10.5C142.736,51.755,142.764,48.395,141.52,45.792z"/>
- <path d="M113.643,42.128c-0.787,0.862-1.488,1.788-2.245,2.671c-0.993,1.16-2.076,2.247-3.207,3.267
- c-1.164,1.05-2.106,1.8-3.48,2.585c-1.451,0.838-2.936,1.682-4.447,2.414c-0.515,0.253-0.959,0.417-1.545,0.592
- c-0.9,0.27-1.461,1.203-1.203,2.124c0.239,0.891,1.22,1.477,2.116,1.206c1.764-0.529,3.366-1.438,4.959-2.344
- c1.343-0.768,2.681-1.455,3.915-2.394c2.411-1.833,4.484-3.977,6.393-6.317c0.773-0.948,1.6-1.848,2.458-2.717
- c0.474-0.472,0.96-0.931,1.455-1.377c0.26-0.231,0.525-0.458,0.792-0.683c0.133-0.113,0.27-0.224,0.407-0.335
- c0.038-0.029,0.304-0.239,0.375-0.299c1.198-0.92,2.478-1.733,3.826-2.428c1.273-0.655,2.547-1.11,4.096-1.434
- c0.515-0.108,0.628-0.115,1.009-0.158c0.939-0.094,1.729-0.711,1.729-1.723c0-0.869-0.792-1.826-1.729-1.725
- C123.088,33.698,117.751,37.598,113.643,42.128z"/>
- <path d="M127.044,59.342c2.505-2.315,4.889-4.878,6.938-7.755c0.555-0.778,0.375-1.853-0.4-2.411
- c-0.773-0.558-1.853-0.372-2.406,0.404c-2.342,3.285-5.128,6.146-8.058,8.665C124.472,58.456,125.807,58.806,127.044,59.342z"/>
- <path d="M148.049,64.598c-1.333-1.107-1.953-2.562-2.233-4.244c-0.361-2.193-3.683-1.257-3.327,0.919
- c0.354,2.134,1.294,3.799,2.601,5.14h6.086C150.07,65.923,148.977,65.37,148.049,64.598z"/>
- </g>
- <path d="M114.468,66.2H93.406v1.127h20.276C113.91,66.932,114.17,66.551,114.468,66.2z"/>
- <path d="M134.39,66.2c0.368,0.331,0.666,0.739,0.98,1.127h26.114V66.2H134.39z"/>
- <rect x="164.578" y="65.654" width="6.242" height="2.225"/>
- <rect x="83.271" y="65.654" width="6.246" height="2.225"/>
- <g>
- <path style="opacity:0.4;enable-background:new ;" d="M111.295,75.388c-3.498,1.987-7.152,3.929-10.267,5.26
- c-0.876,0.371-1.283,1.391-0.912,2.267c0.281,0.652,0.922,1.044,1.588,1.044c0.224,0,0.458-0.044,0.676-0.14
- c2.615-1.114,5.587-2.642,8.53-4.264C110.98,78.153,111.117,76.769,111.295,75.388z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M113.251,67.327h-4.156c-4.755,2.447-8.613,3.867-10.061,4.36
- c-0.074,0.025-0.122,0.046-0.137,0.049c-0.893,0.34-1.341,1.334-1.004,2.225c0.262,0.691,0.92,1.116,1.615,1.116
- c0.198,0,0.395-0.033,0.588-0.103l0.063-0.024c1.696-0.582,6.591-2.397,12.422-5.594C112.789,68.678,113,68.001,113.251,67.327z"
- />
- <path style="opacity:0.4;enable-background:new ;" d="M147.12,85.226c-2.394-0.799-5.32-2.885-8.151-4.896
- c-0.719-0.515-1.401-0.986-2.091-1.465c-0.297,1.107-0.845,2.154-1.685,3.023c0.605,0.417,1.205,0.842,1.779,1.248
- c3.034,2.163,6.174,4.397,9.055,5.357c0.907,0.307,1.882-0.188,2.183-1.091C148.511,86.5,148.02,85.523,147.12,85.226z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M152.828,67.327h-6.511c1.205,0.919,2.601,1.662,4.093,2.29
- c0.869,0.365,1.839,0.267,2.361-0.625C153.046,68.53,153.069,67.854,152.828,67.327z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M148.802,75.64c-1.293-0.395-2.278-0.903-3.648-1.713
- c-2.512-1.485-4.805-3.638-5.916-6.38c-0.031-0.075-0.07-0.144-0.104-0.219h-3.148c-0.171,0.359-0.225,0.758-0.074,1.133
- c2.062,5.072,6.781,8.905,11.978,10.506C150.022,79.625,150.922,76.292,148.802,75.64z"/>
- </g>
- </g>
- <g>
- <polygon points="149.521,120.506 177.35,120.506 177.35,92.675 173.517,92.675 173.517,116.671 149.521,116.671 "/>
- <polygon points="102.494,116.671 78.499,116.671 78.499,92.675 74.665,92.675 74.665,120.506 102.494,120.506 "/>
- <polygon points="78.499,3.831 102.494,3.831 102.494,0 74.665,0 74.665,27.825 78.499,27.825 "/>
- <polygon points="173.517,27.829 177.35,27.829 177.35,0 149.521,0 149.521,3.831 173.517,3.831 "/>
- </g>
- <path d="M246.231,211.503c0.779-8.938-1.362-16.502-6.358-22.497c-7.375-8.812-18.699-11.561-23.531-12.354
- c-3.08-7.717-7.775-12.799-13.973-15.119c-2.43-0.906-5.064-1.372-7.844-1.372c-4.65,0-8.846,1.283-11.669,2.42
- c-3.728-6.757-8.696-10.956-14.787-12.488c-1.678-0.424-3.448-0.64-5.26-0.64c-5.805,0-11.116,2.186-14.726,4.148
- c-1.254-8.36-2.898-28.229-4.11-42.851l-0.007-0.165c-2.699-32.719-3.554-41.477-5.005-44.024
- c-1.843-6.343-9.767-15.636-17.666-15.074c-5.217,0.318-11.798,4.611-13.476,23.264c0,65.688-1.845,114.256-2.254,124.139
- c-5.831,2.649-11.158,8.665-11.747,9.35c-18.762,20.714-9.868,35.939-9.483,36.569c14.339,25.098,43.965,74.527,44.235,74.979
- l0.578,0.955l0.288-0.175v0.448h94.73l3.498,1.037l4.896-16.741C252.233,267.743,246.901,217.058,246.231,211.503z M90.27,241.386
- c-0.274-0.479-6.542-11.779,8.697-28.616c1.627-1.903,6.744-7.067,10.823-8.138l2.421-0.657l0.104-2.499
- c0.029-0.39,2.358-51.18,2.337-126.405c0.919-10.121,3.621-16.531,7.038-16.738l0.154-0.003c4.236,0,9.825,6.71,10.66,10.604
- l0.49,2.292l0.284,0.05c1.039,5.823,2.594,24.665,3.855,39.875c4.128,49.977,4.625,50.129,7.888,51.101l1.679,0.493l1.384-1.061
- c0.736-0.548,7.394-5.375,14.726-5.375c1.25,0,2.467,0.152,3.582,0.438c4.854,1.217,8.803,5.179,11.759,11.76l1.547,3.474
- l3.289-1.909c0.222-0.12,5.564-3.039,11.529-3.039c1.957,0,3.788,0.308,5.448,0.934c4.709,1.76,8.284,6.105,10.643,12.923
- l0.732,2.101l2.211,0.206c0.13,0.01,13.678,1.389,21.046,10.218c3.84,4.586,5.451,10.548,4.784,17.728l-0.023,0.499l0.037,0.216
- c0.257,2.187,6.095,53.995-13.154,90.896l-3.341,11.263H133.11C126.816,303.491,102.692,263.116,90.27,241.386z"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="322.053px" height="322.053px" viewBox="0 0 322.053 322.053" style="enable-background:new 0 0 322.053 322.053;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <g>\r
+ <path d="M98.214,48.391c0.542,0.117,1.044,0.11,2.585-1.076c0.688-0.525,1.701-1.415,2.637-2.652l0.405-0.542\r
+ c3.508-4.661,11.712-15.578,23.567-14.98c9.773,0.71,16.702,8.093,20.033,21.347c0.116,0.449,0.187,0.726,0.26,0.939\r
+ c0.511,2.165,1.363,4.866,2.592,5.758c0.31,0.221,0.659,0.325,1.01,0.325c0.537,0,1.066-0.248,1.398-0.715\r
+ c0.541-0.746,0.397-1.776-0.308-2.348c-0.344-0.445-0.98-2.284-1.364-3.936c-0.027-0.098-0.055-0.191-0.094-0.287\r
+ c-0.03-0.108-0.094-0.358-0.15-0.575c-0.525-2.101-1.93-7.681-5.33-12.927c-4.397-6.777-10.39-10.484-17.819-11.024\r
+ c-0.01,0-0.024,0-0.04,0c-13.687-0.7-22.675,11.252-26.51,16.354l-0.402,0.534c-1.052,1.388-2.288,2.255-2.719,2.505\r
+ c-0.144,0.056-0.28,0.137-0.411,0.231c-0.539,0.407-0.802,1.1-0.659,1.759S97.555,48.247,98.214,48.391z"/>\r
+ <path d="M141.52,45.792c-1.114-2.327-3.188-4.018-5.999-4.875c-4.132-1.261-9.125,1.026-13.712,6.276\r
+ c-0.06,0.07-6.581,6.932-13.432,11.122c-0.053,0.032-5.066,3.039-10.302,4.464c-0.917,0.25-1.458,1.203-1.213,2.117\r
+ c0.253,0.922,1.203,1.464,2.122,1.213c5.694-1.549,10.958-4.711,11.185-4.846c7.43-4.553,14.171-11.726,14.231-11.786\r
+ c2.782-3.189,6.899-6.246,10.113-5.264c1.889,0.582,3.2,1.608,3.895,3.063c0.83,1.739,0.767,4.089-0.18,6.448\r
+ c-1.054,2.638-3.477,5.604-6.992,8.687c0.421,0.511,0.803,1.059,1.126,1.668c0.238,0.465,0.396,0.95,0.589,1.431\r
+ c3.704-3.155,6.988-6.764,8.48-10.5C142.736,51.755,142.764,48.395,141.52,45.792z"/>\r
+ <path d="M113.643,42.128c-0.787,0.862-1.488,1.788-2.245,2.671c-0.993,1.16-2.076,2.247-3.207,3.267\r
+ c-1.164,1.05-2.106,1.8-3.48,2.585c-1.451,0.838-2.936,1.682-4.447,2.414c-0.515,0.253-0.959,0.417-1.545,0.592\r
+ c-0.9,0.27-1.461,1.203-1.203,2.124c0.239,0.891,1.22,1.477,2.116,1.206c1.764-0.529,3.366-1.438,4.959-2.344\r
+ c1.343-0.768,2.681-1.455,3.915-2.394c2.411-1.833,4.484-3.977,6.393-6.317c0.773-0.948,1.6-1.848,2.458-2.717\r
+ c0.474-0.472,0.96-0.931,1.455-1.377c0.26-0.231,0.525-0.458,0.792-0.683c0.133-0.113,0.27-0.224,0.407-0.335\r
+ c0.038-0.029,0.304-0.239,0.375-0.299c1.198-0.92,2.478-1.733,3.826-2.428c1.273-0.655,2.547-1.11,4.096-1.434\r
+ c0.515-0.108,0.628-0.115,1.009-0.158c0.939-0.094,1.729-0.711,1.729-1.723c0-0.869-0.792-1.826-1.729-1.725\r
+ C123.088,33.698,117.751,37.598,113.643,42.128z"/>\r
+ <path d="M127.044,59.342c2.505-2.315,4.889-4.878,6.938-7.755c0.555-0.778,0.375-1.853-0.4-2.411\r
+ c-0.773-0.558-1.853-0.372-2.406,0.404c-2.342,3.285-5.128,6.146-8.058,8.665C124.472,58.456,125.807,58.806,127.044,59.342z"/>\r
+ <path d="M148.049,64.598c-1.333-1.107-1.953-2.562-2.233-4.244c-0.361-2.193-3.683-1.257-3.327,0.919\r
+ c0.354,2.134,1.294,3.799,2.601,5.14h6.086C150.07,65.923,148.977,65.37,148.049,64.598z"/>\r
+ </g>\r
+ <path d="M114.468,66.2H93.406v1.127h20.276C113.91,66.932,114.17,66.551,114.468,66.2z"/>\r
+ <path d="M134.39,66.2c0.368,0.331,0.666,0.739,0.98,1.127h26.114V66.2H134.39z"/>\r
+ <rect x="164.578" y="65.654" width="6.242" height="2.225"/>\r
+ <rect x="83.271" y="65.654" width="6.246" height="2.225"/>\r
+ <g>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M111.295,75.388c-3.498,1.987-7.152,3.929-10.267,5.26\r
+ c-0.876,0.371-1.283,1.391-0.912,2.267c0.281,0.652,0.922,1.044,1.588,1.044c0.224,0,0.458-0.044,0.676-0.14\r
+ c2.615-1.114,5.587-2.642,8.53-4.264C110.98,78.153,111.117,76.769,111.295,75.388z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M113.251,67.327h-4.156c-4.755,2.447-8.613,3.867-10.061,4.36\r
+ c-0.074,0.025-0.122,0.046-0.137,0.049c-0.893,0.34-1.341,1.334-1.004,2.225c0.262,0.691,0.92,1.116,1.615,1.116\r
+ c0.198,0,0.395-0.033,0.588-0.103l0.063-0.024c1.696-0.582,6.591-2.397,12.422-5.594C112.789,68.678,113,68.001,113.251,67.327z"\r
+ />\r
+ <path style="opacity:0.4;enable-background:new ;" d="M147.12,85.226c-2.394-0.799-5.32-2.885-8.151-4.896\r
+ c-0.719-0.515-1.401-0.986-2.091-1.465c-0.297,1.107-0.845,2.154-1.685,3.023c0.605,0.417,1.205,0.842,1.779,1.248\r
+ c3.034,2.163,6.174,4.397,9.055,5.357c0.907,0.307,1.882-0.188,2.183-1.091C148.511,86.5,148.02,85.523,147.12,85.226z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M152.828,67.327h-6.511c1.205,0.919,2.601,1.662,4.093,2.29\r
+ c0.869,0.365,1.839,0.267,2.361-0.625C153.046,68.53,153.069,67.854,152.828,67.327z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M148.802,75.64c-1.293-0.395-2.278-0.903-3.648-1.713\r
+ c-2.512-1.485-4.805-3.638-5.916-6.38c-0.031-0.075-0.07-0.144-0.104-0.219h-3.148c-0.171,0.359-0.225,0.758-0.074,1.133\r
+ c2.062,5.072,6.781,8.905,11.978,10.506C150.022,79.625,150.922,76.292,148.802,75.64z"/>\r
+ </g>\r
+ </g>\r
+ <g>\r
+ <polygon points="149.521,120.506 177.35,120.506 177.35,92.675 173.517,92.675 173.517,116.671 149.521,116.671 "/>\r
+ <polygon points="102.494,116.671 78.499,116.671 78.499,92.675 74.665,92.675 74.665,120.506 102.494,120.506 "/>\r
+ <polygon points="78.499,3.831 102.494,3.831 102.494,0 74.665,0 74.665,27.825 78.499,27.825 "/>\r
+ <polygon points="173.517,27.829 177.35,27.829 177.35,0 149.521,0 149.521,3.831 173.517,3.831 "/>\r
+ </g>\r
+ <path d="M246.231,211.503c0.779-8.938-1.362-16.502-6.358-22.497c-7.375-8.812-18.699-11.561-23.531-12.354\r
+ c-3.08-7.717-7.775-12.799-13.973-15.119c-2.43-0.906-5.064-1.372-7.844-1.372c-4.65,0-8.846,1.283-11.669,2.42\r
+ c-3.728-6.757-8.696-10.956-14.787-12.488c-1.678-0.424-3.448-0.64-5.26-0.64c-5.805,0-11.116,2.186-14.726,4.148\r
+ c-1.254-8.36-2.898-28.229-4.11-42.851l-0.007-0.165c-2.699-32.719-3.554-41.477-5.005-44.024\r
+ c-1.843-6.343-9.767-15.636-17.666-15.074c-5.217,0.318-11.798,4.611-13.476,23.264c0,65.688-1.845,114.256-2.254,124.139\r
+ c-5.831,2.649-11.158,8.665-11.747,9.35c-18.762,20.714-9.868,35.939-9.483,36.569c14.339,25.098,43.965,74.527,44.235,74.979\r
+ l0.578,0.955l0.288-0.175v0.448h94.73l3.498,1.037l4.896-16.741C252.233,267.743,246.901,217.058,246.231,211.503z M90.27,241.386\r
+ c-0.274-0.479-6.542-11.779,8.697-28.616c1.627-1.903,6.744-7.067,10.823-8.138l2.421-0.657l0.104-2.499\r
+ c0.029-0.39,2.358-51.18,2.337-126.405c0.919-10.121,3.621-16.531,7.038-16.738l0.154-0.003c4.236,0,9.825,6.71,10.66,10.604\r
+ l0.49,2.292l0.284,0.05c1.039,5.823,2.594,24.665,3.855,39.875c4.128,49.977,4.625,50.129,7.888,51.101l1.679,0.493l1.384-1.061\r
+ c0.736-0.548,7.394-5.375,14.726-5.375c1.25,0,2.467,0.152,3.582,0.438c4.854,1.217,8.803,5.179,11.759,11.76l1.547,3.474\r
+ l3.289-1.909c0.222-0.12,5.564-3.039,11.529-3.039c1.957,0,3.788,0.308,5.448,0.934c4.709,1.76,8.284,6.105,10.643,12.923\r
+ l0.732,2.101l2.211,0.206c0.13,0.01,13.678,1.389,21.046,10.218c3.84,4.586,5.451,10.548,4.784,17.728l-0.023,0.499l0.037,0.216\r
+ c0.257,2.187,6.095,53.995-13.154,90.896l-3.341,11.263H133.11C126.816,303.491,102.692,263.116,90.27,241.386z"/>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="335.075px" height="335.074px" viewBox="0 0 335.075 335.074" style="enable-background:new 0 0 335.075 335.074;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M101.22,40.756c-1.083,1.429-2.36,2.318-2.801,2.575c-0.147,0.06-0.291,0.14-0.428,0.238
- c-0.553,0.421-0.823,1.133-0.672,1.812c0.147,0.676,0.679,1.205,1.357,1.355c0.556,0.123,1.075,0.109,2.663-1.107
- c0.705-0.539,1.749-1.458,2.712-2.729l0.421-0.558c3.605-4.801,12.055-16.031,24.256-15.422
- c10.061,0.732,17.193,8.33,20.624,21.976c0.115,0.462,0.188,0.75,0.262,0.963c0.527,2.236,1.407,5.015,2.678,5.925
- c0.315,0.229,0.676,0.337,1.037,0.337c0.551,0,1.097-0.255,1.44-0.736c0.555-0.771,0.408-1.829-0.321-2.417
- c-0.351-0.455-1.006-2.351-1.403-4.048c-0.021-0.101-0.055-0.199-0.091-0.294c-0.03-0.115-0.097-0.368-0.154-0.595
- c-0.542-2.161-1.986-7.905-5.494-13.312c-4.524-6.974-10.692-10.79-18.338-11.341c-0.015,0-0.025,0-0.039-0.003
- c-14.094-0.717-23.346,11.585-27.295,16.838L101.22,40.756z"/>
- <path d="M114.56,40.286c-0.806,0.886-1.531,1.839-2.308,2.751c-1.023,1.194-2.135,2.31-3.302,3.36
- c-1.194,1.08-2.165,1.854-3.578,2.666c-1.499,0.859-3.027,1.729-4.579,2.484c-0.538,0.26-0.993,0.432-1.595,0.611
- c-0.929,0.281-1.504,1.237-1.241,2.187c0.248,0.917,1.254,1.518,2.184,1.24c1.819-0.547,3.461-1.483,5.102-2.414
- c1.384-0.789,2.76-1.497,4.033-2.464c2.481-1.889,4.615-4.09,6.577-6.497c0.796-0.974,1.648-1.906,2.534-2.799
- c0.483-0.491,0.984-0.955,1.499-1.417c0.267-0.238,0.537-0.472,0.81-0.7c0.137-0.116,0.277-0.232,0.421-0.351
- c0.036-0.029,0.298-0.231,0.375-0.298c1.241-0.95,2.558-1.795,3.949-2.51c1.311-0.669,2.625-1.141,4.22-1.475
- c0.529-0.111,0.645-0.118,1.04-0.164c0.96-0.098,1.778-0.732,1.778-1.778c0-0.89-0.806-1.874-1.778-1.776
- C124.284,31.609,118.79,35.621,114.56,40.286z"/>
- <path d="M154.895,68.173c0.438-0.753,0.251-2.053-0.638-2.428c-1.482-0.632-3.032-1.287-4.279-2.324
- c-1.373-1.138-2.011-2.639-2.295-4.37c-0.371-2.257-3.795-1.297-3.427,0.946c0.76,4.604,4.153,7.104,8.207,8.817
- C153.357,69.186,154.354,69.088,154.895,68.173z"/>
- <path d="M257.06,217.561c0.828-9.5-1.451-17.542-6.762-23.914c-7.844-9.366-19.88-12.289-25.017-13.135
- c-3.271-8.202-8.261-13.609-14.852-16.072c-2.581-0.963-5.387-1.458-8.337-1.458c-4.948,0-9.411,1.364-12.408,2.572
- c-3.96-7.18-9.247-11.642-15.715-13.271c-1.786-0.452-3.667-0.683-5.596-0.683c-6.17,0-11.812,2.32-15.652,4.408
- c-1.332-8.886-3.08-30.007-4.367-45.545l-0.01-0.178c-1.338-16.243-2.25-26.881-2.993-33.939c1.431,0.863,2.933,1.605,4.511,2.089
- c2.197,0.676,3.129-2.751,0.946-3.424c-1.336-0.411-2.348-0.936-3.758-1.766c-0.784-0.464-1.528-1.006-2.238-1.595
- c-0.611-4.745-1.143-7.044-1.781-8.166c-0.49-1.679-1.381-3.554-2.565-5.407c1.129-1.475,2.082-2.986,2.702-4.531
- c1.338-3.347,1.374-6.81,0.087-9.493c-1.145-2.397-3.284-4.129-6.177-5.012c-4.243-1.301-9.396,1.056-14.113,6.462
- c-0.027,0.031-1.485,1.545-3.689,3.575c-0.97,0.612-1.932,1.429-2.846,2.505c-2.183,1.839-4.71,3.788-7.296,5.368
- c-0.053,0.033-5.214,3.133-10.604,4.598c-0.949,0.26-1.507,1.237-1.247,2.183c0.258,0.946,1.233,1.508,2.183,1.244
- c5.862-1.595,11.28-4.846,11.518-4.989c0.512-0.312,1.006-0.659,1.504-0.993c-0.679,1.995-1.276,4.307-1.745,7.001
- c-5.256,2.786-9.598,4.41-11.165,4.942c-0.077,0.027-0.126,0.049-0.144,0.056c-0.917,0.348-1.381,1.371-1.03,2.288
- c0.271,0.708,0.946,1.146,1.662,1.146c0.204,0,0.405-0.036,0.605-0.106l0.063-0.023c1.408-0.484,4.948-1.787,9.406-3.992
- c-0.074,0.625-0.15,1.224-0.21,1.882c0,1.287,0,2.555-0.003,3.832c-2.878,1.583-5.761,3.063-8.299,4.144
- c-0.903,0.383-1.321,1.431-0.939,2.334c0.291,0.671,0.946,1.076,1.637,1.076c0.231,0,0.469-0.046,0.696-0.144
- c2.13-0.91,4.504-2.117,6.897-3.392c-0.14,65.824-1.969,114.001-2.383,124.106c-6.199,2.82-11.858,9.213-12.486,9.938
- c-19.939,22.024-10.489,38.208-10.079,38.875c15.244,26.687,46.733,79.22,47.024,79.702l0.617,1.021l0.301-0.182v0.476h100.703
- l3.716,1.099l5.202-17.795C263.446,277.339,257.779,223.46,257.06,217.561z M136.037,42.438c1.949,0.595,3.299,1.656,4.013,3.15
- c0.859,1.79,0.795,4.204-0.178,6.641c-0.368,0.914-0.912,1.87-1.608,2.859c-3.267-3.908-7.713-7.182-12.289-7.601
- C128.827,44.344,132.86,41.466,136.037,42.438z M235.812,314.551l-3.556,11.979h-95.44c-6.694-11.184-32.334-54.104-45.542-77.211
- c-0.291-0.503-6.959-12.519,9.245-30.416c1.731-2.02,7.169-7.512,11.505-8.655l2.575-0.688l0.111-2.659
- c0.029-0.414,2.506-54.404,2.481-134.375c0.979-10.752,3.855-17.571,7.479-17.789l0.168-0.007c4.503,0,10.442,7.135,11.329,11.272
- l0.518,2.44l0.306,0.048c1.101,6.192,2.753,26.224,4.097,42.392c4.387,53.125,4.916,53.283,8.384,54.323l1.785,0.519l1.468-1.125
- c0.786-0.585,7.861-5.711,15.653-5.711c1.333,0,2.625,0.158,3.819,0.458c5.153,1.294,9.355,5.508,12.494,12.507l1.652,3.695
- l3.494-2.032c0.233-0.123,5.917-3.23,12.252-3.23c2.084,0,4.027,0.328,5.79,0.985c5.01,1.872,8.812,6.495,11.317,13.74
- l0.773,2.241l2.354,0.212c0.138,0.014,14.545,1.476,22.375,10.862c4.079,4.883,5.79,11.211,5.085,18.842l-0.021,0.531l0.034,0.229
- C250.065,220.25,256.277,275.323,235.812,314.551z"/>
- <polygon points="151.628,120.506 179.462,120.506 179.462,92.676 175.629,92.676 175.629,116.672 151.628,116.672 "/>
- <polygon points="104.608,116.672 80.607,116.672 80.607,92.676 76.781,92.676 76.781,120.506 104.608,120.506 "/>
- <polygon points="80.607,3.831 104.608,3.831 104.608,0 76.781,0 76.781,27.826 80.607,27.826 "/>
- <polygon points="175.629,27.829 179.462,27.829 179.462,0 151.628,0 151.628,3.831 175.629,3.831 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="335.075px" height="335.074px" viewBox="0 0 335.075 335.074" style="enable-background:new 0 0 335.075 335.074;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M101.22,40.756c-1.083,1.429-2.36,2.318-2.801,2.575c-0.147,0.06-0.291,0.14-0.428,0.238\r
+ c-0.553,0.421-0.823,1.133-0.672,1.812c0.147,0.676,0.679,1.205,1.357,1.355c0.556,0.123,1.075,0.109,2.663-1.107\r
+ c0.705-0.539,1.749-1.458,2.712-2.729l0.421-0.558c3.605-4.801,12.055-16.031,24.256-15.422\r
+ c10.061,0.732,17.193,8.33,20.624,21.976c0.115,0.462,0.188,0.75,0.262,0.963c0.527,2.236,1.407,5.015,2.678,5.925\r
+ c0.315,0.229,0.676,0.337,1.037,0.337c0.551,0,1.097-0.255,1.44-0.736c0.555-0.771,0.408-1.829-0.321-2.417\r
+ c-0.351-0.455-1.006-2.351-1.403-4.048c-0.021-0.101-0.055-0.199-0.091-0.294c-0.03-0.115-0.097-0.368-0.154-0.595\r
+ c-0.542-2.161-1.986-7.905-5.494-13.312c-4.524-6.974-10.692-10.79-18.338-11.341c-0.015,0-0.025,0-0.039-0.003\r
+ c-14.094-0.717-23.346,11.585-27.295,16.838L101.22,40.756z"/>\r
+ <path d="M114.56,40.286c-0.806,0.886-1.531,1.839-2.308,2.751c-1.023,1.194-2.135,2.31-3.302,3.36\r
+ c-1.194,1.08-2.165,1.854-3.578,2.666c-1.499,0.859-3.027,1.729-4.579,2.484c-0.538,0.26-0.993,0.432-1.595,0.611\r
+ c-0.929,0.281-1.504,1.237-1.241,2.187c0.248,0.917,1.254,1.518,2.184,1.24c1.819-0.547,3.461-1.483,5.102-2.414\r
+ c1.384-0.789,2.76-1.497,4.033-2.464c2.481-1.889,4.615-4.09,6.577-6.497c0.796-0.974,1.648-1.906,2.534-2.799\r
+ c0.483-0.491,0.984-0.955,1.499-1.417c0.267-0.238,0.537-0.472,0.81-0.7c0.137-0.116,0.277-0.232,0.421-0.351\r
+ c0.036-0.029,0.298-0.231,0.375-0.298c1.241-0.95,2.558-1.795,3.949-2.51c1.311-0.669,2.625-1.141,4.22-1.475\r
+ c0.529-0.111,0.645-0.118,1.04-0.164c0.96-0.098,1.778-0.732,1.778-1.778c0-0.89-0.806-1.874-1.778-1.776\r
+ C124.284,31.609,118.79,35.621,114.56,40.286z"/>\r
+ <path d="M154.895,68.173c0.438-0.753,0.251-2.053-0.638-2.428c-1.482-0.632-3.032-1.287-4.279-2.324\r
+ c-1.373-1.138-2.011-2.639-2.295-4.37c-0.371-2.257-3.795-1.297-3.427,0.946c0.76,4.604,4.153,7.104,8.207,8.817\r
+ C153.357,69.186,154.354,69.088,154.895,68.173z"/>\r
+ <path d="M257.06,217.561c0.828-9.5-1.451-17.542-6.762-23.914c-7.844-9.366-19.88-12.289-25.017-13.135\r
+ c-3.271-8.202-8.261-13.609-14.852-16.072c-2.581-0.963-5.387-1.458-8.337-1.458c-4.948,0-9.411,1.364-12.408,2.572\r
+ c-3.96-7.18-9.247-11.642-15.715-13.271c-1.786-0.452-3.667-0.683-5.596-0.683c-6.17,0-11.812,2.32-15.652,4.408\r
+ c-1.332-8.886-3.08-30.007-4.367-45.545l-0.01-0.178c-1.338-16.243-2.25-26.881-2.993-33.939c1.431,0.863,2.933,1.605,4.511,2.089\r
+ c2.197,0.676,3.129-2.751,0.946-3.424c-1.336-0.411-2.348-0.936-3.758-1.766c-0.784-0.464-1.528-1.006-2.238-1.595\r
+ c-0.611-4.745-1.143-7.044-1.781-8.166c-0.49-1.679-1.381-3.554-2.565-5.407c1.129-1.475,2.082-2.986,2.702-4.531\r
+ c1.338-3.347,1.374-6.81,0.087-9.493c-1.145-2.397-3.284-4.129-6.177-5.012c-4.243-1.301-9.396,1.056-14.113,6.462\r
+ c-0.027,0.031-1.485,1.545-3.689,3.575c-0.97,0.612-1.932,1.429-2.846,2.505c-2.183,1.839-4.71,3.788-7.296,5.368\r
+ c-0.053,0.033-5.214,3.133-10.604,4.598c-0.949,0.26-1.507,1.237-1.247,2.183c0.258,0.946,1.233,1.508,2.183,1.244\r
+ c5.862-1.595,11.28-4.846,11.518-4.989c0.512-0.312,1.006-0.659,1.504-0.993c-0.679,1.995-1.276,4.307-1.745,7.001\r
+ c-5.256,2.786-9.598,4.41-11.165,4.942c-0.077,0.027-0.126,0.049-0.144,0.056c-0.917,0.348-1.381,1.371-1.03,2.288\r
+ c0.271,0.708,0.946,1.146,1.662,1.146c0.204,0,0.405-0.036,0.605-0.106l0.063-0.023c1.408-0.484,4.948-1.787,9.406-3.992\r
+ c-0.074,0.625-0.15,1.224-0.21,1.882c0,1.287,0,2.555-0.003,3.832c-2.878,1.583-5.761,3.063-8.299,4.144\r
+ c-0.903,0.383-1.321,1.431-0.939,2.334c0.291,0.671,0.946,1.076,1.637,1.076c0.231,0,0.469-0.046,0.696-0.144\r
+ c2.13-0.91,4.504-2.117,6.897-3.392c-0.14,65.824-1.969,114.001-2.383,124.106c-6.199,2.82-11.858,9.213-12.486,9.938\r
+ c-19.939,22.024-10.489,38.208-10.079,38.875c15.244,26.687,46.733,79.22,47.024,79.702l0.617,1.021l0.301-0.182v0.476h100.703\r
+ l3.716,1.099l5.202-17.795C263.446,277.339,257.779,223.46,257.06,217.561z M136.037,42.438c1.949,0.595,3.299,1.656,4.013,3.15\r
+ c0.859,1.79,0.795,4.204-0.178,6.641c-0.368,0.914-0.912,1.87-1.608,2.859c-3.267-3.908-7.713-7.182-12.289-7.601\r
+ C128.827,44.344,132.86,41.466,136.037,42.438z M235.812,314.551l-3.556,11.979h-95.44c-6.694-11.184-32.334-54.104-45.542-77.211\r
+ c-0.291-0.503-6.959-12.519,9.245-30.416c1.731-2.02,7.169-7.512,11.505-8.655l2.575-0.688l0.111-2.659\r
+ c0.029-0.414,2.506-54.404,2.481-134.375c0.979-10.752,3.855-17.571,7.479-17.789l0.168-0.007c4.503,0,10.442,7.135,11.329,11.272\r
+ l0.518,2.44l0.306,0.048c1.101,6.192,2.753,26.224,4.097,42.392c4.387,53.125,4.916,53.283,8.384,54.323l1.785,0.519l1.468-1.125\r
+ c0.786-0.585,7.861-5.711,15.653-5.711c1.333,0,2.625,0.158,3.819,0.458c5.153,1.294,9.355,5.508,12.494,12.507l1.652,3.695\r
+ l3.494-2.032c0.233-0.123,5.917-3.23,12.252-3.23c2.084,0,4.027,0.328,5.79,0.985c5.01,1.872,8.812,6.495,11.317,13.74\r
+ l0.773,2.241l2.354,0.212c0.138,0.014,14.545,1.476,22.375,10.862c4.079,4.883,5.79,11.211,5.085,18.842l-0.021,0.531l0.034,0.229\r
+ C250.065,220.25,256.277,275.323,235.812,314.551z"/>\r
+ <polygon points="151.628,120.506 179.462,120.506 179.462,92.676 175.629,92.676 175.629,116.672 151.628,116.672 "/>\r
+ <polygon points="104.608,116.672 80.607,116.672 80.607,92.676 76.781,92.676 76.781,120.506 104.608,120.506 "/>\r
+ <polygon points="80.607,3.831 104.608,3.831 104.608,0 76.781,0 76.781,27.826 80.607,27.826 "/>\r
+ <polygon points="175.629,27.829 179.462,27.829 179.462,0 151.628,0 151.628,3.831 175.629,3.831 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="311.324px" height="311.324px" viewBox="0 0 311.324 311.324" style="enable-background:new 0 0 311.324 311.324;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M21.174,87.5c2.089,0.458,4.02,0.424,9.967-4.143c2.635-2.026,6.535-5.443,10.142-10.205l1.576-2.096
- c13.492-17.944,45.077-59.955,90.703-57.677c37.623,2.745,64.299,31.157,77.125,82.173c0.435,1.732,0.701,2.8,0.996,3.614
- c0.023,0.107,0.062,0.222,0.082,0.335c3.634,6.386,6.498,13.258,8.483,20.501c0.458,0.494,0.928,0.963,1.42,1.321
- c1.174,0.849,2.536,1.257,3.885,1.257c2.053,0,4.093-0.956,5.386-2.758c2.074-2.866,1.52-6.836-1.197-9.04
- c-1.311-1.697-3.778-8.796-5.243-15.146c-0.089-0.375-0.205-0.739-0.362-1.097c-0.116-0.438-0.359-1.384-0.571-2.231
- c-2.033-8.084-7.437-29.562-20.537-49.765c-16.919-26.082-39.991-40.356-68.586-42.416c-0.046-0.007-0.087-0.007-0.137-0.014
- C81.603-2.578,47.008,43.429,32.241,63.074l-1.552,2.06c-4.045,5.344-8.824,8.673-10.472,9.637
- c-0.553,0.221-1.094,0.519-1.591,0.898c-2.067,1.565-3.077,4.236-2.522,6.769C16.666,84.969,18.648,86.945,21.174,87.5z"/>
- <path d="M179.456,66.596c-4.015-3.435-8.929-6.11-14.668-7.87c-2.094-0.638-4.25-1.026-6.452-1.199
- C165.822,59.65,172.909,62.716,179.456,66.596z"/>
- <path d="M24.136,155.71c7.253-1.976,14.308-4.625,20.552-7.31c-0.083-1.602-0.131-3.21-0.131-4.832
- c0-3.354,0.202-6.667,0.563-9.924c-6.969,3.273-15.643,6.844-24.477,9.253c-3.539,0.958-5.625,4.613-4.661,8.152
- C16.941,154.589,20.592,156.681,24.136,155.71z"/>
- <path d="M62.613,197.38c-10.553,5.783-21.11,11.16-30.396,15.126c-3.376,1.444-4.941,5.343-3.498,8.717
- c1.075,2.528,3.532,4.031,6.107,4.031c0.873,0,1.759-0.171,2.611-0.527c10.457-4.473,22.414-10.633,34.184-17.151
- C68.371,204.406,65.354,201.008,62.613,197.38z"/>
- <path d="M80.569,63.379c-3.014,3.326-5.719,6.894-8.634,10.295c-3.817,4.46-7.987,8.63-12.339,12.559
- c-4.483,4.045-8.105,6.938-13.387,9.974c-5.602,3.21-11.315,6.469-17.118,9.292c-1.999,0.972-3.718,1.608-5.961,2.279
- c-3.461,1.041-5.614,4.618-4.632,8.17c0.939,3.431,4.702,5.681,8.168,4.641c6.792-2.046,12.948-5.537,19.077-9.021
- c2.074-1.184,4.135-2.318,6.173-3.489c9.806-22.593,28.673-40.37,51.991-48.725c0.399-0.335,0.803-0.662,1.205-1
- c0.137-0.107,1.17-0.924,1.431-1.134c4.625-3.541,9.556-6.694,14.743-9.356c4.896-2.521,9.811-4.28,15.772-5.523
- c1.977-0.409,2.408-0.452,3.886-0.603c3.599-0.375,6.645-2.745,6.645-6.644c0-3.34-3.036-7.016-6.645-6.641
- C116.93,30.94,96.395,45.957,80.569,63.379z"/>
- <path d="M28.871,190.577c4.016-1.379,12.657-4.518,23.928-9.582c-1.852-3.997-3.417-8.158-4.665-12.45
- c-11.11,5.017-19.657,8.121-23.577,9.473c-0.297,0.1-0.48,0.164-0.541,0.185c-3.431,1.308-5.161,5.141-3.862,8.566
- c1.006,2.658,3.533,4.287,6.215,4.287c0.753,0,1.519-0.123,2.264-0.39L28.871,190.577z"/>
- <path d="M173.107,223.909c6.612,4.694,13.312,9.349,19.862,13.059l-15.372-15.399C176.123,222.393,174.617,223.17,173.107,223.909
- z"/>
- <path d="M102.3,227.181c-4.861-1.845-9.522-4.107-13.937-6.735c-15.665,10.314-32.478,21.19-40.082,23.236
- c-3.547,0.958-5.647,4.606-4.694,8.146c0.799,2.97,3.48,4.921,6.41,4.921c0.572,0,1.157-0.075,1.732-0.233
- c10.246-2.765,28.305-14.667,47.422-27.261C100.187,228.576,101.237,227.878,102.3,227.181z"/>
- <path d="M192.997,262.665c-5.349-1.938-14.058-7.316-22.477-12.516c-17.78-10.988-29.082-17.651-37.19-16.258
- c-8.215,1.423-25.466,13.147-54.419,34.29c-3.545,2.587-6.605,4.818-8.729,6.323c-2.992,2.119-3.708,6.263-1.595,9.258
- c1.297,1.83,3.351,2.812,5.431,2.812c1.328,0,2.664-0.396,3.831-1.218c2.208-1.561,5.308-3.83,8.898-6.44
- c11.521-8.419,42.135-30.766,48.779-31.916c4.141-0.28,19.087,8.939,28.016,14.449c9.411,5.811,18.298,11.307,24.944,13.709
- c3.445,1.249,7.258-0.541,8.507-3.99C198.24,267.716,196.45,263.914,192.997,262.665z"/>
- <path d="M170.562,295.688c-3.733-2.434-7.159-4.887-10.482-7.252c-10.892-7.785-20.312-14.506-30.633-12.703
- c-11.62,2.006-30.129,20.615-33.721,24.322c-2.554,2.635-2.484,6.844,0.151,9.4c1.289,1.238,2.957,1.868,4.618,1.868
- c1.735,0,3.468-0.678,4.769-2.025c8.897-9.186,21.537-19.634,26.443-20.481c4.851-0.832,12.181,4.387,20.658,10.434
- c3.27,2.334,6.971,4.976,10.936,7.562c3.073,2.002,7.193,1.141,9.195-1.933C174.494,301.808,173.632,297.697,170.562,295.688z"/>
- <path d="M231.394,167.655c1.66-2.816,0.959-7.673-2.381-9.086c-2.136-0.903-4.299-1.853-6.428-2.859
- c-0.615,4.475-1.584,8.879-2.867,13.191c0.855,0.39,1.718,0.766,2.594,1.136C225.645,171.454,229.389,171.084,231.394,167.655z"/>
- <path d="M216.124,193.232c-2.118-0.653-4.014-1.403-5.903-2.266l10.314,10.335C221.302,198.144,220.107,194.465,216.124,193.232z"
- />
- <path d="M291.09,279.022l-89.794-89.951c-0.137-0.144-0.305-0.229-0.448-0.363c9.75-13.545,15.561-30.094,15.561-48.014
- c0-45.453-36.977-82.424-82.426-82.424c-45.452,0-82.421,36.971-82.421,82.424c0,45.448,36.973,82.42,82.424,82.42
- c16.519,0,31.888-4.924,44.8-13.325c0.273,0.321,0.503,0.678,0.804,0.985l89.788,89.955c5.992,5.995,15.711,5.988,21.71,0
- C297.075,294.733,297.075,285.012,291.09,279.022z M200.067,138.894c-0.596,0.931-1.438,1.472-2.557,1.472
- c-2.189,0-3.613-2.277-3.613-6.29c0-4.202,1.536-6.427,3.641-6.427c0.521,0,0.966,0.128,1.373,0.335
- C199.595,131.531,199.968,135.179,200.067,138.894z M169.99,90.4c0,3.936-1.174,6.429-3.635,6.429
- c-2.189,0-3.613-2.272-3.613-6.285c0-4.201,1.536-6.434,3.641-6.434C168.871,84.11,169.99,86.602,169.99,90.4z M80.047,106.685
- c2.491,0,3.612,2.493,3.612,6.292c0,3.942-1.181,6.434-3.641,6.434c-2.187,0-3.608-2.277-3.608-6.29
- C76.41,108.914,77.944,106.685,80.047,106.685z M68.622,150.541c0.628-0.854,1.434-1.314,2.367-1.314
- c2.495,0,3.612,2.491,3.612,6.283c0,3.72-1.061,6.119-3.248,6.379C70.116,158.244,69.211,154.446,68.622,150.541z M84.251,184.205
- c-1.746-1.992-3.409-4.059-4.906-6.249c0.07-4.011,1.564-6.153,3.624-6.153c2.488,0,3.609,2.491,3.609,6.29
- C86.579,181.241,85.815,183.438,84.251,184.205z M105.691,200.419c-2.397-1.136-4.718-2.402-6.942-3.812
- c0.508-2.519,1.776-3.846,3.395-3.846c2.493,0,3.614,2.491,3.614,6.289C105.758,199.536,105.73,199.981,105.691,200.419z
- M112.549,199.194c0-4.203,1.535-6.434,3.641-6.434c2.488,0,3.608,2.491,3.608,6.289c0,2.772-0.599,4.802-1.803,5.78
- c-1.55-0.387-3.092-0.79-4.598-1.286C112.86,202.486,112.549,201.028,112.549,199.194z M154.681,199.194
- c0-4.203,1.535-6.434,3.638-6.434c2.496,0,3.611,2.491,3.611,6.289c0,0.582-0.068,1.082-0.119,1.595
- c-2.081,0.969-4.208,1.831-6.395,2.584C154.962,202.205,154.681,200.878,154.681,199.194z M164.306,199.443
- c0.004-0.171,0.034-0.314,0.034-0.492c0-4.914-2.132-7.813-5.881-7.813c-3.61,0-6.188,2.852-6.188,8.021
- c0.021,1.969,0.417,3.549,1.05,4.799c-2.375,0.731-4.813,1.293-7.294,1.752v-14.312h-2.052l-3.882,1.81l0.467,1.585l3.09-1.44
- h0.056v12.717c-3.179,0.465-6.41,0.794-9.717,0.794c-0.674,0-1.333-0.079-2.002-0.103v-15.359h-2.05l-3.886,1.811l0.469,1.584
- l3.092-1.44h0.055v13.292c-3.213-0.216-6.381-0.596-9.454-1.246c1.294-1.375,2.007-3.531,2.007-6.447
- c0-4.914-2.137-7.812-5.883-7.812c-3.614,0-6.186,2.851-6.186,8.021c0.014,1.26,0.168,2.379,0.445,3.347
- c-0.89-0.335-1.793-0.637-2.662-1.013c0.144-0.78,0.238-1.608,0.238-2.546c0-4.914-2.137-7.813-5.884-7.813
- c-2.575,0-4.604,1.482-5.564,4.183c-4.114-2.813-7.853-6.112-11.229-9.761c2.254-1.081,3.498-3.675,3.498-7.569
- c0-4.911-2.134-7.81-5.883-7.81c-2.712,0-4.84,1.608-5.73,4.6c-2.161-3.572-3.987-7.357-5.448-11.331
- c3.244-0.51,5.08-3.299,5.08-8.03c0-4.913-2.134-7.811-5.883-7.811c-1.056,0-2.002,0.267-2.842,0.739
- c-0.291-2.519-0.481-5.063-0.481-7.661c0-4.006,0.417-7.898,1.097-11.704l1.602-0.753h0.057v13.483h2.327v-15.426h-2.057
- l-1.588,0.743c1.043-4.948,2.688-9.664,4.769-14.132c-0.003,0.068-0.014,0.122-0.014,0.199c0.057,5.099,2.411,7.927,5.888,7.927
- c3.934,0,6.181-2.895,6.181-8.145c0-4.912-2.13-7.811-5.883-7.811c-0.765,0-1.473,0.157-2.127,0.41
- c4.596-7.275,10.551-13.579,17.528-18.575v11.279h2.322V85.287c10.392-6.791,22.768-10.771,36.078-10.771
- c11.456,0,22.234,2.929,31.639,8.076c-3.132,0.447-5.288,3.203-5.288,7.927c0.055,5.106,2.406,7.928,5.883,7.928
- c3.939,0,6.185-2.896,6.185-8.138c0-1.472-0.216-2.743-0.586-3.833c7.443,5.214,13.736,11.928,18.511,19.683l-2.115,0.979
- l0.469,1.586l2.495-1.164c0.212,0.366,0.448,0.705,0.653,1.069v12.128h2.324v-7.453c1.861,4.072,3.326,8.352,4.336,12.812
- c-0.268-0.036-0.527-0.081-0.814-0.081c-3.61,0-6.185,2.847-6.185,8.02c0.055,5.099,2.406,7.927,5.883,7.927
- c1.041,0,1.961-0.221,2.752-0.609c-0.038,3.578-0.4,7.079-0.986,10.506v-4.006h-2.05l-3.884,1.809l0.469,1.586l3.09-1.451h0.052
- v11.533c-1.078,3.269-2.409,6.413-3.966,9.432c-1.89,0.944-3.176,3.005-3.484,6.022c-1.893,2.896-4.024,5.609-6.338,8.159v-14.517
- h-2.05l-3.884,1.807l0.465,1.588l3.094-1.451h0.055v13.483h1.499C177.063,191.351,171.03,195.953,164.306,199.443z"/>
- <path d="M110.041,98.444c3.938,0,6.184-2.895,6.184-8.138c0-4.912-2.13-7.811-5.883-7.811c-3.61,0-6.186,2.853-6.186,8.022
- C104.213,95.625,106.564,98.444,110.041,98.444z M110.205,84.11c2.491,0,3.612,2.491,3.612,6.29c0,3.936-1.18,6.429-3.641,6.429
- c-2.185,0-3.608-2.272-3.608-6.285C106.564,86.343,108.099,84.11,110.205,84.11z"/>
- <polygon points="123.62,84.706 123.671,84.706 123.671,98.184 125.995,98.184 125.995,82.758 123.941,82.758 120.059,84.563
- 120.524,86.149 "/>
- <polygon points="137.665,84.706 137.717,84.706 137.717,98.184 140.044,98.184 140.044,82.758 137.986,82.758 134.104,84.563
- 134.571,86.149 "/>
- <path d="M152.474,82.495c-3.614,0-6.186,2.853-6.186,8.022c0.057,5.105,2.408,7.927,5.885,7.927c3.938,0,6.184-2.895,6.184-8.138
- C158.356,85.394,156.216,82.495,152.474,82.495z M152.31,96.829c-2.19,0-3.614-2.272-3.614-6.285c0-4.201,1.535-6.434,3.638-6.434
- c2.491,0,3.609,2.491,3.609,6.29C155.942,94.335,154.769,96.829,152.31,96.829z"/>
- <polygon points="93.465,107.281 93.517,107.281 93.517,120.754 95.844,120.754 95.844,105.336 93.791,105.336 89.908,107.138
- 90.37,108.724 "/>
- <polygon points="107.563,107.281 107.563,120.754 109.89,120.754 109.89,105.336 107.835,105.336 103.946,107.138
- 104.413,108.724 107.51,107.281 "/>
- <path d="M128.199,112.877c0-4.913-2.134-7.812-5.883-7.812c-3.61,0-6.186,2.853-6.186,8.028c0.057,5.1,2.411,7.928,5.884,7.928
- C125.96,121.025,128.199,118.126,128.199,112.877z M118.542,113.12c0-4.203,1.535-6.435,3.638-6.435
- c2.491,0,3.609,2.493,3.609,6.292c0,3.942-1.174,6.434-3.638,6.434C119.968,119.41,118.542,117.129,118.542,113.12z"/>
- <polygon points="135.598,107.281 135.646,107.281 135.646,120.754 137.973,120.754 137.973,105.336 135.922,105.336
- 132.037,107.138 132.502,108.724 "/>
- <path d="M150.104,121.025c3.939,0,6.186-2.895,6.186-8.145c0-4.912-2.134-7.811-5.883-7.811c-3.614,0-6.186,2.852-6.186,8.028
- C144.278,118.196,146.629,121.025,150.104,121.025z M150.27,106.685c2.488,0,3.609,2.493,3.609,6.292
- c0,3.942-1.178,6.434-3.638,6.434c-2.19,0-3.612-2.277-3.612-6.29C146.629,108.914,148.164,106.685,150.27,106.685z"/>
- <polygon points="163.738,107.281 163.738,120.754 166.062,120.754 166.062,105.336 164.012,105.336 160.128,107.138
- 160.59,108.724 163.68,107.281 "/>
- <path d="M178.196,121.025c3.939,0,6.181-2.895,6.181-8.145c0-4.912-2.129-7.811-5.883-7.811c-3.61,0-6.184,2.852-6.184,8.028
- C172.365,118.196,174.72,121.025,178.196,121.025z M178.357,106.685c2.491,0,3.61,2.493,3.61,6.292
- c0,3.942-1.178,6.434-3.638,6.434c-2.187,0-3.61-2.277-3.61-6.29C174.72,108.914,176.253,106.685,178.357,106.685z"/>
- <path d="M85.321,126.033c-3.612,0-6.186,2.847-6.186,8.02c0.057,5.099,2.408,7.927,5.884,7.927c3.939,0,6.186-2.895,6.186-8.138
- C91.205,128.927,89.063,126.033,85.321,126.033z M85.153,140.365c-2.19,0-3.61-2.277-3.61-6.29c0-4.202,1.535-6.427,3.638-6.427
- c2.491,0,3.614,2.491,3.614,6.283C88.794,137.874,87.615,140.365,85.153,140.365z"/>
- <path d="M99.365,126.033c-3.612,0-6.184,2.847-6.184,8.02c0.055,5.099,2.407,7.927,5.882,7.927c3.939,0,6.186-2.895,6.186-8.138
- C105.25,128.927,103.109,126.033,99.365,126.033z M99.201,140.365c-2.194,0-3.612-2.277-3.612-6.29
- c0-4.202,1.535-6.427,3.641-6.427c2.488,0,3.609,2.491,3.609,6.283C102.839,137.874,101.662,140.365,99.201,140.365z"/>
- <polygon points="109.079,128.093 109.55,129.688 112.64,128.237 112.696,128.237 112.696,141.721 115.02,141.721 115.02,126.292
- 112.97,126.292 "/>
- <polygon points="129.061,141.721 129.061,126.292 127.011,126.292 123.129,128.093 123.594,129.688 126.686,128.237
- 126.737,128.237 126.737,141.721 "/>
- <path d="M141.494,126.033c-3.608,0-6.187,2.847-6.187,8.02c0.055,5.099,2.411,7.927,5.886,7.927c3.939,0,6.183-2.895,6.183-8.138
- C147.375,128.927,145.245,126.033,141.494,126.033z M141.326,140.365c-2.187,0-3.609-2.277-3.609-6.29
- c0-4.202,1.535-6.427,3.638-6.427c2.495,0,3.612,2.491,3.612,6.283C144.967,137.874,143.793,140.365,141.326,140.365z"/>
- <polygon points="151.216,128.093 151.682,129.688 154.772,128.237 154.828,128.237 154.828,141.721 157.155,141.721
- 157.155,126.292 155.103,126.292 "/>
- <path d="M169.583,126.033c-3.61,0-6.188,2.847-6.188,8.02c0.062,5.099,2.413,7.927,5.89,7.927c3.938,0,6.181-2.895,6.181-8.138
- C175.466,128.927,173.33,126.033,169.583,126.033z M169.422,140.365c-2.19,0-3.613-2.277-3.613-6.29
- c0-4.202,1.536-6.427,3.638-6.427c2.491,0,3.613,2.491,3.613,6.283C173.06,137.874,171.883,140.365,169.422,140.365z"/>
- <polygon points="179.302,128.093 179.771,129.688 182.864,128.237 182.916,128.237 182.916,141.721 185.243,141.721
- 185.243,126.292 183.189,126.292 "/>
- <polygon points="80.85,149.679 81.312,151.267 84.405,149.815 84.458,149.815 84.458,163.302 86.786,163.302 86.786,147.875
- 84.735,147.875 "/>
- <polygon points="100.83,163.302 100.83,147.875 98.78,147.875 94.891,149.679 95.356,151.267 98.452,149.815 98.505,149.815
- 98.505,163.302 "/>
- <polygon points="108.932,149.679 109.402,151.267 112.493,149.815 112.549,149.815 112.549,163.302 114.873,163.302
- 114.873,147.875 112.823,147.875 "/>
- <path d="M127.302,147.612c-3.609,0-6.186,2.849-6.186,8.021c0.056,5.099,2.411,7.929,5.884,7.929c3.939,0,6.186-2.896,6.186-8.14
- C133.187,150.51,131.055,147.612,127.302,147.612z M127.141,161.943c-2.187,0-3.61-2.275-3.61-6.29
- c0-4.194,1.535-6.427,3.638-6.427c2.492,0,3.614,2.491,3.614,6.283C130.782,159.452,129.602,161.943,127.141,161.943z"/>
- <polygon points="142.96,163.302 142.96,147.875 140.905,147.875 137.023,149.679 137.49,151.267 140.583,149.815 140.637,149.815
- 140.637,163.302 "/>
- <polygon points="151.069,149.679 151.534,151.267 154.625,149.815 154.681,149.815 154.681,163.302 157.008,163.302
- 157.008,147.875 154.951,147.875 "/>
- <path d="M169.439,147.612c-3.614,0-6.185,2.849-6.185,8.021c0.055,5.099,2.406,7.929,5.883,7.929c3.939,0,6.185-2.896,6.185-8.14
- C175.322,150.51,173.18,147.612,169.439,147.612z M169.274,161.943c-2.189,0-3.613-2.275-3.613-6.29
- c0-4.194,1.536-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.283C172.909,159.452,171.735,161.943,169.274,161.943z"/>
- <path d="M177.3,155.637c0.055,5.099,2.406,7.929,5.883,7.929c3.938,0,6.184-2.895,6.184-8.139c0-4.913-2.135-7.811-5.883-7.811
- C179.866,147.612,177.3,150.46,177.3,155.637z M186.954,155.51c0,3.942-1.174,6.434-3.635,6.434c-2.19,0-3.613-2.275-3.613-6.29
- c0-4.194,1.536-6.427,3.641-6.427C185.835,149.227,186.954,151.718,186.954,155.51z"/>
- <path d="M97.148,170.188c-3.605,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.888,7.926c3.936,0,6.182-2.896,6.182-8.138
- C103.032,173.083,100.896,170.188,97.148,170.188z M96.983,184.52c-2.187,0-3.61-2.269-3.61-6.29c0-4.195,1.535-6.427,3.638-6.427
- c2.491,0,3.614,2.491,3.614,6.29C100.625,182.028,99.442,184.52,96.983,184.52z"/>
- <polygon points="106.868,172.255 107.335,173.843 110.429,172.392 110.482,172.392 110.482,185.871 112.809,185.871
- 112.809,170.448 110.754,170.448 "/>
- <polygon points="120.911,172.255 121.376,173.843 124.474,172.392 124.523,172.392 124.523,185.871 126.854,185.871
- 126.854,170.448 124.801,170.448 "/>
- <path d="M139.28,170.188c-3.609,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.884,7.926c3.942,0,6.186-2.896,6.186-8.138
- C145.164,173.083,143.029,170.188,139.28,170.188z M139.119,184.52c-2.187,0-3.61-2.269-3.61-6.29
- c0-4.195,1.537-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.29C142.757,182.028,141.583,184.52,139.119,184.52z"/>
- <polygon points="149,172.255 149.467,173.843 152.558,172.392 152.611,172.392 152.611,185.871 154.938,185.871 154.938,170.448
- 152.888,170.448 "/>
- <path d="M167.372,170.188c-3.613,0-6.188,2.848-6.188,8.021c0.059,5.1,2.409,7.926,5.887,7.926c3.938,0,6.184-2.896,6.184-8.138
- C173.255,173.083,171.116,170.188,167.372,170.188z M167.208,184.52c-2.19,0-3.614-2.269-3.614-6.29
- c0-4.195,1.533-6.427,3.642-6.427c2.488,0,3.607,2.491,3.607,6.29C170.843,182.028,169.665,184.52,167.208,184.52z"/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="311.324px" height="311.324px" viewBox="0 0 311.324 311.324" style="enable-background:new 0 0 311.324 311.324;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M21.174,87.5c2.089,0.458,4.02,0.424,9.967-4.143c2.635-2.026,6.535-5.443,10.142-10.205l1.576-2.096\r
+ c13.492-17.944,45.077-59.955,90.703-57.677c37.623,2.745,64.299,31.157,77.125,82.173c0.435,1.732,0.701,2.8,0.996,3.614\r
+ c0.023,0.107,0.062,0.222,0.082,0.335c3.634,6.386,6.498,13.258,8.483,20.501c0.458,0.494,0.928,0.963,1.42,1.321\r
+ c1.174,0.849,2.536,1.257,3.885,1.257c2.053,0,4.093-0.956,5.386-2.758c2.074-2.866,1.52-6.836-1.197-9.04\r
+ c-1.311-1.697-3.778-8.796-5.243-15.146c-0.089-0.375-0.205-0.739-0.362-1.097c-0.116-0.438-0.359-1.384-0.571-2.231\r
+ c-2.033-8.084-7.437-29.562-20.537-49.765c-16.919-26.082-39.991-40.356-68.586-42.416c-0.046-0.007-0.087-0.007-0.137-0.014\r
+ C81.603-2.578,47.008,43.429,32.241,63.074l-1.552,2.06c-4.045,5.344-8.824,8.673-10.472,9.637\r
+ c-0.553,0.221-1.094,0.519-1.591,0.898c-2.067,1.565-3.077,4.236-2.522,6.769C16.666,84.969,18.648,86.945,21.174,87.5z"/>\r
+ <path d="M179.456,66.596c-4.015-3.435-8.929-6.11-14.668-7.87c-2.094-0.638-4.25-1.026-6.452-1.199\r
+ C165.822,59.65,172.909,62.716,179.456,66.596z"/>\r
+ <path d="M24.136,155.71c7.253-1.976,14.308-4.625,20.552-7.31c-0.083-1.602-0.131-3.21-0.131-4.832\r
+ c0-3.354,0.202-6.667,0.563-9.924c-6.969,3.273-15.643,6.844-24.477,9.253c-3.539,0.958-5.625,4.613-4.661,8.152\r
+ C16.941,154.589,20.592,156.681,24.136,155.71z"/>\r
+ <path d="M62.613,197.38c-10.553,5.783-21.11,11.16-30.396,15.126c-3.376,1.444-4.941,5.343-3.498,8.717\r
+ c1.075,2.528,3.532,4.031,6.107,4.031c0.873,0,1.759-0.171,2.611-0.527c10.457-4.473,22.414-10.633,34.184-17.151\r
+ C68.371,204.406,65.354,201.008,62.613,197.38z"/>\r
+ <path d="M80.569,63.379c-3.014,3.326-5.719,6.894-8.634,10.295c-3.817,4.46-7.987,8.63-12.339,12.559\r
+ c-4.483,4.045-8.105,6.938-13.387,9.974c-5.602,3.21-11.315,6.469-17.118,9.292c-1.999,0.972-3.718,1.608-5.961,2.279\r
+ c-3.461,1.041-5.614,4.618-4.632,8.17c0.939,3.431,4.702,5.681,8.168,4.641c6.792-2.046,12.948-5.537,19.077-9.021\r
+ c2.074-1.184,4.135-2.318,6.173-3.489c9.806-22.593,28.673-40.37,51.991-48.725c0.399-0.335,0.803-0.662,1.205-1\r
+ c0.137-0.107,1.17-0.924,1.431-1.134c4.625-3.541,9.556-6.694,14.743-9.356c4.896-2.521,9.811-4.28,15.772-5.523\r
+ c1.977-0.409,2.408-0.452,3.886-0.603c3.599-0.375,6.645-2.745,6.645-6.644c0-3.34-3.036-7.016-6.645-6.641\r
+ C116.93,30.94,96.395,45.957,80.569,63.379z"/>\r
+ <path d="M28.871,190.577c4.016-1.379,12.657-4.518,23.928-9.582c-1.852-3.997-3.417-8.158-4.665-12.45\r
+ c-11.11,5.017-19.657,8.121-23.577,9.473c-0.297,0.1-0.48,0.164-0.541,0.185c-3.431,1.308-5.161,5.141-3.862,8.566\r
+ c1.006,2.658,3.533,4.287,6.215,4.287c0.753,0,1.519-0.123,2.264-0.39L28.871,190.577z"/>\r
+ <path d="M173.107,223.909c6.612,4.694,13.312,9.349,19.862,13.059l-15.372-15.399C176.123,222.393,174.617,223.17,173.107,223.909\r
+ z"/>\r
+ <path d="M102.3,227.181c-4.861-1.845-9.522-4.107-13.937-6.735c-15.665,10.314-32.478,21.19-40.082,23.236\r
+ c-3.547,0.958-5.647,4.606-4.694,8.146c0.799,2.97,3.48,4.921,6.41,4.921c0.572,0,1.157-0.075,1.732-0.233\r
+ c10.246-2.765,28.305-14.667,47.422-27.261C100.187,228.576,101.237,227.878,102.3,227.181z"/>\r
+ <path d="M192.997,262.665c-5.349-1.938-14.058-7.316-22.477-12.516c-17.78-10.988-29.082-17.651-37.19-16.258\r
+ c-8.215,1.423-25.466,13.147-54.419,34.29c-3.545,2.587-6.605,4.818-8.729,6.323c-2.992,2.119-3.708,6.263-1.595,9.258\r
+ c1.297,1.83,3.351,2.812,5.431,2.812c1.328,0,2.664-0.396,3.831-1.218c2.208-1.561,5.308-3.83,8.898-6.44\r
+ c11.521-8.419,42.135-30.766,48.779-31.916c4.141-0.28,19.087,8.939,28.016,14.449c9.411,5.811,18.298,11.307,24.944,13.709\r
+ c3.445,1.249,7.258-0.541,8.507-3.99C198.24,267.716,196.45,263.914,192.997,262.665z"/>\r
+ <path d="M170.562,295.688c-3.733-2.434-7.159-4.887-10.482-7.252c-10.892-7.785-20.312-14.506-30.633-12.703\r
+ c-11.62,2.006-30.129,20.615-33.721,24.322c-2.554,2.635-2.484,6.844,0.151,9.4c1.289,1.238,2.957,1.868,4.618,1.868\r
+ c1.735,0,3.468-0.678,4.769-2.025c8.897-9.186,21.537-19.634,26.443-20.481c4.851-0.832,12.181,4.387,20.658,10.434\r
+ c3.27,2.334,6.971,4.976,10.936,7.562c3.073,2.002,7.193,1.141,9.195-1.933C174.494,301.808,173.632,297.697,170.562,295.688z"/>\r
+ <path d="M231.394,167.655c1.66-2.816,0.959-7.673-2.381-9.086c-2.136-0.903-4.299-1.853-6.428-2.859\r
+ c-0.615,4.475-1.584,8.879-2.867,13.191c0.855,0.39,1.718,0.766,2.594,1.136C225.645,171.454,229.389,171.084,231.394,167.655z"/>\r
+ <path d="M216.124,193.232c-2.118-0.653-4.014-1.403-5.903-2.266l10.314,10.335C221.302,198.144,220.107,194.465,216.124,193.232z"\r
+ />\r
+ <path d="M291.09,279.022l-89.794-89.951c-0.137-0.144-0.305-0.229-0.448-0.363c9.75-13.545,15.561-30.094,15.561-48.014\r
+ c0-45.453-36.977-82.424-82.426-82.424c-45.452,0-82.421,36.971-82.421,82.424c0,45.448,36.973,82.42,82.424,82.42\r
+ c16.519,0,31.888-4.924,44.8-13.325c0.273,0.321,0.503,0.678,0.804,0.985l89.788,89.955c5.992,5.995,15.711,5.988,21.71,0\r
+ C297.075,294.733,297.075,285.012,291.09,279.022z M200.067,138.894c-0.596,0.931-1.438,1.472-2.557,1.472\r
+ c-2.189,0-3.613-2.277-3.613-6.29c0-4.202,1.536-6.427,3.641-6.427c0.521,0,0.966,0.128,1.373,0.335\r
+ C199.595,131.531,199.968,135.179,200.067,138.894z M169.99,90.4c0,3.936-1.174,6.429-3.635,6.429\r
+ c-2.189,0-3.613-2.272-3.613-6.285c0-4.201,1.536-6.434,3.641-6.434C168.871,84.11,169.99,86.602,169.99,90.4z M80.047,106.685\r
+ c2.491,0,3.612,2.493,3.612,6.292c0,3.942-1.181,6.434-3.641,6.434c-2.187,0-3.608-2.277-3.608-6.29\r
+ C76.41,108.914,77.944,106.685,80.047,106.685z M68.622,150.541c0.628-0.854,1.434-1.314,2.367-1.314\r
+ c2.495,0,3.612,2.491,3.612,6.283c0,3.72-1.061,6.119-3.248,6.379C70.116,158.244,69.211,154.446,68.622,150.541z M84.251,184.205\r
+ c-1.746-1.992-3.409-4.059-4.906-6.249c0.07-4.011,1.564-6.153,3.624-6.153c2.488,0,3.609,2.491,3.609,6.29\r
+ C86.579,181.241,85.815,183.438,84.251,184.205z M105.691,200.419c-2.397-1.136-4.718-2.402-6.942-3.812\r
+ c0.508-2.519,1.776-3.846,3.395-3.846c2.493,0,3.614,2.491,3.614,6.289C105.758,199.536,105.73,199.981,105.691,200.419z\r
+ M112.549,199.194c0-4.203,1.535-6.434,3.641-6.434c2.488,0,3.608,2.491,3.608,6.289c0,2.772-0.599,4.802-1.803,5.78\r
+ c-1.55-0.387-3.092-0.79-4.598-1.286C112.86,202.486,112.549,201.028,112.549,199.194z M154.681,199.194\r
+ c0-4.203,1.535-6.434,3.638-6.434c2.496,0,3.611,2.491,3.611,6.289c0,0.582-0.068,1.082-0.119,1.595\r
+ c-2.081,0.969-4.208,1.831-6.395,2.584C154.962,202.205,154.681,200.878,154.681,199.194z M164.306,199.443\r
+ c0.004-0.171,0.034-0.314,0.034-0.492c0-4.914-2.132-7.813-5.881-7.813c-3.61,0-6.188,2.852-6.188,8.021\r
+ c0.021,1.969,0.417,3.549,1.05,4.799c-2.375,0.731-4.813,1.293-7.294,1.752v-14.312h-2.052l-3.882,1.81l0.467,1.585l3.09-1.44\r
+ h0.056v12.717c-3.179,0.465-6.41,0.794-9.717,0.794c-0.674,0-1.333-0.079-2.002-0.103v-15.359h-2.05l-3.886,1.811l0.469,1.584\r
+ l3.092-1.44h0.055v13.292c-3.213-0.216-6.381-0.596-9.454-1.246c1.294-1.375,2.007-3.531,2.007-6.447\r
+ c0-4.914-2.137-7.812-5.883-7.812c-3.614,0-6.186,2.851-6.186,8.021c0.014,1.26,0.168,2.379,0.445,3.347\r
+ c-0.89-0.335-1.793-0.637-2.662-1.013c0.144-0.78,0.238-1.608,0.238-2.546c0-4.914-2.137-7.813-5.884-7.813\r
+ c-2.575,0-4.604,1.482-5.564,4.183c-4.114-2.813-7.853-6.112-11.229-9.761c2.254-1.081,3.498-3.675,3.498-7.569\r
+ c0-4.911-2.134-7.81-5.883-7.81c-2.712,0-4.84,1.608-5.73,4.6c-2.161-3.572-3.987-7.357-5.448-11.331\r
+ c3.244-0.51,5.08-3.299,5.08-8.03c0-4.913-2.134-7.811-5.883-7.811c-1.056,0-2.002,0.267-2.842,0.739\r
+ c-0.291-2.519-0.481-5.063-0.481-7.661c0-4.006,0.417-7.898,1.097-11.704l1.602-0.753h0.057v13.483h2.327v-15.426h-2.057\r
+ l-1.588,0.743c1.043-4.948,2.688-9.664,4.769-14.132c-0.003,0.068-0.014,0.122-0.014,0.199c0.057,5.099,2.411,7.927,5.888,7.927\r
+ c3.934,0,6.181-2.895,6.181-8.145c0-4.912-2.13-7.811-5.883-7.811c-0.765,0-1.473,0.157-2.127,0.41\r
+ c4.596-7.275,10.551-13.579,17.528-18.575v11.279h2.322V85.287c10.392-6.791,22.768-10.771,36.078-10.771\r
+ c11.456,0,22.234,2.929,31.639,8.076c-3.132,0.447-5.288,3.203-5.288,7.927c0.055,5.106,2.406,7.928,5.883,7.928\r
+ c3.939,0,6.185-2.896,6.185-8.138c0-1.472-0.216-2.743-0.586-3.833c7.443,5.214,13.736,11.928,18.511,19.683l-2.115,0.979\r
+ l0.469,1.586l2.495-1.164c0.212,0.366,0.448,0.705,0.653,1.069v12.128h2.324v-7.453c1.861,4.072,3.326,8.352,4.336,12.812\r
+ c-0.268-0.036-0.527-0.081-0.814-0.081c-3.61,0-6.185,2.847-6.185,8.02c0.055,5.099,2.406,7.927,5.883,7.927\r
+ c1.041,0,1.961-0.221,2.752-0.609c-0.038,3.578-0.4,7.079-0.986,10.506v-4.006h-2.05l-3.884,1.809l0.469,1.586l3.09-1.451h0.052\r
+ v11.533c-1.078,3.269-2.409,6.413-3.966,9.432c-1.89,0.944-3.176,3.005-3.484,6.022c-1.893,2.896-4.024,5.609-6.338,8.159v-14.517\r
+ h-2.05l-3.884,1.807l0.465,1.588l3.094-1.451h0.055v13.483h1.499C177.063,191.351,171.03,195.953,164.306,199.443z"/>\r
+ <path d="M110.041,98.444c3.938,0,6.184-2.895,6.184-8.138c0-4.912-2.13-7.811-5.883-7.811c-3.61,0-6.186,2.853-6.186,8.022\r
+ C104.213,95.625,106.564,98.444,110.041,98.444z M110.205,84.11c2.491,0,3.612,2.491,3.612,6.29c0,3.936-1.18,6.429-3.641,6.429\r
+ c-2.185,0-3.608-2.272-3.608-6.285C106.564,86.343,108.099,84.11,110.205,84.11z"/>\r
+ <polygon points="123.62,84.706 123.671,84.706 123.671,98.184 125.995,98.184 125.995,82.758 123.941,82.758 120.059,84.563 \r
+ 120.524,86.149 "/>\r
+ <polygon points="137.665,84.706 137.717,84.706 137.717,98.184 140.044,98.184 140.044,82.758 137.986,82.758 134.104,84.563 \r
+ 134.571,86.149 "/>\r
+ <path d="M152.474,82.495c-3.614,0-6.186,2.853-6.186,8.022c0.057,5.105,2.408,7.927,5.885,7.927c3.938,0,6.184-2.895,6.184-8.138\r
+ C158.356,85.394,156.216,82.495,152.474,82.495z M152.31,96.829c-2.19,0-3.614-2.272-3.614-6.285c0-4.201,1.535-6.434,3.638-6.434\r
+ c2.491,0,3.609,2.491,3.609,6.29C155.942,94.335,154.769,96.829,152.31,96.829z"/>\r
+ <polygon points="93.465,107.281 93.517,107.281 93.517,120.754 95.844,120.754 95.844,105.336 93.791,105.336 89.908,107.138 \r
+ 90.37,108.724 "/>\r
+ <polygon points="107.563,107.281 107.563,120.754 109.89,120.754 109.89,105.336 107.835,105.336 103.946,107.138 \r
+ 104.413,108.724 107.51,107.281 "/>\r
+ <path d="M128.199,112.877c0-4.913-2.134-7.812-5.883-7.812c-3.61,0-6.186,2.853-6.186,8.028c0.057,5.1,2.411,7.928,5.884,7.928\r
+ C125.96,121.025,128.199,118.126,128.199,112.877z M118.542,113.12c0-4.203,1.535-6.435,3.638-6.435\r
+ c2.491,0,3.609,2.493,3.609,6.292c0,3.942-1.174,6.434-3.638,6.434C119.968,119.41,118.542,117.129,118.542,113.12z"/>\r
+ <polygon points="135.598,107.281 135.646,107.281 135.646,120.754 137.973,120.754 137.973,105.336 135.922,105.336 \r
+ 132.037,107.138 132.502,108.724 "/>\r
+ <path d="M150.104,121.025c3.939,0,6.186-2.895,6.186-8.145c0-4.912-2.134-7.811-5.883-7.811c-3.614,0-6.186,2.852-6.186,8.028\r
+ C144.278,118.196,146.629,121.025,150.104,121.025z M150.27,106.685c2.488,0,3.609,2.493,3.609,6.292\r
+ c0,3.942-1.178,6.434-3.638,6.434c-2.19,0-3.612-2.277-3.612-6.29C146.629,108.914,148.164,106.685,150.27,106.685z"/>\r
+ <polygon points="163.738,107.281 163.738,120.754 166.062,120.754 166.062,105.336 164.012,105.336 160.128,107.138 \r
+ 160.59,108.724 163.68,107.281 "/>\r
+ <path d="M178.196,121.025c3.939,0,6.181-2.895,6.181-8.145c0-4.912-2.129-7.811-5.883-7.811c-3.61,0-6.184,2.852-6.184,8.028\r
+ C172.365,118.196,174.72,121.025,178.196,121.025z M178.357,106.685c2.491,0,3.61,2.493,3.61,6.292\r
+ c0,3.942-1.178,6.434-3.638,6.434c-2.187,0-3.61-2.277-3.61-6.29C174.72,108.914,176.253,106.685,178.357,106.685z"/>\r
+ <path d="M85.321,126.033c-3.612,0-6.186,2.847-6.186,8.02c0.057,5.099,2.408,7.927,5.884,7.927c3.939,0,6.186-2.895,6.186-8.138\r
+ C91.205,128.927,89.063,126.033,85.321,126.033z M85.153,140.365c-2.19,0-3.61-2.277-3.61-6.29c0-4.202,1.535-6.427,3.638-6.427\r
+ c2.491,0,3.614,2.491,3.614,6.283C88.794,137.874,87.615,140.365,85.153,140.365z"/>\r
+ <path d="M99.365,126.033c-3.612,0-6.184,2.847-6.184,8.02c0.055,5.099,2.407,7.927,5.882,7.927c3.939,0,6.186-2.895,6.186-8.138\r
+ C105.25,128.927,103.109,126.033,99.365,126.033z M99.201,140.365c-2.194,0-3.612-2.277-3.612-6.29\r
+ c0-4.202,1.535-6.427,3.641-6.427c2.488,0,3.609,2.491,3.609,6.283C102.839,137.874,101.662,140.365,99.201,140.365z"/>\r
+ <polygon points="109.079,128.093 109.55,129.688 112.64,128.237 112.696,128.237 112.696,141.721 115.02,141.721 115.02,126.292 \r
+ 112.97,126.292 "/>\r
+ <polygon points="129.061,141.721 129.061,126.292 127.011,126.292 123.129,128.093 123.594,129.688 126.686,128.237 \r
+ 126.737,128.237 126.737,141.721 "/>\r
+ <path d="M141.494,126.033c-3.608,0-6.187,2.847-6.187,8.02c0.055,5.099,2.411,7.927,5.886,7.927c3.939,0,6.183-2.895,6.183-8.138\r
+ C147.375,128.927,145.245,126.033,141.494,126.033z M141.326,140.365c-2.187,0-3.609-2.277-3.609-6.29\r
+ c0-4.202,1.535-6.427,3.638-6.427c2.495,0,3.612,2.491,3.612,6.283C144.967,137.874,143.793,140.365,141.326,140.365z"/>\r
+ <polygon points="151.216,128.093 151.682,129.688 154.772,128.237 154.828,128.237 154.828,141.721 157.155,141.721 \r
+ 157.155,126.292 155.103,126.292 "/>\r
+ <path d="M169.583,126.033c-3.61,0-6.188,2.847-6.188,8.02c0.062,5.099,2.413,7.927,5.89,7.927c3.938,0,6.181-2.895,6.181-8.138\r
+ C175.466,128.927,173.33,126.033,169.583,126.033z M169.422,140.365c-2.19,0-3.613-2.277-3.613-6.29\r
+ c0-4.202,1.536-6.427,3.638-6.427c2.491,0,3.613,2.491,3.613,6.283C173.06,137.874,171.883,140.365,169.422,140.365z"/>\r
+ <polygon points="179.302,128.093 179.771,129.688 182.864,128.237 182.916,128.237 182.916,141.721 185.243,141.721 \r
+ 185.243,126.292 183.189,126.292 "/>\r
+ <polygon points="80.85,149.679 81.312,151.267 84.405,149.815 84.458,149.815 84.458,163.302 86.786,163.302 86.786,147.875 \r
+ 84.735,147.875 "/>\r
+ <polygon points="100.83,163.302 100.83,147.875 98.78,147.875 94.891,149.679 95.356,151.267 98.452,149.815 98.505,149.815 \r
+ 98.505,163.302 "/>\r
+ <polygon points="108.932,149.679 109.402,151.267 112.493,149.815 112.549,149.815 112.549,163.302 114.873,163.302 \r
+ 114.873,147.875 112.823,147.875 "/>\r
+ <path d="M127.302,147.612c-3.609,0-6.186,2.849-6.186,8.021c0.056,5.099,2.411,7.929,5.884,7.929c3.939,0,6.186-2.896,6.186-8.14\r
+ C133.187,150.51,131.055,147.612,127.302,147.612z M127.141,161.943c-2.187,0-3.61-2.275-3.61-6.29\r
+ c0-4.194,1.535-6.427,3.638-6.427c2.492,0,3.614,2.491,3.614,6.283C130.782,159.452,129.602,161.943,127.141,161.943z"/>\r
+ <polygon points="142.96,163.302 142.96,147.875 140.905,147.875 137.023,149.679 137.49,151.267 140.583,149.815 140.637,149.815 \r
+ 140.637,163.302 "/>\r
+ <polygon points="151.069,149.679 151.534,151.267 154.625,149.815 154.681,149.815 154.681,163.302 157.008,163.302 \r
+ 157.008,147.875 154.951,147.875 "/>\r
+ <path d="M169.439,147.612c-3.614,0-6.185,2.849-6.185,8.021c0.055,5.099,2.406,7.929,5.883,7.929c3.939,0,6.185-2.896,6.185-8.14\r
+ C175.322,150.51,173.18,147.612,169.439,147.612z M169.274,161.943c-2.189,0-3.613-2.275-3.613-6.29\r
+ c0-4.194,1.536-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.283C172.909,159.452,171.735,161.943,169.274,161.943z"/>\r
+ <path d="M177.3,155.637c0.055,5.099,2.406,7.929,5.883,7.929c3.938,0,6.184-2.895,6.184-8.139c0-4.913-2.135-7.811-5.883-7.811\r
+ C179.866,147.612,177.3,150.46,177.3,155.637z M186.954,155.51c0,3.942-1.174,6.434-3.635,6.434c-2.19,0-3.613-2.275-3.613-6.29\r
+ c0-4.194,1.536-6.427,3.641-6.427C185.835,149.227,186.954,151.718,186.954,155.51z"/>\r
+ <path d="M97.148,170.188c-3.605,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.888,7.926c3.936,0,6.182-2.896,6.182-8.138\r
+ C103.032,173.083,100.896,170.188,97.148,170.188z M96.983,184.52c-2.187,0-3.61-2.269-3.61-6.29c0-4.195,1.535-6.427,3.638-6.427\r
+ c2.491,0,3.614,2.491,3.614,6.29C100.625,182.028,99.442,184.52,96.983,184.52z"/>\r
+ <polygon points="106.868,172.255 107.335,173.843 110.429,172.392 110.482,172.392 110.482,185.871 112.809,185.871 \r
+ 112.809,170.448 110.754,170.448 "/>\r
+ <polygon points="120.911,172.255 121.376,173.843 124.474,172.392 124.523,172.392 124.523,185.871 126.854,185.871 \r
+ 126.854,170.448 124.801,170.448 "/>\r
+ <path d="M139.28,170.188c-3.609,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.884,7.926c3.942,0,6.186-2.896,6.186-8.138\r
+ C145.164,173.083,143.029,170.188,139.28,170.188z M139.119,184.52c-2.187,0-3.61-2.269-3.61-6.29\r
+ c0-4.195,1.537-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.29C142.757,182.028,141.583,184.52,139.119,184.52z"/>\r
+ <polygon points="149,172.255 149.467,173.843 152.558,172.392 152.611,172.392 152.611,185.871 154.938,185.871 154.938,170.448 \r
+ 152.888,170.448 "/>\r
+ <path d="M167.372,170.188c-3.613,0-6.188,2.848-6.188,8.021c0.059,5.1,2.409,7.926,5.887,7.926c3.938,0,6.184-2.896,6.184-8.138\r
+ C173.255,173.083,171.116,170.188,167.372,170.188z M167.208,184.52c-2.19,0-3.614-2.269-3.614-6.29\r
+ c0-4.195,1.533-6.427,3.642-6.427c2.488,0,3.607,2.491,3.607,6.29C170.843,182.028,169.665,184.52,167.208,184.52z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="311.314px" height="311.314px" viewBox="0 0 311.314 311.314" style="enable-background:new 0 0 311.314 311.314;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M52.836,87.493c2.084,0.452,4.019,0.419,9.962-4.143c2.638-2.029,6.54-5.441,10.142-10.208l1.578-2.091
- c13.492-17.946,45.078-59.96,90.702-57.674c37.624,2.743,64.292,31.155,77.122,82.167c0.438,1.735,0.701,2.796,0.996,3.618
- c1.957,8.339,5.249,18.732,9.985,22.156c1.171,0.849,2.536,1.254,3.885,1.254c2.057,0,4.093-0.953,5.39-2.753
- c2.074-2.872,1.52-6.844-1.198-9.045c-1.311-1.697-3.774-8.796-5.242-15.146c-0.086-0.378-0.209-0.743-0.359-1.097
- c-0.123-0.435-0.359-1.381-0.575-2.228c-2.032-8.088-7.437-29.565-20.533-49.765C217.77,16.454,194.695,2.181,166.102,0.12
- c-0.044-0.007-0.092-0.007-0.14-0.007C113.261-2.578,78.667,43.426,63.898,63.067l-1.552,2.063
- c-4.043,5.346-8.821,8.674-10.467,9.637c-0.555,0.222-1.094,0.52-1.595,0.898c-2.067,1.566-3.077,4.237-2.521,6.768
- C48.322,84.959,50.302,86.939,52.836,87.493z"/>
- <path d="M219.208,112.966c5.01-12.525,5.137-25.462,0.328-35.494c-4.277-8.954-12.265-15.438-23.085-18.752
- c-15.887-4.861-35.143,3.959-52.784,24.172c-0.224,0.248-25.336,26.661-51.705,42.808c-0.193,0.116-19.498,11.693-39.658,17.189
- c-3.541,0.96-5.628,4.615-4.665,8.149c0.96,3.54,4.611,5.632,8.153,4.663c21.928-5.967,42.185-18.115,43.071-18.647
- c28.606-17.518,54.553-45.121,54.77-45.381c10.713-12.268,26.561-24.032,38.922-20.247c7.278,2.228,12.326,6.192,14.999,11.784
- c3.203,6.69,2.953,15.742-0.685,24.828c-6.766,16.913-27.843,37.329-59.345,57.503c-15.793,10.115-55.564,34.957-83.658,46.962
- c-3.375,1.444-4.938,5.339-3.498,8.717c1.08,2.525,3.532,4.034,6.112,4.034c0.873,0,1.759-0.171,2.611-0.534
- c29.001-12.408,69.524-37.694,85.599-47.988C178.614,161.41,209.222,137.912,219.208,112.966z"/>
- <path d="M112.222,63.372c-3.013,3.323-5.718,6.891-8.634,10.292c-3.816,4.461-7.986,8.629-12.342,12.56
- c-4.478,4.045-8.102,6.935-13.382,9.974c-5.604,3.21-11.315,6.461-17.119,9.29c-1.997,0.976-3.715,1.605-5.96,2.281
- c-3.463,1.042-5.614,4.617-4.637,8.172c0.939,3.427,4.704,5.684,8.172,4.644c6.791-2.047,12.948-5.544,19.077-9.028
- c5.183-2.943,10.325-5.595,15.083-9.216c9.279-7.053,17.261-15.289,24.604-24.306c2.976-3.651,6.153-7.126,9.476-10.466
- c1.812-1.823,3.686-3.578,5.602-5.299c0.996-0.893,2.009-1.763,3.035-2.628c0.519-0.435,1.044-0.866,1.574-1.295
- c0.135-0.113,1.167-0.925,1.429-1.136c4.627-3.544,9.557-6.694,14.743-9.356c4.899-2.521,9.813-4.279,15.775-5.523
- c1.975-0.411,2.405-0.455,3.884-0.605c3.6-0.371,6.646-2.741,6.646-6.641c0-3.344-3.035-7.019-6.646-6.645
- C148.586,30.93,128.048,45.943,112.222,63.372z"/>
- <path d="M60.527,190.57c14.432-4.952,88.526-32.62,130.02-90.781c2.133-2.986,1.438-7.13-1.546-9.266
- c-2.991-2.13-7.139-1.436-9.271,1.55c-39.136,54.862-109.758,81.205-123.52,85.937c-0.294,0.096-0.476,0.161-0.539,0.182
- c-3.431,1.308-5.159,5.137-3.858,8.565c1.006,2.659,3.532,4.288,6.216,4.288c0.75,0,1.518-0.127,2.264-0.394L60.527,190.57z"/>
- <path d="M241.284,230.113c-9.205-3.069-20.475-11.091-31.367-18.849c-15.78-11.246-29.399-20.947-40.501-19.038
- c-8.344,1.444-22.917,10.76-45.922,25.916c-16.582,10.934-35.383,23.325-43.559,25.526c-3.542,0.961-5.642,4.603-4.688,8.141
- c0.799,2.971,3.48,4.922,6.413,4.922c0.572,0,1.152-0.076,1.727-0.229c10.251-2.766,28.308-14.668,47.424-27.265
- c15.439-10.178,34.657-22.846,40.864-23.917c5.641-0.966,19.445,8.856,30.536,16.758c11.69,8.326,23.777,16.937,34.872,20.64
- c3.483,1.156,7.244-0.726,8.404-4.203C246.646,235.038,244.764,231.273,241.284,230.113z"/>
- <path d="M224.652,262.655c-5.355-1.934-14.058-7.313-22.477-12.512c-17.781-10.988-29.081-17.655-37.191-16.259
- c-8.214,1.424-25.467,13.145-54.418,34.29c-3.547,2.587-6.606,4.818-8.73,6.32c-2.993,2.122-3.708,6.263-1.595,9.261
- c1.3,1.831,3.35,2.81,5.433,2.81c1.325,0,2.663-0.396,3.826-1.215c2.207-1.561,5.306-3.829,8.897-6.44
- c11.522-8.415,42.137-30.766,48.78-31.912c4.144-0.284,19.089,8.936,28.017,14.452c9.411,5.811,18.295,11.3,24.948,13.709
- c3.445,1.246,7.258-0.541,8.504-3.993C229.891,267.706,228.109,263.904,224.652,262.655z"/>
- <path d="M202.216,295.679c-3.73-2.434-7.159-4.887-10.482-7.248c-10.889-7.785-20.31-14.507-30.628-12.707
- c-11.625,2.006-30.132,20.619-33.727,24.321c-2.551,2.639-2.481,6.845,0.154,9.401c1.291,1.238,2.955,1.868,4.615,1.868
- c1.738,0,3.473-0.674,4.774-2.022c8.897-9.188,21.537-19.63,26.439-20.479c4.85-0.831,12.184,4.381,20.66,10.431
- c3.265,2.334,6.968,4.973,10.938,7.566c3.069,2.002,7.189,1.137,9.195-1.937C206.152,301.798,205.287,297.688,202.216,295.679z"/>
- <path d="M260.67,158.56c-5.537-2.338-11.327-4.798-15.988-8.677c-5.13-4.268-7.515-9.871-8.586-16.343
- c-1.386-8.439-14.192-4.848-12.81,3.528c2.841,17.23,15.523,26.562,30.677,32.959c3.336,1.417,7.08,1.047,9.085-2.379
- C264.706,164.829,264.003,159.973,260.67,158.56z"/>
- <path d="M247.776,193.223c-4.986-1.54-8.774-3.483-14.052-6.604c-9.667-5.712-18.486-13.986-22.774-24.564
- c-1.358-3.351-4.37-5.685-8.172-4.637c-3.187,0.876-5.999,4.812-4.641,8.175c7.919,19.517,26.091,34.273,46.11,40.443
- C252.458,208.561,255.941,195.738,247.776,193.223z"/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="311.314px" height="311.314px" viewBox="0 0 311.314 311.314" style="enable-background:new 0 0 311.314 311.314;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M52.836,87.493c2.084,0.452,4.019,0.419,9.962-4.143c2.638-2.029,6.54-5.441,10.142-10.208l1.578-2.091\r
+ c13.492-17.946,45.078-59.96,90.702-57.674c37.624,2.743,64.292,31.155,77.122,82.167c0.438,1.735,0.701,2.796,0.996,3.618\r
+ c1.957,8.339,5.249,18.732,9.985,22.156c1.171,0.849,2.536,1.254,3.885,1.254c2.057,0,4.093-0.953,5.39-2.753\r
+ c2.074-2.872,1.52-6.844-1.198-9.045c-1.311-1.697-3.774-8.796-5.242-15.146c-0.086-0.378-0.209-0.743-0.359-1.097\r
+ c-0.123-0.435-0.359-1.381-0.575-2.228c-2.032-8.088-7.437-29.565-20.533-49.765C217.77,16.454,194.695,2.181,166.102,0.12\r
+ c-0.044-0.007-0.092-0.007-0.14-0.007C113.261-2.578,78.667,43.426,63.898,63.067l-1.552,2.063\r
+ c-4.043,5.346-8.821,8.674-10.467,9.637c-0.555,0.222-1.094,0.52-1.595,0.898c-2.067,1.566-3.077,4.237-2.521,6.768\r
+ C48.322,84.959,50.302,86.939,52.836,87.493z"/>\r
+ <path d="M219.208,112.966c5.01-12.525,5.137-25.462,0.328-35.494c-4.277-8.954-12.265-15.438-23.085-18.752\r
+ c-15.887-4.861-35.143,3.959-52.784,24.172c-0.224,0.248-25.336,26.661-51.705,42.808c-0.193,0.116-19.498,11.693-39.658,17.189\r
+ c-3.541,0.96-5.628,4.615-4.665,8.149c0.96,3.54,4.611,5.632,8.153,4.663c21.928-5.967,42.185-18.115,43.071-18.647\r
+ c28.606-17.518,54.553-45.121,54.77-45.381c10.713-12.268,26.561-24.032,38.922-20.247c7.278,2.228,12.326,6.192,14.999,11.784\r
+ c3.203,6.69,2.953,15.742-0.685,24.828c-6.766,16.913-27.843,37.329-59.345,57.503c-15.793,10.115-55.564,34.957-83.658,46.962\r
+ c-3.375,1.444-4.938,5.339-3.498,8.717c1.08,2.525,3.532,4.034,6.112,4.034c0.873,0,1.759-0.171,2.611-0.534\r
+ c29.001-12.408,69.524-37.694,85.599-47.988C178.614,161.41,209.222,137.912,219.208,112.966z"/>\r
+ <path d="M112.222,63.372c-3.013,3.323-5.718,6.891-8.634,10.292c-3.816,4.461-7.986,8.629-12.342,12.56\r
+ c-4.478,4.045-8.102,6.935-13.382,9.974c-5.604,3.21-11.315,6.461-17.119,9.29c-1.997,0.976-3.715,1.605-5.96,2.281\r
+ c-3.463,1.042-5.614,4.617-4.637,8.172c0.939,3.427,4.704,5.684,8.172,4.644c6.791-2.047,12.948-5.544,19.077-9.028\r
+ c5.183-2.943,10.325-5.595,15.083-9.216c9.279-7.053,17.261-15.289,24.604-24.306c2.976-3.651,6.153-7.126,9.476-10.466\r
+ c1.812-1.823,3.686-3.578,5.602-5.299c0.996-0.893,2.009-1.763,3.035-2.628c0.519-0.435,1.044-0.866,1.574-1.295\r
+ c0.135-0.113,1.167-0.925,1.429-1.136c4.627-3.544,9.557-6.694,14.743-9.356c4.899-2.521,9.813-4.279,15.775-5.523\r
+ c1.975-0.411,2.405-0.455,3.884-0.605c3.6-0.371,6.646-2.741,6.646-6.641c0-3.344-3.035-7.019-6.646-6.645\r
+ C148.586,30.93,128.048,45.943,112.222,63.372z"/>\r
+ <path d="M60.527,190.57c14.432-4.952,88.526-32.62,130.02-90.781c2.133-2.986,1.438-7.13-1.546-9.266\r
+ c-2.991-2.13-7.139-1.436-9.271,1.55c-39.136,54.862-109.758,81.205-123.52,85.937c-0.294,0.096-0.476,0.161-0.539,0.182\r
+ c-3.431,1.308-5.159,5.137-3.858,8.565c1.006,2.659,3.532,4.288,6.216,4.288c0.75,0,1.518-0.127,2.264-0.394L60.527,190.57z"/>\r
+ <path d="M241.284,230.113c-9.205-3.069-20.475-11.091-31.367-18.849c-15.78-11.246-29.399-20.947-40.501-19.038\r
+ c-8.344,1.444-22.917,10.76-45.922,25.916c-16.582,10.934-35.383,23.325-43.559,25.526c-3.542,0.961-5.642,4.603-4.688,8.141\r
+ c0.799,2.971,3.48,4.922,6.413,4.922c0.572,0,1.152-0.076,1.727-0.229c10.251-2.766,28.308-14.668,47.424-27.265\r
+ c15.439-10.178,34.657-22.846,40.864-23.917c5.641-0.966,19.445,8.856,30.536,16.758c11.69,8.326,23.777,16.937,34.872,20.64\r
+ c3.483,1.156,7.244-0.726,8.404-4.203C246.646,235.038,244.764,231.273,241.284,230.113z"/>\r
+ <path d="M224.652,262.655c-5.355-1.934-14.058-7.313-22.477-12.512c-17.781-10.988-29.081-17.655-37.191-16.259\r
+ c-8.214,1.424-25.467,13.145-54.418,34.29c-3.547,2.587-6.606,4.818-8.73,6.32c-2.993,2.122-3.708,6.263-1.595,9.261\r
+ c1.3,1.831,3.35,2.81,5.433,2.81c1.325,0,2.663-0.396,3.826-1.215c2.207-1.561,5.306-3.829,8.897-6.44\r
+ c11.522-8.415,42.137-30.766,48.78-31.912c4.144-0.284,19.089,8.936,28.017,14.452c9.411,5.811,18.295,11.3,24.948,13.709\r
+ c3.445,1.246,7.258-0.541,8.504-3.993C229.891,267.706,228.109,263.904,224.652,262.655z"/>\r
+ <path d="M202.216,295.679c-3.73-2.434-7.159-4.887-10.482-7.248c-10.889-7.785-20.31-14.507-30.628-12.707\r
+ c-11.625,2.006-30.132,20.619-33.727,24.321c-2.551,2.639-2.481,6.845,0.154,9.401c1.291,1.238,2.955,1.868,4.615,1.868\r
+ c1.738,0,3.473-0.674,4.774-2.022c8.897-9.188,21.537-19.63,26.439-20.479c4.85-0.831,12.184,4.381,20.66,10.431\r
+ c3.265,2.334,6.968,4.973,10.938,7.566c3.069,2.002,7.189,1.137,9.195-1.937C206.152,301.798,205.287,297.688,202.216,295.679z"/>\r
+ <path d="M260.67,158.56c-5.537-2.338-11.327-4.798-15.988-8.677c-5.13-4.268-7.515-9.871-8.586-16.343\r
+ c-1.386-8.439-14.192-4.848-12.81,3.528c2.841,17.23,15.523,26.562,30.677,32.959c3.336,1.417,7.08,1.047,9.085-2.379\r
+ C264.706,164.829,264.003,159.973,260.67,158.56z"/>\r
+ <path d="M247.776,193.223c-4.986-1.54-8.774-3.483-14.052-6.604c-9.667-5.712-18.486-13.986-22.774-24.564\r
+ c-1.358-3.351-4.37-5.685-8.172-4.637c-3.187,0.876-5.999,4.812-4.641,8.175c7.919,19.517,26.091,34.273,46.11,40.443\r
+ C252.458,208.561,255.941,195.738,247.776,193.223z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="0 0 1920 1080" style="enable-background:new 0 0 1920 1080;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#003268;}
- .st1{fill:#FFFFFF;}
- .st2{fill:#005BCE;}
-</style>
-<g>
- <g>
- <path class="st0" d="M1107.86,464.03c-38.08-0.02-76.17-0.02-114.24,0.05c-2.02,0-3.2-0.62-4.56-2.21
- c-2.29-2.68-4.94-5.26-7.96-6.97c-2.41-1.38-2.96-2.75-2.96-5.27c0.07-48.71,0.04-97.43,0.04-146.14c0-1.2,0.07-2.41-0.04-3.59
- c-0.37-4.36-4.07-7.2-8.41-6.52c-3.87,0.61-6.02,3.54-6.02,8.34c-0.02,24.74,0,49.48,0,74.22c0,24.6-0.02,49.23,0.02,73.86
- c0.03,2.37-0.41,3.72-2.82,5.04c-2.96,1.57-5.56,4.07-7.79,6.63c-1.47,1.69-2.65,2.67-5,2.63c-7.59-0.15-15.19-0.04-22.79,0
- c-3.52,0.02-6.26,1.66-8.16,4.55c-2.24,3.33-2.34,6.96-0.55,10.51c1.88,3.7,5.17,5.52,9.28,5.56c7.58,0.07,15.2-0.06,22.77,0.11
- c1.34,0.05,2.8,1.07,3.94,1.97c3,2.41,5.72,5.23,8.87,7.42c1.53,1.05,2.3,1.82,2.28,3.73c-0.11,7.15-0.07,14.31-0.05,21.47
- c0,1.18-0.02,2.41,0.27,3.55c0.83,3.39,4.18,5.65,7.61,5.32c3.77-0.37,6.51-3.22,6.57-7.23c0.09-7.7,0.07-15.41,0-23.11
- c0-1.97,0.79-2.89,2.54-3.95c2.89-1.72,5.72-3.91,7.86-6.5c1.62-1.97,3.07-2.82,5.58-2.82c27.57,0.09,55.13,0.06,82.67,0.06
- c10.64,0,21.28,0.07,31.9-0.02c6.66-0.06,11.03-4.55,10.84-10.79C1119.35,467.84,1114.91,464.03,1107.86,464.03z M983.25,475.56
- c0,0.01,0,0.02-0.01,0.04c-0.01,0.13-0.02,0.25-0.04,0.38c-0.02,0.19-0.05,0.37-0.09,0.56c-0.1,0.55-0.24,1.1-0.42,1.63
- c-0.06,0.18-0.12,0.36-0.19,0.53c-0.08,0.21-0.16,0.41-0.26,0.62c-0.08,0.19-0.16,0.37-0.26,0.54c-0.18,0.36-0.38,0.72-0.6,1.05
- c-0.32,0.5-0.68,0.98-1.07,1.44c0,0.01,0,0.01-0.01,0.02c-0.27,0.3-0.54,0.58-0.82,0.86c-0.15,0.14-0.3,0.28-0.45,0.42
- c0,0,0,0.01-0.01,0.01c-0.2,0.18-0.41,0.35-0.62,0.51c-0.16,0.13-0.32,0.25-0.48,0.36c-0.94,0.67-1.98,1.22-3.09,1.62
- c-0.78,0.28-1.58,0.49-2.42,0.62c-0.42,0.06-0.84,0.11-1.27,0.13c-0.21,0-0.42,0.01-0.64,0.01c-0.23,0.01-0.45,0-0.68-0.02
- c-0.17-0.01-0.34-0.03-0.52-0.05c-0.37-0.04-0.74-0.11-1.1-0.2c-0.36-0.09-0.72-0.2-1.07-0.32c-1.28-0.47-2.5-1.18-3.6-2.07
- c-0.19-0.15-0.38-0.32-0.56-0.48c-0.24-0.22-0.47-0.44-0.69-0.67c-0.05-0.05-0.1-0.11-0.15-0.16c-0.22-0.24-0.44-0.49-0.64-0.74
- c-0.26-0.31-0.5-0.63-0.72-0.96c-0.22-0.33-0.43-0.66-0.63-1.01c-0.38-0.7-0.71-1.42-0.95-2.16c-0.13-0.37-0.23-0.75-0.32-1.12
- c-0.04-0.19-0.08-0.38-0.11-0.57c-0.06-0.29-0.1-0.59-0.11-0.89c-0.03-0.3-0.04-0.6-0.04-0.9c0-0.22,0.01-0.44,0.01-0.66
- c0.02-0.4,0.05-0.79,0.11-1.18c0.02-0.14,0.04-0.29,0.07-0.43c0.01-0.08,0.02-0.15,0.04-0.23c0.02-0.07,0.04-0.15,0.05-0.23
- c0.03-0.16,0.06-0.31,0.1-0.46c0.06-0.25,0.13-0.5,0.21-0.74c0.16-0.54,0.37-1.07,0.61-1.58c0.08-0.18,0.17-0.36,0.27-0.54
- c0.12-0.22,0.24-0.44,0.37-0.65c0.13-0.21,0.26-0.42,0.41-0.63c0.28-0.4,0.59-0.79,0.92-1.16c0.17-0.2,0.36-0.4,0.56-0.58
- c0.16-0.16,0.32-0.31,0.49-0.46c0.18-0.16,0.37-0.32,0.57-0.47c0.19-0.15,0.39-0.29,0.6-0.43c0.61-0.42,1.27-0.78,1.96-1.08
- c0.23-0.1,0.46-0.19,0.7-0.28c0.17-0.06,0.34-0.12,0.51-0.17c0.17-0.06,0.34-0.11,0.51-0.15s0.35-0.09,0.53-0.13
- c0.18-0.03,0.35-0.07,0.53-0.1c0.55-0.09,1.1-0.15,1.67-0.18c0.22-0.01,0.44-0.01,0.66-0.01c0.16,0,0.32,0,0.48,0.01
- c0.15,0.01,0.31,0.02,0.47,0.03c0.31,0.03,0.62,0.06,0.92,0.11c0.27,0.04,0.54,0.1,0.81,0.16c0.26,0.06,0.53,0.13,0.79,0.21
- c0.25,0.07,0.51,0.16,0.75,0.25l0.01,0.01c0.24,0.09,0.48,0.18,0.71,0.28c0.04,0.02,0.07,0.03,0.11,0.06
- c0.22,0.1,0.43,0.2,0.65,0.32c0.22,0.11,0.44,0.24,0.66,0.37c0.01,0.01,0.02,0.01,0.03,0.02c0.22,0.14,0.44,0.29,0.66,0.44
- c0.21,0.15,0.42,0.31,0.63,0.48c0.1,0.08,0.2,0.16,0.29,0.24c0.2,0.17,0.4,0.36,0.59,0.55c0.18,0.17,0.35,0.35,0.51,0.53
- c0.27,0.29,0.52,0.59,0.75,0.91c0.11,0.16,0.23,0.32,0.34,0.48c0.22,0.32,0.42,0.66,0.61,1.01c0.25,0.47,0.48,0.96,0.66,1.47
- c0.08,0.19,0.15,0.38,0.21,0.58c0.41,1.24,0.62,2.57,0.6,3.95C983.31,474.88,983.29,475.22,983.25,475.56z"/>
- <path class="st0" d="M977.13,266.06c0,2.38,0.18,4.77-0.05,7.13c-0.33,3.46-2.74,5.61-5.97,5.68c-3.35,0.08-6.09-2.12-6.28-5.68
- c-0.26-4.85-0.26-9.73,0-14.58c0.18-3.35,2.89-5.5,6.12-5.5c3.24,0,5.81,2.14,6.15,5.5c0.24,2.46,0.05,4.97,0.05,7.46
- C977.13,266.06,977.13,266.06,977.13,266.06z"/>
- <path class="st0" d="M977.18,682.72c0,2.27,0.14,4.55-0.03,6.81c-0.29,3.76-2.88,6.18-6.28,6.13c-3.29-0.05-5.91-2.38-6.08-5.97
- c-0.22-4.64-0.22-9.3-0.02-13.95c0.16-3.57,2.77-5.88,6.09-5.93c3.45-0.04,6.03,2.35,6.3,6.08c0.17,2.26,0.03,4.54,0.03,6.82
- C977.18,682.72,977.18,682.72,977.18,682.72z"/>
- <path class="st0" d="M1192.26,474.54c-0.1,3.29-2.6,5.76-6.06,5.98c-0.21,0.02-0.44,0.01-0.65,0.01h-6.5c0-0.01,0-0.01,0-0.01
- c-2.27,0-4.55,0.1-6.82-0.03c-3.29-0.18-5.7-2.67-5.86-5.83c-0.16-3.24,2.25-6.29,5.58-6.45c4.86-0.21,9.75-0.2,14.61-0.01
- C1189.94,468.34,1192.36,471.27,1192.26,474.54z"/>
- <path class="st0" d="M775.52,474.41c-0.01,3.28-2.51,5.85-5.93,6.11c-0.21,0.01-0.44,0.01-0.65,0.01
- c-1.44,0.01-2.88,0.01-4.33,0.01c-0.72-0.01-1.45-0.01-2.17-0.01c-1.8-0.01-3.61,0.05-5.42,0.02c-0.46-0.01-0.93-0.03-1.4-0.05
- c-3.44-0.17-5.94-2.75-5.99-6.04c-0.05-3.27,2.4-6.15,5.78-6.27c4.75-0.18,9.53-0.18,14.29-0.01
- C773.07,468.31,775.54,471.15,775.52,474.41z"/>
- <path class="st1" d="M958.61,474.59c0,0.3,0.01,0.6,0.04,0.9c-0.04-0.3-0.05-0.6-0.05-0.91c0-0.22,0.01-0.43,0.02-0.65
- C958.62,474.15,958.61,474.37,958.61,474.59z"/>
- <path class="st1" d="M961.78,466.1c-0.33,0.37-0.64,0.76-0.92,1.16C961.14,466.86,961.44,466.47,961.78,466.1z"/>
- <path class="st1" d="M968.74,462.25c0.54-0.1,1.1-0.16,1.67-0.18C969.84,462.1,969.29,462.16,968.74,462.25z"/>
- <path class="st1" d="M970.5,486.91c0.22,0,0.43-0.01,0.64-0.01c-0.22,0.01-0.43,0.02-0.65,0.02c-0.23,0-0.45-0.01-0.67-0.03
- C970.05,486.91,970.27,486.92,970.5,486.91z"/>
- <path class="st1" d="M971.07,462.05c0.16,0,0.32,0.01,0.48,0.02c-0.16-0.01-0.32-0.01-0.48-0.01c-0.22,0-0.44,0-0.66,0.01
- C970.63,462.05,970.85,462.05,971.07,462.05z"/>
- <path class="st1" d="M979.48,483.23c0.28-0.28,0.55-0.56,0.82-0.86c-0.39,0.46-0.81,0.89-1.27,1.28
- C979.18,483.51,979.33,483.37,979.48,483.23z"/>
- <path class="st1" d="M980.31,482.35c0.39-0.46,0.75-0.94,1.07-1.44C981.06,481.42,980.71,481.9,980.31,482.35z"/>
- </g>
- <g>
- <path class="st2" d="M938.51,758.43c-34.37-2.96-66.64-13.09-97.29-28.53c-49.17-24.78-88.16-60.95-116.45-107.95
- c-25.2-41.88-38.29-87.64-39.36-136.77c-0.09-3.85-0.09-7.71,0-11.52c0.09-7.29,0.48-14.49,1.12-21.63
- c11.91-134.4,113.67-241.26,251.03-257.66c4.31-0.5,8.67-0.59,14.3-0.96v29.07c-46.37,3.83-89.21,17.01-126.34,44.05
- c-69.97,50.9-108.26,116.27-110.73,196.23c-0.2,6.09-0.18,12.24,0.07,18.48c0.42,11.65,1.55,23.58,3.44,35.79
- c14.1,91.8,67.32,155.37,150.6,193.47c20.65,9.46,44.33,12.65,66.88,17.32c10.14,2.1,16.07,5.85,16.59,16.44
- C952.79,753.94,948.89,759.33,938.51,758.43z"/>
- <path class="st0" d="M1162.02,683.4c-44.03,42.88-98.06,67.32-159.42,74.45c-8.29,0.97-17.41,2.57-19.25-9.57
- c-1.57-10.33,4.3-17.15,16.13-19.83c19.48-4.43,39.28-7.97,58.3-14c35.17-11.17,65.04-31.76,90.27-58.19
- c73.17-76.55,94.83-166.82,58.98-265.97c-35.85-99.21-110.67-153.99-215.54-167.1c-1.7-0.21-3.41-0.45-6.61-0.87v-29.03
- c11.2,1.26,21.95,1.57,32.31,3.75c112.32,23.39,189.63,88.88,222.52,198.65C1272.61,505.62,1244.34,603.25,1162.02,683.4z"/>
- </g>
-</g>
-<g>
- <path class="st0" d="M325.24,804.05c-1.87-3.14-4.47-5.6-7.78-7.36s-7.05-2.65-11.22-2.65h-25.68v65.84h10.4v-24.52h15.28
- c4.17,0,7.91-0.88,11.22-2.65c3.31-1.76,5.91-4.21,7.78-7.36c1.87-3.14,2.8-6.69,2.8-10.65
- C328.04,810.75,327.11,807.2,325.24,804.05z M316.2,820.15c-0.97,1.61-2.33,2.87-4.08,3.78c-1.74,0.9-3.71,1.35-5.88,1.35h-15.28
- v-21.11h15.28c2.2,0,4.17,0.45,5.91,1.35c1.73,0.91,3.08,2.16,4.05,3.75c0.96,1.6,1.45,3.41,1.45,5.43
- C317.65,816.73,317.16,818.54,316.2,820.15z"/>
- <path class="st0" d="M335.68,791.65v68.23h10.03v-68.23H335.68z"/>
- <path class="st0" d="M393.83,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21
- c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.53,0,10.68-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C398.62,825.33,397.02,820.4,393.83,817.07z M388.63,846.17
- c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M449.73,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.87,1.55c-2.45,1.02-4.64,2.43-6.58,4.2
- V817c0-1.25-0.23-2.26-0.71-3.01s-1.36-1.13-2.65-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09
- c2.11-1.02,4.17-1.52,6.16-1.52c2.92,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74
- C453.96,825.76,452.55,820.81,449.73,817.3z"/>
- <path class="st0" d="M527.99,791.65v25.67c-1.63-1.56-3.48-2.8-5.55-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13
- c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51s4.31,6.55,7.52,8.63
- c3.2,2.07,6.85,3.1,10.93,3.1c2.82,0,5.39-0.52,7.72-1.56c2.33-1.05,4.41-2.47,6.22-4.28v0.55c0,2.91,1.19,4.37,3.58,4.37h6.44
- v-68.23H527.99z M527.99,844.24c-1.51,1.93-3.2,3.5-5.09,4.69c-1.88,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82
- c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.72-4.61-1.72-7.34c0-2.76,0.58-5.24,1.74-7.43c1.17-2.19,2.79-3.9,4.86-5.13
- c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.1,2.2c1.16,0.88,2,1.73,2.53,2.56V844.24z"/>
- <path class="st0" d="M560.17,794.44c-0.23-0.33-0.55-0.55-0.95-0.67l-3.26-0.83c-2.06,2.24-3.76,4.56-5.11,6.95
- c-1.35,2.39-2.02,5.04-2.02,7.96c0,2.02,0.07,3.69,0.23,5.01c0.15,1.32,0.38,2.84,0.69,4.56c0.09,0.27,0.15,0.53,0.18,0.78
- c0.03,0.24,0.06,0.44,0.09,0.6l8.83-1.57c-0.61-2.05-1.07-3.82-1.38-5.31c-0.3-1.49-0.46-2.97-0.46-4.44c0-1.66,0.23-3.19,0.69-4.6
- c0.47-1.41,1.06-2.9,1.8-4.46c0.27-0.62,0.51-1.19,0.71-1.73c0.2-0.54,0.3-0.94,0.3-1.22C560.51,795.1,560.4,794.76,560.17,794.44z
- "/>
- <path class="st0" d="M613.44,823.88c-2.1-3.7-5.01-6.59-8.72-8.67c-3.71-2.09-7.91-3.13-12.6-3.13c-4.7,0-8.9,1.04-12.63,3.13
- c-3.73,2.08-6.63,4.97-8.72,8.67c-2.09,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.15,12.51c2.1,3.68,5.01,6.57,8.72,8.65
- c3.71,2.09,7.91,3.13,12.61,3.13c4.69,0,8.89-1.04,12.6-3.13c3.71-2.08,6.62-4.97,8.72-8.65s3.15-7.85,3.15-12.51
- S615.54,827.58,613.44,823.88z M604.75,843.85c-1.25,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84s-5.25-0.62-7.46-1.87
- c-2.2-1.24-3.93-2.95-5.17-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43c1.24-2.2,2.97-3.91,5.17-5.13
- c2.21-1.23,4.7-1.84,7.46-1.84s5.24,0.61,7.45,1.84c2.21,1.22,3.93,2.93,5.18,5.13c1.24,2.19,1.86,4.67,1.86,7.43
- S605.99,841.66,604.75,843.85z"/>
- <path class="st0" d="M654.11,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.6,0-4.99,0.64-7.15,1.91c-2.16,1.28-4.04,3.02-5.64,5.23
- v-1.52c0-1.38-0.33-2.53-1.01-3.43c-0.67-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43
- c1.89-1.35,3.96-2.03,6.23-2.03c1.02,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06
- c0.89-0.71,1.46-1.67,1.7-2.9l1.02-4.55C656.43,813.15,655.17,812.72,654.11,812.45z"/>
- <path class="st0" d="M707.36,813.14c-1.38-0.28-3.17-0.42-5.38-0.42c-3.77,0-7.18,0.39-10.21,1.15c-2.76-1.16-5.72-1.74-8.88-1.74
- c-3.59,0-6.86,0.79-9.82,2.37c-2.96,1.58-5.3,3.73-7,6.46c-1.7,2.73-2.55,5.74-2.55,9.02c0,1.96,0.31,3.85,0.94,5.66
- c0.63,1.81,1.53,3.46,2.69,4.96c-1.41,1.14-2.56,2.46-3.45,3.96s-1.33,3.07-1.33,4.69c0,2.4,0.59,4.46,1.77,6.19
- c1.18,1.73,2.85,3.04,5.02,3.91c2.16,0.88,4.67,1.27,7.52,1.18l9.8-0.33c2.85-0.09,5.06,0.22,6.64,0.95
- c1.58,0.72,2.37,1.8,2.37,3.24c0,1.56-0.89,2.78-2.69,3.66c-1.79,0.87-4.3,1.31-7.52,1.31h-3.22c-1.07,0-2.94-0.14-5.59-0.42
- c-2.65-0.27-5.27-0.62-7.84-1.05c-0.56-0.1-1.08-0.14-1.57-0.14c-1.53,0-2.74,0.45-3.63,1.36c-0.89,0.9-1.43,2.24-1.61,4.02
- l-0.32,2.9c3.58,0.86,7.33,1.53,11.24,2.02c3.91,0.49,7.74,0.74,11.48,0.74c4.39,0,8.15-0.57,11.27-1.7
- c3.13-1.14,5.53-2.79,7.18-4.95c1.66-2.16,2.49-4.74,2.49-7.75c0-2.7-0.68-5.05-2.03-7.04s-3.3-3.53-5.86-4.6
- c-2.57-1.07-5.63-1.61-9.18-1.61c-0.77,0-1.34,0.02-1.71,0.05l-9.24,0.36c-1.69,0.07-2.99-0.14-3.91-0.62
- c-0.92-0.47-1.38-1.26-1.38-2.37c0-0.49,0.11-0.99,0.34-1.52c0.23-0.52,0.56-0.99,0.99-1.42c2.98,1.53,6.23,2.3,9.75,2.3
- c3.59,0,6.88-0.83,9.87-2.49c2.99-1.65,5.35-3.9,7.09-6.74c1.73-2.83,2.6-5.97,2.6-9.4c0-3.07-0.8-5.88-2.4-8.42
- c0.83,0.03,1.58,0.13,2.26,0.32c0.43,0.06,0.72,0.09,0.87,0.09c1.41,0,2.48-0.6,3.2-1.82c0.72-1.21,1.05-2.61,0.99-4.21
- L707.36,813.14z M691.45,834.6c-0.86,1.33-2.04,2.39-3.55,3.15c-1.5,0.77-3.16,1.15-4.97,1.15c-1.77,0-3.41-0.38-4.9-1.15
- c-1.48-0.76-2.66-1.82-3.51-3.15c-0.86-1.33-1.29-2.81-1.29-4.44c0-1.66,0.43-3.17,1.29-4.53c0.85-1.37,2.03-2.44,3.51-3.22
- c1.49-0.78,3.13-1.17,4.9-1.17c1.81,0,3.47,0.39,4.97,1.17c1.51,0.78,2.69,1.85,3.55,3.22c0.85,1.36,1.28,2.87,1.28,4.53
- C692.73,831.79,692.3,833.27,691.45,834.6z"/>
- <path class="st0" d="M748.59,817.07c-3.19-3.33-7.92-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.93,0.78s-4.74,1.26-6.9,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.88,0.49,1.82,0.74,2.83,0.74c0.92,0,1.77-0.17,2.53-0.51
- c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.38,0,5.84,0.93,7.39,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.91-0.55-4.08-0.98-6.54-1.29c-2.45-0.3-4.44-0.46-5.98-0.46c-6.22,0-10.87,1.31-13.94,3.92c-3.06,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.72,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15s4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.17,4.1c0.78,1.01,2,1.52,3.66,1.52h5.15v-28.07C753.37,825.33,751.78,820.4,748.59,817.07z M743.39,846.17
- c-2.27,1.63-4.5,2.95-6.7,3.98c-2.19,1.03-4.48,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.85-4.15,2.57-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,11,1.38V846.17z"/>
- <path class="st0" d="M804.48,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.86,1.55c-2.46,1.02-4.65,2.43-6.58,4.2
- V817c0-1.25-0.24-2.26-0.72-3.01c-0.47-0.75-1.35-1.13-2.64-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.93-4.09
- c2.12-1.02,4.17-1.52,6.17-1.52c2.91,0,5.12,0.92,6.62,2.76s2.26,4.74,2.26,8.69v26.64h10.03v-27.74
- C808.72,825.76,807.31,820.81,804.48,817.3z"/>
- <path class="st0" d="M822.98,812.86v47.02h10.03v-47.02H822.98z M833.81,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.02-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.89,2.16-0.89,3.35
- c0,1.2,0.29,2.32,0.89,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.31-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C834.71,798.28,834.41,797.16,833.81,796.12z"/>
- <path class="st0" d="M872.87,836.83c-2.31-2.3-5.96-4.35-10.92-6.16c-2.3-0.8-3.91-1.58-4.83-2.33c-0.93-0.75-1.39-1.66-1.39-2.73
- c0-1.32,0.43-2.33,1.29-3.02c0.86-0.69,2.12-1.03,3.78-1.03c0.55,0,1.1,0.07,1.65,0.2c0.55,0.14,1.13,0.33,1.73,0.56
- c0.6,0.23,1.03,0.4,1.31,0.53c0.86,0.33,1.67,0.5,2.44,0.5c0.98,0,1.88-0.24,2.71-0.71c0.83-0.48,1.44-1.13,1.84-1.96l1.75-3.45
- c-1.69-1.65-3.79-2.93-6.3-3.82c-2.52-0.89-4.99-1.33-7.41-1.33c-3.01,0-5.62,0.56-7.84,1.68c-2.23,1.12-3.94,2.7-5.13,4.74
- c-1.2,2.04-1.8,4.41-1.8,7.11c0,2.23,0.37,4.14,1.11,5.72c0.73,1.58,2.07,3.06,4.02,4.44c1.95,1.38,4.72,2.75,8.31,4.1
- c2.54,0.98,4.37,1.95,5.49,2.92c1.12,0.97,1.68,2.05,1.68,3.24c0,1.69-0.56,2.99-1.68,3.89c-1.12,0.91-2.69,1.36-4.71,1.36
- c-1.44,0-2.8-0.23-4.07-0.69c-1.28-0.46-2.71-1.09-4.31-1.89c-0.85-0.43-1.79-0.64-2.8-0.64c-0.92,0-1.78,0.21-2.58,0.64
- c-0.8,0.43-1.42,1.03-1.88,1.8l-1.89,3.31c2.18,2.08,4.68,3.76,7.52,5.01c2.84,1.26,5.9,1.89,9.18,1.89c3.4,0,6.41-0.62,9.02-1.86
- c2.6-1.25,4.62-2.99,6.05-5.25c1.42-2.25,2.14-4.87,2.14-7.84C876.35,842.11,875.19,839.13,872.87,836.83z"/>
- <path class="st0" d="M920.42,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.91,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2.01,2.03c0.87,0.49,1.81,0.74,2.83,0.74
- c0.92,0,1.76-0.17,2.53-0.51c1.68-0.77,3.19-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78
- c1.55,1.86,2.34,4.84,2.37,8.95c-1.9-0.55-4.08-0.98-6.53-1.29c-2.46-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.88,1.31-13.94,3.92
- c-3.07,2.6-4.6,6.25-4.6,10.94c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.72,5.15c2.4,1.26,4.97,1.88,7.73,1.88
- c5.52,0,10.68-2.28,15.46-6.85v0.41c0,1.72,0.39,3.09,1.17,4.1c0.79,1.01,2.01,1.52,3.66,1.52h5.15v-28.07
- C925.2,825.33,923.61,820.4,920.42,817.07z M915.22,846.17c-2.27,1.63-4.5,2.95-6.69,3.98c-2.2,1.03-4.49,1.54-6.88,1.54
- c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35c0-2.45,0.86-4.15,2.58-5.1c1.71-0.95,4.37-1.43,7.95-1.43
- c3.96,0,7.63,0.46,11,1.38V846.17z"/>
- <path class="st0" d="M969.78,850.96c-0.27-0.71-0.73-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6
- c-0.92,0.49-1.78,0.88-2.58,1.15c-0.8,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72V822.2
- H965v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97
- c-0.83,0-1.58,0.28-2.26,0.83c-0.67,0.55-1.01,1.35-1.01,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12
- c1.21,2.28,2.91,4.03,5.1,5.24c2.19,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47s4.98-2.17,7.25-3.55L969.78,850.96z"/>
- <path class="st0" d="M979.77,812.86v47.02h10.03v-47.02H979.77z M990.6,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35
- c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C991.5,798.28,991.2,797.16,990.6,796.12z"/>
- <path class="st0" d="M1046.22,823.88c-2.1-3.7-5-6.59-8.71-8.67c-3.72-2.09-7.92-3.13-12.61-3.13c-4.69,0-8.9,1.04-12.63,3.13
- c-3.73,2.08-6.63,4.97-8.72,8.67c-2.08,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.16,12.51c2.1,3.68,5,6.57,8.71,8.65
- c3.71,2.09,7.92,3.13,12.61,3.13c4.69,0,8.89-1.04,12.61-3.13c3.71-2.08,6.61-4.97,8.71-8.65c2.1-3.68,3.16-7.85,3.16-12.51
- S1048.32,827.58,1046.22,823.88z M1037.53,843.85c-1.24,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84
- c-2.76,0-5.24-0.62-7.45-1.87c-2.21-1.24-3.94-2.95-5.18-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43
- c1.24-2.2,2.97-3.91,5.18-5.13c2.21-1.23,4.69-1.84,7.45-1.84c2.76,0,5.24,0.61,7.45,1.84c2.21,1.22,3.94,2.93,5.18,5.13
- c1.24,2.19,1.86,4.67,1.86,7.43S1038.77,841.66,1037.53,843.85z"/>
- <path class="st0" d="M1096.81,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.42,0.52-7.87,1.55c-2.45,1.02-4.65,2.43-6.58,4.2
- V817c0-1.25-0.24-2.26-0.71-3.01c-0.48-0.75-1.36-1.13-2.65-1.13H1060v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09
- c2.11-1.02,4.17-1.52,6.16-1.52c2.91,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74
- C1101.04,825.76,1099.63,820.81,1096.81,817.3z"/>
- <path class="st0" d="M1175.06,791.65v25.67c-1.62-1.56-3.47-2.8-5.54-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13
- c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51c1.81,3.68,4.31,6.55,7.52,8.63
- c3.2,2.07,6.84,3.1,10.92,3.1c2.83,0,5.4-0.52,7.73-1.56c2.33-1.05,4.4-2.47,6.21-4.28v0.55c0,2.91,1.2,4.37,3.59,4.37h6.44v-68.23
- H1175.06z M1175.06,844.24c-1.5,1.93-3.19,3.5-5.08,4.69c-1.89,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82
- c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.73-4.61-1.73-7.34c0-2.76,0.59-5.24,1.75-7.43c1.17-2.19,2.79-3.9,4.86-5.13
- c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.09,2.2c1.17,0.88,2.01,1.73,2.53,2.56V844.24z"/>
- <path class="st0" d="M1230.41,812.86v32.48c-1.84,1.72-3.83,3.08-5.96,4.1c-2.13,1.01-4.18,1.52-6.14,1.52
- c-2.94,0-5.17-0.92-6.67-2.74c-1.5-1.83-2.26-4.73-2.26-8.72v-26.64h-9.98v27.74c0,6.38,1.41,11.33,4.23,14.84
- c2.83,3.51,6.93,5.27,12.33,5.27c2.79,0,5.42-0.51,7.87-1.54c2.45-1.03,4.65-2.43,6.58-4.21v0.83c0,1.25,0.24,2.25,0.71,2.99
- c0.48,0.73,1.36,1.1,2.65,1.1h6.62v-47.02H1230.41z"/>
- <path class="st0" d="M1313.4,850.96c-0.27-0.71-0.72-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6
- c-0.92,0.49-1.78,0.88-2.58,1.15c-0.79,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72
- V822.2h13.25v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97
- c-0.83,0-1.58,0.28-2.25,0.83c-0.68,0.55-1.02,1.35-1.02,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12
- c1.21,2.28,2.91,4.03,5.1,5.24c2.2,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47c2.56-0.98,4.98-2.17,7.25-3.55
- L1313.4,850.96z"/>
- <path class="st0" d="M1350.28,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.61,0-4.99,0.64-7.15,1.91c-2.17,1.28-4.04,3.02-5.64,5.23
- v-1.52c0-1.38-0.34-2.53-1.01-3.43c-0.68-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43
- c1.88-1.35,3.96-2.03,6.23-2.03c1.01,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06
- c0.89-0.71,1.46-1.67,1.7-2.9l1.01-4.55C1352.6,813.15,1351.34,812.72,1350.28,812.45z"/>
- <path class="st0" d="M1392.21,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.17,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.37,0,5.84,0.93,7.39,2.78c1.54,1.86,2.33,4.84,2.36,8.95
- c-1.9-0.55-4.07-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15c2.39,1.26,4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.45-6.85v0.41
- c0,1.72,0.4,3.09,1.18,4.1s2,1.52,3.66,1.52h5.15v-28.07C1397,825.33,1395.4,820.4,1392.21,817.07z M1387.01,846.17
- c-2.26,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.45-1.03-2.17-2.48-2.17-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M1445.12,812.86c-1.47,0-2.74,0.35-3.79,1.04c-1.06,0.69-1.84,1.68-2.33,2.96l-11.41,28.81
- c-0.18,0.55-0.32,1.25-0.41,2.09c-0.09,0.84-0.17,1.98-0.23,3.43h-0.09c-0.06-1.41-0.14-2.55-0.23-3.41
- c-0.09-0.86-0.25-1.56-0.46-2.11l-11.37-28.81c-0.49-1.28-1.27-2.27-2.34-2.96c-1.08-0.69-2.35-1.04-3.82-1.04h-6.44l20.24,47.02
- h8.93l20.24-47.02H1445.12z"/>
- <path class="st0" d="M1490.76,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.9,2.21
- c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.52,0,10.68-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C1495.55,825.33,1493.95,820.4,1490.76,817.07z M1485.56,846.17
- c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M1509.85,812.86v47.02h10.03v-47.02H1509.85z M1520.69,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.37,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35
- c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.04,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C1521.59,798.28,1521.29,797.16,1520.69,796.12z"/>
- <path class="st0" d="M1534.24,791.65v68.23h10.03v-68.23H1534.24z"/>
-</g>
-<path class="st2" d="M620.48,351.6c-0.72-46.47-16.42-83.63-47.1-111.47c-31.42-28.52-73.53-42.77-126.33-42.77H289.68
- c-9.98,0-18.07,8.09-18.07,18.07v82.8c14.78-16.16,35.3-26.83,57.84-27.88c28.02-1.31,56.12-0.7,84.18-0.92c0.8,0,1.58,0.38,2.4,0.6
- l0.4,63.51c-16.76,1.57-26.57,10.97-26.99,25.49c-0.43,14.39,9.08,23.89,27.48,27.23l0.4,63.57c-25.22,0.16-49.7,0.4-74.2,0.4
- c-7.3,0-14.69-0.05-21.88-1.21c-19.86-3.2-36.97-13-49.63-27.15v311.46c0,9.98,8.09,18.08,18.07,18.08h43.45
- c9.98,0,18.08-8.1,18.08-18.08V529.49c0-9.99,8.09-18.08,18.08-18.08h40.53c52.28,0,92.41-5.61,120.39-16.83
- c27.99-11.22,50.03-29.24,66.14-54.06c13.39-20.63,21.21-43.82,23.47-69.57c0.46-5.22,0.69-10.54,0.69-15.97
- C620.51,353.85,620.5,352.72,620.48,351.6z M536.79,351.4c-14.22,0.09-28.41,0.29-42.61,0.1c-1.43-0.01-3.22-2.13-4.18-3.71
- c-5.51-9.04-12.77-14.53-23.58-14.25c-11.44,0.29-22.88,0.19-34.61,0.27l-0.41-64C495.18,261.1,534.32,306.85,536.79,351.4z
- M415.01,370.4c-6.43-0.07-10.54-4.08-10.89-10.11c-0.37-6.14,3.22-10.98,9.61-11.2c17.95-0.62,35.92-0.96,53.88-0.86
- c6.81,0.03,10.48,4.78,10.28,11.31c-0.21,6.76-3.71,10.47-10.85,10.71c-8.74,0.32-17.52,0.18-26.3,0.24v-0.2
- C432.17,370.35,423.58,370.52,415.01,370.4z M432.62,449.12l-0.41-63.97c10.99-0.07,21.62-0.7,32.19-0.06
- c12.21,0.74,20.12-5.14,26.08-15.3c0.73-1.24,2.22-2.85,3.38-2.87c14.39-0.3,28.77-0.31,43.19-0.4
- C534.44,410.98,496.74,457.08,432.62,449.12z"/>
-<path class="st2" d="M1649.63,193.61h-405.92c-12.49,0-22.62,10.12-22.62,22.62v25.52c0,12.49,10.13,22.62,22.62,22.62h144.46
- c12.49,0,22.62,10.13,22.62,22.62v440.19c0,12.49,10.13,22.62,22.62,22.62h34.36c12.5,0,22.62-10.13,22.62-22.62V286.99
- c0-12.49,10.13-22.62,22.62-22.62h136.62c12.49,0,22.62-10.13,22.62-22.62v-25.52C1672.25,203.73,1662.12,193.61,1649.63,193.61z"/>
-<g>
- <path class="st2" d="M560.4,349.53c-1.41,0-2.83,0.29-4.51,0.47l0.11,17.56c1.71,0.12,3.48,0.34,5.27,0.34
- c15.07,0.02,30.16-0.19,45.24,0.06c13.92,0.22,19.38,5.01,21.47,19.27c1.25,8.54,1.73,17.24,2.01,25.87
- c0.99,30.98,17.18,50.79,46.85,55.6c9.62,1.56,19.56,1.28,29.35,1.22c6.08-0.04,9.74-4.48,9.29-9.82
- c-0.42-5.1-4.33-8.12-10.16-8.33c-9.15-0.33-18.49,0.09-27.43-1.58c-19.96-3.75-29.56-16.55-30.35-37.68
- c-0.39-10.14-0.67-20.43-2.58-30.33c-4.1-21.16-13.12-30.28-33.7-32.1C594.42,348.6,577.36,349.61,560.4,349.53z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ viewBox="0 0 1920 1080" style="enable-background:new 0 0 1920 1080;" xml:space="preserve">\r
+<style type="text/css">\r
+ .st0{fill:#003268;}\r
+ .st1{fill:#FFFFFF;}\r
+ .st2{fill:#005BCE;}\r
+</style>\r
+<g>\r
+ <g>\r
+ <path class="st0" d="M1107.86,464.03c-38.08-0.02-76.17-0.02-114.24,0.05c-2.02,0-3.2-0.62-4.56-2.21\r
+ c-2.29-2.68-4.94-5.26-7.96-6.97c-2.41-1.38-2.96-2.75-2.96-5.27c0.07-48.71,0.04-97.43,0.04-146.14c0-1.2,0.07-2.41-0.04-3.59\r
+ c-0.37-4.36-4.07-7.2-8.41-6.52c-3.87,0.61-6.02,3.54-6.02,8.34c-0.02,24.74,0,49.48,0,74.22c0,24.6-0.02,49.23,0.02,73.86\r
+ c0.03,2.37-0.41,3.72-2.82,5.04c-2.96,1.57-5.56,4.07-7.79,6.63c-1.47,1.69-2.65,2.67-5,2.63c-7.59-0.15-15.19-0.04-22.79,0\r
+ c-3.52,0.02-6.26,1.66-8.16,4.55c-2.24,3.33-2.34,6.96-0.55,10.51c1.88,3.7,5.17,5.52,9.28,5.56c7.58,0.07,15.2-0.06,22.77,0.11\r
+ c1.34,0.05,2.8,1.07,3.94,1.97c3,2.41,5.72,5.23,8.87,7.42c1.53,1.05,2.3,1.82,2.28,3.73c-0.11,7.15-0.07,14.31-0.05,21.47\r
+ c0,1.18-0.02,2.41,0.27,3.55c0.83,3.39,4.18,5.65,7.61,5.32c3.77-0.37,6.51-3.22,6.57-7.23c0.09-7.7,0.07-15.41,0-23.11\r
+ c0-1.97,0.79-2.89,2.54-3.95c2.89-1.72,5.72-3.91,7.86-6.5c1.62-1.97,3.07-2.82,5.58-2.82c27.57,0.09,55.13,0.06,82.67,0.06\r
+ c10.64,0,21.28,0.07,31.9-0.02c6.66-0.06,11.03-4.55,10.84-10.79C1119.35,467.84,1114.91,464.03,1107.86,464.03z M983.25,475.56\r
+ c0,0.01,0,0.02-0.01,0.04c-0.01,0.13-0.02,0.25-0.04,0.38c-0.02,0.19-0.05,0.37-0.09,0.56c-0.1,0.55-0.24,1.1-0.42,1.63\r
+ c-0.06,0.18-0.12,0.36-0.19,0.53c-0.08,0.21-0.16,0.41-0.26,0.62c-0.08,0.19-0.16,0.37-0.26,0.54c-0.18,0.36-0.38,0.72-0.6,1.05\r
+ c-0.32,0.5-0.68,0.98-1.07,1.44c0,0.01,0,0.01-0.01,0.02c-0.27,0.3-0.54,0.58-0.82,0.86c-0.15,0.14-0.3,0.28-0.45,0.42\r
+ c0,0,0,0.01-0.01,0.01c-0.2,0.18-0.41,0.35-0.62,0.51c-0.16,0.13-0.32,0.25-0.48,0.36c-0.94,0.67-1.98,1.22-3.09,1.62\r
+ c-0.78,0.28-1.58,0.49-2.42,0.62c-0.42,0.06-0.84,0.11-1.27,0.13c-0.21,0-0.42,0.01-0.64,0.01c-0.23,0.01-0.45,0-0.68-0.02\r
+ c-0.17-0.01-0.34-0.03-0.52-0.05c-0.37-0.04-0.74-0.11-1.1-0.2c-0.36-0.09-0.72-0.2-1.07-0.32c-1.28-0.47-2.5-1.18-3.6-2.07\r
+ c-0.19-0.15-0.38-0.32-0.56-0.48c-0.24-0.22-0.47-0.44-0.69-0.67c-0.05-0.05-0.1-0.11-0.15-0.16c-0.22-0.24-0.44-0.49-0.64-0.74\r
+ c-0.26-0.31-0.5-0.63-0.72-0.96c-0.22-0.33-0.43-0.66-0.63-1.01c-0.38-0.7-0.71-1.42-0.95-2.16c-0.13-0.37-0.23-0.75-0.32-1.12\r
+ c-0.04-0.19-0.08-0.38-0.11-0.57c-0.06-0.29-0.1-0.59-0.11-0.89c-0.03-0.3-0.04-0.6-0.04-0.9c0-0.22,0.01-0.44,0.01-0.66\r
+ c0.02-0.4,0.05-0.79,0.11-1.18c0.02-0.14,0.04-0.29,0.07-0.43c0.01-0.08,0.02-0.15,0.04-0.23c0.02-0.07,0.04-0.15,0.05-0.23\r
+ c0.03-0.16,0.06-0.31,0.1-0.46c0.06-0.25,0.13-0.5,0.21-0.74c0.16-0.54,0.37-1.07,0.61-1.58c0.08-0.18,0.17-0.36,0.27-0.54\r
+ c0.12-0.22,0.24-0.44,0.37-0.65c0.13-0.21,0.26-0.42,0.41-0.63c0.28-0.4,0.59-0.79,0.92-1.16c0.17-0.2,0.36-0.4,0.56-0.58\r
+ c0.16-0.16,0.32-0.31,0.49-0.46c0.18-0.16,0.37-0.32,0.57-0.47c0.19-0.15,0.39-0.29,0.6-0.43c0.61-0.42,1.27-0.78,1.96-1.08\r
+ c0.23-0.1,0.46-0.19,0.7-0.28c0.17-0.06,0.34-0.12,0.51-0.17c0.17-0.06,0.34-0.11,0.51-0.15s0.35-0.09,0.53-0.13\r
+ c0.18-0.03,0.35-0.07,0.53-0.1c0.55-0.09,1.1-0.15,1.67-0.18c0.22-0.01,0.44-0.01,0.66-0.01c0.16,0,0.32,0,0.48,0.01\r
+ c0.15,0.01,0.31,0.02,0.47,0.03c0.31,0.03,0.62,0.06,0.92,0.11c0.27,0.04,0.54,0.1,0.81,0.16c0.26,0.06,0.53,0.13,0.79,0.21\r
+ c0.25,0.07,0.51,0.16,0.75,0.25l0.01,0.01c0.24,0.09,0.48,0.18,0.71,0.28c0.04,0.02,0.07,0.03,0.11,0.06\r
+ c0.22,0.1,0.43,0.2,0.65,0.32c0.22,0.11,0.44,0.24,0.66,0.37c0.01,0.01,0.02,0.01,0.03,0.02c0.22,0.14,0.44,0.29,0.66,0.44\r
+ c0.21,0.15,0.42,0.31,0.63,0.48c0.1,0.08,0.2,0.16,0.29,0.24c0.2,0.17,0.4,0.36,0.59,0.55c0.18,0.17,0.35,0.35,0.51,0.53\r
+ c0.27,0.29,0.52,0.59,0.75,0.91c0.11,0.16,0.23,0.32,0.34,0.48c0.22,0.32,0.42,0.66,0.61,1.01c0.25,0.47,0.48,0.96,0.66,1.47\r
+ c0.08,0.19,0.15,0.38,0.21,0.58c0.41,1.24,0.62,2.57,0.6,3.95C983.31,474.88,983.29,475.22,983.25,475.56z"/>\r
+ <path class="st0" d="M977.13,266.06c0,2.38,0.18,4.77-0.05,7.13c-0.33,3.46-2.74,5.61-5.97,5.68c-3.35,0.08-6.09-2.12-6.28-5.68\r
+ c-0.26-4.85-0.26-9.73,0-14.58c0.18-3.35,2.89-5.5,6.12-5.5c3.24,0,5.81,2.14,6.15,5.5c0.24,2.46,0.05,4.97,0.05,7.46\r
+ C977.13,266.06,977.13,266.06,977.13,266.06z"/>\r
+ <path class="st0" d="M977.18,682.72c0,2.27,0.14,4.55-0.03,6.81c-0.29,3.76-2.88,6.18-6.28,6.13c-3.29-0.05-5.91-2.38-6.08-5.97\r
+ c-0.22-4.64-0.22-9.3-0.02-13.95c0.16-3.57,2.77-5.88,6.09-5.93c3.45-0.04,6.03,2.35,6.3,6.08c0.17,2.26,0.03,4.54,0.03,6.82\r
+ C977.18,682.72,977.18,682.72,977.18,682.72z"/>\r
+ <path class="st0" d="M1192.26,474.54c-0.1,3.29-2.6,5.76-6.06,5.98c-0.21,0.02-0.44,0.01-0.65,0.01h-6.5c0-0.01,0-0.01,0-0.01\r
+ c-2.27,0-4.55,0.1-6.82-0.03c-3.29-0.18-5.7-2.67-5.86-5.83c-0.16-3.24,2.25-6.29,5.58-6.45c4.86-0.21,9.75-0.2,14.61-0.01\r
+ C1189.94,468.34,1192.36,471.27,1192.26,474.54z"/>\r
+ <path class="st0" d="M775.52,474.41c-0.01,3.28-2.51,5.85-5.93,6.11c-0.21,0.01-0.44,0.01-0.65,0.01\r
+ c-1.44,0.01-2.88,0.01-4.33,0.01c-0.72-0.01-1.45-0.01-2.17-0.01c-1.8-0.01-3.61,0.05-5.42,0.02c-0.46-0.01-0.93-0.03-1.4-0.05\r
+ c-3.44-0.17-5.94-2.75-5.99-6.04c-0.05-3.27,2.4-6.15,5.78-6.27c4.75-0.18,9.53-0.18,14.29-0.01\r
+ C773.07,468.31,775.54,471.15,775.52,474.41z"/>\r
+ <path class="st1" d="M958.61,474.59c0,0.3,0.01,0.6,0.04,0.9c-0.04-0.3-0.05-0.6-0.05-0.91c0-0.22,0.01-0.43,0.02-0.65\r
+ C958.62,474.15,958.61,474.37,958.61,474.59z"/>\r
+ <path class="st1" d="M961.78,466.1c-0.33,0.37-0.64,0.76-0.92,1.16C961.14,466.86,961.44,466.47,961.78,466.1z"/>\r
+ <path class="st1" d="M968.74,462.25c0.54-0.1,1.1-0.16,1.67-0.18C969.84,462.1,969.29,462.16,968.74,462.25z"/>\r
+ <path class="st1" d="M970.5,486.91c0.22,0,0.43-0.01,0.64-0.01c-0.22,0.01-0.43,0.02-0.65,0.02c-0.23,0-0.45-0.01-0.67-0.03\r
+ C970.05,486.91,970.27,486.92,970.5,486.91z"/>\r
+ <path class="st1" d="M971.07,462.05c0.16,0,0.32,0.01,0.48,0.02c-0.16-0.01-0.32-0.01-0.48-0.01c-0.22,0-0.44,0-0.66,0.01\r
+ C970.63,462.05,970.85,462.05,971.07,462.05z"/>\r
+ <path class="st1" d="M979.48,483.23c0.28-0.28,0.55-0.56,0.82-0.86c-0.39,0.46-0.81,0.89-1.27,1.28\r
+ C979.18,483.51,979.33,483.37,979.48,483.23z"/>\r
+ <path class="st1" d="M980.31,482.35c0.39-0.46,0.75-0.94,1.07-1.44C981.06,481.42,980.71,481.9,980.31,482.35z"/>\r
+ </g>\r
+ <g>\r
+ <path class="st2" d="M938.51,758.43c-34.37-2.96-66.64-13.09-97.29-28.53c-49.17-24.78-88.16-60.95-116.45-107.95\r
+ c-25.2-41.88-38.29-87.64-39.36-136.77c-0.09-3.85-0.09-7.71,0-11.52c0.09-7.29,0.48-14.49,1.12-21.63\r
+ c11.91-134.4,113.67-241.26,251.03-257.66c4.31-0.5,8.67-0.59,14.3-0.96v29.07c-46.37,3.83-89.21,17.01-126.34,44.05\r
+ c-69.97,50.9-108.26,116.27-110.73,196.23c-0.2,6.09-0.18,12.24,0.07,18.48c0.42,11.65,1.55,23.58,3.44,35.79\r
+ c14.1,91.8,67.32,155.37,150.6,193.47c20.65,9.46,44.33,12.65,66.88,17.32c10.14,2.1,16.07,5.85,16.59,16.44\r
+ C952.79,753.94,948.89,759.33,938.51,758.43z"/>\r
+ <path class="st0" d="M1162.02,683.4c-44.03,42.88-98.06,67.32-159.42,74.45c-8.29,0.97-17.41,2.57-19.25-9.57\r
+ c-1.57-10.33,4.3-17.15,16.13-19.83c19.48-4.43,39.28-7.97,58.3-14c35.17-11.17,65.04-31.76,90.27-58.19\r
+ c73.17-76.55,94.83-166.82,58.98-265.97c-35.85-99.21-110.67-153.99-215.54-167.1c-1.7-0.21-3.41-0.45-6.61-0.87v-29.03\r
+ c11.2,1.26,21.95,1.57,32.31,3.75c112.32,23.39,189.63,88.88,222.52,198.65C1272.61,505.62,1244.34,603.25,1162.02,683.4z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+ <path class="st0" d="M325.24,804.05c-1.87-3.14-4.47-5.6-7.78-7.36s-7.05-2.65-11.22-2.65h-25.68v65.84h10.4v-24.52h15.28\r
+ c4.17,0,7.91-0.88,11.22-2.65c3.31-1.76,5.91-4.21,7.78-7.36c1.87-3.14,2.8-6.69,2.8-10.65\r
+ C328.04,810.75,327.11,807.2,325.24,804.05z M316.2,820.15c-0.97,1.61-2.33,2.87-4.08,3.78c-1.74,0.9-3.71,1.35-5.88,1.35h-15.28\r
+ v-21.11h15.28c2.2,0,4.17,0.45,5.91,1.35c1.73,0.91,3.08,2.16,4.05,3.75c0.96,1.6,1.45,3.41,1.45,5.43\r
+ C317.65,816.73,317.16,818.54,316.2,820.15z"/>\r
+ <path class="st0" d="M335.68,791.65v68.23h10.03v-68.23H335.68z"/>\r
+ <path class="st0" d="M393.83,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.53,0,10.68-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C398.62,825.33,397.02,820.4,393.83,817.07z M388.63,846.17\r
+ c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M449.73,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.87,1.55c-2.45,1.02-4.64,2.43-6.58,4.2\r
+ V817c0-1.25-0.23-2.26-0.71-3.01s-1.36-1.13-2.65-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09\r
+ c2.11-1.02,4.17-1.52,6.16-1.52c2.92,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74\r
+ C453.96,825.76,452.55,820.81,449.73,817.3z"/>\r
+ <path class="st0" d="M527.99,791.65v25.67c-1.63-1.56-3.48-2.8-5.55-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13\r
+ c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51s4.31,6.55,7.52,8.63\r
+ c3.2,2.07,6.85,3.1,10.93,3.1c2.82,0,5.39-0.52,7.72-1.56c2.33-1.05,4.41-2.47,6.22-4.28v0.55c0,2.91,1.19,4.37,3.58,4.37h6.44\r
+ v-68.23H527.99z M527.99,844.24c-1.51,1.93-3.2,3.5-5.09,4.69c-1.88,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82\r
+ c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.72-4.61-1.72-7.34c0-2.76,0.58-5.24,1.74-7.43c1.17-2.19,2.79-3.9,4.86-5.13\r
+ c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.1,2.2c1.16,0.88,2,1.73,2.53,2.56V844.24z"/>\r
+ <path class="st0" d="M560.17,794.44c-0.23-0.33-0.55-0.55-0.95-0.67l-3.26-0.83c-2.06,2.24-3.76,4.56-5.11,6.95\r
+ c-1.35,2.39-2.02,5.04-2.02,7.96c0,2.02,0.07,3.69,0.23,5.01c0.15,1.32,0.38,2.84,0.69,4.56c0.09,0.27,0.15,0.53,0.18,0.78\r
+ c0.03,0.24,0.06,0.44,0.09,0.6l8.83-1.57c-0.61-2.05-1.07-3.82-1.38-5.31c-0.3-1.49-0.46-2.97-0.46-4.44c0-1.66,0.23-3.19,0.69-4.6\r
+ c0.47-1.41,1.06-2.9,1.8-4.46c0.27-0.62,0.51-1.19,0.71-1.73c0.2-0.54,0.3-0.94,0.3-1.22C560.51,795.1,560.4,794.76,560.17,794.44z\r
+ "/>\r
+ <path class="st0" d="M613.44,823.88c-2.1-3.7-5.01-6.59-8.72-8.67c-3.71-2.09-7.91-3.13-12.6-3.13c-4.7,0-8.9,1.04-12.63,3.13\r
+ c-3.73,2.08-6.63,4.97-8.72,8.67c-2.09,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.15,12.51c2.1,3.68,5.01,6.57,8.72,8.65\r
+ c3.71,2.09,7.91,3.13,12.61,3.13c4.69,0,8.89-1.04,12.6-3.13c3.71-2.08,6.62-4.97,8.72-8.65s3.15-7.85,3.15-12.51\r
+ S615.54,827.58,613.44,823.88z M604.75,843.85c-1.25,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84s-5.25-0.62-7.46-1.87\r
+ c-2.2-1.24-3.93-2.95-5.17-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43c1.24-2.2,2.97-3.91,5.17-5.13\r
+ c2.21-1.23,4.7-1.84,7.46-1.84s5.24,0.61,7.45,1.84c2.21,1.22,3.93,2.93,5.18,5.13c1.24,2.19,1.86,4.67,1.86,7.43\r
+ S605.99,841.66,604.75,843.85z"/>\r
+ <path class="st0" d="M654.11,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.6,0-4.99,0.64-7.15,1.91c-2.16,1.28-4.04,3.02-5.64,5.23\r
+ v-1.52c0-1.38-0.33-2.53-1.01-3.43c-0.67-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43\r
+ c1.89-1.35,3.96-2.03,6.23-2.03c1.02,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06\r
+ c0.89-0.71,1.46-1.67,1.7-2.9l1.02-4.55C656.43,813.15,655.17,812.72,654.11,812.45z"/>\r
+ <path class="st0" d="M707.36,813.14c-1.38-0.28-3.17-0.42-5.38-0.42c-3.77,0-7.18,0.39-10.21,1.15c-2.76-1.16-5.72-1.74-8.88-1.74\r
+ c-3.59,0-6.86,0.79-9.82,2.37c-2.96,1.58-5.3,3.73-7,6.46c-1.7,2.73-2.55,5.74-2.55,9.02c0,1.96,0.31,3.85,0.94,5.66\r
+ c0.63,1.81,1.53,3.46,2.69,4.96c-1.41,1.14-2.56,2.46-3.45,3.96s-1.33,3.07-1.33,4.69c0,2.4,0.59,4.46,1.77,6.19\r
+ c1.18,1.73,2.85,3.04,5.02,3.91c2.16,0.88,4.67,1.27,7.52,1.18l9.8-0.33c2.85-0.09,5.06,0.22,6.64,0.95\r
+ c1.58,0.72,2.37,1.8,2.37,3.24c0,1.56-0.89,2.78-2.69,3.66c-1.79,0.87-4.3,1.31-7.52,1.31h-3.22c-1.07,0-2.94-0.14-5.59-0.42\r
+ c-2.65-0.27-5.27-0.62-7.84-1.05c-0.56-0.1-1.08-0.14-1.57-0.14c-1.53,0-2.74,0.45-3.63,1.36c-0.89,0.9-1.43,2.24-1.61,4.02\r
+ l-0.32,2.9c3.58,0.86,7.33,1.53,11.24,2.02c3.91,0.49,7.74,0.74,11.48,0.74c4.39,0,8.15-0.57,11.27-1.7\r
+ c3.13-1.14,5.53-2.79,7.18-4.95c1.66-2.16,2.49-4.74,2.49-7.75c0-2.7-0.68-5.05-2.03-7.04s-3.3-3.53-5.86-4.6\r
+ c-2.57-1.07-5.63-1.61-9.18-1.61c-0.77,0-1.34,0.02-1.71,0.05l-9.24,0.36c-1.69,0.07-2.99-0.14-3.91-0.62\r
+ c-0.92-0.47-1.38-1.26-1.38-2.37c0-0.49,0.11-0.99,0.34-1.52c0.23-0.52,0.56-0.99,0.99-1.42c2.98,1.53,6.23,2.3,9.75,2.3\r
+ c3.59,0,6.88-0.83,9.87-2.49c2.99-1.65,5.35-3.9,7.09-6.74c1.73-2.83,2.6-5.97,2.6-9.4c0-3.07-0.8-5.88-2.4-8.42\r
+ c0.83,0.03,1.58,0.13,2.26,0.32c0.43,0.06,0.72,0.09,0.87,0.09c1.41,0,2.48-0.6,3.2-1.82c0.72-1.21,1.05-2.61,0.99-4.21\r
+ L707.36,813.14z M691.45,834.6c-0.86,1.33-2.04,2.39-3.55,3.15c-1.5,0.77-3.16,1.15-4.97,1.15c-1.77,0-3.41-0.38-4.9-1.15\r
+ c-1.48-0.76-2.66-1.82-3.51-3.15c-0.86-1.33-1.29-2.81-1.29-4.44c0-1.66,0.43-3.17,1.29-4.53c0.85-1.37,2.03-2.44,3.51-3.22\r
+ c1.49-0.78,3.13-1.17,4.9-1.17c1.81,0,3.47,0.39,4.97,1.17c1.51,0.78,2.69,1.85,3.55,3.22c0.85,1.36,1.28,2.87,1.28,4.53\r
+ C692.73,831.79,692.3,833.27,691.45,834.6z"/>\r
+ <path class="st0" d="M748.59,817.07c-3.19-3.33-7.92-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.93,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.88,0.49,1.82,0.74,2.83,0.74c0.92,0,1.77-0.17,2.53-0.51\r
+ c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.38,0,5.84,0.93,7.39,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.91-0.55-4.08-0.98-6.54-1.29c-2.45-0.3-4.44-0.46-5.98-0.46c-6.22,0-10.87,1.31-13.94,3.92c-3.06,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.72,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15s4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.17,4.1c0.78,1.01,2,1.52,3.66,1.52h5.15v-28.07C753.37,825.33,751.78,820.4,748.59,817.07z M743.39,846.17\r
+ c-2.27,1.63-4.5,2.95-6.7,3.98c-2.19,1.03-4.48,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.85-4.15,2.57-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,11,1.38V846.17z"/>\r
+ <path class="st0" d="M804.48,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.86,1.55c-2.46,1.02-4.65,2.43-6.58,4.2\r
+ V817c0-1.25-0.24-2.26-0.72-3.01c-0.47-0.75-1.35-1.13-2.64-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.93-4.09\r
+ c2.12-1.02,4.17-1.52,6.17-1.52c2.91,0,5.12,0.92,6.62,2.76s2.26,4.74,2.26,8.69v26.64h10.03v-27.74\r
+ C808.72,825.76,807.31,820.81,804.48,817.3z"/>\r
+ <path class="st0" d="M822.98,812.86v47.02h10.03v-47.02H822.98z M833.81,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.02-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.89,2.16-0.89,3.35\r
+ c0,1.2,0.29,2.32,0.89,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.31-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C834.71,798.28,834.41,797.16,833.81,796.12z"/>\r
+ <path class="st0" d="M872.87,836.83c-2.31-2.3-5.96-4.35-10.92-6.16c-2.3-0.8-3.91-1.58-4.83-2.33c-0.93-0.75-1.39-1.66-1.39-2.73\r
+ c0-1.32,0.43-2.33,1.29-3.02c0.86-0.69,2.12-1.03,3.78-1.03c0.55,0,1.1,0.07,1.65,0.2c0.55,0.14,1.13,0.33,1.73,0.56\r
+ c0.6,0.23,1.03,0.4,1.31,0.53c0.86,0.33,1.67,0.5,2.44,0.5c0.98,0,1.88-0.24,2.71-0.71c0.83-0.48,1.44-1.13,1.84-1.96l1.75-3.45\r
+ c-1.69-1.65-3.79-2.93-6.3-3.82c-2.52-0.89-4.99-1.33-7.41-1.33c-3.01,0-5.62,0.56-7.84,1.68c-2.23,1.12-3.94,2.7-5.13,4.74\r
+ c-1.2,2.04-1.8,4.41-1.8,7.11c0,2.23,0.37,4.14,1.11,5.72c0.73,1.58,2.07,3.06,4.02,4.44c1.95,1.38,4.72,2.75,8.31,4.1\r
+ c2.54,0.98,4.37,1.95,5.49,2.92c1.12,0.97,1.68,2.05,1.68,3.24c0,1.69-0.56,2.99-1.68,3.89c-1.12,0.91-2.69,1.36-4.71,1.36\r
+ c-1.44,0-2.8-0.23-4.07-0.69c-1.28-0.46-2.71-1.09-4.31-1.89c-0.85-0.43-1.79-0.64-2.8-0.64c-0.92,0-1.78,0.21-2.58,0.64\r
+ c-0.8,0.43-1.42,1.03-1.88,1.8l-1.89,3.31c2.18,2.08,4.68,3.76,7.52,5.01c2.84,1.26,5.9,1.89,9.18,1.89c3.4,0,6.41-0.62,9.02-1.86\r
+ c2.6-1.25,4.62-2.99,6.05-5.25c1.42-2.25,2.14-4.87,2.14-7.84C876.35,842.11,875.19,839.13,872.87,836.83z"/>\r
+ <path class="st0" d="M920.42,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.91,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2.01,2.03c0.87,0.49,1.81,0.74,2.83,0.74\r
+ c0.92,0,1.76-0.17,2.53-0.51c1.68-0.77,3.19-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78\r
+ c1.55,1.86,2.34,4.84,2.37,8.95c-1.9-0.55-4.08-0.98-6.53-1.29c-2.46-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.88,1.31-13.94,3.92\r
+ c-3.07,2.6-4.6,6.25-4.6,10.94c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.72,5.15c2.4,1.26,4.97,1.88,7.73,1.88\r
+ c5.52,0,10.68-2.28,15.46-6.85v0.41c0,1.72,0.39,3.09,1.17,4.1c0.79,1.01,2.01,1.52,3.66,1.52h5.15v-28.07\r
+ C925.2,825.33,923.61,820.4,920.42,817.07z M915.22,846.17c-2.27,1.63-4.5,2.95-6.69,3.98c-2.2,1.03-4.49,1.54-6.88,1.54\r
+ c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35c0-2.45,0.86-4.15,2.58-5.1c1.71-0.95,4.37-1.43,7.95-1.43\r
+ c3.96,0,7.63,0.46,11,1.38V846.17z"/>\r
+ <path class="st0" d="M969.78,850.96c-0.27-0.71-0.73-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6\r
+ c-0.92,0.49-1.78,0.88-2.58,1.15c-0.8,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72V822.2\r
+ H965v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97\r
+ c-0.83,0-1.58,0.28-2.26,0.83c-0.67,0.55-1.01,1.35-1.01,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12\r
+ c1.21,2.28,2.91,4.03,5.1,5.24c2.19,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47s4.98-2.17,7.25-3.55L969.78,850.96z"/>\r
+ <path class="st0" d="M979.77,812.86v47.02h10.03v-47.02H979.77z M990.6,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35\r
+ c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C991.5,798.28,991.2,797.16,990.6,796.12z"/>\r
+ <path class="st0" d="M1046.22,823.88c-2.1-3.7-5-6.59-8.71-8.67c-3.72-2.09-7.92-3.13-12.61-3.13c-4.69,0-8.9,1.04-12.63,3.13\r
+ c-3.73,2.08-6.63,4.97-8.72,8.67c-2.08,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.16,12.51c2.1,3.68,5,6.57,8.71,8.65\r
+ c3.71,2.09,7.92,3.13,12.61,3.13c4.69,0,8.89-1.04,12.61-3.13c3.71-2.08,6.61-4.97,8.71-8.65c2.1-3.68,3.16-7.85,3.16-12.51\r
+ S1048.32,827.58,1046.22,823.88z M1037.53,843.85c-1.24,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84\r
+ c-2.76,0-5.24-0.62-7.45-1.87c-2.21-1.24-3.94-2.95-5.18-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43\r
+ c1.24-2.2,2.97-3.91,5.18-5.13c2.21-1.23,4.69-1.84,7.45-1.84c2.76,0,5.24,0.61,7.45,1.84c2.21,1.22,3.94,2.93,5.18,5.13\r
+ c1.24,2.19,1.86,4.67,1.86,7.43S1038.77,841.66,1037.53,843.85z"/>\r
+ <path class="st0" d="M1096.81,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.42,0.52-7.87,1.55c-2.45,1.02-4.65,2.43-6.58,4.2\r
+ V817c0-1.25-0.24-2.26-0.71-3.01c-0.48-0.75-1.36-1.13-2.65-1.13H1060v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09\r
+ c2.11-1.02,4.17-1.52,6.16-1.52c2.91,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74\r
+ C1101.04,825.76,1099.63,820.81,1096.81,817.3z"/>\r
+ <path class="st0" d="M1175.06,791.65v25.67c-1.62-1.56-3.47-2.8-5.54-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13\r
+ c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51c1.81,3.68,4.31,6.55,7.52,8.63\r
+ c3.2,2.07,6.84,3.1,10.92,3.1c2.83,0,5.4-0.52,7.73-1.56c2.33-1.05,4.4-2.47,6.21-4.28v0.55c0,2.91,1.2,4.37,3.59,4.37h6.44v-68.23\r
+ H1175.06z M1175.06,844.24c-1.5,1.93-3.19,3.5-5.08,4.69c-1.89,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82\r
+ c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.73-4.61-1.73-7.34c0-2.76,0.59-5.24,1.75-7.43c1.17-2.19,2.79-3.9,4.86-5.13\r
+ c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.09,2.2c1.17,0.88,2.01,1.73,2.53,2.56V844.24z"/>\r
+ <path class="st0" d="M1230.41,812.86v32.48c-1.84,1.72-3.83,3.08-5.96,4.1c-2.13,1.01-4.18,1.52-6.14,1.52\r
+ c-2.94,0-5.17-0.92-6.67-2.74c-1.5-1.83-2.26-4.73-2.26-8.72v-26.64h-9.98v27.74c0,6.38,1.41,11.33,4.23,14.84\r
+ c2.83,3.51,6.93,5.27,12.33,5.27c2.79,0,5.42-0.51,7.87-1.54c2.45-1.03,4.65-2.43,6.58-4.21v0.83c0,1.25,0.24,2.25,0.71,2.99\r
+ c0.48,0.73,1.36,1.1,2.65,1.1h6.62v-47.02H1230.41z"/>\r
+ <path class="st0" d="M1313.4,850.96c-0.27-0.71-0.72-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6\r
+ c-0.92,0.49-1.78,0.88-2.58,1.15c-0.79,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72\r
+ V822.2h13.25v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97\r
+ c-0.83,0-1.58,0.28-2.25,0.83c-0.68,0.55-1.02,1.35-1.02,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12\r
+ c1.21,2.28,2.91,4.03,5.1,5.24c2.2,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47c2.56-0.98,4.98-2.17,7.25-3.55\r
+ L1313.4,850.96z"/>\r
+ <path class="st0" d="M1350.28,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.61,0-4.99,0.64-7.15,1.91c-2.17,1.28-4.04,3.02-5.64,5.23\r
+ v-1.52c0-1.38-0.34-2.53-1.01-3.43c-0.68-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43\r
+ c1.88-1.35,3.96-2.03,6.23-2.03c1.01,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06\r
+ c0.89-0.71,1.46-1.67,1.7-2.9l1.01-4.55C1352.6,813.15,1351.34,812.72,1350.28,812.45z"/>\r
+ <path class="st0" d="M1392.21,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.17,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.37,0,5.84,0.93,7.39,2.78c1.54,1.86,2.33,4.84,2.36,8.95\r
+ c-1.9-0.55-4.07-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15c2.39,1.26,4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.45-6.85v0.41\r
+ c0,1.72,0.4,3.09,1.18,4.1s2,1.52,3.66,1.52h5.15v-28.07C1397,825.33,1395.4,820.4,1392.21,817.07z M1387.01,846.17\r
+ c-2.26,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.45-1.03-2.17-2.48-2.17-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M1445.12,812.86c-1.47,0-2.74,0.35-3.79,1.04c-1.06,0.69-1.84,1.68-2.33,2.96l-11.41,28.81\r
+ c-0.18,0.55-0.32,1.25-0.41,2.09c-0.09,0.84-0.17,1.98-0.23,3.43h-0.09c-0.06-1.41-0.14-2.55-0.23-3.41\r
+ c-0.09-0.86-0.25-1.56-0.46-2.11l-11.37-28.81c-0.49-1.28-1.27-2.27-2.34-2.96c-1.08-0.69-2.35-1.04-3.82-1.04h-6.44l20.24,47.02\r
+ h8.93l20.24-47.02H1445.12z"/>\r
+ <path class="st0" d="M1490.76,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.9,2.21\r
+ c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.52,0,10.68-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C1495.55,825.33,1493.95,820.4,1490.76,817.07z M1485.56,846.17\r
+ c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M1509.85,812.86v47.02h10.03v-47.02H1509.85z M1520.69,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.37,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35\r
+ c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.04,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C1521.59,798.28,1521.29,797.16,1520.69,796.12z"/>\r
+ <path class="st0" d="M1534.24,791.65v68.23h10.03v-68.23H1534.24z"/>\r
+</g>\r
+<path class="st2" d="M620.48,351.6c-0.72-46.47-16.42-83.63-47.1-111.47c-31.42-28.52-73.53-42.77-126.33-42.77H289.68\r
+ c-9.98,0-18.07,8.09-18.07,18.07v82.8c14.78-16.16,35.3-26.83,57.84-27.88c28.02-1.31,56.12-0.7,84.18-0.92c0.8,0,1.58,0.38,2.4,0.6\r
+ l0.4,63.51c-16.76,1.57-26.57,10.97-26.99,25.49c-0.43,14.39,9.08,23.89,27.48,27.23l0.4,63.57c-25.22,0.16-49.7,0.4-74.2,0.4\r
+ c-7.3,0-14.69-0.05-21.88-1.21c-19.86-3.2-36.97-13-49.63-27.15v311.46c0,9.98,8.09,18.08,18.07,18.08h43.45\r
+ c9.98,0,18.08-8.1,18.08-18.08V529.49c0-9.99,8.09-18.08,18.08-18.08h40.53c52.28,0,92.41-5.61,120.39-16.83\r
+ c27.99-11.22,50.03-29.24,66.14-54.06c13.39-20.63,21.21-43.82,23.47-69.57c0.46-5.22,0.69-10.54,0.69-15.97\r
+ C620.51,353.85,620.5,352.72,620.48,351.6z M536.79,351.4c-14.22,0.09-28.41,0.29-42.61,0.1c-1.43-0.01-3.22-2.13-4.18-3.71\r
+ c-5.51-9.04-12.77-14.53-23.58-14.25c-11.44,0.29-22.88,0.19-34.61,0.27l-0.41-64C495.18,261.1,534.32,306.85,536.79,351.4z\r
+ M415.01,370.4c-6.43-0.07-10.54-4.08-10.89-10.11c-0.37-6.14,3.22-10.98,9.61-11.2c17.95-0.62,35.92-0.96,53.88-0.86\r
+ c6.81,0.03,10.48,4.78,10.28,11.31c-0.21,6.76-3.71,10.47-10.85,10.71c-8.74,0.32-17.52,0.18-26.3,0.24v-0.2\r
+ C432.17,370.35,423.58,370.52,415.01,370.4z M432.62,449.12l-0.41-63.97c10.99-0.07,21.62-0.7,32.19-0.06\r
+ c12.21,0.74,20.12-5.14,26.08-15.3c0.73-1.24,2.22-2.85,3.38-2.87c14.39-0.3,28.77-0.31,43.19-0.4\r
+ C534.44,410.98,496.74,457.08,432.62,449.12z"/>\r
+<path class="st2" d="M1649.63,193.61h-405.92c-12.49,0-22.62,10.12-22.62,22.62v25.52c0,12.49,10.13,22.62,22.62,22.62h144.46\r
+ c12.49,0,22.62,10.13,22.62,22.62v440.19c0,12.49,10.13,22.62,22.62,22.62h34.36c12.5,0,22.62-10.13,22.62-22.62V286.99\r
+ c0-12.49,10.13-22.62,22.62-22.62h136.62c12.49,0,22.62-10.13,22.62-22.62v-25.52C1672.25,203.73,1662.12,193.61,1649.63,193.61z"/>\r
+<g>\r
+ <path class="st2" d="M560.4,349.53c-1.41,0-2.83,0.29-4.51,0.47l0.11,17.56c1.71,0.12,3.48,0.34,5.27,0.34\r
+ c15.07,0.02,30.16-0.19,45.24,0.06c13.92,0.22,19.38,5.01,21.47,19.27c1.25,8.54,1.73,17.24,2.01,25.87\r
+ c0.99,30.98,17.18,50.79,46.85,55.6c9.62,1.56,19.56,1.28,29.35,1.22c6.08-0.04,9.74-4.48,9.29-9.82\r
+ c-0.42-5.1-4.33-8.12-10.16-8.33c-9.15-0.33-18.49,0.09-27.43-1.58c-19.96-3.75-29.56-16.55-30.35-37.68\r
+ c-0.39-10.14-0.67-20.43-2.58-30.33c-4.1-21.16-13.12-30.28-33.7-32.1C594.42,348.6,577.36,349.61,560.4,349.53z"/>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="utf-8"?>
-<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
- x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64">
-<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/>
+<?xml version="1.0" encoding="utf-8"?> \r
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r
+ x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64"> \r
+<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/> \r
</svg>
\ No newline at end of file
-// let choice = {"current_schemata":null};
-
-let app = {
- currentview: null,
- viewpanel: function(pnlname){
- let panels = document.getElementsByClassName("panel");
- //let toolbars = document.getElementsByClassName("paneltoolbar");
- console.log("change panel to " + pnlname);
- app.currentview = pnlname;
- for (let p=0;p<panels.length;p++){
- panels[p].style.display = 'none';
- }
- // for (let p=0;p<toolbars.length;p++){
- // toolbars[p].style.display = 'none';
- // }
- if (document.getElementById('pnl_' + pnlname)){
- console.log("Set to block!");
- document.getElementById('pnl_' + pnlname).style.display = 'block';
- }
- return false;
- },
- snackbar: function(msg,color){
- var sb = document.getElementById("snackbar");
- sb.className="show " + color;
- sb.innerHTML = msg;
- setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);
- return false;
- },
- // viewdialog: function(dlgname){
- // if (document.getElementById('dlg_' +dlgname)){
- // document.getElementById('dlg_' +dlgname).style.display = 'block';
- // } else {
- // //console.log('dlg_' +dlgname + ' does not exist!');
- // }
- // },
- // opendlg: function(dlgname,msgdata,callback){
- // for (var x in msgdata){
- // if (document.getElementById(dlgname + x)){
- // document.getElementById(dlgname + x).innerHTML = msgdata[x];
- // }
- // }
- // if (callback){
- // if (document.getElementById(dlgname + "_button")){
- // document.getElementById(dlgname + "_button").addEventListener("click",callback,true);
- // }
- // if (document.getElementById(dlgname + "_button")){
- // document.getElementById(dlgname + "_button").addEventListener("click",callback,true);
- // }
- // }
- // },
- // closedlg: function(dlgid){
- // document.getElementById(dlgid).style.display='none';
-
- // }
-
-
-}
-
-let preferences= {};
-
-document.addEventListener("DOMContentLoaded", function() {
-moment.locale('fr');
-preferences = usersystem.getPreference('hourtrax');
-console.log("Content loaded",preferences);
-db.connect(usersystem.profilepath() + preferences.db);
-});
+// let choice = {"current_schemata":null};\r
+\r
+let app = {\r
+ currentview: null,\r
+ viewpanel: function(pnlname){\r
+ let panels = document.getElementsByClassName("panel");\r
+ //let toolbars = document.getElementsByClassName("paneltoolbar");\r
+ console.log("change panel to " + pnlname);\r
+ app.currentview = pnlname;\r
+ for (let p=0;p<panels.length;p++){\r
+ panels[p].style.display = 'none';\r
+ }\r
+ // for (let p=0;p<toolbars.length;p++){\r
+ // toolbars[p].style.display = 'none';\r
+ // }\r
+ if (document.getElementById('pnl_' + pnlname)){\r
+ console.log("Set to block!");\r
+ document.getElementById('pnl_' + pnlname).style.display = 'block';\r
+ }\r
+ return false;\r
+ },\r
+ snackbar: function(msg,color){\r
+ var sb = document.getElementById("snackbar");\r
+ sb.className="show " + color;\r
+ sb.innerHTML = msg;\r
+ setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);\r
+ return false;\r
+ },\r
+ // viewdialog: function(dlgname){\r
+ // if (document.getElementById('dlg_' +dlgname)){\r
+ // document.getElementById('dlg_' +dlgname).style.display = 'block';\r
+ // } else {\r
+ // //console.log('dlg_' +dlgname + ' does not exist!');\r
+ // }\r
+ // },\r
+ // opendlg: function(dlgname,msgdata,callback){\r
+ // for (var x in msgdata){\r
+ // if (document.getElementById(dlgname + x)){\r
+ // document.getElementById(dlgname + x).innerHTML = msgdata[x];\r
+ // }\r
+ // }\r
+ // if (callback){\r
+ // if (document.getElementById(dlgname + "_button")){\r
+ // document.getElementById(dlgname + "_button").addEventListener("click",callback,true);\r
+ // }\r
+ // if (document.getElementById(dlgname + "_button")){\r
+ // document.getElementById(dlgname + "_button").addEventListener("click",callback,true);\r
+ // }\r
+ // }\r
+ // },\r
+ // closedlg: function(dlgid){\r
+ // document.getElementById(dlgid).style.display='none';\r
+ \r
+ // }\r
+\r
+\r
+}\r
+\r
+let preferences= {};\r
+\r
+document.addEventListener("DOMContentLoaded", function() {\r
+moment.locale('fr');\r
+preferences = usersystem.getPreference('hourtrax');\r
+console.log("Content loaded",preferences);\r
+db.connect(usersystem.profilepath() + preferences.db);\r
+});\r
-// let choice = {"current_schemata":null};
-
-let app = {
- currentview: null,
- viewpanel: function(pnlname){
- let panels = document.getElementsByClassName("panel");
- //let toolbars = document.getElementsByClassName("paneltoolbar");
- console.log("change panel to " + pnlname);
- app.currentview = pnlname;
- for (let p=0;p<panels.length;p++){
- panels[p].style.display = 'none';
- }
- // for (let p=0;p<toolbars.length;p++){
- // toolbars[p].style.display = 'none';
- // }
- if (document.getElementById('pnl_' + pnlname)){
- console.log("Set to block!");
- document.getElementById('pnl_' + pnlname).style.display = 'block';
- }
- return false;
- },
- snackbar: function(msg,color){
- var sb = document.getElementById("snackbar");
- sb.className="show " + color;
- sb.innerHTML = msg;
- setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);
- return false;
- },
-}
-
-let preferences= {};
-
-document.addEventListener("DOMContentLoaded", function() {
- moment.locale('fr');
- preferences = usersystem.getPreference('hourtrax');
- console.log("Content loaded",preferences);
- db.connect(usersystem.profilepath() + preferences.db);
- timeclock.inittable();
-});
+// let choice = {"current_schemata":null};\r
+\r
+let app = {\r
+ currentview: null,\r
+ viewpanel: function(pnlname){\r
+ let panels = document.getElementsByClassName("panel");\r
+ //let toolbars = document.getElementsByClassName("paneltoolbar");\r
+ console.log("change panel to " + pnlname);\r
+ app.currentview = pnlname;\r
+ for (let p=0;p<panels.length;p++){\r
+ panels[p].style.display = 'none';\r
+ }\r
+ // for (let p=0;p<toolbars.length;p++){\r
+ // toolbars[p].style.display = 'none';\r
+ // }\r
+ if (document.getElementById('pnl_' + pnlname)){\r
+ console.log("Set to block!");\r
+ document.getElementById('pnl_' + pnlname).style.display = 'block';\r
+ }\r
+ return false;\r
+ },\r
+ snackbar: function(msg,color){\r
+ var sb = document.getElementById("snackbar");\r
+ sb.className="show " + color;\r
+ sb.innerHTML = msg;\r
+ setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);\r
+ return false;\r
+ },\r
+}\r
+\r
+let preferences= {};\r
+\r
+document.addEventListener("DOMContentLoaded", function() {\r
+ moment.locale('fr');\r
+ preferences = usersystem.getPreference('hourtrax');\r
+ console.log("Content loaded",preferences);\r
+ db.connect(usersystem.profilepath() + preferences.db);\r
+ timeclock.inittable();\r
+});\r
-const {app, BrowserWindow, globalShortcut} = require('electron')
-const path = require('path')
-const url = require('url')
-const os = require('os')
-const fs = require('fs')
-//const http = require('http')
-//const dialog = require('electron').dialog
-const {ipcMain} = require('electron')
-//var child = require('child_process').execFile;
-
-app.disableHardwareAcceleration()
-let debug = 0
-// Keep a global reference of the window object, if you don't, the window will
-// be closed automatically when the JavaScript object is garbage collected.
-let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch
-let mainWindow
-console.log("Start App")
-console.log(os.homedir());
-function createWindow () {
- let appcfg = localcfg();
- if (appcfg == null){
- console.log("No Config found!")
- app.quit()
- }
- // var executablePath = "";
- // var parameters = [];
- let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch
-
- mainWindow = new BrowserWindow({
- show: true,
- width: 800,
- height: ((debug == 1)?510:470) ,
- frame: ((debug == 1)?true:false),
- webPreferences: {
- nodeIntegration: true,
- worldSafeExecuteJavaScript: true,
- defaultEncoding: 'UTF-8',
- enableRemoteModule: true,
- }
- })
-
- // if (debug == 1){
-
- // }
- // if (os.platform() == "win32"){
- const glshort = globalShortcut.register('CommandOrControl+Shift+I', () => {
- mainWindow.webContents.openDevTools({detached: true});
- })
- // }
- mainWindow.setMenu(null)
- mainWindow.setBackgroundColor('#000');
- if (os.platform() != "win32"){
- mainWindow.maximize()
- mainWindow.setFullScreen(true)
- }
-
- console.log("Path:" + __dirname);
- mainWindow.loadFile("index."+ appcfg.type +".html")
- mainWindow.show()
- mainWindow.on('closed', () => {
- mainWindow = null
- })
-}
-
-function localcfg(){
- var data = null;
- cfgfile = os.homedir() + '/.hourtrax/hourtrax.json';
- if (debug == 1){
- cfgfile = path.dirname(__dirname)+ '/.hourtrax/hourtrax.json';
- }
- if (fs.existsSync(cfgfile)){
- var data = fs.readFileSync(cfgfile, 'utf-8');
- if (data.startsWith("{") || data.startsWith("[")){
- data = JSON.parse(data);
- }
- return data;
- }
- return data;
-}
-
-app.on('ready', createWindow)
-app.on('window-all-closed', () => {
- globalShortcut.unregisterAll()
- // if (process.platform !== 'darwin') {
- app.quit()
- // }
-})
-
-app.on('activate', () => {
- if (mainWindow === null) {
- createWindow()
- }
-})
+const {app, BrowserWindow, globalShortcut} = require('electron')\r
+const path = require('path')\r
+const url = require('url')\r
+const os = require('os')\r
+const fs = require('fs')\r
+//const http = require('http')\r
+//const dialog = require('electron').dialog\r
+const {ipcMain} = require('electron')\r
+//var child = require('child_process').execFile;\r
+\r
+app.disableHardwareAcceleration()\r
+let debug = 0\r
+// Keep a global reference of the window object, if you don't, the window will\r
+// be closed automatically when the JavaScript object is garbage collected.\r
+let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch\r
+let mainWindow \r
+console.log("Start App")\r
+console.log(os.homedir());\r
+function createWindow () {\r
+ let appcfg = localcfg();\r
+ if (appcfg == null){\r
+ console.log("No Config found!")\r
+ app.quit()\r
+ }\r
+ // var executablePath = "";\r
+ // var parameters = [];\r
+ let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch\r
+ \r
+ mainWindow = new BrowserWindow({\r
+ show: true, \r
+ width: 800, \r
+ height: ((debug == 1)?510:470) ,\r
+ frame: ((debug == 1)?true:false),\r
+ webPreferences: {\r
+ nodeIntegration: true,\r
+ worldSafeExecuteJavaScript: true,\r
+ defaultEncoding: 'UTF-8',\r
+ enableRemoteModule: true,\r
+ }\r
+ })\r
+ \r
+ // if (debug == 1){\r
+ \r
+ // }\r
+ // if (os.platform() == "win32"){\r
+ const glshort = globalShortcut.register('CommandOrControl+Shift+I', () => {\r
+ mainWindow.webContents.openDevTools({detached: true});\r
+ })\r
+ // }\r
+ mainWindow.setMenu(null)\r
+ mainWindow.setBackgroundColor('#000');\r
+ if (os.platform() != "win32"){\r
+ mainWindow.maximize()\r
+ mainWindow.setFullScreen(true)\r
+ }\r
+\r
+ console.log("Path:" + __dirname);\r
+ mainWindow.loadFile("index."+ appcfg.type +".html")\r
+ mainWindow.show()\r
+ mainWindow.on('closed', () => {\r
+ mainWindow = null\r
+ })\r
+}\r
+\r
+function localcfg(){\r
+ var data = null;\r
+ cfgfile = os.homedir() + '/.hourtrax/hourtrax.json';\r
+ if (debug == 1){\r
+ cfgfile = path.dirname(__dirname)+ '/.hourtrax/hourtrax.json';\r
+ }\r
+ if (fs.existsSync(cfgfile)){\r
+ var data = fs.readFileSync(cfgfile, 'utf-8');\r
+ if (data.startsWith("{") || data.startsWith("[")){\r
+ data = JSON.parse(data);\r
+ }\r
+ return data;\r
+ } \r
+ return data;\r
+}\r
+\r
+app.on('ready', createWindow)\r
+app.on('window-all-closed', () => {\r
+ globalShortcut.unregisterAll()\r
+ // if (process.platform !== 'darwin') {\r
+ app.quit()\r
+ // }\r
+})\r
+\r
+app.on('activate', () => {\r
+ if (mainWindow === null) {\r
+ createWindow()\r
+ }\r
+})\r
-{
- "name": "Hourtrax",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "optional": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "optional": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "optional": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "optional": true
- },
- "aws4": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",
- "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",
- "optional": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "optional": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "optional": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "optional": true
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "optional": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "optional": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "optional": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "optional": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "optional": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "optional": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "optional": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "optional": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "optional": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- }
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "optional": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "optional": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "optional": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.5",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",
- "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "optional": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "optional": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "optional": true
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "optional": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "optional": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "optional": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "mime-db": {
- "version": "1.44.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
- "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
- "optional": true
- },
- "mime-types": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
- "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
- "optional": true,
- "requires": {
- "mime-db": "1.44.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "needle": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz",
- "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==",
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-addon-api": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",
- "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="
- },
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "optional": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- }
- },
- "node-pre-gyp": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
- "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- },
- "dependencies": {
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "tar": {
- "version": "4.4.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
- "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "optional": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
- "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
- },
- "npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "optional": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "optional": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "optional": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "sqlite3": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.0.tgz",
- "integrity": "sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw==",
- "requires": {
- "node-addon-api": "2.0.0",
- "node-gyp": "3.x",
- "node-pre-gyp": "^0.11.0"
- }
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "optional": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "optional": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "optional": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "optional": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
- },
- "uri-js": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
- "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
- "optional": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "optional": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "optional": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- }
- }
-}
+{\r
+ "name": "Hourtrax",\r
+ "version": "1.0.0",\r
+ "lockfileVersion": 1,\r
+ "requires": true,\r
+ "dependencies": {\r
+ "abbrev": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",\r
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="\r
+ },\r
+ "ajv": {\r
+ "version": "6.12.6",\r
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",\r
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "fast-deep-equal": "^3.1.1",\r
+ "fast-json-stable-stringify": "^2.0.0",\r
+ "json-schema-traverse": "^0.4.1",\r
+ "uri-js": "^4.2.2"\r
+ }\r
+ },\r
+ "ansi-regex": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",\r
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="\r
+ },\r
+ "aproba": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",\r
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="\r
+ },\r
+ "are-we-there-yet": {\r
+ "version": "1.1.5",\r
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",\r
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",\r
+ "requires": {\r
+ "delegates": "^1.0.0",\r
+ "readable-stream": "^2.0.6"\r
+ }\r
+ },\r
+ "asn1": {\r
+ "version": "0.2.4",\r
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",\r
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "safer-buffer": "~2.1.0"\r
+ }\r
+ },\r
+ "assert-plus": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",\r
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",\r
+ "optional": true\r
+ },\r
+ "asynckit": {\r
+ "version": "0.4.0",\r
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",\r
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",\r
+ "optional": true\r
+ },\r
+ "aws-sign2": {\r
+ "version": "0.7.0",\r
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",\r
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",\r
+ "optional": true\r
+ },\r
+ "aws4": {\r
+ "version": "1.10.1",\r
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",\r
+ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",\r
+ "optional": true\r
+ },\r
+ "balanced-match": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",\r
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="\r
+ },\r
+ "bcrypt-pbkdf": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",\r
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",\r
+ "optional": true,\r
+ "requires": {\r
+ "tweetnacl": "^0.14.3"\r
+ }\r
+ },\r
+ "block-stream": {\r
+ "version": "0.0.9",\r
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",\r
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",\r
+ "optional": true,\r
+ "requires": {\r
+ "inherits": "~2.0.0"\r
+ }\r
+ },\r
+ "brace-expansion": {\r
+ "version": "1.1.11",\r
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",\r
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",\r
+ "requires": {\r
+ "balanced-match": "^1.0.0",\r
+ "concat-map": "0.0.1"\r
+ }\r
+ },\r
+ "caseless": {\r
+ "version": "0.12.0",\r
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",\r
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",\r
+ "optional": true\r
+ },\r
+ "chownr": {\r
+ "version": "1.1.4",\r
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",\r
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="\r
+ },\r
+ "code-point-at": {\r
+ "version": "1.1.0",\r
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",\r
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="\r
+ },\r
+ "combined-stream": {\r
+ "version": "1.0.8",\r
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",\r
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "delayed-stream": "~1.0.0"\r
+ }\r
+ },\r
+ "concat-map": {\r
+ "version": "0.0.1",\r
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",\r
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="\r
+ },\r
+ "console-control-strings": {\r
+ "version": "1.1.0",\r
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",\r
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="\r
+ },\r
+ "core-util-is": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",\r
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="\r
+ },\r
+ "dashdash": {\r
+ "version": "1.14.1",\r
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",\r
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0"\r
+ }\r
+ },\r
+ "debug": {\r
+ "version": "3.2.6",\r
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",\r
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",\r
+ "requires": {\r
+ "ms": "^2.1.1"\r
+ }\r
+ },\r
+ "deep-extend": {\r
+ "version": "0.6.0",\r
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",\r
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="\r
+ },\r
+ "delayed-stream": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",\r
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",\r
+ "optional": true\r
+ },\r
+ "delegates": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",\r
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="\r
+ },\r
+ "detect-libc": {\r
+ "version": "1.0.3",\r
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",\r
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="\r
+ },\r
+ "ecc-jsbn": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",\r
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",\r
+ "optional": true,\r
+ "requires": {\r
+ "jsbn": "~0.1.0",\r
+ "safer-buffer": "^2.1.0"\r
+ }\r
+ },\r
+ "extend": {\r
+ "version": "3.0.2",\r
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",\r
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",\r
+ "optional": true\r
+ },\r
+ "extsprintf": {\r
+ "version": "1.3.0",\r
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",\r
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",\r
+ "optional": true\r
+ },\r
+ "fast-deep-equal": {\r
+ "version": "3.1.3",\r
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",\r
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",\r
+ "optional": true\r
+ },\r
+ "fast-json-stable-stringify": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",\r
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",\r
+ "optional": true\r
+ },\r
+ "forever-agent": {\r
+ "version": "0.6.1",\r
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",\r
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",\r
+ "optional": true\r
+ },\r
+ "form-data": {\r
+ "version": "2.3.3",\r
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",\r
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",\r
+ "optional": true,\r
+ "requires": {\r
+ "asynckit": "^0.4.0",\r
+ "combined-stream": "^1.0.6",\r
+ "mime-types": "^2.1.12"\r
+ }\r
+ },\r
+ "fs-minipass": {\r
+ "version": "1.2.7",\r
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",\r
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",\r
+ "requires": {\r
+ "minipass": "^2.6.0"\r
+ }\r
+ },\r
+ "fs.realpath": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",\r
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="\r
+ },\r
+ "fstream": {\r
+ "version": "1.0.12",\r
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",\r
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "graceful-fs": "^4.1.2",\r
+ "inherits": "~2.0.0",\r
+ "mkdirp": ">=0.5 0",\r
+ "rimraf": "2"\r
+ }\r
+ },\r
+ "gauge": {\r
+ "version": "2.7.4",\r
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",\r
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",\r
+ "requires": {\r
+ "aproba": "^1.0.3",\r
+ "console-control-strings": "^1.0.0",\r
+ "has-unicode": "^2.0.0",\r
+ "object-assign": "^4.1.0",\r
+ "signal-exit": "^3.0.0",\r
+ "string-width": "^1.0.1",\r
+ "strip-ansi": "^3.0.1",\r
+ "wide-align": "^1.1.0"\r
+ }\r
+ },\r
+ "getpass": {\r
+ "version": "0.1.7",\r
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",\r
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0"\r
+ }\r
+ },\r
+ "glob": {\r
+ "version": "7.1.6",\r
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",\r
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",\r
+ "requires": {\r
+ "fs.realpath": "^1.0.0",\r
+ "inflight": "^1.0.4",\r
+ "inherits": "2",\r
+ "minimatch": "^3.0.4",\r
+ "once": "^1.3.0",\r
+ "path-is-absolute": "^1.0.0"\r
+ }\r
+ },\r
+ "graceful-fs": {\r
+ "version": "4.2.4",\r
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",\r
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",\r
+ "optional": true\r
+ },\r
+ "har-schema": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",\r
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",\r
+ "optional": true\r
+ },\r
+ "har-validator": {\r
+ "version": "5.1.5",\r
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",\r
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",\r
+ "optional": true,\r
+ "requires": {\r
+ "ajv": "^6.12.3",\r
+ "har-schema": "^2.0.0"\r
+ }\r
+ },\r
+ "has-unicode": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",\r
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="\r
+ },\r
+ "http-signature": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",\r
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0",\r
+ "jsprim": "^1.2.2",\r
+ "sshpk": "^1.7.0"\r
+ }\r
+ },\r
+ "iconv-lite": {\r
+ "version": "0.4.24",\r
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",\r
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",\r
+ "requires": {\r
+ "safer-buffer": ">= 2.1.2 < 3"\r
+ }\r
+ },\r
+ "ignore-walk": {\r
+ "version": "3.0.3",\r
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",\r
+ "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",\r
+ "requires": {\r
+ "minimatch": "^3.0.4"\r
+ }\r
+ },\r
+ "inflight": {\r
+ "version": "1.0.6",\r
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",\r
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",\r
+ "requires": {\r
+ "once": "^1.3.0",\r
+ "wrappy": "1"\r
+ }\r
+ },\r
+ "inherits": {\r
+ "version": "2.0.4",\r
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",\r
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="\r
+ },\r
+ "ini": {\r
+ "version": "1.3.5",\r
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.5.tgz",\r
+ "integrity": "sha512-RZY5huIKCMRWDUqZlEi72f/lmXKMvuszcMBduliQ3nnWbx9X/ZBQO7DijMEYS9EhHBb2qacRUMtC7svLwe0lcw=="\r
+ },\r
+ "is-fullwidth-code-point": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",\r
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",\r
+ "requires": {\r
+ "number-is-nan": "^1.0.0"\r
+ }\r
+ },\r
+ "is-typedarray": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",\r
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",\r
+ "optional": true\r
+ },\r
+ "isarray": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",\r
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="\r
+ },\r
+ "isexe": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",\r
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",\r
+ "optional": true\r
+ },\r
+ "isstream": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",\r
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",\r
+ "optional": true\r
+ },\r
+ "jsbn": {\r
+ "version": "0.1.1",\r
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",\r
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",\r
+ "optional": true\r
+ },\r
+ "json-schema": {\r
+ "version": "0.2.3",\r
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",\r
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",\r
+ "optional": true\r
+ },\r
+ "json-schema-traverse": {\r
+ "version": "0.4.1",\r
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",\r
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",\r
+ "optional": true\r
+ },\r
+ "json-stringify-safe": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",\r
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",\r
+ "optional": true\r
+ },\r
+ "jsprim": {\r
+ "version": "1.4.1",\r
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",\r
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "1.0.0",\r
+ "extsprintf": "1.3.0",\r
+ "json-schema": "0.2.3",\r
+ "verror": "1.10.0"\r
+ }\r
+ },\r
+ "mime-db": {\r
+ "version": "1.44.0",\r
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",\r
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",\r
+ "optional": true\r
+ },\r
+ "mime-types": {\r
+ "version": "2.1.27",\r
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",\r
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",\r
+ "optional": true,\r
+ "requires": {\r
+ "mime-db": "1.44.0"\r
+ }\r
+ },\r
+ "minimatch": {\r
+ "version": "3.0.4",\r
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",\r
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",\r
+ "requires": {\r
+ "brace-expansion": "^1.1.7"\r
+ }\r
+ },\r
+ "minimist": {\r
+ "version": "1.2.5",\r
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",\r
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="\r
+ },\r
+ "minipass": {\r
+ "version": "2.9.0",\r
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",\r
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",\r
+ "requires": {\r
+ "safe-buffer": "^5.1.2",\r
+ "yallist": "^3.0.0"\r
+ }\r
+ },\r
+ "minizlib": {\r
+ "version": "1.3.3",\r
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",\r
+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",\r
+ "requires": {\r
+ "minipass": "^2.9.0"\r
+ }\r
+ },\r
+ "mkdirp": {\r
+ "version": "0.5.5",\r
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",\r
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",\r
+ "requires": {\r
+ "minimist": "^1.2.5"\r
+ }\r
+ },\r
+ "ms": {\r
+ "version": "2.1.2",\r
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\r
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="\r
+ },\r
+ "needle": {\r
+ "version": "2.5.2",\r
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz",\r
+ "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==",\r
+ "requires": {\r
+ "debug": "^3.2.6",\r
+ "iconv-lite": "^0.4.4",\r
+ "sax": "^1.2.4"\r
+ }\r
+ },\r
+ "node-addon-api": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",\r
+ "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="\r
+ },\r
+ "node-gyp": {\r
+ "version": "3.8.0",\r
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",\r
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",\r
+ "optional": true,\r
+ "requires": {\r
+ "fstream": "^1.0.0",\r
+ "glob": "^7.0.3",\r
+ "graceful-fs": "^4.1.2",\r
+ "mkdirp": "^0.5.0",\r
+ "nopt": "2 || 3",\r
+ "npmlog": "0 || 1 || 2 || 3 || 4",\r
+ "osenv": "0",\r
+ "request": "^2.87.0",\r
+ "rimraf": "2",\r
+ "semver": "~5.3.0",\r
+ "tar": "^2.0.0",\r
+ "which": "1"\r
+ }\r
+ },\r
+ "node-pre-gyp": {\r
+ "version": "0.11.0",\r
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",\r
+ "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",\r
+ "requires": {\r
+ "detect-libc": "^1.0.2",\r
+ "mkdirp": "^0.5.1",\r
+ "needle": "^2.2.1",\r
+ "nopt": "^4.0.1",\r
+ "npm-packlist": "^1.1.6",\r
+ "npmlog": "^4.0.2",\r
+ "rc": "^1.2.7",\r
+ "rimraf": "^2.6.1",\r
+ "semver": "^5.3.0",\r
+ "tar": "^4"\r
+ },\r
+ "dependencies": {\r
+ "nopt": {\r
+ "version": "4.0.3",\r
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",\r
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",\r
+ "requires": {\r
+ "abbrev": "1",\r
+ "osenv": "^0.1.4"\r
+ }\r
+ },\r
+ "tar": {\r
+ "version": "4.4.13",\r
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",\r
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",\r
+ "requires": {\r
+ "chownr": "^1.1.1",\r
+ "fs-minipass": "^1.2.5",\r
+ "minipass": "^2.8.6",\r
+ "minizlib": "^1.2.1",\r
+ "mkdirp": "^0.5.0",\r
+ "safe-buffer": "^5.1.2",\r
+ "yallist": "^3.0.3"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "nopt": {\r
+ "version": "3.0.6",\r
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",\r
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",\r
+ "optional": true,\r
+ "requires": {\r
+ "abbrev": "1"\r
+ }\r
+ },\r
+ "npm-bundled": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",\r
+ "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",\r
+ "requires": {\r
+ "npm-normalize-package-bin": "^1.0.1"\r
+ }\r
+ },\r
+ "npm-normalize-package-bin": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",\r
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="\r
+ },\r
+ "npm-packlist": {\r
+ "version": "1.4.8",\r
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",\r
+ "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",\r
+ "requires": {\r
+ "ignore-walk": "^3.0.1",\r
+ "npm-bundled": "^1.0.1",\r
+ "npm-normalize-package-bin": "^1.0.1"\r
+ }\r
+ },\r
+ "npmlog": {\r
+ "version": "4.1.2",\r
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",\r
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",\r
+ "requires": {\r
+ "are-we-there-yet": "~1.1.2",\r
+ "console-control-strings": "~1.1.0",\r
+ "gauge": "~2.7.3",\r
+ "set-blocking": "~2.0.0"\r
+ }\r
+ },\r
+ "number-is-nan": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",\r
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="\r
+ },\r
+ "oauth-sign": {\r
+ "version": "0.9.0",\r
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",\r
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",\r
+ "optional": true\r
+ },\r
+ "object-assign": {\r
+ "version": "4.1.1",\r
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",\r
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="\r
+ },\r
+ "once": {\r
+ "version": "1.4.0",\r
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",\r
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",\r
+ "requires": {\r
+ "wrappy": "1"\r
+ }\r
+ },\r
+ "os-homedir": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",\r
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="\r
+ },\r
+ "os-tmpdir": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",\r
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="\r
+ },\r
+ "osenv": {\r
+ "version": "0.1.5",\r
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",\r
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",\r
+ "requires": {\r
+ "os-homedir": "^1.0.0",\r
+ "os-tmpdir": "^1.0.0"\r
+ }\r
+ },\r
+ "path-is-absolute": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",\r
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="\r
+ },\r
+ "performance-now": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",\r
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",\r
+ "optional": true\r
+ },\r
+ "process-nextick-args": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",\r
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="\r
+ },\r
+ "psl": {\r
+ "version": "1.8.0",\r
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",\r
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",\r
+ "optional": true\r
+ },\r
+ "punycode": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",\r
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",\r
+ "optional": true\r
+ },\r
+ "qs": {\r
+ "version": "6.5.2",\r
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",\r
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",\r
+ "optional": true\r
+ },\r
+ "rc": {\r
+ "version": "1.2.8",\r
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",\r
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",\r
+ "requires": {\r
+ "deep-extend": "^0.6.0",\r
+ "ini": "~1.3.0",\r
+ "minimist": "^1.2.0",\r
+ "strip-json-comments": "~2.0.1"\r
+ }\r
+ },\r
+ "readable-stream": {\r
+ "version": "2.3.7",\r
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",\r
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",\r
+ "requires": {\r
+ "core-util-is": "~1.0.0",\r
+ "inherits": "~2.0.3",\r
+ "isarray": "~1.0.0",\r
+ "process-nextick-args": "~2.0.0",\r
+ "safe-buffer": "~5.1.1",\r
+ "string_decoder": "~1.1.1",\r
+ "util-deprecate": "~1.0.1"\r
+ }\r
+ },\r
+ "request": {\r
+ "version": "2.88.2",\r
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",\r
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",\r
+ "optional": true,\r
+ "requires": {\r
+ "aws-sign2": "~0.7.0",\r
+ "aws4": "^1.8.0",\r
+ "caseless": "~0.12.0",\r
+ "combined-stream": "~1.0.6",\r
+ "extend": "~3.0.2",\r
+ "forever-agent": "~0.6.1",\r
+ "form-data": "~2.3.2",\r
+ "har-validator": "~5.1.3",\r
+ "http-signature": "~1.2.0",\r
+ "is-typedarray": "~1.0.0",\r
+ "isstream": "~0.1.2",\r
+ "json-stringify-safe": "~5.0.1",\r
+ "mime-types": "~2.1.19",\r
+ "oauth-sign": "~0.9.0",\r
+ "performance-now": "^2.1.0",\r
+ "qs": "~6.5.2",\r
+ "safe-buffer": "^5.1.2",\r
+ "tough-cookie": "~2.5.0",\r
+ "tunnel-agent": "^0.6.0",\r
+ "uuid": "^3.3.2"\r
+ }\r
+ },\r
+ "rimraf": {\r
+ "version": "2.7.1",\r
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",\r
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",\r
+ "requires": {\r
+ "glob": "^7.1.3"\r
+ }\r
+ },\r
+ "safe-buffer": {\r
+ "version": "5.1.2",\r
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",\r
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="\r
+ },\r
+ "safer-buffer": {\r
+ "version": "2.1.2",\r
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",\r
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="\r
+ },\r
+ "sax": {\r
+ "version": "1.2.4",\r
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",\r
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="\r
+ },\r
+ "semver": {\r
+ "version": "5.3.0",\r
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",\r
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="\r
+ },\r
+ "set-blocking": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",\r
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="\r
+ },\r
+ "signal-exit": {\r
+ "version": "3.0.3",\r
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",\r
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="\r
+ },\r
+ "sqlite3": {\r
+ "version": "5.0.0",\r
+ "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.0.tgz",\r
+ "integrity": "sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw==",\r
+ "requires": {\r
+ "node-addon-api": "2.0.0",\r
+ "node-gyp": "3.x",\r
+ "node-pre-gyp": "^0.11.0"\r
+ }\r
+ },\r
+ "sshpk": {\r
+ "version": "1.16.1",\r
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",\r
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "asn1": "~0.2.3",\r
+ "assert-plus": "^1.0.0",\r
+ "bcrypt-pbkdf": "^1.0.0",\r
+ "dashdash": "^1.12.0",\r
+ "ecc-jsbn": "~0.1.1",\r
+ "getpass": "^0.1.1",\r
+ "jsbn": "~0.1.0",\r
+ "safer-buffer": "^2.0.2",\r
+ "tweetnacl": "~0.14.0"\r
+ }\r
+ },\r
+ "string-width": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",\r
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",\r
+ "requires": {\r
+ "code-point-at": "^1.0.0",\r
+ "is-fullwidth-code-point": "^1.0.0",\r
+ "strip-ansi": "^3.0.0"\r
+ }\r
+ },\r
+ "string_decoder": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",\r
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",\r
+ "requires": {\r
+ "safe-buffer": "~5.1.0"\r
+ }\r
+ },\r
+ "strip-ansi": {\r
+ "version": "3.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",\r
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",\r
+ "requires": {\r
+ "ansi-regex": "^2.0.0"\r
+ }\r
+ },\r
+ "strip-json-comments": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",\r
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="\r
+ },\r
+ "tar": {\r
+ "version": "2.2.2",\r
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",\r
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",\r
+ "optional": true,\r
+ "requires": {\r
+ "block-stream": "*",\r
+ "fstream": "^1.0.12",\r
+ "inherits": "2"\r
+ }\r
+ },\r
+ "tough-cookie": {\r
+ "version": "2.5.0",\r
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",\r
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "psl": "^1.1.28",\r
+ "punycode": "^2.1.1"\r
+ }\r
+ },\r
+ "tunnel-agent": {\r
+ "version": "0.6.0",\r
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",\r
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",\r
+ "optional": true,\r
+ "requires": {\r
+ "safe-buffer": "^5.0.1"\r
+ }\r
+ },\r
+ "tweetnacl": {\r
+ "version": "0.14.5",\r
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",\r
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",\r
+ "optional": true\r
+ },\r
+ "uri-js": {\r
+ "version": "4.4.0",\r
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",\r
+ "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "punycode": "^2.1.0"\r
+ }\r
+ },\r
+ "util-deprecate": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",\r
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="\r
+ },\r
+ "uuid": {\r
+ "version": "3.4.0",\r
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",\r
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",\r
+ "optional": true\r
+ },\r
+ "verror": {\r
+ "version": "1.10.0",\r
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",\r
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0",\r
+ "core-util-is": "1.0.2",\r
+ "extsprintf": "^1.2.0"\r
+ }\r
+ },\r
+ "which": {\r
+ "version": "1.3.1",\r
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",\r
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",\r
+ "optional": true,\r
+ "requires": {\r
+ "isexe": "^2.0.0"\r
+ }\r
+ },\r
+ "wide-align": {\r
+ "version": "1.1.3",\r
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",\r
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",\r
+ "requires": {\r
+ "string-width": "^1.0.2 || 2"\r
+ }\r
+ },\r
+ "wrappy": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",\r
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="\r
+ },\r
+ "yallist": {\r
+ "version": "3.1.1",\r
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",\r
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="\r
+ }\r
+ }\r
+}\r
-{
- "name": "Hourtrax",
- "version": "1.0.0",
- "main": "main.js",
- "author": "POT s.à r.l.",
- "license": "UNLICENSED",
- "dependencies": {
- "sqlite3": "^5.0.0"
- }
-}
+{\r
+ "name": "Hourtrax",\r
+ "version": "1.0.0",\r
+ "main": "main.js",\r
+ "author": "POT s.à r.l.",\r
+ "license": "UNLICENSED",\r
+ "dependencies": {\r
+ "sqlite3": "^5.0.0"\r
+ }\r
+}\r
-
- body,html {
- overflow: hidden;
- margin: 0px;
-
- }
- div {
- margin: auto;
- }
- header {
- height: 60px;
- padding-left: 5px;
- background: linear-gradient(to right, purple, gray);
- }
- h1 {
- padding-top: 5px;
- margin-top: 0px;
- color: yellow;
- }
- button {
- display: inline-block;
- text-decoration: none;
- color: #fff;
- font-weight: bold;
- background-color: #538fbe;
- /* padding: 20px 70px;
- font-size: 24px; */
- border: 1px solid #2d6898;
- background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);
-
- background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(73,132,180)),
- color-stop(1, rgb(97,155,203))
- );
- -webkit-border-radius: 5px;
- -moz-border-radius: 5px;
- border-radius: 5px;
- text-shadow: 0px -1px 0px rgba(0,0,0,.5);
- -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- -webkit-transition: all .1s ease-in-out;
- -moz-transition: all .2s ease-in-out;
- transition: all .2s ease-in-out;
- -webkit-transform: rotateX(20deg);
-}
-
-button:hover {
- background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);
-
- /* background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(79,142,191)),
- color-stop(1, rgb(102,166,214))
- ); */
-}
-
-button:active {
--webkit-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
--moz-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);
- background-image: linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -o-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -moz-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -webkit-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
- background-image: -ms-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);
-
- background-image: -webkit-gradient(
- linear,
- left bottom,
- left top,
- color-stop(0, rgb(88,154,204)),
- color-stop(1, rgb(90,150,199))
- );
- -webkit-transform: translate(0, 4px) rotateX(20deg);
- -moz-transform: translate(0, 4px);
- transform: translate(0, 4px);
-}
-
-button:disabled {
- background-image: none;
- background-color: #f4f4f4;
- color: #000;
- font-weight: bold;
- box-shadow: none;
- -webkit-transform: none;
-}
- /* button {
- background-color: lightgrey;
- border: 1px solid silver;
- outline: none;
- } */
- button.user {
- height: 90px;
- width: 90px;
- margin: 10px;
- white-space: nowrap;
- overflow: hidden;
- }
- button.btnkeypad {
- height: 70px;
- width: 70px;
- margin: 5px;
- font-weight: bold;
- font-size: 20px;
- white-space: nowrap;
- overflow: hidden;
- }
- button.btntrack {
- background-color:
- height: 150px;
- width: 150px;
- margin: 15px;
- font-weight: bold;
- font-size: 30px;
- white-space: nowrap;
- overflow: hidden;
- }
- #scrloader {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scruserlist {
- display: none;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scruserpin {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrnewuserpin {
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrtimetracker{
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #scrstatus{
- display: none;
- margin: auto;
- border: 1px solid silver;
- max-width: 800px;
- width: 800px;
- height: 430px;
- max-height: 430px;
- overflow: hidden;
- }
- #keypad {
- border: 1px solid silver;
- width: 270px;
- margin: auto;
- }
- #timetracker{
- border: 1px solid silver;
- width: 400px;
- margin: auto;
- margin-top: 20px;
- text-align: center;
- }
- div.pincode {
- text-align: center;
- }
- #pincode,#newpincode1,#newpincode2 {
- min-height: 30px;
- border: 1px solid silver;
- width: 270px;
- margin: auto;
- text-align: center;
- font-weight: bold;
- font-size: 10px;
- }
- #newpincode1,#newpincode2{
- width: 135px;
- }
- .usergreeting {
- text-align: center;
- }
- #pinmessage, #pinmessage2 {
- height: 30px;
- display: block;
- color: red;
- font-weight: bold;
- text-align: center;
- }
- #lasttrackin,#lasttrackout {
- font-size: 12px;
- color: #000;
- font-weight: bold;
- }
-
-
-/* screenheight: 480;*/
+ \r
+ body,html {\r
+ overflow: hidden;\r
+ margin: 0px;\r
+ \r
+ }\r
+ div {\r
+ margin: auto;\r
+ }\r
+ header {\r
+ height: 60px;\r
+ padding-left: 5px;\r
+ background: linear-gradient(to right, purple, gray);\r
+ }\r
+ h1 {\r
+ padding-top: 5px;\r
+ margin-top: 0px;\r
+ color: yellow;\r
+ }\r
+ button {\r
+ display: inline-block;\r
+ text-decoration: none;\r
+ color: #fff;\r
+ font-weight: bold;\r
+ background-color: #538fbe;\r
+ /* padding: 20px 70px;\r
+ font-size: 24px; */\r
+ border: 1px solid #2d6898;\r
+ background-image: linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(73,132,180) 0%, rgb(97,155,203) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(73,132,180)),\r
+ color-stop(1, rgb(97,155,203))\r
+ );\r
+ -webkit-border-radius: 5px;\r
+ -moz-border-radius: 5px;\r
+ border-radius: 5px;\r
+ text-shadow: 0px -1px 0px rgba(0,0,0,.5);\r
+ -webkit-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -moz-box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ box-shadow: 0px 6px 0px #2b638f, 0px 3px 15px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ -webkit-transition: all .1s ease-in-out;\r
+ -moz-transition: all .2s ease-in-out;\r
+ transition: all .2s ease-in-out;\r
+ -webkit-transform: rotateX(20deg);\r
+}\r
+\r
+button:hover {\r
+ background-image: linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(79,142,191) 0%, rgb(102,166,214) 100%);\r
+ \r
+ /* background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(79,142,191)),\r
+ color-stop(1, rgb(102,166,214))\r
+ ); */\r
+}\r
+\r
+button:active {\r
+-webkit-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+-moz-box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+box-shadow: 0px 2px 0px #2b638f, 0px 1px 6px rgba(0,0,0,.4), inset 0px 1px 0px rgba(255,255,255,.3), inset 0px 0px 3px rgba(255,255,255,.5);\r
+ background-image: linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -o-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -moz-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -webkit-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ background-image: -ms-linear-gradient(bottom, rgb(88,154,204) 0%, rgb(90,150,199) 100%);\r
+ \r
+ background-image: -webkit-gradient(\r
+ linear,\r
+ left bottom,\r
+ left top,\r
+ color-stop(0, rgb(88,154,204)),\r
+ color-stop(1, rgb(90,150,199))\r
+ );\r
+ -webkit-transform: translate(0, 4px) rotateX(20deg); \r
+ -moz-transform: translate(0, 4px); \r
+ transform: translate(0, 4px); \r
+}\r
+\r
+button:disabled {\r
+ background-image: none;\r
+ background-color: #f4f4f4;\r
+ color: #000;\r
+ font-weight: bold;\r
+ box-shadow: none;\r
+ -webkit-transform: none;\r
+}\r
+ /* button {\r
+ background-color: lightgrey;\r
+ border: 1px solid silver;\r
+ outline: none;\r
+ } */\r
+ button.user {\r
+ height: 90px;\r
+ width: 90px;\r
+ margin: 10px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btnkeypad {\r
+ height: 70px;\r
+ width: 70px;\r
+ margin: 5px;\r
+ font-weight: bold;\r
+ font-size: 20px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ button.btntrack {\r
+ background-color: \r
+ height: 150px;\r
+ width: 150px;\r
+ margin: 15px;\r
+ font-weight: bold;\r
+ font-size: 30px;\r
+ white-space: nowrap;\r
+ overflow: hidden;\r
+ }\r
+ #scrloader {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserlist {\r
+ display: none;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scruserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrnewuserpin {\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrtimetracker{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #scrstatus{\r
+ display: none;\r
+ margin: auto;\r
+ border: 1px solid silver;\r
+ max-width: 800px;\r
+ width: 800px;\r
+ height: 430px;\r
+ max-height: 430px;\r
+ overflow: hidden;\r
+ }\r
+ #keypad {\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ }\r
+ #timetracker{\r
+ border: 1px solid silver;\r
+ width: 400px;\r
+ margin: auto;\r
+ margin-top: 20px;\r
+ text-align: center;\r
+ }\r
+ div.pincode {\r
+ text-align: center;\r
+ }\r
+ #pincode,#newpincode1,#newpincode2 {\r
+ min-height: 30px;\r
+ border: 1px solid silver;\r
+ width: 270px;\r
+ margin: auto;\r
+ text-align: center;\r
+ font-weight: bold;\r
+ font-size: 10px;\r
+ }\r
+ #newpincode1,#newpincode2{\r
+ width: 135px;\r
+ }\r
+ .usergreeting {\r
+ text-align: center;\r
+ }\r
+ #pinmessage, #pinmessage2 {\r
+ height: 30px;\r
+ display: block;\r
+ color: red;\r
+ font-weight: bold;\r
+ text-align: center;\r
+ }\r
+ #lasttrackin,#lasttrackout {\r
+ font-size: 12px; \r
+ color: #000;\r
+ font-weight: bold;\r
+ }\r
+ \r
+ \r
+/* screenheight: 480;*/\r
/* screenwidth: 80px;*/
\ No newline at end of file
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.419px" height="336.419px" viewBox="0 0 336.419 336.419" style="enable-background:new 0 0 336.419 336.419;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M310.059,77.375c-2.275-1.054-4.688-1.622-6.943-1.622c-3.265,0-5.985,1.15-7.687,3.203
- c-10.058,12.245-19.267,36.062-26.683,55.199c-3.411,8.848-7.99,20.689-11.084,26.247c-1.69-16.281,5.616-75.019,8.429-97.639
- l0.048-0.365c1.954-15.713,2.262-18.471,2.163-19.698c-0.757-8.747-3.812-14.669-9.086-17.592
- c-5.332-2.964-12.576-2.327-20.615,1.802c-4.035,2.074-5.664,10.061-11.539,46.375l-0.024,0.164
- c-3.233,19.944-10.67,65.892-16.386,73.222c-5.088-11.182-8.843-72.945-10.465-99.679c-1.126-18.719-1.803-29.465-2.525-32.759
- C196.132,7.356,188.09,1.03,179.75,0.13c-6.937-0.826-12.902,2.327-16.055,8.309c-5.501,5.344-5.019,24.379-2.512,69.552
- c1.191,21.5,3.651,65.905-0.176,70.606c-6.896-1.252-16.904-29.658-29.737-84.46c-3.598-15.345-4.728-19.972-6.016-22.046
- c-2.337-7.089-11.543-13.071-20.168-13.071c-0.739,0-1.458,0.048-2.168,0.137c-4.56,0.575-15.104,4.016-14.253,23.344
- c4.192,27.017,9.416,46.986,14.467,66.383l0.101,0.381c3.027,11.613,5.891,22.592,8.414,34.721
- c5.944,28.644,1.651,45.857,1.602,46.055c-0.389,1.773-1.017,2.834-1.874,3.155c-0.313,0.113-0.698,0.186-1.129,0.186
- c-2.519,0-6.16-1.938-8.025-3.155c-3.836-8.809-23.033-50.832-42.604-57.849l-0.708-0.265l-0.729,0.021
- c-7.373,0.187-12.944,2.587-16.579,7.146c-5.744,7.208-4.259,17.003-3.869,18.964l0.241,0.719
- c0.144,0.308,14.104,30.744,15.632,44.549c1.325,11.854,11.492,25.29,19.667,36.098l0.335,0.444
- c2.667,3.535,4.965,6.595,6.753,9.394c23.899,28.815,63.098,54.396,63.423,54.611c4.824,4.127,7.399,7.963,7.476,11.129
- c0.049,2.066-1.101,3.217-1.14,3.265l-0.95,0.869l0.08,0.089h-0.385v7.009h113.93v-2.361l5.839-19.698
- c18.35-58.648,18.951-109.707,18.924-110.057c0.188-1.861,5.432-19.684,9.654-34.07l0.113-0.37
- c8.401-28.678,18.873-64.354,21.357-78.032C319.733,85.965,316.353,80.284,310.059,77.375z M310.856,90.415
- c-2.413,13.306-13.316,50.448-21.27,77.574c-6.892,23.467-9.726,33.283-9.958,35.924c0,0.489-0.212,49.354-18.606,108.133
- l-5.146,17.364h-97.364c0.397-1.19,0.681-2.566,0.669-4.168c-0.024-5.63-3.595-11.525-10.688-17.556
- c-0.392-0.253-39.279-25.872-61.717-52.879c-1.795-2.868-4.531-6.489-7.181-9.979c-7.183-9.5-17.031-22.535-18.1-32.186
- c-1.602-14.396-14.452-42.935-16.091-46.51c-0.204-1.444-0.876-7.814,2.411-11.915c1.986-2.484,5.277-3.869,9.78-4.115
- c17.539,7.31,37.574,53.824,37.772,54.296l0.428,0.993l0.859,0.657c1.201,0.875,7.5,5.263,13.604,5.263
- c1.398,0,2.715-0.219,3.891-0.667c2.435-0.914,5.602-3.176,6.812-8.74c0.204-0.753,4.808-18.908-1.548-49.527
- c-2.531-12.25-5.46-23.447-8.547-35.315l-0.053-0.173c-4.983-19.074-10.145-38.799-14.258-65.158
- c-0.383-8.831,2.248-14.046,7.376-14.7c5.852-0.828,13.246,3.983,14.062,7.775l1.027,2.929c1.086,3.54,3.136,12.338,4.507,18.219
- c11.63,49.579,22.526,90.624,37.919,90.624c1.253,0,3.092-0.364,4.749-2.127c6.33-6.673,5.33-33.511,2.913-76.937
- c-1.174-21.033-2.659-59.306-0.298-63.071l0.953-1.966c1.451-3.123,5.055-4.524,7.915-4.524c0.418,0,0.818,0.022,1.205,0.07
- c4.887,0.525,10.249,4.38,11.026,7.934c0.608,2.729,1.399,15.84,2.333,31.007l0.027,0.51c5.257,86.76,8.74,107.943,17.687,107.943
- c10.163,0,15.133-20.192,24.934-80.857l0.048-0.253c2.402-14.857,6.02-37.206,7.632-40.491c5.253-2.628,10.026-3.273,12.795-1.752
- c3.518,1.944,4.675,7.166,5.017,11.156c0.011,1.083-1.077,9.781-2.118,18.206c-9.503,76.369-10.869,102.571-5.619,107.825
- c1.393,1.38,3.357,1.979,5.116,1.574c5.359-1.129,8.901-9.185,18.415-33.83c7.193-18.591,16.125-41.708,25.396-52.982
- c0.075-0.08,0.517-0.308,1.485-0.308c1.136,0,2.433,0.308,3.668,0.876C309.032,85.657,311.339,87.751,310.856,90.415z"/>
- <g>
- <path d="M51.312,189.649c-0.109-0.64-0.15-1.267-0.187-1.903c-11.43-1.102-21.666-8.818-25.259-20.457
- c-4.772-15.468,3.932-31.929,19.397-36.701c15.464-4.769,31.923,3.929,36.697,19.397c2.091,6.791,1.525,13.75-1.023,19.839
- c2.183,1.007,4.137,2.595,5.592,4.593c3.887-7.977,4.941-17.354,2.12-26.501c-5.912-19.15-26.303-29.937-45.457-24.029
- c-19.159,5.916-29.937,26.312-24.028,45.468c4.678,15.154,18.425,25.017,33.448,25.564
- C52.083,193.181,51.617,191.429,51.312,189.649z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.419px" height="336.419px" viewBox="0 0 336.419 336.419" style="enable-background:new 0 0 336.419 336.419;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M310.059,77.375c-2.275-1.054-4.688-1.622-6.943-1.622c-3.265,0-5.985,1.15-7.687,3.203\r
+ c-10.058,12.245-19.267,36.062-26.683,55.199c-3.411,8.848-7.99,20.689-11.084,26.247c-1.69-16.281,5.616-75.019,8.429-97.639\r
+ l0.048-0.365c1.954-15.713,2.262-18.471,2.163-19.698c-0.757-8.747-3.812-14.669-9.086-17.592\r
+ c-5.332-2.964-12.576-2.327-20.615,1.802c-4.035,2.074-5.664,10.061-11.539,46.375l-0.024,0.164\r
+ c-3.233,19.944-10.67,65.892-16.386,73.222c-5.088-11.182-8.843-72.945-10.465-99.679c-1.126-18.719-1.803-29.465-2.525-32.759\r
+ C196.132,7.356,188.09,1.03,179.75,0.13c-6.937-0.826-12.902,2.327-16.055,8.309c-5.501,5.344-5.019,24.379-2.512,69.552\r
+ c1.191,21.5,3.651,65.905-0.176,70.606c-6.896-1.252-16.904-29.658-29.737-84.46c-3.598-15.345-4.728-19.972-6.016-22.046\r
+ c-2.337-7.089-11.543-13.071-20.168-13.071c-0.739,0-1.458,0.048-2.168,0.137c-4.56,0.575-15.104,4.016-14.253,23.344\r
+ c4.192,27.017,9.416,46.986,14.467,66.383l0.101,0.381c3.027,11.613,5.891,22.592,8.414,34.721\r
+ c5.944,28.644,1.651,45.857,1.602,46.055c-0.389,1.773-1.017,2.834-1.874,3.155c-0.313,0.113-0.698,0.186-1.129,0.186\r
+ c-2.519,0-6.16-1.938-8.025-3.155c-3.836-8.809-23.033-50.832-42.604-57.849l-0.708-0.265l-0.729,0.021\r
+ c-7.373,0.187-12.944,2.587-16.579,7.146c-5.744,7.208-4.259,17.003-3.869,18.964l0.241,0.719\r
+ c0.144,0.308,14.104,30.744,15.632,44.549c1.325,11.854,11.492,25.29,19.667,36.098l0.335,0.444\r
+ c2.667,3.535,4.965,6.595,6.753,9.394c23.899,28.815,63.098,54.396,63.423,54.611c4.824,4.127,7.399,7.963,7.476,11.129\r
+ c0.049,2.066-1.101,3.217-1.14,3.265l-0.95,0.869l0.08,0.089h-0.385v7.009h113.93v-2.361l5.839-19.698\r
+ c18.35-58.648,18.951-109.707,18.924-110.057c0.188-1.861,5.432-19.684,9.654-34.07l0.113-0.37\r
+ c8.401-28.678,18.873-64.354,21.357-78.032C319.733,85.965,316.353,80.284,310.059,77.375z M310.856,90.415\r
+ c-2.413,13.306-13.316,50.448-21.27,77.574c-6.892,23.467-9.726,33.283-9.958,35.924c0,0.489-0.212,49.354-18.606,108.133\r
+ l-5.146,17.364h-97.364c0.397-1.19,0.681-2.566,0.669-4.168c-0.024-5.63-3.595-11.525-10.688-17.556\r
+ c-0.392-0.253-39.279-25.872-61.717-52.879c-1.795-2.868-4.531-6.489-7.181-9.979c-7.183-9.5-17.031-22.535-18.1-32.186\r
+ c-1.602-14.396-14.452-42.935-16.091-46.51c-0.204-1.444-0.876-7.814,2.411-11.915c1.986-2.484,5.277-3.869,9.78-4.115\r
+ c17.539,7.31,37.574,53.824,37.772,54.296l0.428,0.993l0.859,0.657c1.201,0.875,7.5,5.263,13.604,5.263\r
+ c1.398,0,2.715-0.219,3.891-0.667c2.435-0.914,5.602-3.176,6.812-8.74c0.204-0.753,4.808-18.908-1.548-49.527\r
+ c-2.531-12.25-5.46-23.447-8.547-35.315l-0.053-0.173c-4.983-19.074-10.145-38.799-14.258-65.158\r
+ c-0.383-8.831,2.248-14.046,7.376-14.7c5.852-0.828,13.246,3.983,14.062,7.775l1.027,2.929c1.086,3.54,3.136,12.338,4.507,18.219\r
+ c11.63,49.579,22.526,90.624,37.919,90.624c1.253,0,3.092-0.364,4.749-2.127c6.33-6.673,5.33-33.511,2.913-76.937\r
+ c-1.174-21.033-2.659-59.306-0.298-63.071l0.953-1.966c1.451-3.123,5.055-4.524,7.915-4.524c0.418,0,0.818,0.022,1.205,0.07\r
+ c4.887,0.525,10.249,4.38,11.026,7.934c0.608,2.729,1.399,15.84,2.333,31.007l0.027,0.51c5.257,86.76,8.74,107.943,17.687,107.943\r
+ c10.163,0,15.133-20.192,24.934-80.857l0.048-0.253c2.402-14.857,6.02-37.206,7.632-40.491c5.253-2.628,10.026-3.273,12.795-1.752\r
+ c3.518,1.944,4.675,7.166,5.017,11.156c0.011,1.083-1.077,9.781-2.118,18.206c-9.503,76.369-10.869,102.571-5.619,107.825\r
+ c1.393,1.38,3.357,1.979,5.116,1.574c5.359-1.129,8.901-9.185,18.415-33.83c7.193-18.591,16.125-41.708,25.396-52.982\r
+ c0.075-0.08,0.517-0.308,1.485-0.308c1.136,0,2.433,0.308,3.668,0.876C309.032,85.657,311.339,87.751,310.856,90.415z"/>\r
+ <g>\r
+ <path d="M51.312,189.649c-0.109-0.64-0.15-1.267-0.187-1.903c-11.43-1.102-21.666-8.818-25.259-20.457\r
+ c-4.772-15.468,3.932-31.929,19.397-36.701c15.464-4.769,31.923,3.929,36.697,19.397c2.091,6.791,1.525,13.75-1.023,19.839\r
+ c2.183,1.007,4.137,2.595,5.592,4.593c3.887-7.977,4.941-17.354,2.12-26.501c-5.912-19.15-26.303-29.937-45.457-24.029\r
+ c-19.159,5.916-29.937,26.312-24.028,45.468c4.678,15.154,18.425,25.017,33.448,25.564\r
+ C52.083,193.181,51.617,191.429,51.312,189.649z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="753.658px" height="753.658px" viewBox="0 0 753.658 753.658" style="enable-background:new 0 0 753.658 753.658;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M672.523,173.331c-5.098-2.369-10.503-3.627-15.553-3.627c-7.321,0-13.401,2.561-17.22,7.177
- c-22.538,27.429-43.16,80.78-59.783,123.657c-7.634,19.815-17.893,46.34-24.822,58.799c-3.782-36.49,12.58-168.076,18.875-218.733
- l0.104-0.826c4.393-35.199,5.077-41.37,4.845-44.111c-1.687-19.61-8.539-32.877-20.346-39.417
- c-11.941-6.639-28.164-5.214-46.182,4.037c-9.044,4.661-12.695,22.546-25.852,103.898l-0.044,0.361
- c-7.262,44.687-23.912,147.612-36.716,164.04c-11.405-25.056-19.801-163.413-23.436-223.302
- c-2.529-41.95-4.056-66.022-5.667-73.394c-3.435-15.411-21.443-29.589-40.12-31.597c-15.545-1.859-28.907,5.212-35.971,18.621
- c-12.325,11.964-11.243,54.607-5.632,155.809c2.673,48.151,8.173,147.631-0.399,158.161
- c-15.438-2.799-37.872-66.441-66.615-189.21c-8.065-34.38-10.583-44.725-13.483-49.388c-5.228-15.879-25.85-29.274-45.17-29.274
- c-1.655,0-3.266,0.108-4.861,0.301c-10.211,1.294-33.843,8.995-31.933,52.307c9.399,60.506,21.101,105.247,32.412,148.702
- l0.23,0.861c6.775,26.008,13.187,50.602,18.841,77.776c13.321,64.165,3.699,102.74,3.586,103.186
- c-0.87,3.979-2.268,6.339-4.2,7.068c-0.689,0.245-1.561,0.396-2.527,0.396c-5.646,0-13.803-4.323-17.969-7.045
- c-8.606-19.74-51.609-113.891-95.447-129.61l-1.591-0.587l-1.625,0.038c-16.525,0.418-29.01,5.811-37.151,16.016
- c-12.864,16.142-9.538,38.083-8.668,42.495l0.537,1.595c0.323,0.689,31.597,68.868,35.021,99.817
- c2.974,26.541,25.74,56.652,44.062,80.85l0.755,0.994c5.965,7.914,11.117,14.768,15.118,21.039
- c53.543,64.571,141.356,121.878,142.094,122.338c10.794,9.254,16.57,17.85,16.747,24.955c0.106,4.628-2.468,7.205-2.561,7.297
- l-2.128,1.948l0.18,0.208h-0.855v15.701h255.229v-5.29l13.08-44.13c41.107-131.391,42.454-245.768,42.395-246.541
- c0.412-4.188,12.158-44.098,21.62-76.337l0.26-0.817c18.819-64.249,42.271-144.171,47.837-174.828
- C694.187,192.566,686.613,179.854,672.523,173.331z M674.31,202.537c-5.414,29.807-29.831,113.013-47.656,173.782
- c-15.425,52.589-21.784,74.579-22.293,80.481c0,1.103-0.481,110.581-41.697,242.233l-11.529,38.916H333.026
- c0.886-2.669,1.515-5.743,1.499-9.346c-0.062-12.604-8.062-25.804-23.951-39.328c-0.874-0.569-87.993-57.952-138.254-118.452
- c-4.017-6.42-10.15-14.539-16.085-22.357c-16.098-21.295-38.159-50.489-40.555-72.109c-3.587-32.26-32.366-96.166-36.047-104.181
- c-0.449-3.244-1.962-17.522,5.402-26.708c4.458-5.559,11.822-8.666,21.911-9.219c39.297,16.376,84.176,120.587,84.617,121.646
- l0.952,2.208l1.932,1.486c2.683,1.964,16.789,11.794,30.467,11.794c3.138,0,6.083-0.509,8.72-1.519
- c5.458-2.04,12.545-7.113,15.252-19.564c0.463-1.688,10.778-42.358-3.462-110.948c-5.672-27.457-12.238-52.542-19.146-79.115
- l-0.128-0.402c-11.161-42.728-22.722-86.917-31.934-145.967c-0.855-19.776,5.034-31.46,16.525-32.935
- c13.11-1.837,29.669,8.935,31.499,17.422l2.298,6.562c2.443,7.944,7.027,27.641,10.105,40.815
- c26.046,111.074,50.461,203.032,84.939,203.032c2.803,0,6.931-0.824,10.638-4.773c14.186-14.956,11.94-75.065,6.532-172.355
- c-2.637-47.117-5.965-132.866-0.675-141.284l2.144-4.42c3.25-6.995,11.312-10.135,17.723-10.135c0.936,0,1.841,0.066,2.703,0.167
- c10.95,1.176,22.957,9.82,24.696,17.781c1.366,6.1,3.146,35.47,5.229,69.447l0.061,1.142
- c11.777,194.362,19.58,241.816,39.621,241.816c22.771,0,33.902-45.234,55.855-181.122l0.116-0.575
- c5.366-33.288,13.477-83.349,17.08-90.7c11.777-5.907,22.478-7.354,28.665-3.945c7.891,4.358,10.475,16.058,11.248,24.996
- c0.017,2.427-2.416,21.927-4.753,40.786c-21.283,171.091-24.349,229.784-12.591,241.55c3.122,3.102,7.514,4.443,11.457,3.526
- c12.019-2.509,19.945-20.574,41.261-75.777c16.113-41.639,36.123-93.445,56.881-118.682c0.177-0.197,1.158-0.706,3.331-0.706
- c2.544,0,5.458,0.706,8.215,1.962C670.207,191.876,675.376,196.567,674.31,202.537z"/>
- <g>
- <path d="M216.394,16.412c-44.913,0-81.447,36.542-81.447,81.463c0,40.038,29.07,73.352,67.19,80.11
- c-1.869-5.596-2.913-11.163-3.653-16.909c-27.567-7.827-47.838-33.167-47.838-63.201c0-36.263,29.5-65.762,65.748-65.762
- c36.261,0,65.746,29.499,65.746,65.762c0,19.53-8.65,37.037-22.231,49.079c0.627,1.238,1.238,2.48,1.717,3.823
- c1.429,4.09,2.44,8.233,3.142,12.427c20.025-14.846,33.073-38.548,33.073-65.329C297.84,52.953,261.295,16.412,216.394,16.412z"
- />
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="753.658px" height="753.658px" viewBox="0 0 753.658 753.658" style="enable-background:new 0 0 753.658 753.658;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M672.523,173.331c-5.098-2.369-10.503-3.627-15.553-3.627c-7.321,0-13.401,2.561-17.22,7.177\r
+ c-22.538,27.429-43.16,80.78-59.783,123.657c-7.634,19.815-17.893,46.34-24.822,58.799c-3.782-36.49,12.58-168.076,18.875-218.733\r
+ l0.104-0.826c4.393-35.199,5.077-41.37,4.845-44.111c-1.687-19.61-8.539-32.877-20.346-39.417\r
+ c-11.941-6.639-28.164-5.214-46.182,4.037c-9.044,4.661-12.695,22.546-25.852,103.898l-0.044,0.361\r
+ c-7.262,44.687-23.912,147.612-36.716,164.04c-11.405-25.056-19.801-163.413-23.436-223.302\r
+ c-2.529-41.95-4.056-66.022-5.667-73.394c-3.435-15.411-21.443-29.589-40.12-31.597c-15.545-1.859-28.907,5.212-35.971,18.621\r
+ c-12.325,11.964-11.243,54.607-5.632,155.809c2.673,48.151,8.173,147.631-0.399,158.161\r
+ c-15.438-2.799-37.872-66.441-66.615-189.21c-8.065-34.38-10.583-44.725-13.483-49.388c-5.228-15.879-25.85-29.274-45.17-29.274\r
+ c-1.655,0-3.266,0.108-4.861,0.301c-10.211,1.294-33.843,8.995-31.933,52.307c9.399,60.506,21.101,105.247,32.412,148.702\r
+ l0.23,0.861c6.775,26.008,13.187,50.602,18.841,77.776c13.321,64.165,3.699,102.74,3.586,103.186\r
+ c-0.87,3.979-2.268,6.339-4.2,7.068c-0.689,0.245-1.561,0.396-2.527,0.396c-5.646,0-13.803-4.323-17.969-7.045\r
+ c-8.606-19.74-51.609-113.891-95.447-129.61l-1.591-0.587l-1.625,0.038c-16.525,0.418-29.01,5.811-37.151,16.016\r
+ c-12.864,16.142-9.538,38.083-8.668,42.495l0.537,1.595c0.323,0.689,31.597,68.868,35.021,99.817\r
+ c2.974,26.541,25.74,56.652,44.062,80.85l0.755,0.994c5.965,7.914,11.117,14.768,15.118,21.039\r
+ c53.543,64.571,141.356,121.878,142.094,122.338c10.794,9.254,16.57,17.85,16.747,24.955c0.106,4.628-2.468,7.205-2.561,7.297\r
+ l-2.128,1.948l0.18,0.208h-0.855v15.701h255.229v-5.29l13.08-44.13c41.107-131.391,42.454-245.768,42.395-246.541\r
+ c0.412-4.188,12.158-44.098,21.62-76.337l0.26-0.817c18.819-64.249,42.271-144.171,47.837-174.828\r
+ C694.187,192.566,686.613,179.854,672.523,173.331z M674.31,202.537c-5.414,29.807-29.831,113.013-47.656,173.782\r
+ c-15.425,52.589-21.784,74.579-22.293,80.481c0,1.103-0.481,110.581-41.697,242.233l-11.529,38.916H333.026\r
+ c0.886-2.669,1.515-5.743,1.499-9.346c-0.062-12.604-8.062-25.804-23.951-39.328c-0.874-0.569-87.993-57.952-138.254-118.452\r
+ c-4.017-6.42-10.15-14.539-16.085-22.357c-16.098-21.295-38.159-50.489-40.555-72.109c-3.587-32.26-32.366-96.166-36.047-104.181\r
+ c-0.449-3.244-1.962-17.522,5.402-26.708c4.458-5.559,11.822-8.666,21.911-9.219c39.297,16.376,84.176,120.587,84.617,121.646\r
+ l0.952,2.208l1.932,1.486c2.683,1.964,16.789,11.794,30.467,11.794c3.138,0,6.083-0.509,8.72-1.519\r
+ c5.458-2.04,12.545-7.113,15.252-19.564c0.463-1.688,10.778-42.358-3.462-110.948c-5.672-27.457-12.238-52.542-19.146-79.115\r
+ l-0.128-0.402c-11.161-42.728-22.722-86.917-31.934-145.967c-0.855-19.776,5.034-31.46,16.525-32.935\r
+ c13.11-1.837,29.669,8.935,31.499,17.422l2.298,6.562c2.443,7.944,7.027,27.641,10.105,40.815\r
+ c26.046,111.074,50.461,203.032,84.939,203.032c2.803,0,6.931-0.824,10.638-4.773c14.186-14.956,11.94-75.065,6.532-172.355\r
+ c-2.637-47.117-5.965-132.866-0.675-141.284l2.144-4.42c3.25-6.995,11.312-10.135,17.723-10.135c0.936,0,1.841,0.066,2.703,0.167\r
+ c10.95,1.176,22.957,9.82,24.696,17.781c1.366,6.1,3.146,35.47,5.229,69.447l0.061,1.142\r
+ c11.777,194.362,19.58,241.816,39.621,241.816c22.771,0,33.902-45.234,55.855-181.122l0.116-0.575\r
+ c5.366-33.288,13.477-83.349,17.08-90.7c11.777-5.907,22.478-7.354,28.665-3.945c7.891,4.358,10.475,16.058,11.248,24.996\r
+ c0.017,2.427-2.416,21.927-4.753,40.786c-21.283,171.091-24.349,229.784-12.591,241.55c3.122,3.102,7.514,4.443,11.457,3.526\r
+ c12.019-2.509,19.945-20.574,41.261-75.777c16.113-41.639,36.123-93.445,56.881-118.682c0.177-0.197,1.158-0.706,3.331-0.706\r
+ c2.544,0,5.458,0.706,8.215,1.962C670.207,191.876,675.376,196.567,674.31,202.537z"/>\r
+ <g>\r
+ <path d="M216.394,16.412c-44.913,0-81.447,36.542-81.447,81.463c0,40.038,29.07,73.352,67.19,80.11\r
+ c-1.869-5.596-2.913-11.163-3.653-16.909c-27.567-7.827-47.838-33.167-47.838-63.201c0-36.263,29.5-65.762,65.748-65.762\r
+ c36.261,0,65.746,29.499,65.746,65.762c0,19.53-8.65,37.037-22.231,49.079c0.627,1.238,1.238,2.48,1.717,3.823\r
+ c1.429,4.09,2.44,8.233,3.142,12.427c20.025-14.846,33.073-38.548,33.073-65.329C297.84,52.953,261.295,16.412,216.394,16.412z"\r
+ />\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="357.499px" height="357.499px" viewBox="0 0 357.499 357.499" style="enable-background:new 0 0 357.499 357.499;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M310.74,98.45c-2.269-1.058-4.688-1.619-6.937-1.619c-3.265,0-5.989,1.143-7.693,3.203
- c-10.054,12.245-19.267,36.059-26.679,55.2c-3.409,8.844-7.991,20.685-11.085,26.246c-1.69-16.288,5.619-75.026,8.43-97.64
- l0.051-0.368c1.951-15.713,2.262-18.468,2.159-19.691c-0.76-8.754-3.812-14.676-9.089-17.595
- c-5.328-2.963-12.573-2.327-20.608,1.802c-4.038,2.081-5.667,10.064-11.54,46.379l-0.027,0.161
- c-3.23,19.948-10.67,65.892-16.385,73.226c-5.086-11.185-8.843-72.945-10.465-99.679c-1.13-18.726-1.801-29.472-2.525-32.762
- c-1.53-6.878-9.568-13.208-17.917-14.104c-6.938-0.83-12.901,2.327-16.057,8.312c-5.501,5.34-5.017,24.376-2.512,69.55
- c1.191,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.739-84.46c-3.598-15.347-4.729-19.965-6.016-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.741,0-1.458,0.048-2.169,0.133c-4.56,0.579-15.1,4.016-14.248,23.35
- c4.187,27.009,9.413,46.981,14.462,66.378l0.101,0.385c3.032,11.61,5.895,22.588,8.418,34.718
- c5.939,28.642,1.649,45.862,1.6,46.061c-0.389,1.775-1.02,2.83-1.874,3.155c-0.316,0.109-0.698,0.178-1.129,0.178
- c-2.519,0-6.16-1.931-8.029-3.146c-3.833-8.812-23.029-50.839-42.604-57.856l-0.705-0.262l-0.732,0.017
- c-7.373,0.187-12.941,2.594-16.575,7.149c-5.744,7.205-4.257,16.998-3.872,18.969l0.245,0.712
- c0.144,0.309,14.106,30.741,15.632,44.557c1.323,11.848,11.492,25.29,19.664,36.09l0.335,0.445
- c2.671,3.531,4.971,6.591,6.757,9.391c23.899,28.824,63.098,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14
- c0.05,2.066-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.092h-0.397v7.009h113.934v-2.361l5.839-19.697
- c18.346-58.652,18.948-109.708,18.921-110.054c0.195-1.868,5.435-19.685,9.657-34.074l0.109-0.366
- c8.405-28.68,18.877-64.355,21.361-78.041C320.421,107.036,317.04,101.362,310.74,98.45z M311.544,111.486
- c-2.416,13.306-13.319,50.448-21.272,77.574c-6.893,23.476-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13
- l-5.15,17.371h-97.367c0.397-1.191,0.685-2.563,0.671-4.172c-0.022-5.626-3.593-11.519-10.686-17.556
- c-0.395-0.253-39.279-25.868-61.72-52.876c-1.795-2.864-4.531-6.488-7.18-9.979c-7.181-9.507-17.029-22.538-18.096-32.189
- c-1.602-14.4-14.456-42.927-16.093-46.507c-0.207-1.447-0.876-7.819,2.411-11.919c1.983-2.481,5.279-3.869,9.781-4.115
- c17.535,7.31,37.57,53.828,37.767,54.301l0.429,0.985l0.855,0.664c1.207,0.876,7.503,5.264,13.608,5.264
- c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525
- c-2.527-12.257-5.457-23.454-8.547-35.315l-0.049-0.18c-4.983-19.074-10.145-38.799-14.262-65.158
- c-0.382-8.827,2.253-14.042,7.376-14.702c5.852-0.819,13.249,3.989,14.065,7.777l1.028,2.929
- c1.082,3.547,3.135,12.338,4.502,18.219c11.635,49.582,22.526,90.631,37.924,90.631c1.251,0,3.087-0.368,4.748-2.13
- c6.324-6.677,5.327-33.508,2.909-76.938c-1.17-21.032-2.657-59.309-0.294-63.067l0.95-1.973c1.449-3.123,5.056-4.524,7.919-4.524
- c0.417,0,0.812,0.029,1.206,0.073c4.88,0.525,10.246,4.384,11.02,7.938c0.612,2.723,1.403,15.833,2.334,31l0.03,0.51
- c5.257,86.76,8.74,107.943,17.687,107.943c10.16,0,15.129-20.192,24.934-80.85l0.048-0.256
- c2.402-14.859,6.016-37.206,7.632-40.488c5.249-2.637,10.026-3.282,12.799-1.761c3.518,1.945,4.674,7.167,5.01,11.158
- c0.014,1.083-1.074,9.788-2.115,18.206c-9.507,76.373-10.872,102.571-5.626,107.823c1.396,1.387,3.36,1.985,5.12,1.574
- c5.358-1.118,8.897-9.185,18.411-33.824c7.196-18.587,16.128-41.713,25.399-52.979c0.074-0.087,0.52-0.314,1.484-0.314
- c1.137,0,2.437,0.314,3.672,0.876C309.713,106.728,312.023,108.822,311.544,111.486z"/>
- <g>
- <path d="M182.504,0.259c-19.905-2.38-38.035,11.887-40.416,31.792c-2.117,17.749,9.007,34.054,25.543,39.069
- c-0.525-2.584-0.696-5.103-0.725-7.693c-11.798-4.926-19.445-17.234-17.857-30.546c1.923-16.071,16.563-27.583,32.626-25.663
- c16.074,1.922,27.586,16.555,25.67,32.625c-1.04,8.667-5.794,15.963-12.457,20.581c0.213,0.585,0.418,1.167,0.555,1.788
- c0.418,1.886,0.65,3.778,0.739,5.672c9.657-5.515,16.7-15.338,18.117-27.206C216.675,20.77,202.418,2.64,182.504,0.259z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="357.499px" height="357.499px" viewBox="0 0 357.499 357.499" style="enable-background:new 0 0 357.499 357.499;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M310.74,98.45c-2.269-1.058-4.688-1.619-6.937-1.619c-3.265,0-5.989,1.143-7.693,3.203\r
+ c-10.054,12.245-19.267,36.059-26.679,55.2c-3.409,8.844-7.991,20.685-11.085,26.246c-1.69-16.288,5.619-75.026,8.43-97.64\r
+ l0.051-0.368c1.951-15.713,2.262-18.468,2.159-19.691c-0.76-8.754-3.812-14.676-9.089-17.595\r
+ c-5.328-2.963-12.573-2.327-20.608,1.802c-4.038,2.081-5.667,10.064-11.54,46.379l-0.027,0.161\r
+ c-3.23,19.948-10.67,65.892-16.385,73.226c-5.086-11.185-8.843-72.945-10.465-99.679c-1.13-18.726-1.801-29.472-2.525-32.762\r
+ c-1.53-6.878-9.568-13.208-17.917-14.104c-6.938-0.83-12.901,2.327-16.057,8.312c-5.501,5.34-5.017,24.376-2.512,69.55\r
+ c1.191,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.739-84.46c-3.598-15.347-4.729-19.965-6.016-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.741,0-1.458,0.048-2.169,0.133c-4.56,0.579-15.1,4.016-14.248,23.35\r
+ c4.187,27.009,9.413,46.981,14.462,66.378l0.101,0.385c3.032,11.61,5.895,22.588,8.418,34.718\r
+ c5.939,28.642,1.649,45.862,1.6,46.061c-0.389,1.775-1.02,2.83-1.874,3.155c-0.316,0.109-0.698,0.178-1.129,0.178\r
+ c-2.519,0-6.16-1.931-8.029-3.146c-3.833-8.812-23.029-50.839-42.604-57.856l-0.705-0.262l-0.732,0.017\r
+ c-7.373,0.187-12.941,2.594-16.575,7.149c-5.744,7.205-4.257,16.998-3.872,18.969l0.245,0.712\r
+ c0.144,0.309,14.106,30.741,15.632,44.557c1.323,11.848,11.492,25.29,19.664,36.09l0.335,0.445\r
+ c2.671,3.531,4.971,6.591,6.757,9.391c23.899,28.824,63.098,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14\r
+ c0.05,2.066-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.092h-0.397v7.009h113.934v-2.361l5.839-19.697\r
+ c18.346-58.652,18.948-109.708,18.921-110.054c0.195-1.868,5.435-19.685,9.657-34.074l0.109-0.366\r
+ c8.405-28.68,18.877-64.355,21.361-78.041C320.421,107.036,317.04,101.362,310.74,98.45z M311.544,111.486\r
+ c-2.416,13.306-13.319,50.448-21.272,77.574c-6.893,23.476-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13\r
+ l-5.15,17.371h-97.367c0.397-1.191,0.685-2.563,0.671-4.172c-0.022-5.626-3.593-11.519-10.686-17.556\r
+ c-0.395-0.253-39.279-25.868-61.72-52.876c-1.795-2.864-4.531-6.488-7.18-9.979c-7.181-9.507-17.029-22.538-18.096-32.189\r
+ c-1.602-14.4-14.456-42.927-16.093-46.507c-0.207-1.447-0.876-7.819,2.411-11.919c1.983-2.481,5.279-3.869,9.781-4.115\r
+ c17.535,7.31,37.57,53.828,37.767,54.301l0.429,0.985l0.855,0.664c1.207,0.876,7.503,5.264,13.608,5.264\r
+ c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525\r
+ c-2.527-12.257-5.457-23.454-8.547-35.315l-0.049-0.18c-4.983-19.074-10.145-38.799-14.262-65.158\r
+ c-0.382-8.827,2.253-14.042,7.376-14.702c5.852-0.819,13.249,3.989,14.065,7.777l1.028,2.929\r
+ c1.082,3.547,3.135,12.338,4.502,18.219c11.635,49.582,22.526,90.631,37.924,90.631c1.251,0,3.087-0.368,4.748-2.13\r
+ c6.324-6.677,5.327-33.508,2.909-76.938c-1.17-21.032-2.657-59.309-0.294-63.067l0.95-1.973c1.449-3.123,5.056-4.524,7.919-4.524\r
+ c0.417,0,0.812,0.029,1.206,0.073c4.88,0.525,10.246,4.384,11.02,7.938c0.612,2.723,1.403,15.833,2.334,31l0.03,0.51\r
+ c5.257,86.76,8.74,107.943,17.687,107.943c10.16,0,15.129-20.192,24.934-80.85l0.048-0.256\r
+ c2.402-14.859,6.016-37.206,7.632-40.488c5.249-2.637,10.026-3.282,12.799-1.761c3.518,1.945,4.674,7.167,5.01,11.158\r
+ c0.014,1.083-1.074,9.788-2.115,18.206c-9.507,76.373-10.872,102.571-5.626,107.823c1.396,1.387,3.36,1.985,5.12,1.574\r
+ c5.358-1.118,8.897-9.185,18.411-33.824c7.196-18.587,16.128-41.713,25.399-52.979c0.074-0.087,0.52-0.314,1.484-0.314\r
+ c1.137,0,2.437,0.314,3.672,0.876C309.713,106.728,312.023,108.822,311.544,111.486z"/>\r
+ <g>\r
+ <path d="M182.504,0.259c-19.905-2.38-38.035,11.887-40.416,31.792c-2.117,17.749,9.007,34.054,25.543,39.069\r
+ c-0.525-2.584-0.696-5.103-0.725-7.693c-11.798-4.926-19.445-17.234-17.857-30.546c1.923-16.071,16.563-27.583,32.626-25.663\r
+ c16.074,1.922,27.586,16.555,25.67,32.625c-1.04,8.667-5.794,15.963-12.457,20.581c0.213,0.585,0.418,1.167,0.555,1.788\r
+ c0.418,1.886,0.65,3.778,0.739,5.672c9.657-5.515,16.7-15.338,18.117-27.206C216.675,20.77,202.418,2.64,182.504,0.259z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.421px" height="336.421px" viewBox="0 0 336.421 336.421" style="enable-background:new 0 0 336.421 336.421;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M300.203,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203
- c-10.055,12.244-19.267,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.246c-1.69-16.288,5.619-75.025,8.429-97.639
- l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595
- c-5.328-2.964-12.572-2.327-20.607,1.802c-4.035,2.081-5.668,10.064-11.54,46.379l-0.027,0.161
- c-3.23,19.948-10.67,65.892-16.386,73.226c-5.085-11.185-8.843-72.945-10.465-99.679c-1.129-18.726-1.8-29.472-2.525-32.762
- c-1.529-6.879-9.568-13.208-17.911-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55
- c1.193,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.737-84.46c-3.6-15.347-4.731-19.965-6.018-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.048-2.169,0.134c-4.558,0.578-15.1,4.016-14.248,23.349
- c4.187,27.009,9.413,46.981,14.462,66.378l0.103,0.385c3.031,11.609,5.893,22.588,8.417,34.718
- c5.939,28.642,1.649,45.862,1.602,46.061c-0.39,1.776-1.02,2.83-1.875,3.155c-0.314,0.109-0.696,0.178-1.127,0.178
- c-2.521,0-6.162-1.93-8.028-3.145c-3.834-8.812-23.031-50.84-42.606-57.857l-0.705-0.262l-0.732,0.018
- c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.247,0.713c0.144,0.308,14.104,30.74,15.632,44.556
- c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391c23.9,28.825,63.1,54.405,63.421,54.61
- c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.093h-0.389v7.008h113.918v-2.361
- l5.839-19.697c18.346-58.652,18.951-109.708,18.921-110.054c0.195-1.868,5.438-19.684,9.661-34.074l0.105-0.366
- c8.405-28.679,18.88-64.355,21.364-78.041C309.877,85.958,306.5,80.285,300.203,77.372z M301,90.409
- c-2.416,13.305-13.319,50.448-21.272,77.573c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13
- l-5.15,17.371h-97.362c0.396-1.19,0.683-2.562,0.669-4.172c-0.021-5.626-3.592-11.519-10.684-17.556
- c-0.397-0.253-39.28-25.868-61.722-52.875c-1.793-2.864-4.531-6.489-7.18-9.979c-7.181-9.507-17.027-22.538-18.096-32.188
- c-1.602-14.4-14.456-42.928-16.091-46.506c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.78-4.115
- c17.535,7.31,37.569,53.829,37.766,54.301l0.431,0.986l0.854,0.664c1.207,0.875,7.503,5.263,13.608,5.263
- c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525
- c-2.526-12.256-5.457-23.454-8.547-35.315l-0.05-0.18C95.97,97.806,90.808,78.081,86.691,51.722
- c-0.382-8.828,2.253-14.043,7.376-14.702c5.852-0.82,13.25,3.989,14.066,7.777l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22
- c11.634,49.582,22.525,90.631,37.923,90.631c1.25,0,3.087-0.368,4.748-2.13c6.326-6.677,5.327-33.508,2.909-76.937
- c-1.17-21.033-2.657-59.31-0.294-63.067l0.95-1.973c1.451-3.123,5.056-4.524,7.918-4.524c0.418,0,0.813,0.029,1.207,0.074
- c4.883,0.525,10.245,4.384,11.022,7.938c0.609,2.722,1.399,15.833,2.334,31l0.027,0.51c5.256,86.761,8.74,107.944,17.686,107.944
- c10.164,0,15.133-20.192,24.934-80.85l0.048-0.257c2.406-14.859,6.017-37.206,7.632-40.488c5.25-2.637,10.027-3.282,12.799-1.76
- c3.518,1.945,4.675,7.167,5.01,11.158c0.014,1.083-1.074,9.788-2.114,18.206c-9.507,76.373-10.872,102.573-5.626,107.824
- c1.396,1.386,3.36,1.984,5.119,1.574c5.359-1.119,8.897-9.184,18.411-33.825c7.197-18.587,16.129-41.713,25.399-52.979
- c0.075-0.087,0.521-0.315,1.488-0.315c1.133,0,2.434,0.315,3.669,0.876C299.176,85.65,301.479,87.745,301,90.409z"/>
- <g>
- <path d="M245.691,4.16c-19.677-3.815-38.79,9.091-42.619,28.771c-3.401,17.547,6.502,34.617,22.634,40.821
- c-0.342-2.613-0.328-5.14-0.164-7.719c-11.416-5.775-18.138-18.604-15.592-31.763c3.091-15.893,18.528-26.308,34.414-23.223
- c15.885,3.08,26.303,18.512,23.216,34.405c-1.663,8.561-6.937,15.496-13.915,19.618c0.164,0.599,0.329,1.194,0.425,1.82
- c0.28,1.915,0.366,3.821,0.321,5.717c10.034-4.798,17.768-14.084,20.047-25.817C278.277,27.104,265.375,7.984,245.691,4.16z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.421px" height="336.421px" viewBox="0 0 336.421 336.421" style="enable-background:new 0 0 336.421 336.421;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M300.203,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203\r
+ c-10.055,12.244-19.267,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.246c-1.69-16.288,5.619-75.025,8.429-97.639\r
+ l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595\r
+ c-5.328-2.964-12.572-2.327-20.607,1.802c-4.035,2.081-5.668,10.064-11.54,46.379l-0.027,0.161\r
+ c-3.23,19.948-10.67,65.892-16.386,73.226c-5.085-11.185-8.843-72.945-10.465-99.679c-1.129-18.726-1.8-29.472-2.525-32.762\r
+ c-1.529-6.879-9.568-13.208-17.911-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55\r
+ c1.193,21.495,3.655,65.9-0.171,70.601c-6.901-1.249-16.906-29.658-29.737-84.46c-3.6-15.347-4.731-19.965-6.018-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.048-2.169,0.134c-4.558,0.578-15.1,4.016-14.248,23.349\r
+ c4.187,27.009,9.413,46.981,14.462,66.378l0.103,0.385c3.031,11.609,5.893,22.588,8.417,34.718\r
+ c5.939,28.642,1.649,45.862,1.602,46.061c-0.39,1.776-1.02,2.83-1.875,3.155c-0.314,0.109-0.696,0.178-1.127,0.178\r
+ c-2.521,0-6.162-1.93-8.028-3.145c-3.834-8.812-23.031-50.84-42.606-57.857l-0.705-0.262l-0.732,0.018\r
+ c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.247,0.713c0.144,0.308,14.104,30.74,15.632,44.556\r
+ c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391c23.9,28.825,63.1,54.405,63.421,54.61\r
+ c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869l0.081,0.093h-0.389v7.008h113.918v-2.361\r
+ l5.839-19.697c18.346-58.652,18.951-109.708,18.921-110.054c0.195-1.868,5.438-19.684,9.661-34.074l0.105-0.366\r
+ c8.405-28.679,18.88-64.355,21.364-78.041C309.877,85.958,306.5,80.285,300.203,77.372z M301,90.409\r
+ c-2.416,13.305-13.319,50.448-21.272,77.573c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.13\r
+ l-5.15,17.371h-97.362c0.396-1.19,0.683-2.562,0.669-4.172c-0.021-5.626-3.592-11.519-10.684-17.556\r
+ c-0.397-0.253-39.28-25.868-61.722-52.875c-1.793-2.864-4.531-6.489-7.18-9.979c-7.181-9.507-17.027-22.538-18.096-32.188\r
+ c-1.602-14.4-14.456-42.928-16.091-46.506c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.78-4.115\r
+ c17.535,7.31,37.569,53.829,37.766,54.301l0.431,0.986l0.854,0.664c1.207,0.875,7.503,5.263,13.608,5.263\r
+ c1.395,0,2.715-0.226,3.886-0.678c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.525\r
+ c-2.526-12.256-5.457-23.454-8.547-35.315l-0.05-0.18C95.97,97.806,90.808,78.081,86.691,51.722\r
+ c-0.382-8.828,2.253-14.043,7.376-14.702c5.852-0.82,13.25,3.989,14.066,7.777l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22\r
+ c11.634,49.582,22.525,90.631,37.923,90.631c1.25,0,3.087-0.368,4.748-2.13c6.326-6.677,5.327-33.508,2.909-76.937\r
+ c-1.17-21.033-2.657-59.31-0.294-63.067l0.95-1.973c1.451-3.123,5.056-4.524,7.918-4.524c0.418,0,0.813,0.029,1.207,0.074\r
+ c4.883,0.525,10.245,4.384,11.022,7.938c0.609,2.722,1.399,15.833,2.334,31l0.027,0.51c5.256,86.761,8.74,107.944,17.686,107.944\r
+ c10.164,0,15.133-20.192,24.934-80.85l0.048-0.257c2.406-14.859,6.017-37.206,7.632-40.488c5.25-2.637,10.027-3.282,12.799-1.76\r
+ c3.518,1.945,4.675,7.167,5.01,11.158c0.014,1.083-1.074,9.788-2.114,18.206c-9.507,76.373-10.872,102.573-5.626,107.824\r
+ c1.396,1.386,3.36,1.984,5.119,1.574c5.359-1.119,8.897-9.184,18.411-33.825c7.197-18.587,16.129-41.713,25.399-52.979\r
+ c0.075-0.087,0.521-0.315,1.488-0.315c1.133,0,2.434,0.315,3.669,0.876C299.176,85.65,301.479,87.745,301,90.409z"/>\r
+ <g>\r
+ <path d="M245.691,4.16c-19.677-3.815-38.79,9.091-42.619,28.771c-3.401,17.547,6.502,34.617,22.634,40.821\r
+ c-0.342-2.613-0.328-5.14-0.164-7.719c-11.416-5.775-18.138-18.604-15.592-31.763c3.091-15.893,18.528-26.308,34.414-23.223\r
+ c15.885,3.08,26.303,18.512,23.216,34.405c-1.663,8.561-6.937,15.496-13.915,19.618c0.164,0.599,0.329,1.194,0.425,1.82\r
+ c0.28,1.915,0.366,3.821,0.321,5.717c10.034-4.798,17.768-14.084,20.047-25.817C278.277,27.104,265.375,7.984,245.691,4.16z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="336.425px" height="336.425px" viewBox="0 0 336.425 336.425" style="enable-background:new 0 0 336.425 336.425;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M289.997,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203
- c-10.055,12.244-19.268,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.248c-1.69-16.288,5.619-75.027,8.429-97.641
- l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595
- c-5.328-2.964-12.573-2.326-20.608,1.802c-4.034,2.082-5.667,10.064-11.539,46.379l-0.027,0.162
- c-3.23,19.946-10.671,65.891-16.386,73.226c-5.085-11.187-8.843-72.946-10.465-99.681c-1.129-18.726-1.8-29.47-2.525-32.762
- c-1.53-6.879-9.568-13.206-17.912-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55
- c1.192,21.495,3.655,65.9-0.171,70.601c-6.9-1.247-16.905-29.656-29.737-84.46c-3.6-15.345-4.731-19.965-6.018-22.046
- c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.05-2.169,0.134c-4.559,0.578-15.101,4.016-14.249,23.349
- c4.188,27.011,9.413,46.981,14.462,66.378l0.103,0.385c3.03,11.609,5.893,22.588,8.417,34.718
- c5.939,28.642,1.649,45.862,1.602,46.063c-0.39,1.773-1.02,2.827-1.875,3.152c-0.315,0.109-0.696,0.178-1.127,0.178
- c-2.521,0-6.162-1.93-8.029-3.145c-3.834-8.809-23.031-50.84-42.605-57.855l-0.705-0.264l-0.732,0.018
- c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.246,0.713c0.144,0.308,14.104,30.74,15.633,44.556
- c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391
- c23.9,28.825,63.099,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869
- l0.08,0.096h-0.388v7.009H242.72v-2.365l5.838-19.694c18.347-58.655,18.952-109.711,18.922-110.057
- c0.194-1.868,5.438-19.684,9.66-34.074l0.106-0.366c8.405-28.679,18.88-64.355,21.364-78.041
- C299.671,85.962,296.294,80.285,289.997,77.372z M290.794,90.409c-2.416,13.305-13.318,50.448-21.271,77.573
- c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.134l-5.15,17.371h-97.362
- c0.396-1.194,0.683-2.566,0.669-4.176c-0.021-5.626-3.591-11.519-10.684-17.556c-0.397-0.253-39.28-25.864-61.722-52.872
- c-1.793-2.867-4.531-6.492-7.18-9.982c-7.182-9.507-17.027-22.538-18.097-32.188c-1.602-14.4-14.455-42.928-16.091-46.506
- c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.781-4.113c17.535,7.31,37.568,53.827,37.765,54.299
- l0.431,0.986l0.854,0.664c1.206,0.875,7.503,5.263,13.608,5.263c1.395,0,2.715-0.226,3.886-0.678
- c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.523c-2.525-12.258-5.457-23.456-8.547-35.317l-0.049-0.18
- c-4.983-19.073-10.145-38.798-14.262-65.158c-0.381-8.828,2.253-14.041,7.376-14.7c5.852-0.821,13.251,3.987,14.067,7.775
- l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22c11.634,49.582,22.524,90.631,37.922,90.631c1.251,0,3.087-0.368,4.749-2.13
- c6.326-6.675,5.327-33.508,2.909-76.937c-1.17-21.033-2.657-59.31-0.294-63.067l0.949-1.973c1.451-3.121,5.057-4.524,7.919-4.524
- c0.417,0,0.813,0.029,1.207,0.074c4.881,0.525,10.246,4.384,11.021,7.938c0.609,2.722,1.401,15.833,2.336,31l0.027,0.512
- c5.256,86.759,8.74,107.942,17.686,107.942c10.164,0,15.133-20.191,24.934-80.85l0.048-0.257
- c2.406-14.857,6.017-37.204,7.632-40.488c5.249-2.637,10.026-3.28,12.799-1.76c3.518,1.945,4.675,7.167,5.01,11.158
- c0.014,1.083-1.074,9.789-2.114,18.206c-9.508,76.373-10.873,102.574-5.627,107.827c1.396,1.383,3.361,1.981,5.12,1.571
- c5.358-1.119,8.897-9.182,18.411-33.825c7.196-18.587,16.129-41.713,25.399-52.979c0.075-0.087,0.52-0.315,1.488-0.315
- c1.133,0,2.434,0.315,3.669,0.876C288.971,85.654,291.273,87.745,290.794,90.409z"/>
- <g>
- <path d="M300.582,60.104c-17.501-9.767-39.69-3.473-49.471,14.031c-8.703,15.609-4.617,34.917,8.761,45.851
- c0.503-2.593,1.293-4.99,2.262-7.391c-9.041-9.048-11.434-23.332-4.894-35.043c7.892-14.133,25.803-19.207,39.937-11.318
- c14.123,7.885,19.209,25.794,11.317,39.935c-4.251,7.614-11.431,12.556-19.343,14.294c-0.027,0.62-0.064,1.239-0.171,1.86
- c-0.332,1.903-0.835,3.739-1.472,5.53c11.03-1.43,21.27-7.833,27.101-18.276C324.386,92.07,318.097,69.878,300.582,60.104z"/>
- </g>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="336.425px" height="336.425px" viewBox="0 0 336.425 336.425" style="enable-background:new 0 0 336.425 336.425;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M289.997,77.372c-2.272-1.057-4.691-1.618-6.94-1.618c-3.265,0-5.988,1.143-7.692,3.203\r
+ c-10.055,12.244-19.268,36.059-26.676,55.199c-3.412,8.845-7.994,20.686-11.088,26.248c-1.69-16.288,5.619-75.027,8.429-97.641\r
+ l0.051-0.368c1.951-15.713,2.263-18.468,2.163-19.691c-0.763-8.754-3.815-14.676-9.093-17.595\r
+ c-5.328-2.964-12.573-2.326-20.608,1.802c-4.034,2.082-5.667,10.064-11.539,46.379l-0.027,0.162\r
+ c-3.23,19.946-10.671,65.891-16.386,73.226c-5.085-11.187-8.843-72.946-10.465-99.681c-1.129-18.726-1.8-29.47-2.525-32.762\r
+ c-1.53-6.879-9.568-13.206-17.912-14.104c-6.938-0.83-12.903,2.327-16.057,8.312c-5.503,5.34-5.019,24.376-2.514,69.55\r
+ c1.192,21.495,3.655,65.9-0.171,70.601c-6.9-1.247-16.905-29.656-29.737-84.46c-3.6-15.345-4.731-19.965-6.018-22.046\r
+ c-2.341-7.089-11.546-13.067-20.17-13.067c-0.739,0-1.458,0.05-2.169,0.134c-4.559,0.578-15.101,4.016-14.249,23.349\r
+ c4.188,27.011,9.413,46.981,14.462,66.378l0.103,0.385c3.03,11.609,5.893,22.588,8.417,34.718\r
+ c5.939,28.642,1.649,45.862,1.602,46.063c-0.39,1.773-1.02,2.827-1.875,3.152c-0.315,0.109-0.696,0.178-1.127,0.178\r
+ c-2.521,0-6.162-1.93-8.029-3.145c-3.834-8.809-23.031-50.84-42.605-57.855l-0.705-0.264l-0.732,0.018\r
+ c-7.373,0.187-12.941,2.594-16.575,7.148c-5.742,7.206-4.257,17-3.872,18.969l0.246,0.713c0.144,0.308,14.104,30.74,15.633,44.556\r
+ c1.321,11.848,11.49,25.29,19.662,36.091l0.337,0.444c2.669,3.532,4.969,6.591,6.755,9.391\r
+ c23.9,28.825,63.099,54.405,63.421,54.61c4.825,4.131,7.397,7.967,7.474,11.14c0.05,2.067-1.1,3.217-1.134,3.258l-0.95,0.869\r
+ l0.08,0.096h-0.388v7.009H242.72v-2.365l5.838-19.694c18.347-58.655,18.952-109.711,18.922-110.057\r
+ c0.194-1.868,5.438-19.684,9.66-34.074l0.106-0.366c8.405-28.679,18.88-64.355,21.364-78.041\r
+ C299.671,85.962,296.294,80.285,289.997,77.372z M290.794,90.409c-2.416,13.305-13.318,50.448-21.271,77.573\r
+ c-6.893,23.477-9.723,33.291-9.959,35.926c0,0.493-0.212,49.361-18.603,108.134l-5.15,17.371h-97.362\r
+ c0.396-1.194,0.683-2.566,0.669-4.176c-0.021-5.626-3.591-11.519-10.684-17.556c-0.397-0.253-39.28-25.864-61.722-52.872\r
+ c-1.793-2.867-4.531-6.492-7.18-9.982c-7.182-9.507-17.027-22.538-18.097-32.188c-1.602-14.4-14.455-42.928-16.091-46.506\r
+ c-0.207-1.447-0.876-7.821,2.411-11.921c1.983-2.481,5.277-3.869,9.781-4.113c17.535,7.31,37.568,53.827,37.765,54.299\r
+ l0.431,0.986l0.854,0.664c1.206,0.875,7.503,5.263,13.608,5.263c1.395,0,2.715-0.226,3.886-0.678\r
+ c2.435-0.91,5.607-3.176,6.815-8.733c0.2-0.753,4.805-18.907-1.552-49.523c-2.525-12.258-5.457-23.456-8.547-35.317l-0.049-0.18\r
+ c-4.983-19.073-10.145-38.798-14.262-65.158c-0.381-8.828,2.253-14.041,7.376-14.7c5.852-0.821,13.251,3.987,14.067,7.775\r
+ l1.027,2.929c1.083,3.547,3.136,12.339,4.503,18.22c11.634,49.582,22.524,90.631,37.922,90.631c1.251,0,3.087-0.368,4.749-2.13\r
+ c6.326-6.675,5.327-33.508,2.909-76.937c-1.17-21.033-2.657-59.31-0.294-63.067l0.949-1.973c1.451-3.121,5.057-4.524,7.919-4.524\r
+ c0.417,0,0.813,0.029,1.207,0.074c4.881,0.525,10.246,4.384,11.021,7.938c0.609,2.722,1.401,15.833,2.336,31l0.027,0.512\r
+ c5.256,86.759,8.74,107.942,17.686,107.942c10.164,0,15.133-20.191,24.934-80.85l0.048-0.257\r
+ c2.406-14.857,6.017-37.204,7.632-40.488c5.249-2.637,10.026-3.28,12.799-1.76c3.518,1.945,4.675,7.167,5.01,11.158\r
+ c0.014,1.083-1.074,9.789-2.114,18.206c-9.508,76.373-10.873,102.574-5.627,107.827c1.396,1.383,3.361,1.981,5.12,1.571\r
+ c5.358-1.119,8.897-9.182,18.411-33.825c7.196-18.587,16.129-41.713,25.399-52.979c0.075-0.087,0.52-0.315,1.488-0.315\r
+ c1.133,0,2.434,0.315,3.669,0.876C288.971,85.654,291.273,87.745,290.794,90.409z"/>\r
+ <g>\r
+ <path d="M300.582,60.104c-17.501-9.767-39.69-3.473-49.471,14.031c-8.703,15.609-4.617,34.917,8.761,45.851\r
+ c0.503-2.593,1.293-4.99,2.262-7.391c-9.041-9.048-11.434-23.332-4.894-35.043c7.892-14.133,25.803-19.207,39.937-11.318\r
+ c14.123,7.885,19.209,25.794,11.317,39.935c-4.251,7.614-11.431,12.556-19.343,14.294c-0.027,0.62-0.064,1.239-0.171,1.86\r
+ c-0.332,1.903-0.835,3.739-1.472,5.53c11.03-1.43,21.27-7.833,27.101-18.276C324.386,92.07,318.097,69.878,300.582,60.104z"/>\r
+ </g>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.765px" height="317.765px" viewBox="0 0 317.765 317.765" style="enable-background:new 0 0 317.765 317.765;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M45.472,89.304c2.127,0.465,4.1,0.435,10.171-4.227c2.689-2.067,6.671-5.554,10.354-10.418l1.608-2.134
- c13.772-18.317,46.016-61.202,92.584-58.875c38.405,2.803,65.626,31.804,78.726,83.879c0.445,1.77,0.719,2.856,1.013,3.689
- c2.002,8.516,5.355,19.126,10.194,22.617c1.201,0.869,2.588,1.283,3.967,1.283c2.102,0,4.172-0.979,5.499-2.814
- c2.118-2.93,1.554-6.985-1.225-9.23c-1.335-1.731-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.762-0.362-1.121
- c-0.124-0.443-0.37-1.406-0.589-2.272c-2.077-8.252-7.591-30.178-20.964-50.799C213.827,16.796,190.279,2.229,161.09,0.124
- c-0.05-0.005-0.094-0.005-0.144-0.009C107.148-2.627,71.838,44.33,56.764,64.382l-1.588,2.104
- c-4.127,5.457-8.999,8.853-10.677,9.837c-0.575,0.221-1.121,0.525-1.629,0.916c-2.11,1.602-3.14,4.324-2.573,6.906
- C40.868,86.718,42.894,88.736,45.472,89.304z"/>
- <path d="M215.295,115.305c5.12-12.783,5.243-25.991,0.343-36.234c-4.374-9.135-12.525-15.759-23.572-19.14
- c-16.214-4.962-35.871,4.043-53.873,24.674c-0.231,0.251-25.865,27.213-52.785,43.694c-0.2,0.12-19.903,11.943-40.478,17.547
- c-3.614,0.984-5.751,4.709-4.762,8.323c0.987,3.614,4.709,5.746,8.323,4.76c22.388-6.097,43.062-18.499,43.968-19.044
- c29.198-17.879,55.678-46.061,55.904-46.321c10.935-12.523,27.109-24.533,39.733-20.668c7.423,2.274,12.58,6.322,15.308,12.031
- c3.268,6.831,3.012,16.063-0.695,25.339c-6.916,17.263-28.424,38.109-60.573,58.697c-16.124,10.335-56.724,35.683-85.395,47.94
- c-3.443,1.472-5.039,5.455-3.568,8.901c1.097,2.57,3.599,4.113,6.233,4.113c0.89,0,1.795-0.175,2.665-0.548
- c29.607-12.658,70.969-38.472,87.375-48.98C173.866,164.75,205.104,140.768,215.295,115.305z"/>
- <path d="M106.094,64.687c-3.075,3.391-5.838,7.029-8.811,10.506c-3.893,4.555-8.158,8.809-12.602,12.821
- c-4.572,4.128-8.266,7.082-13.66,10.177c-5.722,3.284-11.546,6.602-17.472,9.486c-2.04,0.994-3.792,1.639-6.083,2.331
- c-3.54,1.061-5.73,4.712-4.738,8.34c0.963,3.498,4.803,5.799,8.343,4.738c6.935-2.086,13.214-5.653,19.474-9.209
- c5.291-3.008,10.54-5.713,15.401-9.409c9.464-7.202,17.616-15.612,25.112-24.811c3.037-3.725,6.283-7.275,9.671-10.681
- c1.854-1.862,3.765-3.657,5.722-5.409c1.013-0.911,2.046-1.8,3.095-2.68c0.525-0.445,1.068-0.883,1.602-1.321
- c0.144-0.116,1.191-0.943,1.465-1.16c4.724-3.621,9.751-6.834,15.044-9.553c4.996-2.568,10.018-4.37,16.106-5.635
- c2.012-0.421,2.457-0.467,3.963-0.621c3.675-0.382,6.786-2.796,6.786-6.781c0-3.408-3.098-7.163-6.786-6.779
- C143.211,31.567,122.255,46.888,106.094,64.687z"/>
- <path d="M53.326,194.516c14.736-5.055,90.365-33.298,132.72-92.663c2.173-3.049,1.465-7.283-1.581-9.456
- c-3.046-2.175-7.282-1.468-9.459,1.581c-39.95,55.995-112.036,82.89-126.083,87.711c-0.301,0.103-0.486,0.171-0.546,0.198
- c-3.504,1.324-5.27,5.239-3.942,8.744c1.026,2.71,3.605,4.38,6.346,4.38c0.767,0,1.545-0.133,2.313-0.41L53.326,194.516z"/>
- <path d="M141.726,223.128c1.572-7.275,4.173-14.164,7.667-20.509c-8.152,4.559-18.619,11.365-31.792,20.048
- c-16.926,11.162-36.119,23.808-44.462,26.056c-3.619,0.972-5.765,4.695-4.789,8.31c0.819,3.028,3.552,5.023,6.541,5.023
- c0.589,0,1.177-0.075,1.766-0.236c10.465-2.816,28.896-14.965,48.408-27.825C130.398,230.476,136.175,226.674,141.726,223.128z"/>
- <path d="M140.569,248.402c-9.212,5.886-21.135,14.359-36.166,25.334c-3.619,2.639-6.741,4.921-8.911,6.454
- c-3.06,2.159-3.783,6.393-1.629,9.448c1.328,1.872,3.424,2.868,5.544,2.868c1.357,0,2.722-0.4,3.906-1.242
- c2.253-1.591,5.422-3.901,9.084-6.574c6.771-4.941,19.97-14.578,31.272-22.106C142.198,258.025,141.158,253.282,140.569,248.402z"
- />
- <path d="M153.279,282.168c-11.834,4.031-28.315,20.591-31.709,24.102c-2.608,2.69-2.541,6.981,0.15,9.586
- c1.321,1.276,3.017,1.909,4.716,1.909c1.772,0,3.547-0.688,4.875-2.063c9.083-9.38,21.982-20.036,26.988-20.902
- c2.298-0.394,5.155,0.575,8.396,2.303C161.595,292.732,157.077,287.719,153.279,282.168z"/>
- <path d="M257.62,161.848c-5.653-2.389-11.56-4.897-16.316-8.858c-5.236-4.355-7.669-10.079-8.761-16.683
- c-1.424-8.614-14.489-4.948-13.079,3.605c1.926,11.663,8.274,19.763,16.84,25.814c6.981,1.906,13.565,4.773,19.603,8.47
- c1.649-0.346,3.128-1.314,4.157-3.066C261.741,168.248,261.029,163.286,257.62,161.848z"/>
- <path d="M198.533,160.681c-2.464,0.675-4.702,3.146-5.04,5.797c4.021-1.256,8.199-2.176,12.477-2.754
- C204.358,161.277,201.723,159.802,198.533,160.681z"/>
- <path d="M212.133,169.801c-36.233,0-65.705,29.476-65.705,65.706s29.472,65.705,65.705,65.705
- c36.228,0,65.706-29.475,65.706-65.705S248.36,169.801,212.133,169.801z M212.133,287.195c-28.499,0-51.688-23.188-51.688-51.688
- c0-28.5,23.189-51.688,51.688-51.688c28.5,0,51.688,23.188,51.688,51.688C263.821,264.006,240.633,287.195,212.133,287.195z"/>
- <polygon points="204.228,247.717 186.491,231.414 177.005,241.739 205.515,267.928 247.874,217.711 237.166,208.67 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.765px" height="317.765px" viewBox="0 0 317.765 317.765" style="enable-background:new 0 0 317.765 317.765;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M45.472,89.304c2.127,0.465,4.1,0.435,10.171-4.227c2.689-2.067,6.671-5.554,10.354-10.418l1.608-2.134\r
+ c13.772-18.317,46.016-61.202,92.584-58.875c38.405,2.803,65.626,31.804,78.726,83.879c0.445,1.77,0.719,2.856,1.013,3.689\r
+ c2.002,8.516,5.355,19.126,10.194,22.617c1.201,0.869,2.588,1.283,3.967,1.283c2.102,0,4.172-0.979,5.499-2.814\r
+ c2.118-2.93,1.554-6.985-1.225-9.23c-1.335-1.731-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.762-0.362-1.121\r
+ c-0.124-0.443-0.37-1.406-0.589-2.272c-2.077-8.252-7.591-30.178-20.964-50.799C213.827,16.796,190.279,2.229,161.09,0.124\r
+ c-0.05-0.005-0.094-0.005-0.144-0.009C107.148-2.627,71.838,44.33,56.764,64.382l-1.588,2.104\r
+ c-4.127,5.457-8.999,8.853-10.677,9.837c-0.575,0.221-1.121,0.525-1.629,0.916c-2.11,1.602-3.14,4.324-2.573,6.906\r
+ C40.868,86.718,42.894,88.736,45.472,89.304z"/>\r
+ <path d="M215.295,115.305c5.12-12.783,5.243-25.991,0.343-36.234c-4.374-9.135-12.525-15.759-23.572-19.14\r
+ c-16.214-4.962-35.871,4.043-53.873,24.674c-0.231,0.251-25.865,27.213-52.785,43.694c-0.2,0.12-19.903,11.943-40.478,17.547\r
+ c-3.614,0.984-5.751,4.709-4.762,8.323c0.987,3.614,4.709,5.746,8.323,4.76c22.388-6.097,43.062-18.499,43.968-19.044\r
+ c29.198-17.879,55.678-46.061,55.904-46.321c10.935-12.523,27.109-24.533,39.733-20.668c7.423,2.274,12.58,6.322,15.308,12.031\r
+ c3.268,6.831,3.012,16.063-0.695,25.339c-6.916,17.263-28.424,38.109-60.573,58.697c-16.124,10.335-56.724,35.683-85.395,47.94\r
+ c-3.443,1.472-5.039,5.455-3.568,8.901c1.097,2.57,3.599,4.113,6.233,4.113c0.89,0,1.795-0.175,2.665-0.548\r
+ c29.607-12.658,70.969-38.472,87.375-48.98C173.866,164.75,205.104,140.768,215.295,115.305z"/>\r
+ <path d="M106.094,64.687c-3.075,3.391-5.838,7.029-8.811,10.506c-3.893,4.555-8.158,8.809-12.602,12.821\r
+ c-4.572,4.128-8.266,7.082-13.66,10.177c-5.722,3.284-11.546,6.602-17.472,9.486c-2.04,0.994-3.792,1.639-6.083,2.331\r
+ c-3.54,1.061-5.73,4.712-4.738,8.34c0.963,3.498,4.803,5.799,8.343,4.738c6.935-2.086,13.214-5.653,19.474-9.209\r
+ c5.291-3.008,10.54-5.713,15.401-9.409c9.464-7.202,17.616-15.612,25.112-24.811c3.037-3.725,6.283-7.275,9.671-10.681\r
+ c1.854-1.862,3.765-3.657,5.722-5.409c1.013-0.911,2.046-1.8,3.095-2.68c0.525-0.445,1.068-0.883,1.602-1.321\r
+ c0.144-0.116,1.191-0.943,1.465-1.16c4.724-3.621,9.751-6.834,15.044-9.553c4.996-2.568,10.018-4.37,16.106-5.635\r
+ c2.012-0.421,2.457-0.467,3.963-0.621c3.675-0.382,6.786-2.796,6.786-6.781c0-3.408-3.098-7.163-6.786-6.779\r
+ C143.211,31.567,122.255,46.888,106.094,64.687z"/>\r
+ <path d="M53.326,194.516c14.736-5.055,90.365-33.298,132.72-92.663c2.173-3.049,1.465-7.283-1.581-9.456\r
+ c-3.046-2.175-7.282-1.468-9.459,1.581c-39.95,55.995-112.036,82.89-126.083,87.711c-0.301,0.103-0.486,0.171-0.546,0.198\r
+ c-3.504,1.324-5.27,5.239-3.942,8.744c1.026,2.71,3.605,4.38,6.346,4.38c0.767,0,1.545-0.133,2.313-0.41L53.326,194.516z"/>\r
+ <path d="M141.726,223.128c1.572-7.275,4.173-14.164,7.667-20.509c-8.152,4.559-18.619,11.365-31.792,20.048\r
+ c-16.926,11.162-36.119,23.808-44.462,26.056c-3.619,0.972-5.765,4.695-4.789,8.31c0.819,3.028,3.552,5.023,6.541,5.023\r
+ c0.589,0,1.177-0.075,1.766-0.236c10.465-2.816,28.896-14.965,48.408-27.825C130.398,230.476,136.175,226.674,141.726,223.128z"/>\r
+ <path d="M140.569,248.402c-9.212,5.886-21.135,14.359-36.166,25.334c-3.619,2.639-6.741,4.921-8.911,6.454\r
+ c-3.06,2.159-3.783,6.393-1.629,9.448c1.328,1.872,3.424,2.868,5.544,2.868c1.357,0,2.722-0.4,3.906-1.242\r
+ c2.253-1.591,5.422-3.901,9.084-6.574c6.771-4.941,19.97-14.578,31.272-22.106C142.198,258.025,141.158,253.282,140.569,248.402z"\r
+ />\r
+ <path d="M153.279,282.168c-11.834,4.031-28.315,20.591-31.709,24.102c-2.608,2.69-2.541,6.981,0.15,9.586\r
+ c1.321,1.276,3.017,1.909,4.716,1.909c1.772,0,3.547-0.688,4.875-2.063c9.083-9.38,21.982-20.036,26.988-20.902\r
+ c2.298-0.394,5.155,0.575,8.396,2.303C161.595,292.732,157.077,287.719,153.279,282.168z"/>\r
+ <path d="M257.62,161.848c-5.653-2.389-11.56-4.897-16.316-8.858c-5.236-4.355-7.669-10.079-8.761-16.683\r
+ c-1.424-8.614-14.489-4.948-13.079,3.605c1.926,11.663,8.274,19.763,16.84,25.814c6.981,1.906,13.565,4.773,19.603,8.47\r
+ c1.649-0.346,3.128-1.314,4.157-3.066C261.741,168.248,261.029,163.286,257.62,161.848z"/>\r
+ <path d="M198.533,160.681c-2.464,0.675-4.702,3.146-5.04,5.797c4.021-1.256,8.199-2.176,12.477-2.754\r
+ C204.358,161.277,201.723,159.802,198.533,160.681z"/>\r
+ <path d="M212.133,169.801c-36.233,0-65.705,29.476-65.705,65.706s29.472,65.705,65.705,65.705\r
+ c36.228,0,65.706-29.475,65.706-65.705S248.36,169.801,212.133,169.801z M212.133,287.195c-28.499,0-51.688-23.188-51.688-51.688\r
+ c0-28.5,23.189-51.688,51.688-51.688c28.5,0,51.688,23.188,51.688,51.688C263.821,264.006,240.633,287.195,212.133,287.195z"/>\r
+ <polygon points="204.228,247.717 186.491,231.414 177.005,241.739 205.515,267.928 247.874,217.711 237.166,208.67 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="352.968px" height="352.969px" viewBox="0 0 352.968 352.969" style="enable-background:new 0 0 352.968 352.969;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M68.922,87.914c-2.11,1.602-3.14,4.324-2.573,6.906c0.575,2.584,2.594,4.601,5.183,5.169
- c2.127,0.467,4.1,0.435,10.164-4.226c2.698-2.067,6.678-5.554,10.354-10.417l1.608-2.135
- c13.772-18.315,46.016-61.202,92.583-58.875c38.403,2.803,65.634,31.806,78.724,83.879c0.444,1.769,0.719,2.855,1.02,3.689
- c1.999,8.516,5.359,19.126,10.191,22.617c1.204,0.869,2.587,1.283,3.963,1.283c2.111,0,4.182-0.979,5.503-2.815
- c2.121-2.929,1.554-6.984-1.219-9.229c-1.342-1.731-3.86-8.981-5.352-15.461c-0.09-0.385-0.213-0.76-0.37-1.121
- c-0.123-0.441-0.366-1.406-0.582-2.271c-2.08-8.254-7.59-30.18-20.96-50.799c-17.279-26.626-40.823-41.192-70.015-43.299
- c-0.048-0.003-0.092-0.003-0.144-0.008C133.204,8.051,97.895,55.008,82.823,75.06l-1.588,2.106
- c-4.127,5.455-8.999,8.852-10.684,9.835C69.983,87.222,69.438,87.528,68.922,87.914z"/>
- <path d="M241.351,125.994c5.113-12.784,5.236-25.992,0.336-36.234c-4.374-9.136-12.525-15.759-23.565-19.14
- c-16.214-4.962-35.871,4.043-53.88,24.674c-0.231,0.251-25.865,27.214-52.778,43.694c-0.199,0.12-19.91,11.943-40.484,17.547
- c-3.614,0.984-5.744,4.709-4.755,8.323c0.977,3.612,4.709,5.748,8.322,4.758c22.381-6.095,43.056-18.495,43.961-19.042
- c29.198-17.879,55.687-46.061,55.911-46.319c10.93-12.525,27.109-24.534,39.727-20.668c7.423,2.274,12.58,6.321,15.308,12.029
- c3.274,6.831,3.019,16.063-0.695,25.339c-6.909,17.263-28.417,38.109-60.573,58.697c-16.127,10.331-56.721,35.68-85.388,47.938
- c-3.45,1.472-5.042,5.455-3.575,8.897c1.101,2.573,3.605,4.113,6.233,4.113c0.89,0,1.795-0.171,2.664-0.544
- c29.607-12.658,70.969-38.475,87.382-48.981C199.916,175.44,231.161,151.453,241.351,125.994z"/>
- <path d="M132.15,75.371c-3.082,3.393-5.838,7.029-8.817,10.506c-3.893,4.555-8.152,8.81-12.602,12.821
- c-4.565,4.129-8.267,7.084-13.66,10.178c-5.715,3.283-11.546,6.602-17.472,9.486c-2.04,0.996-3.785,1.639-6.076,2.33
- c-3.54,1.061-5.737,4.712-4.738,8.34c0.956,3.498,4.796,5.801,8.336,4.738c6.935-2.086,13.222-5.652,19.481-9.209
- c5.284-3.006,10.533-5.713,15.395-9.409c9.471-7.202,17.623-15.612,25.119-24.811c3.03-3.725,6.276-7.275,9.664-10.68
- c1.853-1.862,3.771-3.655,5.722-5.407c1.02-0.912,2.055-1.802,3.096-2.681c0.532-0.445,1.067-0.883,1.608-1.321
- c0.144-0.117,1.198-0.946,1.465-1.164c4.724-3.617,9.751-6.83,15.043-9.549c4.997-2.568,10.011-4.37,16.1-5.634
- c2.019-0.421,2.457-0.466,3.97-0.621c3.675-0.382,6.782-2.796,6.782-6.779c0-3.411-3.101-7.163-6.782-6.781
- C169.267,42.251,148.304,57.576,132.15,75.371z"/>
- <path d="M79.382,205.204c14.729-5.054,90.365-33.297,132.71-92.663c2.176-3.049,1.471-7.282-1.582-9.454
- c-3.045-2.176-7.282-1.47-9.448,1.579c-39.95,55.995-112.043,82.89-126.084,87.715c-0.303,0.1-0.481,0.164-0.548,0.191
- c-3.504,1.328-5.263,5.243-3.942,8.747c1.027,2.71,3.605,4.381,6.347,4.381c0.768,0,1.552-0.138,2.313-0.411L79.382,205.204z"/>
- <path d="M263.889,245.569c-9.396-3.132-20.902-11.321-32.018-19.24c-16.111-11.471-30.012-21.381-41.346-19.427
- c-8.515,1.472-23.389,10.975-46.872,26.456c-16.933,11.163-36.119,23.809-44.466,26.057c-3.612,0.972-5.758,4.695-4.783,8.309
- c0.813,3.029,3.552,5.024,6.542,5.024c0.582,0,1.177-0.075,1.766-0.236c10.458-2.816,28.89-14.965,48.405-27.825
- c15.762-10.391,35.38-23.322,41.714-24.414c5.76-0.985,19.849,9.041,31.173,17.11c11.933,8.494,24.276,17.286,35.594,21.061
- c3.556,1.188,7.392-0.739,8.576-4.285C269.358,250.593,267.435,246.753,263.889,245.569z"/>
- <path d="M246.909,278.784c-5.462-1.978-14.346-7.464-22.942-12.771c-18.15-11.214-29.684-18.021-37.965-16.59
- c-8.388,1.447-25.99,13.418-55.552,34.994c-3.619,2.636-6.742,4.922-8.904,6.455c-3.06,2.155-3.792,6.393-1.629,9.444
- c1.321,1.876,3.417,2.875,5.544,2.875c1.348,0,2.715-0.404,3.908-1.246c2.252-1.591,5.414-3.901,9.076-6.577
- c11.764-8.586,43.013-31.401,49.792-32.572c4.229-0.287,19.489,9.124,28.603,14.75c9.6,5.934,18.668,11.539,25.461,13.989
- c3.521,1.276,7.405-0.547,8.682-4.072C252.254,283.945,250.434,280.058,246.909,278.784z"/>
- <path d="M224.008,312.496c-3.806-2.487-7.311-4.986-10.698-7.402c-11.122-7.939-20.731-14.801-31.265-12.97
- c-11.87,2.047-30.759,21.046-34.427,24.831c-2.601,2.69-2.534,6.981,0.158,9.586c1.314,1.276,3.017,1.913,4.716,1.913
- c1.774,0,3.54-0.691,4.875-2.067c9.076-9.38,21.976-20.037,26.986-20.902c4.948-0.849,12.429,4.476,21.091,10.649
- c3.329,2.382,7.107,5.078,11.156,7.721c3.138,2.046,7.347,1.163,9.387-1.972C228.026,318.745,227.142,314.543,224.008,312.496z"/>
- <path d="M283.676,172.531c-5.653-2.387-11.56-4.895-16.316-8.856c-5.243-4.354-7.68-10.078-8.768-16.683
- c-1.417-8.614-14.482-4.949-13.072,3.605c2.895,17.592,15.844,27.11,31.312,33.647c3.404,1.437,7.234,1.061,9.273-2.434
- C287.797,178.933,287.085,173.972,283.676,172.531z"/>
- <path d="M270.515,207.911c-5.093-1.567-8.952-3.559-14.346-6.741c-9.87-5.831-18.87-14.284-23.243-25.071
- c-1.39-3.42-4.463-5.804-8.344-4.735c-3.251,0.894-6.125,4.909-4.736,8.342c8.083,19.924,26.632,34.984,47.062,41.278
- C275.292,223.567,278.844,210.479,270.515,207.911z"/>
- <polygon points="10.617,10.679 76.504,10.679 76.504,0.166 0.104,0.166 0.104,76.565 10.617,76.565 "/>
- <polygon points="276.565,0.166 276.565,10.679 342.456,10.679 342.456,76.565 352.968,76.565 352.968,0.166 "/>
- <polygon points="10.513,276.402 0,276.402 0,352.803 76.396,352.803 76.396,342.29 10.513,342.29 "/>
- <polygon points="342.346,342.29 276.456,342.29 276.456,352.803 352.859,352.803 352.859,276.402 342.346,276.402 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="352.968px" height="352.969px" viewBox="0 0 352.968 352.969" style="enable-background:new 0 0 352.968 352.969;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M68.922,87.914c-2.11,1.602-3.14,4.324-2.573,6.906c0.575,2.584,2.594,4.601,5.183,5.169\r
+ c2.127,0.467,4.1,0.435,10.164-4.226c2.698-2.067,6.678-5.554,10.354-10.417l1.608-2.135\r
+ c13.772-18.315,46.016-61.202,92.583-58.875c38.403,2.803,65.634,31.806,78.724,83.879c0.444,1.769,0.719,2.855,1.02,3.689\r
+ c1.999,8.516,5.359,19.126,10.191,22.617c1.204,0.869,2.587,1.283,3.963,1.283c2.111,0,4.182-0.979,5.503-2.815\r
+ c2.121-2.929,1.554-6.984-1.219-9.229c-1.342-1.731-3.86-8.981-5.352-15.461c-0.09-0.385-0.213-0.76-0.37-1.121\r
+ c-0.123-0.441-0.366-1.406-0.582-2.271c-2.08-8.254-7.59-30.18-20.96-50.799c-17.279-26.626-40.823-41.192-70.015-43.299\r
+ c-0.048-0.003-0.092-0.003-0.144-0.008C133.204,8.051,97.895,55.008,82.823,75.06l-1.588,2.106\r
+ c-4.127,5.455-8.999,8.852-10.684,9.835C69.983,87.222,69.438,87.528,68.922,87.914z"/>\r
+ <path d="M241.351,125.994c5.113-12.784,5.236-25.992,0.336-36.234c-4.374-9.136-12.525-15.759-23.565-19.14\r
+ c-16.214-4.962-35.871,4.043-53.88,24.674c-0.231,0.251-25.865,27.214-52.778,43.694c-0.199,0.12-19.91,11.943-40.484,17.547\r
+ c-3.614,0.984-5.744,4.709-4.755,8.323c0.977,3.612,4.709,5.748,8.322,4.758c22.381-6.095,43.056-18.495,43.961-19.042\r
+ c29.198-17.879,55.687-46.061,55.911-46.319c10.93-12.525,27.109-24.534,39.727-20.668c7.423,2.274,12.58,6.321,15.308,12.029\r
+ c3.274,6.831,3.019,16.063-0.695,25.339c-6.909,17.263-28.417,38.109-60.573,58.697c-16.127,10.331-56.721,35.68-85.388,47.938\r
+ c-3.45,1.472-5.042,5.455-3.575,8.897c1.101,2.573,3.605,4.113,6.233,4.113c0.89,0,1.795-0.171,2.664-0.544\r
+ c29.607-12.658,70.969-38.475,87.382-48.981C199.916,175.44,231.161,151.453,241.351,125.994z"/>\r
+ <path d="M132.15,75.371c-3.082,3.393-5.838,7.029-8.817,10.506c-3.893,4.555-8.152,8.81-12.602,12.821\r
+ c-4.565,4.129-8.267,7.084-13.66,10.178c-5.715,3.283-11.546,6.602-17.472,9.486c-2.04,0.996-3.785,1.639-6.076,2.33\r
+ c-3.54,1.061-5.737,4.712-4.738,8.34c0.956,3.498,4.796,5.801,8.336,4.738c6.935-2.086,13.222-5.652,19.481-9.209\r
+ c5.284-3.006,10.533-5.713,15.395-9.409c9.471-7.202,17.623-15.612,25.119-24.811c3.03-3.725,6.276-7.275,9.664-10.68\r
+ c1.853-1.862,3.771-3.655,5.722-5.407c1.02-0.912,2.055-1.802,3.096-2.681c0.532-0.445,1.067-0.883,1.608-1.321\r
+ c0.144-0.117,1.198-0.946,1.465-1.164c4.724-3.617,9.751-6.83,15.043-9.549c4.997-2.568,10.011-4.37,16.1-5.634\r
+ c2.019-0.421,2.457-0.466,3.97-0.621c3.675-0.382,6.782-2.796,6.782-6.779c0-3.411-3.101-7.163-6.782-6.781\r
+ C169.267,42.251,148.304,57.576,132.15,75.371z"/>\r
+ <path d="M79.382,205.204c14.729-5.054,90.365-33.297,132.71-92.663c2.176-3.049,1.471-7.282-1.582-9.454\r
+ c-3.045-2.176-7.282-1.47-9.448,1.579c-39.95,55.995-112.043,82.89-126.084,87.715c-0.303,0.1-0.481,0.164-0.548,0.191\r
+ c-3.504,1.328-5.263,5.243-3.942,8.747c1.027,2.71,3.605,4.381,6.347,4.381c0.768,0,1.552-0.138,2.313-0.411L79.382,205.204z"/>\r
+ <path d="M263.889,245.569c-9.396-3.132-20.902-11.321-32.018-19.24c-16.111-11.471-30.012-21.381-41.346-19.427\r
+ c-8.515,1.472-23.389,10.975-46.872,26.456c-16.933,11.163-36.119,23.809-44.466,26.057c-3.612,0.972-5.758,4.695-4.783,8.309\r
+ c0.813,3.029,3.552,5.024,6.542,5.024c0.582,0,1.177-0.075,1.766-0.236c10.458-2.816,28.89-14.965,48.405-27.825\r
+ c15.762-10.391,35.38-23.322,41.714-24.414c5.76-0.985,19.849,9.041,31.173,17.11c11.933,8.494,24.276,17.286,35.594,21.061\r
+ c3.556,1.188,7.392-0.739,8.576-4.285C269.358,250.593,267.435,246.753,263.889,245.569z"/>\r
+ <path d="M246.909,278.784c-5.462-1.978-14.346-7.464-22.942-12.771c-18.15-11.214-29.684-18.021-37.965-16.59\r
+ c-8.388,1.447-25.99,13.418-55.552,34.994c-3.619,2.636-6.742,4.922-8.904,6.455c-3.06,2.155-3.792,6.393-1.629,9.444\r
+ c1.321,1.876,3.417,2.875,5.544,2.875c1.348,0,2.715-0.404,3.908-1.246c2.252-1.591,5.414-3.901,9.076-6.577\r
+ c11.764-8.586,43.013-31.401,49.792-32.572c4.229-0.287,19.489,9.124,28.603,14.75c9.6,5.934,18.668,11.539,25.461,13.989\r
+ c3.521,1.276,7.405-0.547,8.682-4.072C252.254,283.945,250.434,280.058,246.909,278.784z"/>\r
+ <path d="M224.008,312.496c-3.806-2.487-7.311-4.986-10.698-7.402c-11.122-7.939-20.731-14.801-31.265-12.97\r
+ c-11.87,2.047-30.759,21.046-34.427,24.831c-2.601,2.69-2.534,6.981,0.158,9.586c1.314,1.276,3.017,1.913,4.716,1.913\r
+ c1.774,0,3.54-0.691,4.875-2.067c9.076-9.38,21.976-20.037,26.986-20.902c4.948-0.849,12.429,4.476,21.091,10.649\r
+ c3.329,2.382,7.107,5.078,11.156,7.721c3.138,2.046,7.347,1.163,9.387-1.972C228.026,318.745,227.142,314.543,224.008,312.496z"/>\r
+ <path d="M283.676,172.531c-5.653-2.387-11.56-4.895-16.316-8.856c-5.243-4.354-7.68-10.078-8.768-16.683\r
+ c-1.417-8.614-14.482-4.949-13.072,3.605c2.895,17.592,15.844,27.11,31.312,33.647c3.404,1.437,7.234,1.061,9.273-2.434\r
+ C287.797,178.933,287.085,173.972,283.676,172.531z"/>\r
+ <path d="M270.515,207.911c-5.093-1.567-8.952-3.559-14.346-6.741c-9.87-5.831-18.87-14.284-23.243-25.071\r
+ c-1.39-3.42-4.463-5.804-8.344-4.735c-3.251,0.894-6.125,4.909-4.736,8.342c8.083,19.924,26.632,34.984,47.062,41.278\r
+ C275.292,223.567,278.844,210.479,270.515,207.911z"/>\r
+ <polygon points="10.617,10.679 76.504,10.679 76.504,0.166 0.104,0.166 0.104,76.565 10.617,76.565 "/>\r
+ <polygon points="276.565,0.166 276.565,10.679 342.456,10.679 342.456,76.565 352.968,76.565 352.968,0.166 "/>\r
+ <polygon points="10.513,276.402 0,276.402 0,352.803 76.396,352.803 76.396,342.29 10.513,342.29 "/>\r
+ <polygon points="342.346,342.29 276.456,342.29 276.456,352.803 352.859,352.803 352.859,276.402 342.346,276.402 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134
- c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691
- c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813
- c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121
- c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122
- c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106
- c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908
- C40.874,86.72,42.894,88.739,45.479,89.304z"/>
- <path d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142
- c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545
- c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042
- c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031
- c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934
- c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548
- c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>
- <path d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823
- c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331
- c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209
- c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683
- c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321
- c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637
- c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781
- C143.217,31.57,122.251,46.891,106.099,64.685z"/>
- <path d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455
- c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198
- c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>
- <path d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047
- c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023
- c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>
- <path d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454
- c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243
- c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>
- <path d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585
- c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903
- c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>
- <path d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685
- c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47
- c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>
- <path d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754
- C204.355,161.281,201.728,159.798,198.531,160.678z"/>
- <path d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706
- c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688
- s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>
- <polygon points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914
- 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134\r
+ c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691\r
+ c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813\r
+ c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121\r
+ c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122\r
+ c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106\r
+ c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908\r
+ C40.874,86.72,42.894,88.739,45.479,89.304z"/>\r
+ <path d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142\r
+ c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545\r
+ c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042\r
+ c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031\r
+ c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934\r
+ c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548\r
+ c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>\r
+ <path d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823\r
+ c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331\r
+ c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209\r
+ c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683\r
+ c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321\r
+ c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637\r
+ c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781\r
+ C143.217,31.57,122.251,46.891,106.099,64.685z"/>\r
+ <path d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455\r
+ c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198\r
+ c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>\r
+ <path d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047\r
+ c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023\r
+ c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>\r
+ <path d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454\r
+ c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243\r
+ c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>\r
+ <path d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585\r
+ c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903\r
+ c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>\r
+ <path d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685\r
+ c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47\r
+ c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>\r
+ <path d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754\r
+ C204.355,161.281,201.728,159.798,198.531,160.678z"/>\r
+ <path d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706\r
+ c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688\r
+ s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>\r
+ <polygon points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914 \r
+ 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"
- xml:space="preserve">
-<g>
- <g>
- <path fill="#fff" d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134
- c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691
- c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813
- c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121
- c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122
- c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106
- c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908
- C40.874,86.72,42.894,88.739,45.479,89.304z"/>
- <path fill="#fff" d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142
- c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545
- c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042
- c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031
- c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934
- c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548
- c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>
- <path fill="#fff" d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823
- c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331
- c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209
- c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683
- c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321
- c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637
- c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781
- C143.217,31.57,122.251,46.891,106.099,64.685z"/>
- <path fill="#fff" d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455
- c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198
- c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>
- <path fill="#fff" d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047
- c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023
- c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>
- <path fill="#fff" d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454
- c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243
- c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>
- <path fill="#fff" d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585
- c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903
- c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>
- <path fill="#fff" d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685
- c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47
- c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>
- <path fill="#fff" d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754
- C204.355,161.281,201.728,159.798,198.531,160.678z"/>
- <path fill="#fff" d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706
- c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688
- s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>
- <polygon fill="#fff" points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914
- 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="317.769px" height="317.769px" viewBox="0 0 317.769 317.769" style="enable-background:new 0 0 317.769 317.769;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path fill="#fff" d="M45.479,89.304c2.126,0.465,4.1,0.435,10.162-4.227c2.698-2.068,6.68-5.554,10.355-10.418l1.609-2.134\r
+ c13.772-18.317,46.014-61.202,92.583-58.876c38.409,2.804,65.633,31.805,78.732,83.878c0.445,1.77,0.708,2.856,1.013,3.691\r
+ c1.995,8.515,5.355,19.126,10.194,22.617c1.201,0.868,2.588,1.282,3.967,1.282c2.102,0,4.172-0.977,5.499-2.813\r
+ c2.118-2.93,1.547-6.985-1.225-9.231c-1.342-1.73-3.856-8.981-5.353-15.461c-0.086-0.385-0.212-0.76-0.362-1.121\r
+ c-0.13-0.441-0.37-1.405-0.589-2.271c-2.077-8.252-7.591-30.178-20.964-50.799C213.832,16.795,190.273,2.229,161.09,0.122\r
+ c-0.043-0.003-0.089-0.003-0.144-0.007C107.155-2.629,71.838,44.33,56.767,64.38l-1.588,2.106\r
+ c-4.129,5.457-8.999,8.852-10.684,9.837c-0.568,0.221-1.116,0.525-1.631,0.914c-2.11,1.602-3.136,4.326-2.565,6.908\r
+ C40.874,86.72,42.894,88.739,45.479,89.304z"/>\r
+ <path fill="#fff" d="M215.3,115.309c5.12-12.784,5.243-25.991,0.336-36.234c-4.367-9.137-12.519-15.759-23.565-19.142\r
+ c-16.214-4.962-35.869,4.045-53.878,24.674c-0.224,0.253-25.858,27.215-52.778,43.696c-0.2,0.118-19.905,11.941-40.484,17.545\r
+ c-3.607,0.985-5.744,4.71-4.757,8.323c0.989,3.616,4.71,5.748,8.323,4.758c22.389-6.093,43.058-18.495,43.962-19.042\r
+ c29.205-17.874,55.686-46.056,55.91-46.315c10.93-12.525,27.109-24.534,39.733-20.668c7.423,2.274,12.573,6.323,15.301,12.031\r
+ c3.274,6.829,3.019,16.063-0.694,25.339c-6.91,17.261-28.418,38.109-60.566,58.697c-16.127,10.331-56.728,35.679-85.396,47.934\r
+ c-3.441,1.476-5.042,5.459-3.575,8.901c1.101,2.573,3.607,4.117,6.242,4.117c0.883,0,1.793-0.179,2.663-0.548\r
+ c29.602-12.658,70.969-38.476,87.376-48.984C173.864,164.753,205.109,140.77,215.3,115.309z"/>\r
+ <path fill="#fff" d="M106.099,64.685c-3.073,3.393-5.838,7.031-8.816,10.506c-3.894,4.557-8.151,8.81-12.595,12.823\r
+ c-4.574,4.127-8.266,7.082-13.666,10.176c-5.715,3.284-11.546,6.603-17.472,9.486c-2.033,0.996-3.785,1.641-6.078,2.331\r
+ c-3.539,1.063-5.735,4.714-4.738,8.34c0.965,3.498,4.805,5.801,8.345,4.738c6.935-2.084,13.215-5.652,19.472-9.209\r
+ c5.286-3.006,10.542-5.711,15.401-9.409c9.466-7.2,17.617-15.61,25.112-24.809c3.032-3.727,6.283-7.275,9.673-10.683\r
+ c1.846-1.86,3.763-3.655,5.715-5.407c1.02-0.911,2.053-1.802,3.103-2.681c0.525-0.445,1.067-0.883,1.602-1.321\r
+ c0.135-0.114,1.19-0.942,1.464-1.16c4.716-3.619,9.745-6.832,15.044-9.551c4.997-2.57,10.011-4.37,16.098-5.637\r
+ c2.019-0.419,2.457-0.465,3.97-0.619c3.675-0.382,6.786-2.796,6.786-6.781c0-3.41-3.098-7.163-6.786-6.781\r
+ C143.217,31.57,122.251,46.891,106.099,64.685z"/>\r
+ <path fill="#fff" d="M53.329,194.52c14.728-5.055,90.364-33.298,132.715-92.664c2.17-3.049,1.468-7.282-1.577-9.455\r
+ c-3.053-2.177-7.289-1.468-9.459,1.581c-39.949,55.995-112.035,82.89-126.081,87.712c-0.301,0.103-0.486,0.167-0.553,0.198\r
+ c-3.498,1.324-5.263,5.239-3.936,8.743c1.026,2.711,3.599,4.381,6.339,4.381c0.773,0,1.552-0.134,2.312-0.411L53.329,194.52z"/>\r
+ <path fill="#fff" d="M141.73,223.132c1.567-7.275,4.175-14.164,7.667-20.509c-8.15,4.558-18.619,11.365-31.791,20.047\r
+ c-16.933,11.159-36.119,23.808-44.466,26.053c-3.614,0.976-5.758,4.698-4.784,8.312c0.814,3.028,3.554,5.023,6.543,5.023\r
+ c0.582,0,1.177-0.075,1.766-0.235c10.458-2.816,28.89-14.966,48.405-27.826C130.401,230.473,136.173,226.671,141.73,223.132z"/>\r
+ <path fill="#fff" d="M140.576,248.405c-9.214,5.887-21.142,14.359-36.172,25.335c-3.612,2.638-6.742,4.917-8.904,6.454\r
+ c-3.06,2.159-3.785,6.393-1.629,9.448c1.321,1.868,3.417,2.868,5.543,2.868c1.355,0,2.716-0.4,3.907-1.243\r
+ c2.253-1.591,5.416-3.9,9.084-6.573c6.771-4.941,19.97-14.579,31.271-22.107C142.205,258.028,141.164,253.285,140.576,248.405z"/>\r
+ <path fill="#fff" d="M153.285,282.168c-11.84,4.034-28.314,20.591-31.718,24.105c-2.6,2.689-2.533,6.981,0.157,9.585\r
+ c1.314,1.277,3.018,1.91,4.717,1.91c1.773,0,3.547-0.688,4.875-2.063c9.083-9.381,21.982-20.037,26.986-20.903\r
+ c2.292-0.393,5.148,0.575,8.393,2.304C161.602,292.736,157.084,287.719,153.285,282.168z"/>\r
+ <path fill="#fff" d="M257.625,161.845c-5.653-2.386-11.56-4.896-16.316-8.855c-5.236-4.356-7.673-10.079-8.761-16.685\r
+ c-1.424-8.613-14.489-4.946-13.079,3.607c1.926,11.661,8.274,19.763,16.84,25.814c6.971,1.906,13.565,4.773,19.603,8.47\r
+ c1.643-0.346,3.121-1.314,4.147-3.066C261.746,168.251,261.034,163.289,257.625,161.845z"/>\r
+ <path fill="#fff" d="M198.531,160.678c-2.457,0.678-4.702,3.148-5.041,5.8c4.025-1.256,8.196-2.176,12.475-2.754\r
+ C204.355,161.281,201.728,159.798,198.531,160.678z"/>\r
+ <path fill="#fff" d="M212.131,169.805c-36.227,0-65.704,29.475-65.704,65.705s29.477,65.706,65.704,65.706\r
+ c36.234,0,65.706-29.476,65.706-65.706S248.361,169.805,212.131,169.805z M212.131,287.199c-28.499,0-51.687-23.188-51.687-51.688\r
+ s23.188-51.688,51.687-51.688c28.5,0,51.688,23.188,51.688,51.688S240.627,287.199,212.131,287.199z"/>\r
+ <polygon fill="#fff" points="229.495,207.822 212.774,225.555 196.061,207.822 185.096,216.103 203.388,235.51 185.096,254.914 \r
+ 196.061,263.199 212.774,245.465 229.495,263.199 240.46,254.914 222.165,235.51 240.46,216.103 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="322.053px" height="322.053px" viewBox="0 0 322.053 322.053" style="enable-background:new 0 0 322.053 322.053;"
- xml:space="preserve">
-<g>
- <g>
- <g>
- <path d="M98.214,48.391c0.542,0.117,1.044,0.11,2.585-1.076c0.688-0.525,1.701-1.415,2.637-2.652l0.405-0.542
- c3.508-4.661,11.712-15.578,23.567-14.98c9.773,0.71,16.702,8.093,20.033,21.347c0.116,0.449,0.187,0.726,0.26,0.939
- c0.511,2.165,1.363,4.866,2.592,5.758c0.31,0.221,0.659,0.325,1.01,0.325c0.537,0,1.066-0.248,1.398-0.715
- c0.541-0.746,0.397-1.776-0.308-2.348c-0.344-0.445-0.98-2.284-1.364-3.936c-0.027-0.098-0.055-0.191-0.094-0.287
- c-0.03-0.108-0.094-0.358-0.15-0.575c-0.525-2.101-1.93-7.681-5.33-12.927c-4.397-6.777-10.39-10.484-17.819-11.024
- c-0.01,0-0.024,0-0.04,0c-13.687-0.7-22.675,11.252-26.51,16.354l-0.402,0.534c-1.052,1.388-2.288,2.255-2.719,2.505
- c-0.144,0.056-0.28,0.137-0.411,0.231c-0.539,0.407-0.802,1.1-0.659,1.759S97.555,48.247,98.214,48.391z"/>
- <path d="M141.52,45.792c-1.114-2.327-3.188-4.018-5.999-4.875c-4.132-1.261-9.125,1.026-13.712,6.276
- c-0.06,0.07-6.581,6.932-13.432,11.122c-0.053,0.032-5.066,3.039-10.302,4.464c-0.917,0.25-1.458,1.203-1.213,2.117
- c0.253,0.922,1.203,1.464,2.122,1.213c5.694-1.549,10.958-4.711,11.185-4.846c7.43-4.553,14.171-11.726,14.231-11.786
- c2.782-3.189,6.899-6.246,10.113-5.264c1.889,0.582,3.2,1.608,3.895,3.063c0.83,1.739,0.767,4.089-0.18,6.448
- c-1.054,2.638-3.477,5.604-6.992,8.687c0.421,0.511,0.803,1.059,1.126,1.668c0.238,0.465,0.396,0.95,0.589,1.431
- c3.704-3.155,6.988-6.764,8.48-10.5C142.736,51.755,142.764,48.395,141.52,45.792z"/>
- <path d="M113.643,42.128c-0.787,0.862-1.488,1.788-2.245,2.671c-0.993,1.16-2.076,2.247-3.207,3.267
- c-1.164,1.05-2.106,1.8-3.48,2.585c-1.451,0.838-2.936,1.682-4.447,2.414c-0.515,0.253-0.959,0.417-1.545,0.592
- c-0.9,0.27-1.461,1.203-1.203,2.124c0.239,0.891,1.22,1.477,2.116,1.206c1.764-0.529,3.366-1.438,4.959-2.344
- c1.343-0.768,2.681-1.455,3.915-2.394c2.411-1.833,4.484-3.977,6.393-6.317c0.773-0.948,1.6-1.848,2.458-2.717
- c0.474-0.472,0.96-0.931,1.455-1.377c0.26-0.231,0.525-0.458,0.792-0.683c0.133-0.113,0.27-0.224,0.407-0.335
- c0.038-0.029,0.304-0.239,0.375-0.299c1.198-0.92,2.478-1.733,3.826-2.428c1.273-0.655,2.547-1.11,4.096-1.434
- c0.515-0.108,0.628-0.115,1.009-0.158c0.939-0.094,1.729-0.711,1.729-1.723c0-0.869-0.792-1.826-1.729-1.725
- C123.088,33.698,117.751,37.598,113.643,42.128z"/>
- <path d="M127.044,59.342c2.505-2.315,4.889-4.878,6.938-7.755c0.555-0.778,0.375-1.853-0.4-2.411
- c-0.773-0.558-1.853-0.372-2.406,0.404c-2.342,3.285-5.128,6.146-8.058,8.665C124.472,58.456,125.807,58.806,127.044,59.342z"/>
- <path d="M148.049,64.598c-1.333-1.107-1.953-2.562-2.233-4.244c-0.361-2.193-3.683-1.257-3.327,0.919
- c0.354,2.134,1.294,3.799,2.601,5.14h6.086C150.07,65.923,148.977,65.37,148.049,64.598z"/>
- </g>
- <path d="M114.468,66.2H93.406v1.127h20.276C113.91,66.932,114.17,66.551,114.468,66.2z"/>
- <path d="M134.39,66.2c0.368,0.331,0.666,0.739,0.98,1.127h26.114V66.2H134.39z"/>
- <rect x="164.578" y="65.654" width="6.242" height="2.225"/>
- <rect x="83.271" y="65.654" width="6.246" height="2.225"/>
- <g>
- <path style="opacity:0.4;enable-background:new ;" d="M111.295,75.388c-3.498,1.987-7.152,3.929-10.267,5.26
- c-0.876,0.371-1.283,1.391-0.912,2.267c0.281,0.652,0.922,1.044,1.588,1.044c0.224,0,0.458-0.044,0.676-0.14
- c2.615-1.114,5.587-2.642,8.53-4.264C110.98,78.153,111.117,76.769,111.295,75.388z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M113.251,67.327h-4.156c-4.755,2.447-8.613,3.867-10.061,4.36
- c-0.074,0.025-0.122,0.046-0.137,0.049c-0.893,0.34-1.341,1.334-1.004,2.225c0.262,0.691,0.92,1.116,1.615,1.116
- c0.198,0,0.395-0.033,0.588-0.103l0.063-0.024c1.696-0.582,6.591-2.397,12.422-5.594C112.789,68.678,113,68.001,113.251,67.327z"
- />
- <path style="opacity:0.4;enable-background:new ;" d="M147.12,85.226c-2.394-0.799-5.32-2.885-8.151-4.896
- c-0.719-0.515-1.401-0.986-2.091-1.465c-0.297,1.107-0.845,2.154-1.685,3.023c0.605,0.417,1.205,0.842,1.779,1.248
- c3.034,2.163,6.174,4.397,9.055,5.357c0.907,0.307,1.882-0.188,2.183-1.091C148.511,86.5,148.02,85.523,147.12,85.226z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M152.828,67.327h-6.511c1.205,0.919,2.601,1.662,4.093,2.29
- c0.869,0.365,1.839,0.267,2.361-0.625C153.046,68.53,153.069,67.854,152.828,67.327z"/>
- <path style="opacity:0.4;enable-background:new ;" d="M148.802,75.64c-1.293-0.395-2.278-0.903-3.648-1.713
- c-2.512-1.485-4.805-3.638-5.916-6.38c-0.031-0.075-0.07-0.144-0.104-0.219h-3.148c-0.171,0.359-0.225,0.758-0.074,1.133
- c2.062,5.072,6.781,8.905,11.978,10.506C150.022,79.625,150.922,76.292,148.802,75.64z"/>
- </g>
- </g>
- <g>
- <polygon points="149.521,120.506 177.35,120.506 177.35,92.675 173.517,92.675 173.517,116.671 149.521,116.671 "/>
- <polygon points="102.494,116.671 78.499,116.671 78.499,92.675 74.665,92.675 74.665,120.506 102.494,120.506 "/>
- <polygon points="78.499,3.831 102.494,3.831 102.494,0 74.665,0 74.665,27.825 78.499,27.825 "/>
- <polygon points="173.517,27.829 177.35,27.829 177.35,0 149.521,0 149.521,3.831 173.517,3.831 "/>
- </g>
- <path d="M246.231,211.503c0.779-8.938-1.362-16.502-6.358-22.497c-7.375-8.812-18.699-11.561-23.531-12.354
- c-3.08-7.717-7.775-12.799-13.973-15.119c-2.43-0.906-5.064-1.372-7.844-1.372c-4.65,0-8.846,1.283-11.669,2.42
- c-3.728-6.757-8.696-10.956-14.787-12.488c-1.678-0.424-3.448-0.64-5.26-0.64c-5.805,0-11.116,2.186-14.726,4.148
- c-1.254-8.36-2.898-28.229-4.11-42.851l-0.007-0.165c-2.699-32.719-3.554-41.477-5.005-44.024
- c-1.843-6.343-9.767-15.636-17.666-15.074c-5.217,0.318-11.798,4.611-13.476,23.264c0,65.688-1.845,114.256-2.254,124.139
- c-5.831,2.649-11.158,8.665-11.747,9.35c-18.762,20.714-9.868,35.939-9.483,36.569c14.339,25.098,43.965,74.527,44.235,74.979
- l0.578,0.955l0.288-0.175v0.448h94.73l3.498,1.037l4.896-16.741C252.233,267.743,246.901,217.058,246.231,211.503z M90.27,241.386
- c-0.274-0.479-6.542-11.779,8.697-28.616c1.627-1.903,6.744-7.067,10.823-8.138l2.421-0.657l0.104-2.499
- c0.029-0.39,2.358-51.18,2.337-126.405c0.919-10.121,3.621-16.531,7.038-16.738l0.154-0.003c4.236,0,9.825,6.71,10.66,10.604
- l0.49,2.292l0.284,0.05c1.039,5.823,2.594,24.665,3.855,39.875c4.128,49.977,4.625,50.129,7.888,51.101l1.679,0.493l1.384-1.061
- c0.736-0.548,7.394-5.375,14.726-5.375c1.25,0,2.467,0.152,3.582,0.438c4.854,1.217,8.803,5.179,11.759,11.76l1.547,3.474
- l3.289-1.909c0.222-0.12,5.564-3.039,11.529-3.039c1.957,0,3.788,0.308,5.448,0.934c4.709,1.76,8.284,6.105,10.643,12.923
- l0.732,2.101l2.211,0.206c0.13,0.01,13.678,1.389,21.046,10.218c3.84,4.586,5.451,10.548,4.784,17.728l-0.023,0.499l0.037,0.216
- c0.257,2.187,6.095,53.995-13.154,90.896l-3.341,11.263H133.11C126.816,303.491,102.692,263.116,90.27,241.386z"/>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="322.053px" height="322.053px" viewBox="0 0 322.053 322.053" style="enable-background:new 0 0 322.053 322.053;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <g>\r
+ <path d="M98.214,48.391c0.542,0.117,1.044,0.11,2.585-1.076c0.688-0.525,1.701-1.415,2.637-2.652l0.405-0.542\r
+ c3.508-4.661,11.712-15.578,23.567-14.98c9.773,0.71,16.702,8.093,20.033,21.347c0.116,0.449,0.187,0.726,0.26,0.939\r
+ c0.511,2.165,1.363,4.866,2.592,5.758c0.31,0.221,0.659,0.325,1.01,0.325c0.537,0,1.066-0.248,1.398-0.715\r
+ c0.541-0.746,0.397-1.776-0.308-2.348c-0.344-0.445-0.98-2.284-1.364-3.936c-0.027-0.098-0.055-0.191-0.094-0.287\r
+ c-0.03-0.108-0.094-0.358-0.15-0.575c-0.525-2.101-1.93-7.681-5.33-12.927c-4.397-6.777-10.39-10.484-17.819-11.024\r
+ c-0.01,0-0.024,0-0.04,0c-13.687-0.7-22.675,11.252-26.51,16.354l-0.402,0.534c-1.052,1.388-2.288,2.255-2.719,2.505\r
+ c-0.144,0.056-0.28,0.137-0.411,0.231c-0.539,0.407-0.802,1.1-0.659,1.759S97.555,48.247,98.214,48.391z"/>\r
+ <path d="M141.52,45.792c-1.114-2.327-3.188-4.018-5.999-4.875c-4.132-1.261-9.125,1.026-13.712,6.276\r
+ c-0.06,0.07-6.581,6.932-13.432,11.122c-0.053,0.032-5.066,3.039-10.302,4.464c-0.917,0.25-1.458,1.203-1.213,2.117\r
+ c0.253,0.922,1.203,1.464,2.122,1.213c5.694-1.549,10.958-4.711,11.185-4.846c7.43-4.553,14.171-11.726,14.231-11.786\r
+ c2.782-3.189,6.899-6.246,10.113-5.264c1.889,0.582,3.2,1.608,3.895,3.063c0.83,1.739,0.767,4.089-0.18,6.448\r
+ c-1.054,2.638-3.477,5.604-6.992,8.687c0.421,0.511,0.803,1.059,1.126,1.668c0.238,0.465,0.396,0.95,0.589,1.431\r
+ c3.704-3.155,6.988-6.764,8.48-10.5C142.736,51.755,142.764,48.395,141.52,45.792z"/>\r
+ <path d="M113.643,42.128c-0.787,0.862-1.488,1.788-2.245,2.671c-0.993,1.16-2.076,2.247-3.207,3.267\r
+ c-1.164,1.05-2.106,1.8-3.48,2.585c-1.451,0.838-2.936,1.682-4.447,2.414c-0.515,0.253-0.959,0.417-1.545,0.592\r
+ c-0.9,0.27-1.461,1.203-1.203,2.124c0.239,0.891,1.22,1.477,2.116,1.206c1.764-0.529,3.366-1.438,4.959-2.344\r
+ c1.343-0.768,2.681-1.455,3.915-2.394c2.411-1.833,4.484-3.977,6.393-6.317c0.773-0.948,1.6-1.848,2.458-2.717\r
+ c0.474-0.472,0.96-0.931,1.455-1.377c0.26-0.231,0.525-0.458,0.792-0.683c0.133-0.113,0.27-0.224,0.407-0.335\r
+ c0.038-0.029,0.304-0.239,0.375-0.299c1.198-0.92,2.478-1.733,3.826-2.428c1.273-0.655,2.547-1.11,4.096-1.434\r
+ c0.515-0.108,0.628-0.115,1.009-0.158c0.939-0.094,1.729-0.711,1.729-1.723c0-0.869-0.792-1.826-1.729-1.725\r
+ C123.088,33.698,117.751,37.598,113.643,42.128z"/>\r
+ <path d="M127.044,59.342c2.505-2.315,4.889-4.878,6.938-7.755c0.555-0.778,0.375-1.853-0.4-2.411\r
+ c-0.773-0.558-1.853-0.372-2.406,0.404c-2.342,3.285-5.128,6.146-8.058,8.665C124.472,58.456,125.807,58.806,127.044,59.342z"/>\r
+ <path d="M148.049,64.598c-1.333-1.107-1.953-2.562-2.233-4.244c-0.361-2.193-3.683-1.257-3.327,0.919\r
+ c0.354,2.134,1.294,3.799,2.601,5.14h6.086C150.07,65.923,148.977,65.37,148.049,64.598z"/>\r
+ </g>\r
+ <path d="M114.468,66.2H93.406v1.127h20.276C113.91,66.932,114.17,66.551,114.468,66.2z"/>\r
+ <path d="M134.39,66.2c0.368,0.331,0.666,0.739,0.98,1.127h26.114V66.2H134.39z"/>\r
+ <rect x="164.578" y="65.654" width="6.242" height="2.225"/>\r
+ <rect x="83.271" y="65.654" width="6.246" height="2.225"/>\r
+ <g>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M111.295,75.388c-3.498,1.987-7.152,3.929-10.267,5.26\r
+ c-0.876,0.371-1.283,1.391-0.912,2.267c0.281,0.652,0.922,1.044,1.588,1.044c0.224,0,0.458-0.044,0.676-0.14\r
+ c2.615-1.114,5.587-2.642,8.53-4.264C110.98,78.153,111.117,76.769,111.295,75.388z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M113.251,67.327h-4.156c-4.755,2.447-8.613,3.867-10.061,4.36\r
+ c-0.074,0.025-0.122,0.046-0.137,0.049c-0.893,0.34-1.341,1.334-1.004,2.225c0.262,0.691,0.92,1.116,1.615,1.116\r
+ c0.198,0,0.395-0.033,0.588-0.103l0.063-0.024c1.696-0.582,6.591-2.397,12.422-5.594C112.789,68.678,113,68.001,113.251,67.327z"\r
+ />\r
+ <path style="opacity:0.4;enable-background:new ;" d="M147.12,85.226c-2.394-0.799-5.32-2.885-8.151-4.896\r
+ c-0.719-0.515-1.401-0.986-2.091-1.465c-0.297,1.107-0.845,2.154-1.685,3.023c0.605,0.417,1.205,0.842,1.779,1.248\r
+ c3.034,2.163,6.174,4.397,9.055,5.357c0.907,0.307,1.882-0.188,2.183-1.091C148.511,86.5,148.02,85.523,147.12,85.226z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M152.828,67.327h-6.511c1.205,0.919,2.601,1.662,4.093,2.29\r
+ c0.869,0.365,1.839,0.267,2.361-0.625C153.046,68.53,153.069,67.854,152.828,67.327z"/>\r
+ <path style="opacity:0.4;enable-background:new ;" d="M148.802,75.64c-1.293-0.395-2.278-0.903-3.648-1.713\r
+ c-2.512-1.485-4.805-3.638-5.916-6.38c-0.031-0.075-0.07-0.144-0.104-0.219h-3.148c-0.171,0.359-0.225,0.758-0.074,1.133\r
+ c2.062,5.072,6.781,8.905,11.978,10.506C150.022,79.625,150.922,76.292,148.802,75.64z"/>\r
+ </g>\r
+ </g>\r
+ <g>\r
+ <polygon points="149.521,120.506 177.35,120.506 177.35,92.675 173.517,92.675 173.517,116.671 149.521,116.671 "/>\r
+ <polygon points="102.494,116.671 78.499,116.671 78.499,92.675 74.665,92.675 74.665,120.506 102.494,120.506 "/>\r
+ <polygon points="78.499,3.831 102.494,3.831 102.494,0 74.665,0 74.665,27.825 78.499,27.825 "/>\r
+ <polygon points="173.517,27.829 177.35,27.829 177.35,0 149.521,0 149.521,3.831 173.517,3.831 "/>\r
+ </g>\r
+ <path d="M246.231,211.503c0.779-8.938-1.362-16.502-6.358-22.497c-7.375-8.812-18.699-11.561-23.531-12.354\r
+ c-3.08-7.717-7.775-12.799-13.973-15.119c-2.43-0.906-5.064-1.372-7.844-1.372c-4.65,0-8.846,1.283-11.669,2.42\r
+ c-3.728-6.757-8.696-10.956-14.787-12.488c-1.678-0.424-3.448-0.64-5.26-0.64c-5.805,0-11.116,2.186-14.726,4.148\r
+ c-1.254-8.36-2.898-28.229-4.11-42.851l-0.007-0.165c-2.699-32.719-3.554-41.477-5.005-44.024\r
+ c-1.843-6.343-9.767-15.636-17.666-15.074c-5.217,0.318-11.798,4.611-13.476,23.264c0,65.688-1.845,114.256-2.254,124.139\r
+ c-5.831,2.649-11.158,8.665-11.747,9.35c-18.762,20.714-9.868,35.939-9.483,36.569c14.339,25.098,43.965,74.527,44.235,74.979\r
+ l0.578,0.955l0.288-0.175v0.448h94.73l3.498,1.037l4.896-16.741C252.233,267.743,246.901,217.058,246.231,211.503z M90.27,241.386\r
+ c-0.274-0.479-6.542-11.779,8.697-28.616c1.627-1.903,6.744-7.067,10.823-8.138l2.421-0.657l0.104-2.499\r
+ c0.029-0.39,2.358-51.18,2.337-126.405c0.919-10.121,3.621-16.531,7.038-16.738l0.154-0.003c4.236,0,9.825,6.71,10.66,10.604\r
+ l0.49,2.292l0.284,0.05c1.039,5.823,2.594,24.665,3.855,39.875c4.128,49.977,4.625,50.129,7.888,51.101l1.679,0.493l1.384-1.061\r
+ c0.736-0.548,7.394-5.375,14.726-5.375c1.25,0,2.467,0.152,3.582,0.438c4.854,1.217,8.803,5.179,11.759,11.76l1.547,3.474\r
+ l3.289-1.909c0.222-0.12,5.564-3.039,11.529-3.039c1.957,0,3.788,0.308,5.448,0.934c4.709,1.76,8.284,6.105,10.643,12.923\r
+ l0.732,2.101l2.211,0.206c0.13,0.01,13.678,1.389,21.046,10.218c3.84,4.586,5.451,10.548,4.784,17.728l-0.023,0.499l0.037,0.216\r
+ c0.257,2.187,6.095,53.995-13.154,90.896l-3.341,11.263H133.11C126.816,303.491,102.692,263.116,90.27,241.386z"/>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="335.075px" height="335.074px" viewBox="0 0 335.075 335.074" style="enable-background:new 0 0 335.075 335.074;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M101.22,40.756c-1.083,1.429-2.36,2.318-2.801,2.575c-0.147,0.06-0.291,0.14-0.428,0.238
- c-0.553,0.421-0.823,1.133-0.672,1.812c0.147,0.676,0.679,1.205,1.357,1.355c0.556,0.123,1.075,0.109,2.663-1.107
- c0.705-0.539,1.749-1.458,2.712-2.729l0.421-0.558c3.605-4.801,12.055-16.031,24.256-15.422
- c10.061,0.732,17.193,8.33,20.624,21.976c0.115,0.462,0.188,0.75,0.262,0.963c0.527,2.236,1.407,5.015,2.678,5.925
- c0.315,0.229,0.676,0.337,1.037,0.337c0.551,0,1.097-0.255,1.44-0.736c0.555-0.771,0.408-1.829-0.321-2.417
- c-0.351-0.455-1.006-2.351-1.403-4.048c-0.021-0.101-0.055-0.199-0.091-0.294c-0.03-0.115-0.097-0.368-0.154-0.595
- c-0.542-2.161-1.986-7.905-5.494-13.312c-4.524-6.974-10.692-10.79-18.338-11.341c-0.015,0-0.025,0-0.039-0.003
- c-14.094-0.717-23.346,11.585-27.295,16.838L101.22,40.756z"/>
- <path d="M114.56,40.286c-0.806,0.886-1.531,1.839-2.308,2.751c-1.023,1.194-2.135,2.31-3.302,3.36
- c-1.194,1.08-2.165,1.854-3.578,2.666c-1.499,0.859-3.027,1.729-4.579,2.484c-0.538,0.26-0.993,0.432-1.595,0.611
- c-0.929,0.281-1.504,1.237-1.241,2.187c0.248,0.917,1.254,1.518,2.184,1.24c1.819-0.547,3.461-1.483,5.102-2.414
- c1.384-0.789,2.76-1.497,4.033-2.464c2.481-1.889,4.615-4.09,6.577-6.497c0.796-0.974,1.648-1.906,2.534-2.799
- c0.483-0.491,0.984-0.955,1.499-1.417c0.267-0.238,0.537-0.472,0.81-0.7c0.137-0.116,0.277-0.232,0.421-0.351
- c0.036-0.029,0.298-0.231,0.375-0.298c1.241-0.95,2.558-1.795,3.949-2.51c1.311-0.669,2.625-1.141,4.22-1.475
- c0.529-0.111,0.645-0.118,1.04-0.164c0.96-0.098,1.778-0.732,1.778-1.778c0-0.89-0.806-1.874-1.778-1.776
- C124.284,31.609,118.79,35.621,114.56,40.286z"/>
- <path d="M154.895,68.173c0.438-0.753,0.251-2.053-0.638-2.428c-1.482-0.632-3.032-1.287-4.279-2.324
- c-1.373-1.138-2.011-2.639-2.295-4.37c-0.371-2.257-3.795-1.297-3.427,0.946c0.76,4.604,4.153,7.104,8.207,8.817
- C153.357,69.186,154.354,69.088,154.895,68.173z"/>
- <path d="M257.06,217.561c0.828-9.5-1.451-17.542-6.762-23.914c-7.844-9.366-19.88-12.289-25.017-13.135
- c-3.271-8.202-8.261-13.609-14.852-16.072c-2.581-0.963-5.387-1.458-8.337-1.458c-4.948,0-9.411,1.364-12.408,2.572
- c-3.96-7.18-9.247-11.642-15.715-13.271c-1.786-0.452-3.667-0.683-5.596-0.683c-6.17,0-11.812,2.32-15.652,4.408
- c-1.332-8.886-3.08-30.007-4.367-45.545l-0.01-0.178c-1.338-16.243-2.25-26.881-2.993-33.939c1.431,0.863,2.933,1.605,4.511,2.089
- c2.197,0.676,3.129-2.751,0.946-3.424c-1.336-0.411-2.348-0.936-3.758-1.766c-0.784-0.464-1.528-1.006-2.238-1.595
- c-0.611-4.745-1.143-7.044-1.781-8.166c-0.49-1.679-1.381-3.554-2.565-5.407c1.129-1.475,2.082-2.986,2.702-4.531
- c1.338-3.347,1.374-6.81,0.087-9.493c-1.145-2.397-3.284-4.129-6.177-5.012c-4.243-1.301-9.396,1.056-14.113,6.462
- c-0.027,0.031-1.485,1.545-3.689,3.575c-0.97,0.612-1.932,1.429-2.846,2.505c-2.183,1.839-4.71,3.788-7.296,5.368
- c-0.053,0.033-5.214,3.133-10.604,4.598c-0.949,0.26-1.507,1.237-1.247,2.183c0.258,0.946,1.233,1.508,2.183,1.244
- c5.862-1.595,11.28-4.846,11.518-4.989c0.512-0.312,1.006-0.659,1.504-0.993c-0.679,1.995-1.276,4.307-1.745,7.001
- c-5.256,2.786-9.598,4.41-11.165,4.942c-0.077,0.027-0.126,0.049-0.144,0.056c-0.917,0.348-1.381,1.371-1.03,2.288
- c0.271,0.708,0.946,1.146,1.662,1.146c0.204,0,0.405-0.036,0.605-0.106l0.063-0.023c1.408-0.484,4.948-1.787,9.406-3.992
- c-0.074,0.625-0.15,1.224-0.21,1.882c0,1.287,0,2.555-0.003,3.832c-2.878,1.583-5.761,3.063-8.299,4.144
- c-0.903,0.383-1.321,1.431-0.939,2.334c0.291,0.671,0.946,1.076,1.637,1.076c0.231,0,0.469-0.046,0.696-0.144
- c2.13-0.91,4.504-2.117,6.897-3.392c-0.14,65.824-1.969,114.001-2.383,124.106c-6.199,2.82-11.858,9.213-12.486,9.938
- c-19.939,22.024-10.489,38.208-10.079,38.875c15.244,26.687,46.733,79.22,47.024,79.702l0.617,1.021l0.301-0.182v0.476h100.703
- l3.716,1.099l5.202-17.795C263.446,277.339,257.779,223.46,257.06,217.561z M136.037,42.438c1.949,0.595,3.299,1.656,4.013,3.15
- c0.859,1.79,0.795,4.204-0.178,6.641c-0.368,0.914-0.912,1.87-1.608,2.859c-3.267-3.908-7.713-7.182-12.289-7.601
- C128.827,44.344,132.86,41.466,136.037,42.438z M235.812,314.551l-3.556,11.979h-95.44c-6.694-11.184-32.334-54.104-45.542-77.211
- c-0.291-0.503-6.959-12.519,9.245-30.416c1.731-2.02,7.169-7.512,11.505-8.655l2.575-0.688l0.111-2.659
- c0.029-0.414,2.506-54.404,2.481-134.375c0.979-10.752,3.855-17.571,7.479-17.789l0.168-0.007c4.503,0,10.442,7.135,11.329,11.272
- l0.518,2.44l0.306,0.048c1.101,6.192,2.753,26.224,4.097,42.392c4.387,53.125,4.916,53.283,8.384,54.323l1.785,0.519l1.468-1.125
- c0.786-0.585,7.861-5.711,15.653-5.711c1.333,0,2.625,0.158,3.819,0.458c5.153,1.294,9.355,5.508,12.494,12.507l1.652,3.695
- l3.494-2.032c0.233-0.123,5.917-3.23,12.252-3.23c2.084,0,4.027,0.328,5.79,0.985c5.01,1.872,8.812,6.495,11.317,13.74
- l0.773,2.241l2.354,0.212c0.138,0.014,14.545,1.476,22.375,10.862c4.079,4.883,5.79,11.211,5.085,18.842l-0.021,0.531l0.034,0.229
- C250.065,220.25,256.277,275.323,235.812,314.551z"/>
- <polygon points="151.628,120.506 179.462,120.506 179.462,92.676 175.629,92.676 175.629,116.672 151.628,116.672 "/>
- <polygon points="104.608,116.672 80.607,116.672 80.607,92.676 76.781,92.676 76.781,120.506 104.608,120.506 "/>
- <polygon points="80.607,3.831 104.608,3.831 104.608,0 76.781,0 76.781,27.826 80.607,27.826 "/>
- <polygon points="175.629,27.829 179.462,27.829 179.462,0 151.628,0 151.628,3.831 175.629,3.831 "/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="335.075px" height="335.074px" viewBox="0 0 335.075 335.074" style="enable-background:new 0 0 335.075 335.074;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M101.22,40.756c-1.083,1.429-2.36,2.318-2.801,2.575c-0.147,0.06-0.291,0.14-0.428,0.238\r
+ c-0.553,0.421-0.823,1.133-0.672,1.812c0.147,0.676,0.679,1.205,1.357,1.355c0.556,0.123,1.075,0.109,2.663-1.107\r
+ c0.705-0.539,1.749-1.458,2.712-2.729l0.421-0.558c3.605-4.801,12.055-16.031,24.256-15.422\r
+ c10.061,0.732,17.193,8.33,20.624,21.976c0.115,0.462,0.188,0.75,0.262,0.963c0.527,2.236,1.407,5.015,2.678,5.925\r
+ c0.315,0.229,0.676,0.337,1.037,0.337c0.551,0,1.097-0.255,1.44-0.736c0.555-0.771,0.408-1.829-0.321-2.417\r
+ c-0.351-0.455-1.006-2.351-1.403-4.048c-0.021-0.101-0.055-0.199-0.091-0.294c-0.03-0.115-0.097-0.368-0.154-0.595\r
+ c-0.542-2.161-1.986-7.905-5.494-13.312c-4.524-6.974-10.692-10.79-18.338-11.341c-0.015,0-0.025,0-0.039-0.003\r
+ c-14.094-0.717-23.346,11.585-27.295,16.838L101.22,40.756z"/>\r
+ <path d="M114.56,40.286c-0.806,0.886-1.531,1.839-2.308,2.751c-1.023,1.194-2.135,2.31-3.302,3.36\r
+ c-1.194,1.08-2.165,1.854-3.578,2.666c-1.499,0.859-3.027,1.729-4.579,2.484c-0.538,0.26-0.993,0.432-1.595,0.611\r
+ c-0.929,0.281-1.504,1.237-1.241,2.187c0.248,0.917,1.254,1.518,2.184,1.24c1.819-0.547,3.461-1.483,5.102-2.414\r
+ c1.384-0.789,2.76-1.497,4.033-2.464c2.481-1.889,4.615-4.09,6.577-6.497c0.796-0.974,1.648-1.906,2.534-2.799\r
+ c0.483-0.491,0.984-0.955,1.499-1.417c0.267-0.238,0.537-0.472,0.81-0.7c0.137-0.116,0.277-0.232,0.421-0.351\r
+ c0.036-0.029,0.298-0.231,0.375-0.298c1.241-0.95,2.558-1.795,3.949-2.51c1.311-0.669,2.625-1.141,4.22-1.475\r
+ c0.529-0.111,0.645-0.118,1.04-0.164c0.96-0.098,1.778-0.732,1.778-1.778c0-0.89-0.806-1.874-1.778-1.776\r
+ C124.284,31.609,118.79,35.621,114.56,40.286z"/>\r
+ <path d="M154.895,68.173c0.438-0.753,0.251-2.053-0.638-2.428c-1.482-0.632-3.032-1.287-4.279-2.324\r
+ c-1.373-1.138-2.011-2.639-2.295-4.37c-0.371-2.257-3.795-1.297-3.427,0.946c0.76,4.604,4.153,7.104,8.207,8.817\r
+ C153.357,69.186,154.354,69.088,154.895,68.173z"/>\r
+ <path d="M257.06,217.561c0.828-9.5-1.451-17.542-6.762-23.914c-7.844-9.366-19.88-12.289-25.017-13.135\r
+ c-3.271-8.202-8.261-13.609-14.852-16.072c-2.581-0.963-5.387-1.458-8.337-1.458c-4.948,0-9.411,1.364-12.408,2.572\r
+ c-3.96-7.18-9.247-11.642-15.715-13.271c-1.786-0.452-3.667-0.683-5.596-0.683c-6.17,0-11.812,2.32-15.652,4.408\r
+ c-1.332-8.886-3.08-30.007-4.367-45.545l-0.01-0.178c-1.338-16.243-2.25-26.881-2.993-33.939c1.431,0.863,2.933,1.605,4.511,2.089\r
+ c2.197,0.676,3.129-2.751,0.946-3.424c-1.336-0.411-2.348-0.936-3.758-1.766c-0.784-0.464-1.528-1.006-2.238-1.595\r
+ c-0.611-4.745-1.143-7.044-1.781-8.166c-0.49-1.679-1.381-3.554-2.565-5.407c1.129-1.475,2.082-2.986,2.702-4.531\r
+ c1.338-3.347,1.374-6.81,0.087-9.493c-1.145-2.397-3.284-4.129-6.177-5.012c-4.243-1.301-9.396,1.056-14.113,6.462\r
+ c-0.027,0.031-1.485,1.545-3.689,3.575c-0.97,0.612-1.932,1.429-2.846,2.505c-2.183,1.839-4.71,3.788-7.296,5.368\r
+ c-0.053,0.033-5.214,3.133-10.604,4.598c-0.949,0.26-1.507,1.237-1.247,2.183c0.258,0.946,1.233,1.508,2.183,1.244\r
+ c5.862-1.595,11.28-4.846,11.518-4.989c0.512-0.312,1.006-0.659,1.504-0.993c-0.679,1.995-1.276,4.307-1.745,7.001\r
+ c-5.256,2.786-9.598,4.41-11.165,4.942c-0.077,0.027-0.126,0.049-0.144,0.056c-0.917,0.348-1.381,1.371-1.03,2.288\r
+ c0.271,0.708,0.946,1.146,1.662,1.146c0.204,0,0.405-0.036,0.605-0.106l0.063-0.023c1.408-0.484,4.948-1.787,9.406-3.992\r
+ c-0.074,0.625-0.15,1.224-0.21,1.882c0,1.287,0,2.555-0.003,3.832c-2.878,1.583-5.761,3.063-8.299,4.144\r
+ c-0.903,0.383-1.321,1.431-0.939,2.334c0.291,0.671,0.946,1.076,1.637,1.076c0.231,0,0.469-0.046,0.696-0.144\r
+ c2.13-0.91,4.504-2.117,6.897-3.392c-0.14,65.824-1.969,114.001-2.383,124.106c-6.199,2.82-11.858,9.213-12.486,9.938\r
+ c-19.939,22.024-10.489,38.208-10.079,38.875c15.244,26.687,46.733,79.22,47.024,79.702l0.617,1.021l0.301-0.182v0.476h100.703\r
+ l3.716,1.099l5.202-17.795C263.446,277.339,257.779,223.46,257.06,217.561z M136.037,42.438c1.949,0.595,3.299,1.656,4.013,3.15\r
+ c0.859,1.79,0.795,4.204-0.178,6.641c-0.368,0.914-0.912,1.87-1.608,2.859c-3.267-3.908-7.713-7.182-12.289-7.601\r
+ C128.827,44.344,132.86,41.466,136.037,42.438z M235.812,314.551l-3.556,11.979h-95.44c-6.694-11.184-32.334-54.104-45.542-77.211\r
+ c-0.291-0.503-6.959-12.519,9.245-30.416c1.731-2.02,7.169-7.512,11.505-8.655l2.575-0.688l0.111-2.659\r
+ c0.029-0.414,2.506-54.404,2.481-134.375c0.979-10.752,3.855-17.571,7.479-17.789l0.168-0.007c4.503,0,10.442,7.135,11.329,11.272\r
+ l0.518,2.44l0.306,0.048c1.101,6.192,2.753,26.224,4.097,42.392c4.387,53.125,4.916,53.283,8.384,54.323l1.785,0.519l1.468-1.125\r
+ c0.786-0.585,7.861-5.711,15.653-5.711c1.333,0,2.625,0.158,3.819,0.458c5.153,1.294,9.355,5.508,12.494,12.507l1.652,3.695\r
+ l3.494-2.032c0.233-0.123,5.917-3.23,12.252-3.23c2.084,0,4.027,0.328,5.79,0.985c5.01,1.872,8.812,6.495,11.317,13.74\r
+ l0.773,2.241l2.354,0.212c0.138,0.014,14.545,1.476,22.375,10.862c4.079,4.883,5.79,11.211,5.085,18.842l-0.021,0.531l0.034,0.229\r
+ C250.065,220.25,256.277,275.323,235.812,314.551z"/>\r
+ <polygon points="151.628,120.506 179.462,120.506 179.462,92.676 175.629,92.676 175.629,116.672 151.628,116.672 "/>\r
+ <polygon points="104.608,116.672 80.607,116.672 80.607,92.676 76.781,92.676 76.781,120.506 104.608,120.506 "/>\r
+ <polygon points="80.607,3.831 104.608,3.831 104.608,0 76.781,0 76.781,27.826 80.607,27.826 "/>\r
+ <polygon points="175.629,27.829 179.462,27.829 179.462,0 151.628,0 151.628,3.831 175.629,3.831 "/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="311.324px" height="311.324px" viewBox="0 0 311.324 311.324" style="enable-background:new 0 0 311.324 311.324;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M21.174,87.5c2.089,0.458,4.02,0.424,9.967-4.143c2.635-2.026,6.535-5.443,10.142-10.205l1.576-2.096
- c13.492-17.944,45.077-59.955,90.703-57.677c37.623,2.745,64.299,31.157,77.125,82.173c0.435,1.732,0.701,2.8,0.996,3.614
- c0.023,0.107,0.062,0.222,0.082,0.335c3.634,6.386,6.498,13.258,8.483,20.501c0.458,0.494,0.928,0.963,1.42,1.321
- c1.174,0.849,2.536,1.257,3.885,1.257c2.053,0,4.093-0.956,5.386-2.758c2.074-2.866,1.52-6.836-1.197-9.04
- c-1.311-1.697-3.778-8.796-5.243-15.146c-0.089-0.375-0.205-0.739-0.362-1.097c-0.116-0.438-0.359-1.384-0.571-2.231
- c-2.033-8.084-7.437-29.562-20.537-49.765c-16.919-26.082-39.991-40.356-68.586-42.416c-0.046-0.007-0.087-0.007-0.137-0.014
- C81.603-2.578,47.008,43.429,32.241,63.074l-1.552,2.06c-4.045,5.344-8.824,8.673-10.472,9.637
- c-0.553,0.221-1.094,0.519-1.591,0.898c-2.067,1.565-3.077,4.236-2.522,6.769C16.666,84.969,18.648,86.945,21.174,87.5z"/>
- <path d="M179.456,66.596c-4.015-3.435-8.929-6.11-14.668-7.87c-2.094-0.638-4.25-1.026-6.452-1.199
- C165.822,59.65,172.909,62.716,179.456,66.596z"/>
- <path d="M24.136,155.71c7.253-1.976,14.308-4.625,20.552-7.31c-0.083-1.602-0.131-3.21-0.131-4.832
- c0-3.354,0.202-6.667,0.563-9.924c-6.969,3.273-15.643,6.844-24.477,9.253c-3.539,0.958-5.625,4.613-4.661,8.152
- C16.941,154.589,20.592,156.681,24.136,155.71z"/>
- <path d="M62.613,197.38c-10.553,5.783-21.11,11.16-30.396,15.126c-3.376,1.444-4.941,5.343-3.498,8.717
- c1.075,2.528,3.532,4.031,6.107,4.031c0.873,0,1.759-0.171,2.611-0.527c10.457-4.473,22.414-10.633,34.184-17.151
- C68.371,204.406,65.354,201.008,62.613,197.38z"/>
- <path d="M80.569,63.379c-3.014,3.326-5.719,6.894-8.634,10.295c-3.817,4.46-7.987,8.63-12.339,12.559
- c-4.483,4.045-8.105,6.938-13.387,9.974c-5.602,3.21-11.315,6.469-17.118,9.292c-1.999,0.972-3.718,1.608-5.961,2.279
- c-3.461,1.041-5.614,4.618-4.632,8.17c0.939,3.431,4.702,5.681,8.168,4.641c6.792-2.046,12.948-5.537,19.077-9.021
- c2.074-1.184,4.135-2.318,6.173-3.489c9.806-22.593,28.673-40.37,51.991-48.725c0.399-0.335,0.803-0.662,1.205-1
- c0.137-0.107,1.17-0.924,1.431-1.134c4.625-3.541,9.556-6.694,14.743-9.356c4.896-2.521,9.811-4.28,15.772-5.523
- c1.977-0.409,2.408-0.452,3.886-0.603c3.599-0.375,6.645-2.745,6.645-6.644c0-3.34-3.036-7.016-6.645-6.641
- C116.93,30.94,96.395,45.957,80.569,63.379z"/>
- <path d="M28.871,190.577c4.016-1.379,12.657-4.518,23.928-9.582c-1.852-3.997-3.417-8.158-4.665-12.45
- c-11.11,5.017-19.657,8.121-23.577,9.473c-0.297,0.1-0.48,0.164-0.541,0.185c-3.431,1.308-5.161,5.141-3.862,8.566
- c1.006,2.658,3.533,4.287,6.215,4.287c0.753,0,1.519-0.123,2.264-0.39L28.871,190.577z"/>
- <path d="M173.107,223.909c6.612,4.694,13.312,9.349,19.862,13.059l-15.372-15.399C176.123,222.393,174.617,223.17,173.107,223.909
- z"/>
- <path d="M102.3,227.181c-4.861-1.845-9.522-4.107-13.937-6.735c-15.665,10.314-32.478,21.19-40.082,23.236
- c-3.547,0.958-5.647,4.606-4.694,8.146c0.799,2.97,3.48,4.921,6.41,4.921c0.572,0,1.157-0.075,1.732-0.233
- c10.246-2.765,28.305-14.667,47.422-27.261C100.187,228.576,101.237,227.878,102.3,227.181z"/>
- <path d="M192.997,262.665c-5.349-1.938-14.058-7.316-22.477-12.516c-17.78-10.988-29.082-17.651-37.19-16.258
- c-8.215,1.423-25.466,13.147-54.419,34.29c-3.545,2.587-6.605,4.818-8.729,6.323c-2.992,2.119-3.708,6.263-1.595,9.258
- c1.297,1.83,3.351,2.812,5.431,2.812c1.328,0,2.664-0.396,3.831-1.218c2.208-1.561,5.308-3.83,8.898-6.44
- c11.521-8.419,42.135-30.766,48.779-31.916c4.141-0.28,19.087,8.939,28.016,14.449c9.411,5.811,18.298,11.307,24.944,13.709
- c3.445,1.249,7.258-0.541,8.507-3.99C198.24,267.716,196.45,263.914,192.997,262.665z"/>
- <path d="M170.562,295.688c-3.733-2.434-7.159-4.887-10.482-7.252c-10.892-7.785-20.312-14.506-30.633-12.703
- c-11.62,2.006-30.129,20.615-33.721,24.322c-2.554,2.635-2.484,6.844,0.151,9.4c1.289,1.238,2.957,1.868,4.618,1.868
- c1.735,0,3.468-0.678,4.769-2.025c8.897-9.186,21.537-19.634,26.443-20.481c4.851-0.832,12.181,4.387,20.658,10.434
- c3.27,2.334,6.971,4.976,10.936,7.562c3.073,2.002,7.193,1.141,9.195-1.933C174.494,301.808,173.632,297.697,170.562,295.688z"/>
- <path d="M231.394,167.655c1.66-2.816,0.959-7.673-2.381-9.086c-2.136-0.903-4.299-1.853-6.428-2.859
- c-0.615,4.475-1.584,8.879-2.867,13.191c0.855,0.39,1.718,0.766,2.594,1.136C225.645,171.454,229.389,171.084,231.394,167.655z"/>
- <path d="M216.124,193.232c-2.118-0.653-4.014-1.403-5.903-2.266l10.314,10.335C221.302,198.144,220.107,194.465,216.124,193.232z"
- />
- <path d="M291.09,279.022l-89.794-89.951c-0.137-0.144-0.305-0.229-0.448-0.363c9.75-13.545,15.561-30.094,15.561-48.014
- c0-45.453-36.977-82.424-82.426-82.424c-45.452,0-82.421,36.971-82.421,82.424c0,45.448,36.973,82.42,82.424,82.42
- c16.519,0,31.888-4.924,44.8-13.325c0.273,0.321,0.503,0.678,0.804,0.985l89.788,89.955c5.992,5.995,15.711,5.988,21.71,0
- C297.075,294.733,297.075,285.012,291.09,279.022z M200.067,138.894c-0.596,0.931-1.438,1.472-2.557,1.472
- c-2.189,0-3.613-2.277-3.613-6.29c0-4.202,1.536-6.427,3.641-6.427c0.521,0,0.966,0.128,1.373,0.335
- C199.595,131.531,199.968,135.179,200.067,138.894z M169.99,90.4c0,3.936-1.174,6.429-3.635,6.429
- c-2.189,0-3.613-2.272-3.613-6.285c0-4.201,1.536-6.434,3.641-6.434C168.871,84.11,169.99,86.602,169.99,90.4z M80.047,106.685
- c2.491,0,3.612,2.493,3.612,6.292c0,3.942-1.181,6.434-3.641,6.434c-2.187,0-3.608-2.277-3.608-6.29
- C76.41,108.914,77.944,106.685,80.047,106.685z M68.622,150.541c0.628-0.854,1.434-1.314,2.367-1.314
- c2.495,0,3.612,2.491,3.612,6.283c0,3.72-1.061,6.119-3.248,6.379C70.116,158.244,69.211,154.446,68.622,150.541z M84.251,184.205
- c-1.746-1.992-3.409-4.059-4.906-6.249c0.07-4.011,1.564-6.153,3.624-6.153c2.488,0,3.609,2.491,3.609,6.29
- C86.579,181.241,85.815,183.438,84.251,184.205z M105.691,200.419c-2.397-1.136-4.718-2.402-6.942-3.812
- c0.508-2.519,1.776-3.846,3.395-3.846c2.493,0,3.614,2.491,3.614,6.289C105.758,199.536,105.73,199.981,105.691,200.419z
- M112.549,199.194c0-4.203,1.535-6.434,3.641-6.434c2.488,0,3.608,2.491,3.608,6.289c0,2.772-0.599,4.802-1.803,5.78
- c-1.55-0.387-3.092-0.79-4.598-1.286C112.86,202.486,112.549,201.028,112.549,199.194z M154.681,199.194
- c0-4.203,1.535-6.434,3.638-6.434c2.496,0,3.611,2.491,3.611,6.289c0,0.582-0.068,1.082-0.119,1.595
- c-2.081,0.969-4.208,1.831-6.395,2.584C154.962,202.205,154.681,200.878,154.681,199.194z M164.306,199.443
- c0.004-0.171,0.034-0.314,0.034-0.492c0-4.914-2.132-7.813-5.881-7.813c-3.61,0-6.188,2.852-6.188,8.021
- c0.021,1.969,0.417,3.549,1.05,4.799c-2.375,0.731-4.813,1.293-7.294,1.752v-14.312h-2.052l-3.882,1.81l0.467,1.585l3.09-1.44
- h0.056v12.717c-3.179,0.465-6.41,0.794-9.717,0.794c-0.674,0-1.333-0.079-2.002-0.103v-15.359h-2.05l-3.886,1.811l0.469,1.584
- l3.092-1.44h0.055v13.292c-3.213-0.216-6.381-0.596-9.454-1.246c1.294-1.375,2.007-3.531,2.007-6.447
- c0-4.914-2.137-7.812-5.883-7.812c-3.614,0-6.186,2.851-6.186,8.021c0.014,1.26,0.168,2.379,0.445,3.347
- c-0.89-0.335-1.793-0.637-2.662-1.013c0.144-0.78,0.238-1.608,0.238-2.546c0-4.914-2.137-7.813-5.884-7.813
- c-2.575,0-4.604,1.482-5.564,4.183c-4.114-2.813-7.853-6.112-11.229-9.761c2.254-1.081,3.498-3.675,3.498-7.569
- c0-4.911-2.134-7.81-5.883-7.81c-2.712,0-4.84,1.608-5.73,4.6c-2.161-3.572-3.987-7.357-5.448-11.331
- c3.244-0.51,5.08-3.299,5.08-8.03c0-4.913-2.134-7.811-5.883-7.811c-1.056,0-2.002,0.267-2.842,0.739
- c-0.291-2.519-0.481-5.063-0.481-7.661c0-4.006,0.417-7.898,1.097-11.704l1.602-0.753h0.057v13.483h2.327v-15.426h-2.057
- l-1.588,0.743c1.043-4.948,2.688-9.664,4.769-14.132c-0.003,0.068-0.014,0.122-0.014,0.199c0.057,5.099,2.411,7.927,5.888,7.927
- c3.934,0,6.181-2.895,6.181-8.145c0-4.912-2.13-7.811-5.883-7.811c-0.765,0-1.473,0.157-2.127,0.41
- c4.596-7.275,10.551-13.579,17.528-18.575v11.279h2.322V85.287c10.392-6.791,22.768-10.771,36.078-10.771
- c11.456,0,22.234,2.929,31.639,8.076c-3.132,0.447-5.288,3.203-5.288,7.927c0.055,5.106,2.406,7.928,5.883,7.928
- c3.939,0,6.185-2.896,6.185-8.138c0-1.472-0.216-2.743-0.586-3.833c7.443,5.214,13.736,11.928,18.511,19.683l-2.115,0.979
- l0.469,1.586l2.495-1.164c0.212,0.366,0.448,0.705,0.653,1.069v12.128h2.324v-7.453c1.861,4.072,3.326,8.352,4.336,12.812
- c-0.268-0.036-0.527-0.081-0.814-0.081c-3.61,0-6.185,2.847-6.185,8.02c0.055,5.099,2.406,7.927,5.883,7.927
- c1.041,0,1.961-0.221,2.752-0.609c-0.038,3.578-0.4,7.079-0.986,10.506v-4.006h-2.05l-3.884,1.809l0.469,1.586l3.09-1.451h0.052
- v11.533c-1.078,3.269-2.409,6.413-3.966,9.432c-1.89,0.944-3.176,3.005-3.484,6.022c-1.893,2.896-4.024,5.609-6.338,8.159v-14.517
- h-2.05l-3.884,1.807l0.465,1.588l3.094-1.451h0.055v13.483h1.499C177.063,191.351,171.03,195.953,164.306,199.443z"/>
- <path d="M110.041,98.444c3.938,0,6.184-2.895,6.184-8.138c0-4.912-2.13-7.811-5.883-7.811c-3.61,0-6.186,2.853-6.186,8.022
- C104.213,95.625,106.564,98.444,110.041,98.444z M110.205,84.11c2.491,0,3.612,2.491,3.612,6.29c0,3.936-1.18,6.429-3.641,6.429
- c-2.185,0-3.608-2.272-3.608-6.285C106.564,86.343,108.099,84.11,110.205,84.11z"/>
- <polygon points="123.62,84.706 123.671,84.706 123.671,98.184 125.995,98.184 125.995,82.758 123.941,82.758 120.059,84.563
- 120.524,86.149 "/>
- <polygon points="137.665,84.706 137.717,84.706 137.717,98.184 140.044,98.184 140.044,82.758 137.986,82.758 134.104,84.563
- 134.571,86.149 "/>
- <path d="M152.474,82.495c-3.614,0-6.186,2.853-6.186,8.022c0.057,5.105,2.408,7.927,5.885,7.927c3.938,0,6.184-2.895,6.184-8.138
- C158.356,85.394,156.216,82.495,152.474,82.495z M152.31,96.829c-2.19,0-3.614-2.272-3.614-6.285c0-4.201,1.535-6.434,3.638-6.434
- c2.491,0,3.609,2.491,3.609,6.29C155.942,94.335,154.769,96.829,152.31,96.829z"/>
- <polygon points="93.465,107.281 93.517,107.281 93.517,120.754 95.844,120.754 95.844,105.336 93.791,105.336 89.908,107.138
- 90.37,108.724 "/>
- <polygon points="107.563,107.281 107.563,120.754 109.89,120.754 109.89,105.336 107.835,105.336 103.946,107.138
- 104.413,108.724 107.51,107.281 "/>
- <path d="M128.199,112.877c0-4.913-2.134-7.812-5.883-7.812c-3.61,0-6.186,2.853-6.186,8.028c0.057,5.1,2.411,7.928,5.884,7.928
- C125.96,121.025,128.199,118.126,128.199,112.877z M118.542,113.12c0-4.203,1.535-6.435,3.638-6.435
- c2.491,0,3.609,2.493,3.609,6.292c0,3.942-1.174,6.434-3.638,6.434C119.968,119.41,118.542,117.129,118.542,113.12z"/>
- <polygon points="135.598,107.281 135.646,107.281 135.646,120.754 137.973,120.754 137.973,105.336 135.922,105.336
- 132.037,107.138 132.502,108.724 "/>
- <path d="M150.104,121.025c3.939,0,6.186-2.895,6.186-8.145c0-4.912-2.134-7.811-5.883-7.811c-3.614,0-6.186,2.852-6.186,8.028
- C144.278,118.196,146.629,121.025,150.104,121.025z M150.27,106.685c2.488,0,3.609,2.493,3.609,6.292
- c0,3.942-1.178,6.434-3.638,6.434c-2.19,0-3.612-2.277-3.612-6.29C146.629,108.914,148.164,106.685,150.27,106.685z"/>
- <polygon points="163.738,107.281 163.738,120.754 166.062,120.754 166.062,105.336 164.012,105.336 160.128,107.138
- 160.59,108.724 163.68,107.281 "/>
- <path d="M178.196,121.025c3.939,0,6.181-2.895,6.181-8.145c0-4.912-2.129-7.811-5.883-7.811c-3.61,0-6.184,2.852-6.184,8.028
- C172.365,118.196,174.72,121.025,178.196,121.025z M178.357,106.685c2.491,0,3.61,2.493,3.61,6.292
- c0,3.942-1.178,6.434-3.638,6.434c-2.187,0-3.61-2.277-3.61-6.29C174.72,108.914,176.253,106.685,178.357,106.685z"/>
- <path d="M85.321,126.033c-3.612,0-6.186,2.847-6.186,8.02c0.057,5.099,2.408,7.927,5.884,7.927c3.939,0,6.186-2.895,6.186-8.138
- C91.205,128.927,89.063,126.033,85.321,126.033z M85.153,140.365c-2.19,0-3.61-2.277-3.61-6.29c0-4.202,1.535-6.427,3.638-6.427
- c2.491,0,3.614,2.491,3.614,6.283C88.794,137.874,87.615,140.365,85.153,140.365z"/>
- <path d="M99.365,126.033c-3.612,0-6.184,2.847-6.184,8.02c0.055,5.099,2.407,7.927,5.882,7.927c3.939,0,6.186-2.895,6.186-8.138
- C105.25,128.927,103.109,126.033,99.365,126.033z M99.201,140.365c-2.194,0-3.612-2.277-3.612-6.29
- c0-4.202,1.535-6.427,3.641-6.427c2.488,0,3.609,2.491,3.609,6.283C102.839,137.874,101.662,140.365,99.201,140.365z"/>
- <polygon points="109.079,128.093 109.55,129.688 112.64,128.237 112.696,128.237 112.696,141.721 115.02,141.721 115.02,126.292
- 112.97,126.292 "/>
- <polygon points="129.061,141.721 129.061,126.292 127.011,126.292 123.129,128.093 123.594,129.688 126.686,128.237
- 126.737,128.237 126.737,141.721 "/>
- <path d="M141.494,126.033c-3.608,0-6.187,2.847-6.187,8.02c0.055,5.099,2.411,7.927,5.886,7.927c3.939,0,6.183-2.895,6.183-8.138
- C147.375,128.927,145.245,126.033,141.494,126.033z M141.326,140.365c-2.187,0-3.609-2.277-3.609-6.29
- c0-4.202,1.535-6.427,3.638-6.427c2.495,0,3.612,2.491,3.612,6.283C144.967,137.874,143.793,140.365,141.326,140.365z"/>
- <polygon points="151.216,128.093 151.682,129.688 154.772,128.237 154.828,128.237 154.828,141.721 157.155,141.721
- 157.155,126.292 155.103,126.292 "/>
- <path d="M169.583,126.033c-3.61,0-6.188,2.847-6.188,8.02c0.062,5.099,2.413,7.927,5.89,7.927c3.938,0,6.181-2.895,6.181-8.138
- C175.466,128.927,173.33,126.033,169.583,126.033z M169.422,140.365c-2.19,0-3.613-2.277-3.613-6.29
- c0-4.202,1.536-6.427,3.638-6.427c2.491,0,3.613,2.491,3.613,6.283C173.06,137.874,171.883,140.365,169.422,140.365z"/>
- <polygon points="179.302,128.093 179.771,129.688 182.864,128.237 182.916,128.237 182.916,141.721 185.243,141.721
- 185.243,126.292 183.189,126.292 "/>
- <polygon points="80.85,149.679 81.312,151.267 84.405,149.815 84.458,149.815 84.458,163.302 86.786,163.302 86.786,147.875
- 84.735,147.875 "/>
- <polygon points="100.83,163.302 100.83,147.875 98.78,147.875 94.891,149.679 95.356,151.267 98.452,149.815 98.505,149.815
- 98.505,163.302 "/>
- <polygon points="108.932,149.679 109.402,151.267 112.493,149.815 112.549,149.815 112.549,163.302 114.873,163.302
- 114.873,147.875 112.823,147.875 "/>
- <path d="M127.302,147.612c-3.609,0-6.186,2.849-6.186,8.021c0.056,5.099,2.411,7.929,5.884,7.929c3.939,0,6.186-2.896,6.186-8.14
- C133.187,150.51,131.055,147.612,127.302,147.612z M127.141,161.943c-2.187,0-3.61-2.275-3.61-6.29
- c0-4.194,1.535-6.427,3.638-6.427c2.492,0,3.614,2.491,3.614,6.283C130.782,159.452,129.602,161.943,127.141,161.943z"/>
- <polygon points="142.96,163.302 142.96,147.875 140.905,147.875 137.023,149.679 137.49,151.267 140.583,149.815 140.637,149.815
- 140.637,163.302 "/>
- <polygon points="151.069,149.679 151.534,151.267 154.625,149.815 154.681,149.815 154.681,163.302 157.008,163.302
- 157.008,147.875 154.951,147.875 "/>
- <path d="M169.439,147.612c-3.614,0-6.185,2.849-6.185,8.021c0.055,5.099,2.406,7.929,5.883,7.929c3.939,0,6.185-2.896,6.185-8.14
- C175.322,150.51,173.18,147.612,169.439,147.612z M169.274,161.943c-2.189,0-3.613-2.275-3.613-6.29
- c0-4.194,1.536-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.283C172.909,159.452,171.735,161.943,169.274,161.943z"/>
- <path d="M177.3,155.637c0.055,5.099,2.406,7.929,5.883,7.929c3.938,0,6.184-2.895,6.184-8.139c0-4.913-2.135-7.811-5.883-7.811
- C179.866,147.612,177.3,150.46,177.3,155.637z M186.954,155.51c0,3.942-1.174,6.434-3.635,6.434c-2.19,0-3.613-2.275-3.613-6.29
- c0-4.194,1.536-6.427,3.641-6.427C185.835,149.227,186.954,151.718,186.954,155.51z"/>
- <path d="M97.148,170.188c-3.605,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.888,7.926c3.936,0,6.182-2.896,6.182-8.138
- C103.032,173.083,100.896,170.188,97.148,170.188z M96.983,184.52c-2.187,0-3.61-2.269-3.61-6.29c0-4.195,1.535-6.427,3.638-6.427
- c2.491,0,3.614,2.491,3.614,6.29C100.625,182.028,99.442,184.52,96.983,184.52z"/>
- <polygon points="106.868,172.255 107.335,173.843 110.429,172.392 110.482,172.392 110.482,185.871 112.809,185.871
- 112.809,170.448 110.754,170.448 "/>
- <polygon points="120.911,172.255 121.376,173.843 124.474,172.392 124.523,172.392 124.523,185.871 126.854,185.871
- 126.854,170.448 124.801,170.448 "/>
- <path d="M139.28,170.188c-3.609,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.884,7.926c3.942,0,6.186-2.896,6.186-8.138
- C145.164,173.083,143.029,170.188,139.28,170.188z M139.119,184.52c-2.187,0-3.61-2.269-3.61-6.29
- c0-4.195,1.537-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.29C142.757,182.028,141.583,184.52,139.119,184.52z"/>
- <polygon points="149,172.255 149.467,173.843 152.558,172.392 152.611,172.392 152.611,185.871 154.938,185.871 154.938,170.448
- 152.888,170.448 "/>
- <path d="M167.372,170.188c-3.613,0-6.188,2.848-6.188,8.021c0.059,5.1,2.409,7.926,5.887,7.926c3.938,0,6.184-2.896,6.184-8.138
- C173.255,173.083,171.116,170.188,167.372,170.188z M167.208,184.52c-2.19,0-3.614-2.269-3.614-6.29
- c0-4.195,1.533-6.427,3.642-6.427c2.488,0,3.607,2.491,3.607,6.29C170.843,182.028,169.665,184.52,167.208,184.52z"/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="311.324px" height="311.324px" viewBox="0 0 311.324 311.324" style="enable-background:new 0 0 311.324 311.324;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M21.174,87.5c2.089,0.458,4.02,0.424,9.967-4.143c2.635-2.026,6.535-5.443,10.142-10.205l1.576-2.096\r
+ c13.492-17.944,45.077-59.955,90.703-57.677c37.623,2.745,64.299,31.157,77.125,82.173c0.435,1.732,0.701,2.8,0.996,3.614\r
+ c0.023,0.107,0.062,0.222,0.082,0.335c3.634,6.386,6.498,13.258,8.483,20.501c0.458,0.494,0.928,0.963,1.42,1.321\r
+ c1.174,0.849,2.536,1.257,3.885,1.257c2.053,0,4.093-0.956,5.386-2.758c2.074-2.866,1.52-6.836-1.197-9.04\r
+ c-1.311-1.697-3.778-8.796-5.243-15.146c-0.089-0.375-0.205-0.739-0.362-1.097c-0.116-0.438-0.359-1.384-0.571-2.231\r
+ c-2.033-8.084-7.437-29.562-20.537-49.765c-16.919-26.082-39.991-40.356-68.586-42.416c-0.046-0.007-0.087-0.007-0.137-0.014\r
+ C81.603-2.578,47.008,43.429,32.241,63.074l-1.552,2.06c-4.045,5.344-8.824,8.673-10.472,9.637\r
+ c-0.553,0.221-1.094,0.519-1.591,0.898c-2.067,1.565-3.077,4.236-2.522,6.769C16.666,84.969,18.648,86.945,21.174,87.5z"/>\r
+ <path d="M179.456,66.596c-4.015-3.435-8.929-6.11-14.668-7.87c-2.094-0.638-4.25-1.026-6.452-1.199\r
+ C165.822,59.65,172.909,62.716,179.456,66.596z"/>\r
+ <path d="M24.136,155.71c7.253-1.976,14.308-4.625,20.552-7.31c-0.083-1.602-0.131-3.21-0.131-4.832\r
+ c0-3.354,0.202-6.667,0.563-9.924c-6.969,3.273-15.643,6.844-24.477,9.253c-3.539,0.958-5.625,4.613-4.661,8.152\r
+ C16.941,154.589,20.592,156.681,24.136,155.71z"/>\r
+ <path d="M62.613,197.38c-10.553,5.783-21.11,11.16-30.396,15.126c-3.376,1.444-4.941,5.343-3.498,8.717\r
+ c1.075,2.528,3.532,4.031,6.107,4.031c0.873,0,1.759-0.171,2.611-0.527c10.457-4.473,22.414-10.633,34.184-17.151\r
+ C68.371,204.406,65.354,201.008,62.613,197.38z"/>\r
+ <path d="M80.569,63.379c-3.014,3.326-5.719,6.894-8.634,10.295c-3.817,4.46-7.987,8.63-12.339,12.559\r
+ c-4.483,4.045-8.105,6.938-13.387,9.974c-5.602,3.21-11.315,6.469-17.118,9.292c-1.999,0.972-3.718,1.608-5.961,2.279\r
+ c-3.461,1.041-5.614,4.618-4.632,8.17c0.939,3.431,4.702,5.681,8.168,4.641c6.792-2.046,12.948-5.537,19.077-9.021\r
+ c2.074-1.184,4.135-2.318,6.173-3.489c9.806-22.593,28.673-40.37,51.991-48.725c0.399-0.335,0.803-0.662,1.205-1\r
+ c0.137-0.107,1.17-0.924,1.431-1.134c4.625-3.541,9.556-6.694,14.743-9.356c4.896-2.521,9.811-4.28,15.772-5.523\r
+ c1.977-0.409,2.408-0.452,3.886-0.603c3.599-0.375,6.645-2.745,6.645-6.644c0-3.34-3.036-7.016-6.645-6.641\r
+ C116.93,30.94,96.395,45.957,80.569,63.379z"/>\r
+ <path d="M28.871,190.577c4.016-1.379,12.657-4.518,23.928-9.582c-1.852-3.997-3.417-8.158-4.665-12.45\r
+ c-11.11,5.017-19.657,8.121-23.577,9.473c-0.297,0.1-0.48,0.164-0.541,0.185c-3.431,1.308-5.161,5.141-3.862,8.566\r
+ c1.006,2.658,3.533,4.287,6.215,4.287c0.753,0,1.519-0.123,2.264-0.39L28.871,190.577z"/>\r
+ <path d="M173.107,223.909c6.612,4.694,13.312,9.349,19.862,13.059l-15.372-15.399C176.123,222.393,174.617,223.17,173.107,223.909\r
+ z"/>\r
+ <path d="M102.3,227.181c-4.861-1.845-9.522-4.107-13.937-6.735c-15.665,10.314-32.478,21.19-40.082,23.236\r
+ c-3.547,0.958-5.647,4.606-4.694,8.146c0.799,2.97,3.48,4.921,6.41,4.921c0.572,0,1.157-0.075,1.732-0.233\r
+ c10.246-2.765,28.305-14.667,47.422-27.261C100.187,228.576,101.237,227.878,102.3,227.181z"/>\r
+ <path d="M192.997,262.665c-5.349-1.938-14.058-7.316-22.477-12.516c-17.78-10.988-29.082-17.651-37.19-16.258\r
+ c-8.215,1.423-25.466,13.147-54.419,34.29c-3.545,2.587-6.605,4.818-8.729,6.323c-2.992,2.119-3.708,6.263-1.595,9.258\r
+ c1.297,1.83,3.351,2.812,5.431,2.812c1.328,0,2.664-0.396,3.831-1.218c2.208-1.561,5.308-3.83,8.898-6.44\r
+ c11.521-8.419,42.135-30.766,48.779-31.916c4.141-0.28,19.087,8.939,28.016,14.449c9.411,5.811,18.298,11.307,24.944,13.709\r
+ c3.445,1.249,7.258-0.541,8.507-3.99C198.24,267.716,196.45,263.914,192.997,262.665z"/>\r
+ <path d="M170.562,295.688c-3.733-2.434-7.159-4.887-10.482-7.252c-10.892-7.785-20.312-14.506-30.633-12.703\r
+ c-11.62,2.006-30.129,20.615-33.721,24.322c-2.554,2.635-2.484,6.844,0.151,9.4c1.289,1.238,2.957,1.868,4.618,1.868\r
+ c1.735,0,3.468-0.678,4.769-2.025c8.897-9.186,21.537-19.634,26.443-20.481c4.851-0.832,12.181,4.387,20.658,10.434\r
+ c3.27,2.334,6.971,4.976,10.936,7.562c3.073,2.002,7.193,1.141,9.195-1.933C174.494,301.808,173.632,297.697,170.562,295.688z"/>\r
+ <path d="M231.394,167.655c1.66-2.816,0.959-7.673-2.381-9.086c-2.136-0.903-4.299-1.853-6.428-2.859\r
+ c-0.615,4.475-1.584,8.879-2.867,13.191c0.855,0.39,1.718,0.766,2.594,1.136C225.645,171.454,229.389,171.084,231.394,167.655z"/>\r
+ <path d="M216.124,193.232c-2.118-0.653-4.014-1.403-5.903-2.266l10.314,10.335C221.302,198.144,220.107,194.465,216.124,193.232z"\r
+ />\r
+ <path d="M291.09,279.022l-89.794-89.951c-0.137-0.144-0.305-0.229-0.448-0.363c9.75-13.545,15.561-30.094,15.561-48.014\r
+ c0-45.453-36.977-82.424-82.426-82.424c-45.452,0-82.421,36.971-82.421,82.424c0,45.448,36.973,82.42,82.424,82.42\r
+ c16.519,0,31.888-4.924,44.8-13.325c0.273,0.321,0.503,0.678,0.804,0.985l89.788,89.955c5.992,5.995,15.711,5.988,21.71,0\r
+ C297.075,294.733,297.075,285.012,291.09,279.022z M200.067,138.894c-0.596,0.931-1.438,1.472-2.557,1.472\r
+ c-2.189,0-3.613-2.277-3.613-6.29c0-4.202,1.536-6.427,3.641-6.427c0.521,0,0.966,0.128,1.373,0.335\r
+ C199.595,131.531,199.968,135.179,200.067,138.894z M169.99,90.4c0,3.936-1.174,6.429-3.635,6.429\r
+ c-2.189,0-3.613-2.272-3.613-6.285c0-4.201,1.536-6.434,3.641-6.434C168.871,84.11,169.99,86.602,169.99,90.4z M80.047,106.685\r
+ c2.491,0,3.612,2.493,3.612,6.292c0,3.942-1.181,6.434-3.641,6.434c-2.187,0-3.608-2.277-3.608-6.29\r
+ C76.41,108.914,77.944,106.685,80.047,106.685z M68.622,150.541c0.628-0.854,1.434-1.314,2.367-1.314\r
+ c2.495,0,3.612,2.491,3.612,6.283c0,3.72-1.061,6.119-3.248,6.379C70.116,158.244,69.211,154.446,68.622,150.541z M84.251,184.205\r
+ c-1.746-1.992-3.409-4.059-4.906-6.249c0.07-4.011,1.564-6.153,3.624-6.153c2.488,0,3.609,2.491,3.609,6.29\r
+ C86.579,181.241,85.815,183.438,84.251,184.205z M105.691,200.419c-2.397-1.136-4.718-2.402-6.942-3.812\r
+ c0.508-2.519,1.776-3.846,3.395-3.846c2.493,0,3.614,2.491,3.614,6.289C105.758,199.536,105.73,199.981,105.691,200.419z\r
+ M112.549,199.194c0-4.203,1.535-6.434,3.641-6.434c2.488,0,3.608,2.491,3.608,6.289c0,2.772-0.599,4.802-1.803,5.78\r
+ c-1.55-0.387-3.092-0.79-4.598-1.286C112.86,202.486,112.549,201.028,112.549,199.194z M154.681,199.194\r
+ c0-4.203,1.535-6.434,3.638-6.434c2.496,0,3.611,2.491,3.611,6.289c0,0.582-0.068,1.082-0.119,1.595\r
+ c-2.081,0.969-4.208,1.831-6.395,2.584C154.962,202.205,154.681,200.878,154.681,199.194z M164.306,199.443\r
+ c0.004-0.171,0.034-0.314,0.034-0.492c0-4.914-2.132-7.813-5.881-7.813c-3.61,0-6.188,2.852-6.188,8.021\r
+ c0.021,1.969,0.417,3.549,1.05,4.799c-2.375,0.731-4.813,1.293-7.294,1.752v-14.312h-2.052l-3.882,1.81l0.467,1.585l3.09-1.44\r
+ h0.056v12.717c-3.179,0.465-6.41,0.794-9.717,0.794c-0.674,0-1.333-0.079-2.002-0.103v-15.359h-2.05l-3.886,1.811l0.469,1.584\r
+ l3.092-1.44h0.055v13.292c-3.213-0.216-6.381-0.596-9.454-1.246c1.294-1.375,2.007-3.531,2.007-6.447\r
+ c0-4.914-2.137-7.812-5.883-7.812c-3.614,0-6.186,2.851-6.186,8.021c0.014,1.26,0.168,2.379,0.445,3.347\r
+ c-0.89-0.335-1.793-0.637-2.662-1.013c0.144-0.78,0.238-1.608,0.238-2.546c0-4.914-2.137-7.813-5.884-7.813\r
+ c-2.575,0-4.604,1.482-5.564,4.183c-4.114-2.813-7.853-6.112-11.229-9.761c2.254-1.081,3.498-3.675,3.498-7.569\r
+ c0-4.911-2.134-7.81-5.883-7.81c-2.712,0-4.84,1.608-5.73,4.6c-2.161-3.572-3.987-7.357-5.448-11.331\r
+ c3.244-0.51,5.08-3.299,5.08-8.03c0-4.913-2.134-7.811-5.883-7.811c-1.056,0-2.002,0.267-2.842,0.739\r
+ c-0.291-2.519-0.481-5.063-0.481-7.661c0-4.006,0.417-7.898,1.097-11.704l1.602-0.753h0.057v13.483h2.327v-15.426h-2.057\r
+ l-1.588,0.743c1.043-4.948,2.688-9.664,4.769-14.132c-0.003,0.068-0.014,0.122-0.014,0.199c0.057,5.099,2.411,7.927,5.888,7.927\r
+ c3.934,0,6.181-2.895,6.181-8.145c0-4.912-2.13-7.811-5.883-7.811c-0.765,0-1.473,0.157-2.127,0.41\r
+ c4.596-7.275,10.551-13.579,17.528-18.575v11.279h2.322V85.287c10.392-6.791,22.768-10.771,36.078-10.771\r
+ c11.456,0,22.234,2.929,31.639,8.076c-3.132,0.447-5.288,3.203-5.288,7.927c0.055,5.106,2.406,7.928,5.883,7.928\r
+ c3.939,0,6.185-2.896,6.185-8.138c0-1.472-0.216-2.743-0.586-3.833c7.443,5.214,13.736,11.928,18.511,19.683l-2.115,0.979\r
+ l0.469,1.586l2.495-1.164c0.212,0.366,0.448,0.705,0.653,1.069v12.128h2.324v-7.453c1.861,4.072,3.326,8.352,4.336,12.812\r
+ c-0.268-0.036-0.527-0.081-0.814-0.081c-3.61,0-6.185,2.847-6.185,8.02c0.055,5.099,2.406,7.927,5.883,7.927\r
+ c1.041,0,1.961-0.221,2.752-0.609c-0.038,3.578-0.4,7.079-0.986,10.506v-4.006h-2.05l-3.884,1.809l0.469,1.586l3.09-1.451h0.052\r
+ v11.533c-1.078,3.269-2.409,6.413-3.966,9.432c-1.89,0.944-3.176,3.005-3.484,6.022c-1.893,2.896-4.024,5.609-6.338,8.159v-14.517\r
+ h-2.05l-3.884,1.807l0.465,1.588l3.094-1.451h0.055v13.483h1.499C177.063,191.351,171.03,195.953,164.306,199.443z"/>\r
+ <path d="M110.041,98.444c3.938,0,6.184-2.895,6.184-8.138c0-4.912-2.13-7.811-5.883-7.811c-3.61,0-6.186,2.853-6.186,8.022\r
+ C104.213,95.625,106.564,98.444,110.041,98.444z M110.205,84.11c2.491,0,3.612,2.491,3.612,6.29c0,3.936-1.18,6.429-3.641,6.429\r
+ c-2.185,0-3.608-2.272-3.608-6.285C106.564,86.343,108.099,84.11,110.205,84.11z"/>\r
+ <polygon points="123.62,84.706 123.671,84.706 123.671,98.184 125.995,98.184 125.995,82.758 123.941,82.758 120.059,84.563 \r
+ 120.524,86.149 "/>\r
+ <polygon points="137.665,84.706 137.717,84.706 137.717,98.184 140.044,98.184 140.044,82.758 137.986,82.758 134.104,84.563 \r
+ 134.571,86.149 "/>\r
+ <path d="M152.474,82.495c-3.614,0-6.186,2.853-6.186,8.022c0.057,5.105,2.408,7.927,5.885,7.927c3.938,0,6.184-2.895,6.184-8.138\r
+ C158.356,85.394,156.216,82.495,152.474,82.495z M152.31,96.829c-2.19,0-3.614-2.272-3.614-6.285c0-4.201,1.535-6.434,3.638-6.434\r
+ c2.491,0,3.609,2.491,3.609,6.29C155.942,94.335,154.769,96.829,152.31,96.829z"/>\r
+ <polygon points="93.465,107.281 93.517,107.281 93.517,120.754 95.844,120.754 95.844,105.336 93.791,105.336 89.908,107.138 \r
+ 90.37,108.724 "/>\r
+ <polygon points="107.563,107.281 107.563,120.754 109.89,120.754 109.89,105.336 107.835,105.336 103.946,107.138 \r
+ 104.413,108.724 107.51,107.281 "/>\r
+ <path d="M128.199,112.877c0-4.913-2.134-7.812-5.883-7.812c-3.61,0-6.186,2.853-6.186,8.028c0.057,5.1,2.411,7.928,5.884,7.928\r
+ C125.96,121.025,128.199,118.126,128.199,112.877z M118.542,113.12c0-4.203,1.535-6.435,3.638-6.435\r
+ c2.491,0,3.609,2.493,3.609,6.292c0,3.942-1.174,6.434-3.638,6.434C119.968,119.41,118.542,117.129,118.542,113.12z"/>\r
+ <polygon points="135.598,107.281 135.646,107.281 135.646,120.754 137.973,120.754 137.973,105.336 135.922,105.336 \r
+ 132.037,107.138 132.502,108.724 "/>\r
+ <path d="M150.104,121.025c3.939,0,6.186-2.895,6.186-8.145c0-4.912-2.134-7.811-5.883-7.811c-3.614,0-6.186,2.852-6.186,8.028\r
+ C144.278,118.196,146.629,121.025,150.104,121.025z M150.27,106.685c2.488,0,3.609,2.493,3.609,6.292\r
+ c0,3.942-1.178,6.434-3.638,6.434c-2.19,0-3.612-2.277-3.612-6.29C146.629,108.914,148.164,106.685,150.27,106.685z"/>\r
+ <polygon points="163.738,107.281 163.738,120.754 166.062,120.754 166.062,105.336 164.012,105.336 160.128,107.138 \r
+ 160.59,108.724 163.68,107.281 "/>\r
+ <path d="M178.196,121.025c3.939,0,6.181-2.895,6.181-8.145c0-4.912-2.129-7.811-5.883-7.811c-3.61,0-6.184,2.852-6.184,8.028\r
+ C172.365,118.196,174.72,121.025,178.196,121.025z M178.357,106.685c2.491,0,3.61,2.493,3.61,6.292\r
+ c0,3.942-1.178,6.434-3.638,6.434c-2.187,0-3.61-2.277-3.61-6.29C174.72,108.914,176.253,106.685,178.357,106.685z"/>\r
+ <path d="M85.321,126.033c-3.612,0-6.186,2.847-6.186,8.02c0.057,5.099,2.408,7.927,5.884,7.927c3.939,0,6.186-2.895,6.186-8.138\r
+ C91.205,128.927,89.063,126.033,85.321,126.033z M85.153,140.365c-2.19,0-3.61-2.277-3.61-6.29c0-4.202,1.535-6.427,3.638-6.427\r
+ c2.491,0,3.614,2.491,3.614,6.283C88.794,137.874,87.615,140.365,85.153,140.365z"/>\r
+ <path d="M99.365,126.033c-3.612,0-6.184,2.847-6.184,8.02c0.055,5.099,2.407,7.927,5.882,7.927c3.939,0,6.186-2.895,6.186-8.138\r
+ C105.25,128.927,103.109,126.033,99.365,126.033z M99.201,140.365c-2.194,0-3.612-2.277-3.612-6.29\r
+ c0-4.202,1.535-6.427,3.641-6.427c2.488,0,3.609,2.491,3.609,6.283C102.839,137.874,101.662,140.365,99.201,140.365z"/>\r
+ <polygon points="109.079,128.093 109.55,129.688 112.64,128.237 112.696,128.237 112.696,141.721 115.02,141.721 115.02,126.292 \r
+ 112.97,126.292 "/>\r
+ <polygon points="129.061,141.721 129.061,126.292 127.011,126.292 123.129,128.093 123.594,129.688 126.686,128.237 \r
+ 126.737,128.237 126.737,141.721 "/>\r
+ <path d="M141.494,126.033c-3.608,0-6.187,2.847-6.187,8.02c0.055,5.099,2.411,7.927,5.886,7.927c3.939,0,6.183-2.895,6.183-8.138\r
+ C147.375,128.927,145.245,126.033,141.494,126.033z M141.326,140.365c-2.187,0-3.609-2.277-3.609-6.29\r
+ c0-4.202,1.535-6.427,3.638-6.427c2.495,0,3.612,2.491,3.612,6.283C144.967,137.874,143.793,140.365,141.326,140.365z"/>\r
+ <polygon points="151.216,128.093 151.682,129.688 154.772,128.237 154.828,128.237 154.828,141.721 157.155,141.721 \r
+ 157.155,126.292 155.103,126.292 "/>\r
+ <path d="M169.583,126.033c-3.61,0-6.188,2.847-6.188,8.02c0.062,5.099,2.413,7.927,5.89,7.927c3.938,0,6.181-2.895,6.181-8.138\r
+ C175.466,128.927,173.33,126.033,169.583,126.033z M169.422,140.365c-2.19,0-3.613-2.277-3.613-6.29\r
+ c0-4.202,1.536-6.427,3.638-6.427c2.491,0,3.613,2.491,3.613,6.283C173.06,137.874,171.883,140.365,169.422,140.365z"/>\r
+ <polygon points="179.302,128.093 179.771,129.688 182.864,128.237 182.916,128.237 182.916,141.721 185.243,141.721 \r
+ 185.243,126.292 183.189,126.292 "/>\r
+ <polygon points="80.85,149.679 81.312,151.267 84.405,149.815 84.458,149.815 84.458,163.302 86.786,163.302 86.786,147.875 \r
+ 84.735,147.875 "/>\r
+ <polygon points="100.83,163.302 100.83,147.875 98.78,147.875 94.891,149.679 95.356,151.267 98.452,149.815 98.505,149.815 \r
+ 98.505,163.302 "/>\r
+ <polygon points="108.932,149.679 109.402,151.267 112.493,149.815 112.549,149.815 112.549,163.302 114.873,163.302 \r
+ 114.873,147.875 112.823,147.875 "/>\r
+ <path d="M127.302,147.612c-3.609,0-6.186,2.849-6.186,8.021c0.056,5.099,2.411,7.929,5.884,7.929c3.939,0,6.186-2.896,6.186-8.14\r
+ C133.187,150.51,131.055,147.612,127.302,147.612z M127.141,161.943c-2.187,0-3.61-2.275-3.61-6.29\r
+ c0-4.194,1.535-6.427,3.638-6.427c2.492,0,3.614,2.491,3.614,6.283C130.782,159.452,129.602,161.943,127.141,161.943z"/>\r
+ <polygon points="142.96,163.302 142.96,147.875 140.905,147.875 137.023,149.679 137.49,151.267 140.583,149.815 140.637,149.815 \r
+ 140.637,163.302 "/>\r
+ <polygon points="151.069,149.679 151.534,151.267 154.625,149.815 154.681,149.815 154.681,163.302 157.008,163.302 \r
+ 157.008,147.875 154.951,147.875 "/>\r
+ <path d="M169.439,147.612c-3.614,0-6.185,2.849-6.185,8.021c0.055,5.099,2.406,7.929,5.883,7.929c3.939,0,6.185-2.896,6.185-8.14\r
+ C175.322,150.51,173.18,147.612,169.439,147.612z M169.274,161.943c-2.189,0-3.613-2.275-3.613-6.29\r
+ c0-4.194,1.536-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.283C172.909,159.452,171.735,161.943,169.274,161.943z"/>\r
+ <path d="M177.3,155.637c0.055,5.099,2.406,7.929,5.883,7.929c3.938,0,6.184-2.895,6.184-8.139c0-4.913-2.135-7.811-5.883-7.811\r
+ C179.866,147.612,177.3,150.46,177.3,155.637z M186.954,155.51c0,3.942-1.174,6.434-3.635,6.434c-2.19,0-3.613-2.275-3.613-6.29\r
+ c0-4.194,1.536-6.427,3.641-6.427C185.835,149.227,186.954,151.718,186.954,155.51z"/>\r
+ <path d="M97.148,170.188c-3.605,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.888,7.926c3.936,0,6.182-2.896,6.182-8.138\r
+ C103.032,173.083,100.896,170.188,97.148,170.188z M96.983,184.52c-2.187,0-3.61-2.269-3.61-6.29c0-4.195,1.535-6.427,3.638-6.427\r
+ c2.491,0,3.614,2.491,3.614,6.29C100.625,182.028,99.442,184.52,96.983,184.52z"/>\r
+ <polygon points="106.868,172.255 107.335,173.843 110.429,172.392 110.482,172.392 110.482,185.871 112.809,185.871 \r
+ 112.809,170.448 110.754,170.448 "/>\r
+ <polygon points="120.911,172.255 121.376,173.843 124.474,172.392 124.523,172.392 124.523,185.871 126.854,185.871 \r
+ 126.854,170.448 124.801,170.448 "/>\r
+ <path d="M139.28,170.188c-3.609,0-6.186,2.848-6.186,8.021c0.056,5.1,2.411,7.926,5.884,7.926c3.942,0,6.186-2.896,6.186-8.138\r
+ C145.164,173.083,143.029,170.188,139.28,170.188z M139.119,184.52c-2.187,0-3.61-2.269-3.61-6.29\r
+ c0-4.195,1.537-6.427,3.638-6.427c2.491,0,3.61,2.491,3.61,6.29C142.757,182.028,141.583,184.52,139.119,184.52z"/>\r
+ <polygon points="149,172.255 149.467,173.843 152.558,172.392 152.611,172.392 152.611,185.871 154.938,185.871 154.938,170.448 \r
+ 152.888,170.448 "/>\r
+ <path d="M167.372,170.188c-3.613,0-6.188,2.848-6.188,8.021c0.059,5.1,2.409,7.926,5.887,7.926c3.938,0,6.184-2.896,6.184-8.138\r
+ C173.255,173.083,171.116,170.188,167.372,170.188z M167.208,184.52c-2.19,0-3.614-2.269-3.614-6.29\r
+ c0-4.195,1.533-6.427,3.642-6.427c2.488,0,3.607,2.491,3.607,6.29C170.843,182.028,169.665,184.52,167.208,184.52z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="iso-8859-1"?>
-<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
-<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- width="311.314px" height="311.314px" viewBox="0 0 311.314 311.314" style="enable-background:new 0 0 311.314 311.314;"
- xml:space="preserve">
-<g>
- <g>
- <path d="M52.836,87.493c2.084,0.452,4.019,0.419,9.962-4.143c2.638-2.029,6.54-5.441,10.142-10.208l1.578-2.091
- c13.492-17.946,45.078-59.96,90.702-57.674c37.624,2.743,64.292,31.155,77.122,82.167c0.438,1.735,0.701,2.796,0.996,3.618
- c1.957,8.339,5.249,18.732,9.985,22.156c1.171,0.849,2.536,1.254,3.885,1.254c2.057,0,4.093-0.953,5.39-2.753
- c2.074-2.872,1.52-6.844-1.198-9.045c-1.311-1.697-3.774-8.796-5.242-15.146c-0.086-0.378-0.209-0.743-0.359-1.097
- c-0.123-0.435-0.359-1.381-0.575-2.228c-2.032-8.088-7.437-29.565-20.533-49.765C217.77,16.454,194.695,2.181,166.102,0.12
- c-0.044-0.007-0.092-0.007-0.14-0.007C113.261-2.578,78.667,43.426,63.898,63.067l-1.552,2.063
- c-4.043,5.346-8.821,8.674-10.467,9.637c-0.555,0.222-1.094,0.52-1.595,0.898c-2.067,1.566-3.077,4.237-2.521,6.768
- C48.322,84.959,50.302,86.939,52.836,87.493z"/>
- <path d="M219.208,112.966c5.01-12.525,5.137-25.462,0.328-35.494c-4.277-8.954-12.265-15.438-23.085-18.752
- c-15.887-4.861-35.143,3.959-52.784,24.172c-0.224,0.248-25.336,26.661-51.705,42.808c-0.193,0.116-19.498,11.693-39.658,17.189
- c-3.541,0.96-5.628,4.615-4.665,8.149c0.96,3.54,4.611,5.632,8.153,4.663c21.928-5.967,42.185-18.115,43.071-18.647
- c28.606-17.518,54.553-45.121,54.77-45.381c10.713-12.268,26.561-24.032,38.922-20.247c7.278,2.228,12.326,6.192,14.999,11.784
- c3.203,6.69,2.953,15.742-0.685,24.828c-6.766,16.913-27.843,37.329-59.345,57.503c-15.793,10.115-55.564,34.957-83.658,46.962
- c-3.375,1.444-4.938,5.339-3.498,8.717c1.08,2.525,3.532,4.034,6.112,4.034c0.873,0,1.759-0.171,2.611-0.534
- c29.001-12.408,69.524-37.694,85.599-47.988C178.614,161.41,209.222,137.912,219.208,112.966z"/>
- <path d="M112.222,63.372c-3.013,3.323-5.718,6.891-8.634,10.292c-3.816,4.461-7.986,8.629-12.342,12.56
- c-4.478,4.045-8.102,6.935-13.382,9.974c-5.604,3.21-11.315,6.461-17.119,9.29c-1.997,0.976-3.715,1.605-5.96,2.281
- c-3.463,1.042-5.614,4.617-4.637,8.172c0.939,3.427,4.704,5.684,8.172,4.644c6.791-2.047,12.948-5.544,19.077-9.028
- c5.183-2.943,10.325-5.595,15.083-9.216c9.279-7.053,17.261-15.289,24.604-24.306c2.976-3.651,6.153-7.126,9.476-10.466
- c1.812-1.823,3.686-3.578,5.602-5.299c0.996-0.893,2.009-1.763,3.035-2.628c0.519-0.435,1.044-0.866,1.574-1.295
- c0.135-0.113,1.167-0.925,1.429-1.136c4.627-3.544,9.557-6.694,14.743-9.356c4.899-2.521,9.813-4.279,15.775-5.523
- c1.975-0.411,2.405-0.455,3.884-0.605c3.6-0.371,6.646-2.741,6.646-6.641c0-3.344-3.035-7.019-6.646-6.645
- C148.586,30.93,128.048,45.943,112.222,63.372z"/>
- <path d="M60.527,190.57c14.432-4.952,88.526-32.62,130.02-90.781c2.133-2.986,1.438-7.13-1.546-9.266
- c-2.991-2.13-7.139-1.436-9.271,1.55c-39.136,54.862-109.758,81.205-123.52,85.937c-0.294,0.096-0.476,0.161-0.539,0.182
- c-3.431,1.308-5.159,5.137-3.858,8.565c1.006,2.659,3.532,4.288,6.216,4.288c0.75,0,1.518-0.127,2.264-0.394L60.527,190.57z"/>
- <path d="M241.284,230.113c-9.205-3.069-20.475-11.091-31.367-18.849c-15.78-11.246-29.399-20.947-40.501-19.038
- c-8.344,1.444-22.917,10.76-45.922,25.916c-16.582,10.934-35.383,23.325-43.559,25.526c-3.542,0.961-5.642,4.603-4.688,8.141
- c0.799,2.971,3.48,4.922,6.413,4.922c0.572,0,1.152-0.076,1.727-0.229c10.251-2.766,28.308-14.668,47.424-27.265
- c15.439-10.178,34.657-22.846,40.864-23.917c5.641-0.966,19.445,8.856,30.536,16.758c11.69,8.326,23.777,16.937,34.872,20.64
- c3.483,1.156,7.244-0.726,8.404-4.203C246.646,235.038,244.764,231.273,241.284,230.113z"/>
- <path d="M224.652,262.655c-5.355-1.934-14.058-7.313-22.477-12.512c-17.781-10.988-29.081-17.655-37.191-16.259
- c-8.214,1.424-25.467,13.145-54.418,34.29c-3.547,2.587-6.606,4.818-8.73,6.32c-2.993,2.122-3.708,6.263-1.595,9.261
- c1.3,1.831,3.35,2.81,5.433,2.81c1.325,0,2.663-0.396,3.826-1.215c2.207-1.561,5.306-3.829,8.897-6.44
- c11.522-8.415,42.137-30.766,48.78-31.912c4.144-0.284,19.089,8.936,28.017,14.452c9.411,5.811,18.295,11.3,24.948,13.709
- c3.445,1.246,7.258-0.541,8.504-3.993C229.891,267.706,228.109,263.904,224.652,262.655z"/>
- <path d="M202.216,295.679c-3.73-2.434-7.159-4.887-10.482-7.248c-10.889-7.785-20.31-14.507-30.628-12.707
- c-11.625,2.006-30.132,20.619-33.727,24.321c-2.551,2.639-2.481,6.845,0.154,9.401c1.291,1.238,2.955,1.868,4.615,1.868
- c1.738,0,3.473-0.674,4.774-2.022c8.897-9.188,21.537-19.63,26.439-20.479c4.85-0.831,12.184,4.381,20.66,10.431
- c3.265,2.334,6.968,4.973,10.938,7.566c3.069,2.002,7.189,1.137,9.195-1.937C206.152,301.798,205.287,297.688,202.216,295.679z"/>
- <path d="M260.67,158.56c-5.537-2.338-11.327-4.798-15.988-8.677c-5.13-4.268-7.515-9.871-8.586-16.343
- c-1.386-8.439-14.192-4.848-12.81,3.528c2.841,17.23,15.523,26.562,30.677,32.959c3.336,1.417,7.08,1.047,9.085-2.379
- C264.706,164.829,264.003,159.973,260.67,158.56z"/>
- <path d="M247.776,193.223c-4.986-1.54-8.774-3.483-14.052-6.604c-9.667-5.712-18.486-13.986-22.774-24.564
- c-1.358-3.351-4.37-5.685-8.172-4.637c-3.187,0.876-5.999,4.812-4.641,8.175c7.919,19.517,26.091,34.273,46.11,40.443
- C252.458,208.561,255.941,195.738,247.776,193.223z"/>
- </g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-<g>
-</g>
-</svg>
+<?xml version="1.0" encoding="iso-8859-1"?>\r
+<!-- Generator: Adobe Illustrator 16.0.0, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">\r
+<svg version="1.1" id="Capa_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ width="311.314px" height="311.314px" viewBox="0 0 311.314 311.314" style="enable-background:new 0 0 311.314 311.314;"\r
+ xml:space="preserve">\r
+<g>\r
+ <g>\r
+ <path d="M52.836,87.493c2.084,0.452,4.019,0.419,9.962-4.143c2.638-2.029,6.54-5.441,10.142-10.208l1.578-2.091\r
+ c13.492-17.946,45.078-59.96,90.702-57.674c37.624,2.743,64.292,31.155,77.122,82.167c0.438,1.735,0.701,2.796,0.996,3.618\r
+ c1.957,8.339,5.249,18.732,9.985,22.156c1.171,0.849,2.536,1.254,3.885,1.254c2.057,0,4.093-0.953,5.39-2.753\r
+ c2.074-2.872,1.52-6.844-1.198-9.045c-1.311-1.697-3.774-8.796-5.242-15.146c-0.086-0.378-0.209-0.743-0.359-1.097\r
+ c-0.123-0.435-0.359-1.381-0.575-2.228c-2.032-8.088-7.437-29.565-20.533-49.765C217.77,16.454,194.695,2.181,166.102,0.12\r
+ c-0.044-0.007-0.092-0.007-0.14-0.007C113.261-2.578,78.667,43.426,63.898,63.067l-1.552,2.063\r
+ c-4.043,5.346-8.821,8.674-10.467,9.637c-0.555,0.222-1.094,0.52-1.595,0.898c-2.067,1.566-3.077,4.237-2.521,6.768\r
+ C48.322,84.959,50.302,86.939,52.836,87.493z"/>\r
+ <path d="M219.208,112.966c5.01-12.525,5.137-25.462,0.328-35.494c-4.277-8.954-12.265-15.438-23.085-18.752\r
+ c-15.887-4.861-35.143,3.959-52.784,24.172c-0.224,0.248-25.336,26.661-51.705,42.808c-0.193,0.116-19.498,11.693-39.658,17.189\r
+ c-3.541,0.96-5.628,4.615-4.665,8.149c0.96,3.54,4.611,5.632,8.153,4.663c21.928-5.967,42.185-18.115,43.071-18.647\r
+ c28.606-17.518,54.553-45.121,54.77-45.381c10.713-12.268,26.561-24.032,38.922-20.247c7.278,2.228,12.326,6.192,14.999,11.784\r
+ c3.203,6.69,2.953,15.742-0.685,24.828c-6.766,16.913-27.843,37.329-59.345,57.503c-15.793,10.115-55.564,34.957-83.658,46.962\r
+ c-3.375,1.444-4.938,5.339-3.498,8.717c1.08,2.525,3.532,4.034,6.112,4.034c0.873,0,1.759-0.171,2.611-0.534\r
+ c29.001-12.408,69.524-37.694,85.599-47.988C178.614,161.41,209.222,137.912,219.208,112.966z"/>\r
+ <path d="M112.222,63.372c-3.013,3.323-5.718,6.891-8.634,10.292c-3.816,4.461-7.986,8.629-12.342,12.56\r
+ c-4.478,4.045-8.102,6.935-13.382,9.974c-5.604,3.21-11.315,6.461-17.119,9.29c-1.997,0.976-3.715,1.605-5.96,2.281\r
+ c-3.463,1.042-5.614,4.617-4.637,8.172c0.939,3.427,4.704,5.684,8.172,4.644c6.791-2.047,12.948-5.544,19.077-9.028\r
+ c5.183-2.943,10.325-5.595,15.083-9.216c9.279-7.053,17.261-15.289,24.604-24.306c2.976-3.651,6.153-7.126,9.476-10.466\r
+ c1.812-1.823,3.686-3.578,5.602-5.299c0.996-0.893,2.009-1.763,3.035-2.628c0.519-0.435,1.044-0.866,1.574-1.295\r
+ c0.135-0.113,1.167-0.925,1.429-1.136c4.627-3.544,9.557-6.694,14.743-9.356c4.899-2.521,9.813-4.279,15.775-5.523\r
+ c1.975-0.411,2.405-0.455,3.884-0.605c3.6-0.371,6.646-2.741,6.646-6.641c0-3.344-3.035-7.019-6.646-6.645\r
+ C148.586,30.93,128.048,45.943,112.222,63.372z"/>\r
+ <path d="M60.527,190.57c14.432-4.952,88.526-32.62,130.02-90.781c2.133-2.986,1.438-7.13-1.546-9.266\r
+ c-2.991-2.13-7.139-1.436-9.271,1.55c-39.136,54.862-109.758,81.205-123.52,85.937c-0.294,0.096-0.476,0.161-0.539,0.182\r
+ c-3.431,1.308-5.159,5.137-3.858,8.565c1.006,2.659,3.532,4.288,6.216,4.288c0.75,0,1.518-0.127,2.264-0.394L60.527,190.57z"/>\r
+ <path d="M241.284,230.113c-9.205-3.069-20.475-11.091-31.367-18.849c-15.78-11.246-29.399-20.947-40.501-19.038\r
+ c-8.344,1.444-22.917,10.76-45.922,25.916c-16.582,10.934-35.383,23.325-43.559,25.526c-3.542,0.961-5.642,4.603-4.688,8.141\r
+ c0.799,2.971,3.48,4.922,6.413,4.922c0.572,0,1.152-0.076,1.727-0.229c10.251-2.766,28.308-14.668,47.424-27.265\r
+ c15.439-10.178,34.657-22.846,40.864-23.917c5.641-0.966,19.445,8.856,30.536,16.758c11.69,8.326,23.777,16.937,34.872,20.64\r
+ c3.483,1.156,7.244-0.726,8.404-4.203C246.646,235.038,244.764,231.273,241.284,230.113z"/>\r
+ <path d="M224.652,262.655c-5.355-1.934-14.058-7.313-22.477-12.512c-17.781-10.988-29.081-17.655-37.191-16.259\r
+ c-8.214,1.424-25.467,13.145-54.418,34.29c-3.547,2.587-6.606,4.818-8.73,6.32c-2.993,2.122-3.708,6.263-1.595,9.261\r
+ c1.3,1.831,3.35,2.81,5.433,2.81c1.325,0,2.663-0.396,3.826-1.215c2.207-1.561,5.306-3.829,8.897-6.44\r
+ c11.522-8.415,42.137-30.766,48.78-31.912c4.144-0.284,19.089,8.936,28.017,14.452c9.411,5.811,18.295,11.3,24.948,13.709\r
+ c3.445,1.246,7.258-0.541,8.504-3.993C229.891,267.706,228.109,263.904,224.652,262.655z"/>\r
+ <path d="M202.216,295.679c-3.73-2.434-7.159-4.887-10.482-7.248c-10.889-7.785-20.31-14.507-30.628-12.707\r
+ c-11.625,2.006-30.132,20.619-33.727,24.321c-2.551,2.639-2.481,6.845,0.154,9.401c1.291,1.238,2.955,1.868,4.615,1.868\r
+ c1.738,0,3.473-0.674,4.774-2.022c8.897-9.188,21.537-19.63,26.439-20.479c4.85-0.831,12.184,4.381,20.66,10.431\r
+ c3.265,2.334,6.968,4.973,10.938,7.566c3.069,2.002,7.189,1.137,9.195-1.937C206.152,301.798,205.287,297.688,202.216,295.679z"/>\r
+ <path d="M260.67,158.56c-5.537-2.338-11.327-4.798-15.988-8.677c-5.13-4.268-7.515-9.871-8.586-16.343\r
+ c-1.386-8.439-14.192-4.848-12.81,3.528c2.841,17.23,15.523,26.562,30.677,32.959c3.336,1.417,7.08,1.047,9.085-2.379\r
+ C264.706,164.829,264.003,159.973,260.67,158.56z"/>\r
+ <path d="M247.776,193.223c-4.986-1.54-8.774-3.483-14.052-6.604c-9.667-5.712-18.486-13.986-22.774-24.564\r
+ c-1.358-3.351-4.37-5.685-8.172-4.637c-3.187,0.876-5.999,4.812-4.641,8.175c7.919,19.517,26.091,34.273,46.11,40.443\r
+ C252.458,208.561,255.941,195.738,247.776,193.223z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+<g>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="utf-8"?>
-<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->
-<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"
- viewBox="0 0 1920 1080" style="enable-background:new 0 0 1920 1080;" xml:space="preserve">
-<style type="text/css">
- .st0{fill:#003268;}
- .st1{fill:#FFFFFF;}
- .st2{fill:#005BCE;}
-</style>
-<g>
- <g>
- <path class="st0" d="M1107.86,464.03c-38.08-0.02-76.17-0.02-114.24,0.05c-2.02,0-3.2-0.62-4.56-2.21
- c-2.29-2.68-4.94-5.26-7.96-6.97c-2.41-1.38-2.96-2.75-2.96-5.27c0.07-48.71,0.04-97.43,0.04-146.14c0-1.2,0.07-2.41-0.04-3.59
- c-0.37-4.36-4.07-7.2-8.41-6.52c-3.87,0.61-6.02,3.54-6.02,8.34c-0.02,24.74,0,49.48,0,74.22c0,24.6-0.02,49.23,0.02,73.86
- c0.03,2.37-0.41,3.72-2.82,5.04c-2.96,1.57-5.56,4.07-7.79,6.63c-1.47,1.69-2.65,2.67-5,2.63c-7.59-0.15-15.19-0.04-22.79,0
- c-3.52,0.02-6.26,1.66-8.16,4.55c-2.24,3.33-2.34,6.96-0.55,10.51c1.88,3.7,5.17,5.52,9.28,5.56c7.58,0.07,15.2-0.06,22.77,0.11
- c1.34,0.05,2.8,1.07,3.94,1.97c3,2.41,5.72,5.23,8.87,7.42c1.53,1.05,2.3,1.82,2.28,3.73c-0.11,7.15-0.07,14.31-0.05,21.47
- c0,1.18-0.02,2.41,0.27,3.55c0.83,3.39,4.18,5.65,7.61,5.32c3.77-0.37,6.51-3.22,6.57-7.23c0.09-7.7,0.07-15.41,0-23.11
- c0-1.97,0.79-2.89,2.54-3.95c2.89-1.72,5.72-3.91,7.86-6.5c1.62-1.97,3.07-2.82,5.58-2.82c27.57,0.09,55.13,0.06,82.67,0.06
- c10.64,0,21.28,0.07,31.9-0.02c6.66-0.06,11.03-4.55,10.84-10.79C1119.35,467.84,1114.91,464.03,1107.86,464.03z M983.25,475.56
- c0,0.01,0,0.02-0.01,0.04c-0.01,0.13-0.02,0.25-0.04,0.38c-0.02,0.19-0.05,0.37-0.09,0.56c-0.1,0.55-0.24,1.1-0.42,1.63
- c-0.06,0.18-0.12,0.36-0.19,0.53c-0.08,0.21-0.16,0.41-0.26,0.62c-0.08,0.19-0.16,0.37-0.26,0.54c-0.18,0.36-0.38,0.72-0.6,1.05
- c-0.32,0.5-0.68,0.98-1.07,1.44c0,0.01,0,0.01-0.01,0.02c-0.27,0.3-0.54,0.58-0.82,0.86c-0.15,0.14-0.3,0.28-0.45,0.42
- c0,0,0,0.01-0.01,0.01c-0.2,0.18-0.41,0.35-0.62,0.51c-0.16,0.13-0.32,0.25-0.48,0.36c-0.94,0.67-1.98,1.22-3.09,1.62
- c-0.78,0.28-1.58,0.49-2.42,0.62c-0.42,0.06-0.84,0.11-1.27,0.13c-0.21,0-0.42,0.01-0.64,0.01c-0.23,0.01-0.45,0-0.68-0.02
- c-0.17-0.01-0.34-0.03-0.52-0.05c-0.37-0.04-0.74-0.11-1.1-0.2c-0.36-0.09-0.72-0.2-1.07-0.32c-1.28-0.47-2.5-1.18-3.6-2.07
- c-0.19-0.15-0.38-0.32-0.56-0.48c-0.24-0.22-0.47-0.44-0.69-0.67c-0.05-0.05-0.1-0.11-0.15-0.16c-0.22-0.24-0.44-0.49-0.64-0.74
- c-0.26-0.31-0.5-0.63-0.72-0.96c-0.22-0.33-0.43-0.66-0.63-1.01c-0.38-0.7-0.71-1.42-0.95-2.16c-0.13-0.37-0.23-0.75-0.32-1.12
- c-0.04-0.19-0.08-0.38-0.11-0.57c-0.06-0.29-0.1-0.59-0.11-0.89c-0.03-0.3-0.04-0.6-0.04-0.9c0-0.22,0.01-0.44,0.01-0.66
- c0.02-0.4,0.05-0.79,0.11-1.18c0.02-0.14,0.04-0.29,0.07-0.43c0.01-0.08,0.02-0.15,0.04-0.23c0.02-0.07,0.04-0.15,0.05-0.23
- c0.03-0.16,0.06-0.31,0.1-0.46c0.06-0.25,0.13-0.5,0.21-0.74c0.16-0.54,0.37-1.07,0.61-1.58c0.08-0.18,0.17-0.36,0.27-0.54
- c0.12-0.22,0.24-0.44,0.37-0.65c0.13-0.21,0.26-0.42,0.41-0.63c0.28-0.4,0.59-0.79,0.92-1.16c0.17-0.2,0.36-0.4,0.56-0.58
- c0.16-0.16,0.32-0.31,0.49-0.46c0.18-0.16,0.37-0.32,0.57-0.47c0.19-0.15,0.39-0.29,0.6-0.43c0.61-0.42,1.27-0.78,1.96-1.08
- c0.23-0.1,0.46-0.19,0.7-0.28c0.17-0.06,0.34-0.12,0.51-0.17c0.17-0.06,0.34-0.11,0.51-0.15s0.35-0.09,0.53-0.13
- c0.18-0.03,0.35-0.07,0.53-0.1c0.55-0.09,1.1-0.15,1.67-0.18c0.22-0.01,0.44-0.01,0.66-0.01c0.16,0,0.32,0,0.48,0.01
- c0.15,0.01,0.31,0.02,0.47,0.03c0.31,0.03,0.62,0.06,0.92,0.11c0.27,0.04,0.54,0.1,0.81,0.16c0.26,0.06,0.53,0.13,0.79,0.21
- c0.25,0.07,0.51,0.16,0.75,0.25l0.01,0.01c0.24,0.09,0.48,0.18,0.71,0.28c0.04,0.02,0.07,0.03,0.11,0.06
- c0.22,0.1,0.43,0.2,0.65,0.32c0.22,0.11,0.44,0.24,0.66,0.37c0.01,0.01,0.02,0.01,0.03,0.02c0.22,0.14,0.44,0.29,0.66,0.44
- c0.21,0.15,0.42,0.31,0.63,0.48c0.1,0.08,0.2,0.16,0.29,0.24c0.2,0.17,0.4,0.36,0.59,0.55c0.18,0.17,0.35,0.35,0.51,0.53
- c0.27,0.29,0.52,0.59,0.75,0.91c0.11,0.16,0.23,0.32,0.34,0.48c0.22,0.32,0.42,0.66,0.61,1.01c0.25,0.47,0.48,0.96,0.66,1.47
- c0.08,0.19,0.15,0.38,0.21,0.58c0.41,1.24,0.62,2.57,0.6,3.95C983.31,474.88,983.29,475.22,983.25,475.56z"/>
- <path class="st0" d="M977.13,266.06c0,2.38,0.18,4.77-0.05,7.13c-0.33,3.46-2.74,5.61-5.97,5.68c-3.35,0.08-6.09-2.12-6.28-5.68
- c-0.26-4.85-0.26-9.73,0-14.58c0.18-3.35,2.89-5.5,6.12-5.5c3.24,0,5.81,2.14,6.15,5.5c0.24,2.46,0.05,4.97,0.05,7.46
- C977.13,266.06,977.13,266.06,977.13,266.06z"/>
- <path class="st0" d="M977.18,682.72c0,2.27,0.14,4.55-0.03,6.81c-0.29,3.76-2.88,6.18-6.28,6.13c-3.29-0.05-5.91-2.38-6.08-5.97
- c-0.22-4.64-0.22-9.3-0.02-13.95c0.16-3.57,2.77-5.88,6.09-5.93c3.45-0.04,6.03,2.35,6.3,6.08c0.17,2.26,0.03,4.54,0.03,6.82
- C977.18,682.72,977.18,682.72,977.18,682.72z"/>
- <path class="st0" d="M1192.26,474.54c-0.1,3.29-2.6,5.76-6.06,5.98c-0.21,0.02-0.44,0.01-0.65,0.01h-6.5c0-0.01,0-0.01,0-0.01
- c-2.27,0-4.55,0.1-6.82-0.03c-3.29-0.18-5.7-2.67-5.86-5.83c-0.16-3.24,2.25-6.29,5.58-6.45c4.86-0.21,9.75-0.2,14.61-0.01
- C1189.94,468.34,1192.36,471.27,1192.26,474.54z"/>
- <path class="st0" d="M775.52,474.41c-0.01,3.28-2.51,5.85-5.93,6.11c-0.21,0.01-0.44,0.01-0.65,0.01
- c-1.44,0.01-2.88,0.01-4.33,0.01c-0.72-0.01-1.45-0.01-2.17-0.01c-1.8-0.01-3.61,0.05-5.42,0.02c-0.46-0.01-0.93-0.03-1.4-0.05
- c-3.44-0.17-5.94-2.75-5.99-6.04c-0.05-3.27,2.4-6.15,5.78-6.27c4.75-0.18,9.53-0.18,14.29-0.01
- C773.07,468.31,775.54,471.15,775.52,474.41z"/>
- <path class="st1" d="M958.61,474.59c0,0.3,0.01,0.6,0.04,0.9c-0.04-0.3-0.05-0.6-0.05-0.91c0-0.22,0.01-0.43,0.02-0.65
- C958.62,474.15,958.61,474.37,958.61,474.59z"/>
- <path class="st1" d="M961.78,466.1c-0.33,0.37-0.64,0.76-0.92,1.16C961.14,466.86,961.44,466.47,961.78,466.1z"/>
- <path class="st1" d="M968.74,462.25c0.54-0.1,1.1-0.16,1.67-0.18C969.84,462.1,969.29,462.16,968.74,462.25z"/>
- <path class="st1" d="M970.5,486.91c0.22,0,0.43-0.01,0.64-0.01c-0.22,0.01-0.43,0.02-0.65,0.02c-0.23,0-0.45-0.01-0.67-0.03
- C970.05,486.91,970.27,486.92,970.5,486.91z"/>
- <path class="st1" d="M971.07,462.05c0.16,0,0.32,0.01,0.48,0.02c-0.16-0.01-0.32-0.01-0.48-0.01c-0.22,0-0.44,0-0.66,0.01
- C970.63,462.05,970.85,462.05,971.07,462.05z"/>
- <path class="st1" d="M979.48,483.23c0.28-0.28,0.55-0.56,0.82-0.86c-0.39,0.46-0.81,0.89-1.27,1.28
- C979.18,483.51,979.33,483.37,979.48,483.23z"/>
- <path class="st1" d="M980.31,482.35c0.39-0.46,0.75-0.94,1.07-1.44C981.06,481.42,980.71,481.9,980.31,482.35z"/>
- </g>
- <g>
- <path class="st2" d="M938.51,758.43c-34.37-2.96-66.64-13.09-97.29-28.53c-49.17-24.78-88.16-60.95-116.45-107.95
- c-25.2-41.88-38.29-87.64-39.36-136.77c-0.09-3.85-0.09-7.71,0-11.52c0.09-7.29,0.48-14.49,1.12-21.63
- c11.91-134.4,113.67-241.26,251.03-257.66c4.31-0.5,8.67-0.59,14.3-0.96v29.07c-46.37,3.83-89.21,17.01-126.34,44.05
- c-69.97,50.9-108.26,116.27-110.73,196.23c-0.2,6.09-0.18,12.24,0.07,18.48c0.42,11.65,1.55,23.58,3.44,35.79
- c14.1,91.8,67.32,155.37,150.6,193.47c20.65,9.46,44.33,12.65,66.88,17.32c10.14,2.1,16.07,5.85,16.59,16.44
- C952.79,753.94,948.89,759.33,938.51,758.43z"/>
- <path class="st0" d="M1162.02,683.4c-44.03,42.88-98.06,67.32-159.42,74.45c-8.29,0.97-17.41,2.57-19.25-9.57
- c-1.57-10.33,4.3-17.15,16.13-19.83c19.48-4.43,39.28-7.97,58.3-14c35.17-11.17,65.04-31.76,90.27-58.19
- c73.17-76.55,94.83-166.82,58.98-265.97c-35.85-99.21-110.67-153.99-215.54-167.1c-1.7-0.21-3.41-0.45-6.61-0.87v-29.03
- c11.2,1.26,21.95,1.57,32.31,3.75c112.32,23.39,189.63,88.88,222.52,198.65C1272.61,505.62,1244.34,603.25,1162.02,683.4z"/>
- </g>
-</g>
-<g>
- <path class="st0" d="M325.24,804.05c-1.87-3.14-4.47-5.6-7.78-7.36s-7.05-2.65-11.22-2.65h-25.68v65.84h10.4v-24.52h15.28
- c4.17,0,7.91-0.88,11.22-2.65c3.31-1.76,5.91-4.21,7.78-7.36c1.87-3.14,2.8-6.69,2.8-10.65
- C328.04,810.75,327.11,807.2,325.24,804.05z M316.2,820.15c-0.97,1.61-2.33,2.87-4.08,3.78c-1.74,0.9-3.71,1.35-5.88,1.35h-15.28
- v-21.11h15.28c2.2,0,4.17,0.45,5.91,1.35c1.73,0.91,3.08,2.16,4.05,3.75c0.96,1.6,1.45,3.41,1.45,5.43
- C317.65,816.73,317.16,818.54,316.2,820.15z"/>
- <path class="st0" d="M335.68,791.65v68.23h10.03v-68.23H335.68z"/>
- <path class="st0" d="M393.83,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21
- c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.53,0,10.68-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C398.62,825.33,397.02,820.4,393.83,817.07z M388.63,846.17
- c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M449.73,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.87,1.55c-2.45,1.02-4.64,2.43-6.58,4.2
- V817c0-1.25-0.23-2.26-0.71-3.01s-1.36-1.13-2.65-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09
- c2.11-1.02,4.17-1.52,6.16-1.52c2.92,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74
- C453.96,825.76,452.55,820.81,449.73,817.3z"/>
- <path class="st0" d="M527.99,791.65v25.67c-1.63-1.56-3.48-2.8-5.55-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13
- c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51s4.31,6.55,7.52,8.63
- c3.2,2.07,6.85,3.1,10.93,3.1c2.82,0,5.39-0.52,7.72-1.56c2.33-1.05,4.41-2.47,6.22-4.28v0.55c0,2.91,1.19,4.37,3.58,4.37h6.44
- v-68.23H527.99z M527.99,844.24c-1.51,1.93-3.2,3.5-5.09,4.69c-1.88,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82
- c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.72-4.61-1.72-7.34c0-2.76,0.58-5.24,1.74-7.43c1.17-2.19,2.79-3.9,4.86-5.13
- c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.1,2.2c1.16,0.88,2,1.73,2.53,2.56V844.24z"/>
- <path class="st0" d="M560.17,794.44c-0.23-0.33-0.55-0.55-0.95-0.67l-3.26-0.83c-2.06,2.24-3.76,4.56-5.11,6.95
- c-1.35,2.39-2.02,5.04-2.02,7.96c0,2.02,0.07,3.69,0.23,5.01c0.15,1.32,0.38,2.84,0.69,4.56c0.09,0.27,0.15,0.53,0.18,0.78
- c0.03,0.24,0.06,0.44,0.09,0.6l8.83-1.57c-0.61-2.05-1.07-3.82-1.38-5.31c-0.3-1.49-0.46-2.97-0.46-4.44c0-1.66,0.23-3.19,0.69-4.6
- c0.47-1.41,1.06-2.9,1.8-4.46c0.27-0.62,0.51-1.19,0.71-1.73c0.2-0.54,0.3-0.94,0.3-1.22C560.51,795.1,560.4,794.76,560.17,794.44z
- "/>
- <path class="st0" d="M613.44,823.88c-2.1-3.7-5.01-6.59-8.72-8.67c-3.71-2.09-7.91-3.13-12.6-3.13c-4.7,0-8.9,1.04-12.63,3.13
- c-3.73,2.08-6.63,4.97-8.72,8.67c-2.09,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.15,12.51c2.1,3.68,5.01,6.57,8.72,8.65
- c3.71,2.09,7.91,3.13,12.61,3.13c4.69,0,8.89-1.04,12.6-3.13c3.71-2.08,6.62-4.97,8.72-8.65s3.15-7.85,3.15-12.51
- S615.54,827.58,613.44,823.88z M604.75,843.85c-1.25,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84s-5.25-0.62-7.46-1.87
- c-2.2-1.24-3.93-2.95-5.17-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43c1.24-2.2,2.97-3.91,5.17-5.13
- c2.21-1.23,4.7-1.84,7.46-1.84s5.24,0.61,7.45,1.84c2.21,1.22,3.93,2.93,5.18,5.13c1.24,2.19,1.86,4.67,1.86,7.43
- S605.99,841.66,604.75,843.85z"/>
- <path class="st0" d="M654.11,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.6,0-4.99,0.64-7.15,1.91c-2.16,1.28-4.04,3.02-5.64,5.23
- v-1.52c0-1.38-0.33-2.53-1.01-3.43c-0.67-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43
- c1.89-1.35,3.96-2.03,6.23-2.03c1.02,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06
- c0.89-0.71,1.46-1.67,1.7-2.9l1.02-4.55C656.43,813.15,655.17,812.72,654.11,812.45z"/>
- <path class="st0" d="M707.36,813.14c-1.38-0.28-3.17-0.42-5.38-0.42c-3.77,0-7.18,0.39-10.21,1.15c-2.76-1.16-5.72-1.74-8.88-1.74
- c-3.59,0-6.86,0.79-9.82,2.37c-2.96,1.58-5.3,3.73-7,6.46c-1.7,2.73-2.55,5.74-2.55,9.02c0,1.96,0.31,3.85,0.94,5.66
- c0.63,1.81,1.53,3.46,2.69,4.96c-1.41,1.14-2.56,2.46-3.45,3.96s-1.33,3.07-1.33,4.69c0,2.4,0.59,4.46,1.77,6.19
- c1.18,1.73,2.85,3.04,5.02,3.91c2.16,0.88,4.67,1.27,7.52,1.18l9.8-0.33c2.85-0.09,5.06,0.22,6.64,0.95
- c1.58,0.72,2.37,1.8,2.37,3.24c0,1.56-0.89,2.78-2.69,3.66c-1.79,0.87-4.3,1.31-7.52,1.31h-3.22c-1.07,0-2.94-0.14-5.59-0.42
- c-2.65-0.27-5.27-0.62-7.84-1.05c-0.56-0.1-1.08-0.14-1.57-0.14c-1.53,0-2.74,0.45-3.63,1.36c-0.89,0.9-1.43,2.24-1.61,4.02
- l-0.32,2.9c3.58,0.86,7.33,1.53,11.24,2.02c3.91,0.49,7.74,0.74,11.48,0.74c4.39,0,8.15-0.57,11.27-1.7
- c3.13-1.14,5.53-2.79,7.18-4.95c1.66-2.16,2.49-4.74,2.49-7.75c0-2.7-0.68-5.05-2.03-7.04s-3.3-3.53-5.86-4.6
- c-2.57-1.07-5.63-1.61-9.18-1.61c-0.77,0-1.34,0.02-1.71,0.05l-9.24,0.36c-1.69,0.07-2.99-0.14-3.91-0.62
- c-0.92-0.47-1.38-1.26-1.38-2.37c0-0.49,0.11-0.99,0.34-1.52c0.23-0.52,0.56-0.99,0.99-1.42c2.98,1.53,6.23,2.3,9.75,2.3
- c3.59,0,6.88-0.83,9.87-2.49c2.99-1.65,5.35-3.9,7.09-6.74c1.73-2.83,2.6-5.97,2.6-9.4c0-3.07-0.8-5.88-2.4-8.42
- c0.83,0.03,1.58,0.13,2.26,0.32c0.43,0.06,0.72,0.09,0.87,0.09c1.41,0,2.48-0.6,3.2-1.82c0.72-1.21,1.05-2.61,0.99-4.21
- L707.36,813.14z M691.45,834.6c-0.86,1.33-2.04,2.39-3.55,3.15c-1.5,0.77-3.16,1.15-4.97,1.15c-1.77,0-3.41-0.38-4.9-1.15
- c-1.48-0.76-2.66-1.82-3.51-3.15c-0.86-1.33-1.29-2.81-1.29-4.44c0-1.66,0.43-3.17,1.29-4.53c0.85-1.37,2.03-2.44,3.51-3.22
- c1.49-0.78,3.13-1.17,4.9-1.17c1.81,0,3.47,0.39,4.97,1.17c1.51,0.78,2.69,1.85,3.55,3.22c0.85,1.36,1.28,2.87,1.28,4.53
- C692.73,831.79,692.3,833.27,691.45,834.6z"/>
- <path class="st0" d="M748.59,817.07c-3.19-3.33-7.92-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.93,0.78s-4.74,1.26-6.9,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.88,0.49,1.82,0.74,2.83,0.74c0.92,0,1.77-0.17,2.53-0.51
- c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.38,0,5.84,0.93,7.39,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.91-0.55-4.08-0.98-6.54-1.29c-2.45-0.3-4.44-0.46-5.98-0.46c-6.22,0-10.87,1.31-13.94,3.92c-3.06,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.72,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15s4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.17,4.1c0.78,1.01,2,1.52,3.66,1.52h5.15v-28.07C753.37,825.33,751.78,820.4,748.59,817.07z M743.39,846.17
- c-2.27,1.63-4.5,2.95-6.7,3.98c-2.19,1.03-4.48,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.85-4.15,2.57-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,11,1.38V846.17z"/>
- <path class="st0" d="M804.48,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.86,1.55c-2.46,1.02-4.65,2.43-6.58,4.2
- V817c0-1.25-0.24-2.26-0.72-3.01c-0.47-0.75-1.35-1.13-2.64-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.93-4.09
- c2.12-1.02,4.17-1.52,6.17-1.52c2.91,0,5.12,0.92,6.62,2.76s2.26,4.74,2.26,8.69v26.64h10.03v-27.74
- C808.72,825.76,807.31,820.81,804.48,817.3z"/>
- <path class="st0" d="M822.98,812.86v47.02h10.03v-47.02H822.98z M833.81,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.02-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.89,2.16-0.89,3.35
- c0,1.2,0.29,2.32,0.89,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.31-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C834.71,798.28,834.41,797.16,833.81,796.12z"/>
- <path class="st0" d="M872.87,836.83c-2.31-2.3-5.96-4.35-10.92-6.16c-2.3-0.8-3.91-1.58-4.83-2.33c-0.93-0.75-1.39-1.66-1.39-2.73
- c0-1.32,0.43-2.33,1.29-3.02c0.86-0.69,2.12-1.03,3.78-1.03c0.55,0,1.1,0.07,1.65,0.2c0.55,0.14,1.13,0.33,1.73,0.56
- c0.6,0.23,1.03,0.4,1.31,0.53c0.86,0.33,1.67,0.5,2.44,0.5c0.98,0,1.88-0.24,2.71-0.71c0.83-0.48,1.44-1.13,1.84-1.96l1.75-3.45
- c-1.69-1.65-3.79-2.93-6.3-3.82c-2.52-0.89-4.99-1.33-7.41-1.33c-3.01,0-5.62,0.56-7.84,1.68c-2.23,1.12-3.94,2.7-5.13,4.74
- c-1.2,2.04-1.8,4.41-1.8,7.11c0,2.23,0.37,4.14,1.11,5.72c0.73,1.58,2.07,3.06,4.02,4.44c1.95,1.38,4.72,2.75,8.31,4.1
- c2.54,0.98,4.37,1.95,5.49,2.92c1.12,0.97,1.68,2.05,1.68,3.24c0,1.69-0.56,2.99-1.68,3.89c-1.12,0.91-2.69,1.36-4.71,1.36
- c-1.44,0-2.8-0.23-4.07-0.69c-1.28-0.46-2.71-1.09-4.31-1.89c-0.85-0.43-1.79-0.64-2.8-0.64c-0.92,0-1.78,0.21-2.58,0.64
- c-0.8,0.43-1.42,1.03-1.88,1.8l-1.89,3.31c2.18,2.08,4.68,3.76,7.52,5.01c2.84,1.26,5.9,1.89,9.18,1.89c3.4,0,6.41-0.62,9.02-1.86
- c2.6-1.25,4.62-2.99,6.05-5.25c1.42-2.25,2.14-4.87,2.14-7.84C876.35,842.11,875.19,839.13,872.87,836.83z"/>
- <path class="st0" d="M920.42,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.91,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2.01,2.03c0.87,0.49,1.81,0.74,2.83,0.74
- c0.92,0,1.76-0.17,2.53-0.51c1.68-0.77,3.19-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78
- c1.55,1.86,2.34,4.84,2.37,8.95c-1.9-0.55-4.08-0.98-6.53-1.29c-2.46-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.88,1.31-13.94,3.92
- c-3.07,2.6-4.6,6.25-4.6,10.94c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.72,5.15c2.4,1.26,4.97,1.88,7.73,1.88
- c5.52,0,10.68-2.28,15.46-6.85v0.41c0,1.72,0.39,3.09,1.17,4.1c0.79,1.01,2.01,1.52,3.66,1.52h5.15v-28.07
- C925.2,825.33,923.61,820.4,920.42,817.07z M915.22,846.17c-2.27,1.63-4.5,2.95-6.69,3.98c-2.2,1.03-4.49,1.54-6.88,1.54
- c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35c0-2.45,0.86-4.15,2.58-5.1c1.71-0.95,4.37-1.43,7.95-1.43
- c3.96,0,7.63,0.46,11,1.38V846.17z"/>
- <path class="st0" d="M969.78,850.96c-0.27-0.71-0.73-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6
- c-0.92,0.49-1.78,0.88-2.58,1.15c-0.8,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72V822.2
- H965v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97
- c-0.83,0-1.58,0.28-2.26,0.83c-0.67,0.55-1.01,1.35-1.01,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12
- c1.21,2.28,2.91,4.03,5.1,5.24c2.19,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47s4.98-2.17,7.25-3.55L969.78,850.96z"/>
- <path class="st0" d="M979.77,812.86v47.02h10.03v-47.02H979.77z M990.6,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35
- c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C991.5,798.28,991.2,797.16,990.6,796.12z"/>
- <path class="st0" d="M1046.22,823.88c-2.1-3.7-5-6.59-8.71-8.67c-3.72-2.09-7.92-3.13-12.61-3.13c-4.69,0-8.9,1.04-12.63,3.13
- c-3.73,2.08-6.63,4.97-8.72,8.67c-2.08,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.16,12.51c2.1,3.68,5,6.57,8.71,8.65
- c3.71,2.09,7.92,3.13,12.61,3.13c4.69,0,8.89-1.04,12.61-3.13c3.71-2.08,6.61-4.97,8.71-8.65c2.1-3.68,3.16-7.85,3.16-12.51
- S1048.32,827.58,1046.22,823.88z M1037.53,843.85c-1.24,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84
- c-2.76,0-5.24-0.62-7.45-1.87c-2.21-1.24-3.94-2.95-5.18-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43
- c1.24-2.2,2.97-3.91,5.18-5.13c2.21-1.23,4.69-1.84,7.45-1.84c2.76,0,5.24,0.61,7.45,1.84c2.21,1.22,3.94,2.93,5.18,5.13
- c1.24,2.19,1.86,4.67,1.86,7.43S1038.77,841.66,1037.53,843.85z"/>
- <path class="st0" d="M1096.81,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.42,0.52-7.87,1.55c-2.45,1.02-4.65,2.43-6.58,4.2
- V817c0-1.25-0.24-2.26-0.71-3.01c-0.48-0.75-1.36-1.13-2.65-1.13H1060v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09
- c2.11-1.02,4.17-1.52,6.16-1.52c2.91,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74
- C1101.04,825.76,1099.63,820.81,1096.81,817.3z"/>
- <path class="st0" d="M1175.06,791.65v25.67c-1.62-1.56-3.47-2.8-5.54-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13
- c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51c1.81,3.68,4.31,6.55,7.52,8.63
- c3.2,2.07,6.84,3.1,10.92,3.1c2.83,0,5.4-0.52,7.73-1.56c2.33-1.05,4.4-2.47,6.21-4.28v0.55c0,2.91,1.2,4.37,3.59,4.37h6.44v-68.23
- H1175.06z M1175.06,844.24c-1.5,1.93-3.19,3.5-5.08,4.69c-1.89,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82
- c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.73-4.61-1.73-7.34c0-2.76,0.59-5.24,1.75-7.43c1.17-2.19,2.79-3.9,4.86-5.13
- c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.09,2.2c1.17,0.88,2.01,1.73,2.53,2.56V844.24z"/>
- <path class="st0" d="M1230.41,812.86v32.48c-1.84,1.72-3.83,3.08-5.96,4.1c-2.13,1.01-4.18,1.52-6.14,1.52
- c-2.94,0-5.17-0.92-6.67-2.74c-1.5-1.83-2.26-4.73-2.26-8.72v-26.64h-9.98v27.74c0,6.38,1.41,11.33,4.23,14.84
- c2.83,3.51,6.93,5.27,12.33,5.27c2.79,0,5.42-0.51,7.87-1.54c2.45-1.03,4.65-2.43,6.58-4.21v0.83c0,1.25,0.24,2.25,0.71,2.99
- c0.48,0.73,1.36,1.1,2.65,1.1h6.62v-47.02H1230.41z"/>
- <path class="st0" d="M1313.4,850.96c-0.27-0.71-0.72-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6
- c-0.92,0.49-1.78,0.88-2.58,1.15c-0.79,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72
- V822.2h13.25v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97
- c-0.83,0-1.58,0.28-2.25,0.83c-0.68,0.55-1.02,1.35-1.02,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12
- c1.21,2.28,2.91,4.03,5.1,5.24c2.2,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47c2.56-0.98,4.98-2.17,7.25-3.55
- L1313.4,850.96z"/>
- <path class="st0" d="M1350.28,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.61,0-4.99,0.64-7.15,1.91c-2.17,1.28-4.04,3.02-5.64,5.23
- v-1.52c0-1.38-0.34-2.53-1.01-3.43c-0.68-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43
- c1.88-1.35,3.96-2.03,6.23-2.03c1.01,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06
- c0.89-0.71,1.46-1.67,1.7-2.9l1.01-4.55C1352.6,813.15,1351.34,812.72,1350.28,812.45z"/>
- <path class="st0" d="M1392.21,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.17,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21
- c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.37,0,5.84,0.93,7.39,2.78c1.54,1.86,2.33,4.84,2.36,8.95
- c-1.9-0.55-4.07-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15c2.39,1.26,4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.45-6.85v0.41
- c0,1.72,0.4,3.09,1.18,4.1s2,1.52,3.66,1.52h5.15v-28.07C1397,825.33,1395.4,820.4,1392.21,817.07z M1387.01,846.17
- c-2.26,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.45-1.03-2.17-2.48-2.17-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M1445.12,812.86c-1.47,0-2.74,0.35-3.79,1.04c-1.06,0.69-1.84,1.68-2.33,2.96l-11.41,28.81
- c-0.18,0.55-0.32,1.25-0.41,2.09c-0.09,0.84-0.17,1.98-0.23,3.43h-0.09c-0.06-1.41-0.14-2.55-0.23-3.41
- c-0.09-0.86-0.25-1.56-0.46-2.11l-11.37-28.81c-0.49-1.28-1.27-2.27-2.34-2.96c-1.08-0.69-2.35-1.04-3.82-1.04h-6.44l20.24,47.02
- h8.93l20.24-47.02H1445.12z"/>
- <path class="st0" d="M1490.76,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.9,2.21
- c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51
- c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95
- c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94
- c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.52,0,10.68-2.28,15.46-6.85v0.41
- c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C1495.55,825.33,1493.95,820.4,1490.76,817.07z M1485.56,846.17
- c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35
- c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>
- <path class="st0" d="M1509.85,812.86v47.02h10.03v-47.02H1509.85z M1520.69,796.12c-0.6-1.05-1.41-1.87-2.44-2.49
- c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.37,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35
- c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.04,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92
- c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C1521.59,798.28,1521.29,797.16,1520.69,796.12z"/>
- <path class="st0" d="M1534.24,791.65v68.23h10.03v-68.23H1534.24z"/>
-</g>
-<path class="st2" d="M620.48,351.6c-0.72-46.47-16.42-83.63-47.1-111.47c-31.42-28.52-73.53-42.77-126.33-42.77H289.68
- c-9.98,0-18.07,8.09-18.07,18.07v82.8c14.78-16.16,35.3-26.83,57.84-27.88c28.02-1.31,56.12-0.7,84.18-0.92c0.8,0,1.58,0.38,2.4,0.6
- l0.4,63.51c-16.76,1.57-26.57,10.97-26.99,25.49c-0.43,14.39,9.08,23.89,27.48,27.23l0.4,63.57c-25.22,0.16-49.7,0.4-74.2,0.4
- c-7.3,0-14.69-0.05-21.88-1.21c-19.86-3.2-36.97-13-49.63-27.15v311.46c0,9.98,8.09,18.08,18.07,18.08h43.45
- c9.98,0,18.08-8.1,18.08-18.08V529.49c0-9.99,8.09-18.08,18.08-18.08h40.53c52.28,0,92.41-5.61,120.39-16.83
- c27.99-11.22,50.03-29.24,66.14-54.06c13.39-20.63,21.21-43.82,23.47-69.57c0.46-5.22,0.69-10.54,0.69-15.97
- C620.51,353.85,620.5,352.72,620.48,351.6z M536.79,351.4c-14.22,0.09-28.41,0.29-42.61,0.1c-1.43-0.01-3.22-2.13-4.18-3.71
- c-5.51-9.04-12.77-14.53-23.58-14.25c-11.44,0.29-22.88,0.19-34.61,0.27l-0.41-64C495.18,261.1,534.32,306.85,536.79,351.4z
- M415.01,370.4c-6.43-0.07-10.54-4.08-10.89-10.11c-0.37-6.14,3.22-10.98,9.61-11.2c17.95-0.62,35.92-0.96,53.88-0.86
- c6.81,0.03,10.48,4.78,10.28,11.31c-0.21,6.76-3.71,10.47-10.85,10.71c-8.74,0.32-17.52,0.18-26.3,0.24v-0.2
- C432.17,370.35,423.58,370.52,415.01,370.4z M432.62,449.12l-0.41-63.97c10.99-0.07,21.62-0.7,32.19-0.06
- c12.21,0.74,20.12-5.14,26.08-15.3c0.73-1.24,2.22-2.85,3.38-2.87c14.39-0.3,28.77-0.31,43.19-0.4
- C534.44,410.98,496.74,457.08,432.62,449.12z"/>
-<path class="st2" d="M1649.63,193.61h-405.92c-12.49,0-22.62,10.12-22.62,22.62v25.52c0,12.49,10.13,22.62,22.62,22.62h144.46
- c12.49,0,22.62,10.13,22.62,22.62v440.19c0,12.49,10.13,22.62,22.62,22.62h34.36c12.5,0,22.62-10.13,22.62-22.62V286.99
- c0-12.49,10.13-22.62,22.62-22.62h136.62c12.49,0,22.62-10.13,22.62-22.62v-25.52C1672.25,203.73,1662.12,193.61,1649.63,193.61z"/>
-<g>
- <path class="st2" d="M560.4,349.53c-1.41,0-2.83,0.29-4.51,0.47l0.11,17.56c1.71,0.12,3.48,0.34,5.27,0.34
- c15.07,0.02,30.16-0.19,45.24,0.06c13.92,0.22,19.38,5.01,21.47,19.27c1.25,8.54,1.73,17.24,2.01,25.87
- c0.99,30.98,17.18,50.79,46.85,55.6c9.62,1.56,19.56,1.28,29.35,1.22c6.08-0.04,9.74-4.48,9.29-9.82
- c-0.42-5.1-4.33-8.12-10.16-8.33c-9.15-0.33-18.49,0.09-27.43-1.58c-19.96-3.75-29.56-16.55-30.35-37.68
- c-0.39-10.14-0.67-20.43-2.58-30.33c-4.1-21.16-13.12-30.28-33.7-32.1C594.42,348.6,577.36,349.61,560.4,349.53z"/>
-</g>
-</svg>
+<?xml version="1.0" encoding="utf-8"?>\r
+<!-- Generator: Adobe Illustrator 23.0.2, SVG Export Plug-In . SVG Version: 6.00 Build 0) -->\r
+<svg version="1.1" id="Calque_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px"\r
+ viewBox="0 0 1920 1080" style="enable-background:new 0 0 1920 1080;" xml:space="preserve">\r
+<style type="text/css">\r
+ .st0{fill:#003268;}\r
+ .st1{fill:#FFFFFF;}\r
+ .st2{fill:#005BCE;}\r
+</style>\r
+<g>\r
+ <g>\r
+ <path class="st0" d="M1107.86,464.03c-38.08-0.02-76.17-0.02-114.24,0.05c-2.02,0-3.2-0.62-4.56-2.21\r
+ c-2.29-2.68-4.94-5.26-7.96-6.97c-2.41-1.38-2.96-2.75-2.96-5.27c0.07-48.71,0.04-97.43,0.04-146.14c0-1.2,0.07-2.41-0.04-3.59\r
+ c-0.37-4.36-4.07-7.2-8.41-6.52c-3.87,0.61-6.02,3.54-6.02,8.34c-0.02,24.74,0,49.48,0,74.22c0,24.6-0.02,49.23,0.02,73.86\r
+ c0.03,2.37-0.41,3.72-2.82,5.04c-2.96,1.57-5.56,4.07-7.79,6.63c-1.47,1.69-2.65,2.67-5,2.63c-7.59-0.15-15.19-0.04-22.79,0\r
+ c-3.52,0.02-6.26,1.66-8.16,4.55c-2.24,3.33-2.34,6.96-0.55,10.51c1.88,3.7,5.17,5.52,9.28,5.56c7.58,0.07,15.2-0.06,22.77,0.11\r
+ c1.34,0.05,2.8,1.07,3.94,1.97c3,2.41,5.72,5.23,8.87,7.42c1.53,1.05,2.3,1.82,2.28,3.73c-0.11,7.15-0.07,14.31-0.05,21.47\r
+ c0,1.18-0.02,2.41,0.27,3.55c0.83,3.39,4.18,5.65,7.61,5.32c3.77-0.37,6.51-3.22,6.57-7.23c0.09-7.7,0.07-15.41,0-23.11\r
+ c0-1.97,0.79-2.89,2.54-3.95c2.89-1.72,5.72-3.91,7.86-6.5c1.62-1.97,3.07-2.82,5.58-2.82c27.57,0.09,55.13,0.06,82.67,0.06\r
+ c10.64,0,21.28,0.07,31.9-0.02c6.66-0.06,11.03-4.55,10.84-10.79C1119.35,467.84,1114.91,464.03,1107.86,464.03z M983.25,475.56\r
+ c0,0.01,0,0.02-0.01,0.04c-0.01,0.13-0.02,0.25-0.04,0.38c-0.02,0.19-0.05,0.37-0.09,0.56c-0.1,0.55-0.24,1.1-0.42,1.63\r
+ c-0.06,0.18-0.12,0.36-0.19,0.53c-0.08,0.21-0.16,0.41-0.26,0.62c-0.08,0.19-0.16,0.37-0.26,0.54c-0.18,0.36-0.38,0.72-0.6,1.05\r
+ c-0.32,0.5-0.68,0.98-1.07,1.44c0,0.01,0,0.01-0.01,0.02c-0.27,0.3-0.54,0.58-0.82,0.86c-0.15,0.14-0.3,0.28-0.45,0.42\r
+ c0,0,0,0.01-0.01,0.01c-0.2,0.18-0.41,0.35-0.62,0.51c-0.16,0.13-0.32,0.25-0.48,0.36c-0.94,0.67-1.98,1.22-3.09,1.62\r
+ c-0.78,0.28-1.58,0.49-2.42,0.62c-0.42,0.06-0.84,0.11-1.27,0.13c-0.21,0-0.42,0.01-0.64,0.01c-0.23,0.01-0.45,0-0.68-0.02\r
+ c-0.17-0.01-0.34-0.03-0.52-0.05c-0.37-0.04-0.74-0.11-1.1-0.2c-0.36-0.09-0.72-0.2-1.07-0.32c-1.28-0.47-2.5-1.18-3.6-2.07\r
+ c-0.19-0.15-0.38-0.32-0.56-0.48c-0.24-0.22-0.47-0.44-0.69-0.67c-0.05-0.05-0.1-0.11-0.15-0.16c-0.22-0.24-0.44-0.49-0.64-0.74\r
+ c-0.26-0.31-0.5-0.63-0.72-0.96c-0.22-0.33-0.43-0.66-0.63-1.01c-0.38-0.7-0.71-1.42-0.95-2.16c-0.13-0.37-0.23-0.75-0.32-1.12\r
+ c-0.04-0.19-0.08-0.38-0.11-0.57c-0.06-0.29-0.1-0.59-0.11-0.89c-0.03-0.3-0.04-0.6-0.04-0.9c0-0.22,0.01-0.44,0.01-0.66\r
+ c0.02-0.4,0.05-0.79,0.11-1.18c0.02-0.14,0.04-0.29,0.07-0.43c0.01-0.08,0.02-0.15,0.04-0.23c0.02-0.07,0.04-0.15,0.05-0.23\r
+ c0.03-0.16,0.06-0.31,0.1-0.46c0.06-0.25,0.13-0.5,0.21-0.74c0.16-0.54,0.37-1.07,0.61-1.58c0.08-0.18,0.17-0.36,0.27-0.54\r
+ c0.12-0.22,0.24-0.44,0.37-0.65c0.13-0.21,0.26-0.42,0.41-0.63c0.28-0.4,0.59-0.79,0.92-1.16c0.17-0.2,0.36-0.4,0.56-0.58\r
+ c0.16-0.16,0.32-0.31,0.49-0.46c0.18-0.16,0.37-0.32,0.57-0.47c0.19-0.15,0.39-0.29,0.6-0.43c0.61-0.42,1.27-0.78,1.96-1.08\r
+ c0.23-0.1,0.46-0.19,0.7-0.28c0.17-0.06,0.34-0.12,0.51-0.17c0.17-0.06,0.34-0.11,0.51-0.15s0.35-0.09,0.53-0.13\r
+ c0.18-0.03,0.35-0.07,0.53-0.1c0.55-0.09,1.1-0.15,1.67-0.18c0.22-0.01,0.44-0.01,0.66-0.01c0.16,0,0.32,0,0.48,0.01\r
+ c0.15,0.01,0.31,0.02,0.47,0.03c0.31,0.03,0.62,0.06,0.92,0.11c0.27,0.04,0.54,0.1,0.81,0.16c0.26,0.06,0.53,0.13,0.79,0.21\r
+ c0.25,0.07,0.51,0.16,0.75,0.25l0.01,0.01c0.24,0.09,0.48,0.18,0.71,0.28c0.04,0.02,0.07,0.03,0.11,0.06\r
+ c0.22,0.1,0.43,0.2,0.65,0.32c0.22,0.11,0.44,0.24,0.66,0.37c0.01,0.01,0.02,0.01,0.03,0.02c0.22,0.14,0.44,0.29,0.66,0.44\r
+ c0.21,0.15,0.42,0.31,0.63,0.48c0.1,0.08,0.2,0.16,0.29,0.24c0.2,0.17,0.4,0.36,0.59,0.55c0.18,0.17,0.35,0.35,0.51,0.53\r
+ c0.27,0.29,0.52,0.59,0.75,0.91c0.11,0.16,0.23,0.32,0.34,0.48c0.22,0.32,0.42,0.66,0.61,1.01c0.25,0.47,0.48,0.96,0.66,1.47\r
+ c0.08,0.19,0.15,0.38,0.21,0.58c0.41,1.24,0.62,2.57,0.6,3.95C983.31,474.88,983.29,475.22,983.25,475.56z"/>\r
+ <path class="st0" d="M977.13,266.06c0,2.38,0.18,4.77-0.05,7.13c-0.33,3.46-2.74,5.61-5.97,5.68c-3.35,0.08-6.09-2.12-6.28-5.68\r
+ c-0.26-4.85-0.26-9.73,0-14.58c0.18-3.35,2.89-5.5,6.12-5.5c3.24,0,5.81,2.14,6.15,5.5c0.24,2.46,0.05,4.97,0.05,7.46\r
+ C977.13,266.06,977.13,266.06,977.13,266.06z"/>\r
+ <path class="st0" d="M977.18,682.72c0,2.27,0.14,4.55-0.03,6.81c-0.29,3.76-2.88,6.18-6.28,6.13c-3.29-0.05-5.91-2.38-6.08-5.97\r
+ c-0.22-4.64-0.22-9.3-0.02-13.95c0.16-3.57,2.77-5.88,6.09-5.93c3.45-0.04,6.03,2.35,6.3,6.08c0.17,2.26,0.03,4.54,0.03,6.82\r
+ C977.18,682.72,977.18,682.72,977.18,682.72z"/>\r
+ <path class="st0" d="M1192.26,474.54c-0.1,3.29-2.6,5.76-6.06,5.98c-0.21,0.02-0.44,0.01-0.65,0.01h-6.5c0-0.01,0-0.01,0-0.01\r
+ c-2.27,0-4.55,0.1-6.82-0.03c-3.29-0.18-5.7-2.67-5.86-5.83c-0.16-3.24,2.25-6.29,5.58-6.45c4.86-0.21,9.75-0.2,14.61-0.01\r
+ C1189.94,468.34,1192.36,471.27,1192.26,474.54z"/>\r
+ <path class="st0" d="M775.52,474.41c-0.01,3.28-2.51,5.85-5.93,6.11c-0.21,0.01-0.44,0.01-0.65,0.01\r
+ c-1.44,0.01-2.88,0.01-4.33,0.01c-0.72-0.01-1.45-0.01-2.17-0.01c-1.8-0.01-3.61,0.05-5.42,0.02c-0.46-0.01-0.93-0.03-1.4-0.05\r
+ c-3.44-0.17-5.94-2.75-5.99-6.04c-0.05-3.27,2.4-6.15,5.78-6.27c4.75-0.18,9.53-0.18,14.29-0.01\r
+ C773.07,468.31,775.54,471.15,775.52,474.41z"/>\r
+ <path class="st1" d="M958.61,474.59c0,0.3,0.01,0.6,0.04,0.9c-0.04-0.3-0.05-0.6-0.05-0.91c0-0.22,0.01-0.43,0.02-0.65\r
+ C958.62,474.15,958.61,474.37,958.61,474.59z"/>\r
+ <path class="st1" d="M961.78,466.1c-0.33,0.37-0.64,0.76-0.92,1.16C961.14,466.86,961.44,466.47,961.78,466.1z"/>\r
+ <path class="st1" d="M968.74,462.25c0.54-0.1,1.1-0.16,1.67-0.18C969.84,462.1,969.29,462.16,968.74,462.25z"/>\r
+ <path class="st1" d="M970.5,486.91c0.22,0,0.43-0.01,0.64-0.01c-0.22,0.01-0.43,0.02-0.65,0.02c-0.23,0-0.45-0.01-0.67-0.03\r
+ C970.05,486.91,970.27,486.92,970.5,486.91z"/>\r
+ <path class="st1" d="M971.07,462.05c0.16,0,0.32,0.01,0.48,0.02c-0.16-0.01-0.32-0.01-0.48-0.01c-0.22,0-0.44,0-0.66,0.01\r
+ C970.63,462.05,970.85,462.05,971.07,462.05z"/>\r
+ <path class="st1" d="M979.48,483.23c0.28-0.28,0.55-0.56,0.82-0.86c-0.39,0.46-0.81,0.89-1.27,1.28\r
+ C979.18,483.51,979.33,483.37,979.48,483.23z"/>\r
+ <path class="st1" d="M980.31,482.35c0.39-0.46,0.75-0.94,1.07-1.44C981.06,481.42,980.71,481.9,980.31,482.35z"/>\r
+ </g>\r
+ <g>\r
+ <path class="st2" d="M938.51,758.43c-34.37-2.96-66.64-13.09-97.29-28.53c-49.17-24.78-88.16-60.95-116.45-107.95\r
+ c-25.2-41.88-38.29-87.64-39.36-136.77c-0.09-3.85-0.09-7.71,0-11.52c0.09-7.29,0.48-14.49,1.12-21.63\r
+ c11.91-134.4,113.67-241.26,251.03-257.66c4.31-0.5,8.67-0.59,14.3-0.96v29.07c-46.37,3.83-89.21,17.01-126.34,44.05\r
+ c-69.97,50.9-108.26,116.27-110.73,196.23c-0.2,6.09-0.18,12.24,0.07,18.48c0.42,11.65,1.55,23.58,3.44,35.79\r
+ c14.1,91.8,67.32,155.37,150.6,193.47c20.65,9.46,44.33,12.65,66.88,17.32c10.14,2.1,16.07,5.85,16.59,16.44\r
+ C952.79,753.94,948.89,759.33,938.51,758.43z"/>\r
+ <path class="st0" d="M1162.02,683.4c-44.03,42.88-98.06,67.32-159.42,74.45c-8.29,0.97-17.41,2.57-19.25-9.57\r
+ c-1.57-10.33,4.3-17.15,16.13-19.83c19.48-4.43,39.28-7.97,58.3-14c35.17-11.17,65.04-31.76,90.27-58.19\r
+ c73.17-76.55,94.83-166.82,58.98-265.97c-35.85-99.21-110.67-153.99-215.54-167.1c-1.7-0.21-3.41-0.45-6.61-0.87v-29.03\r
+ c11.2,1.26,21.95,1.57,32.31,3.75c112.32,23.39,189.63,88.88,222.52,198.65C1272.61,505.62,1244.34,603.25,1162.02,683.4z"/>\r
+ </g>\r
+</g>\r
+<g>\r
+ <path class="st0" d="M325.24,804.05c-1.87-3.14-4.47-5.6-7.78-7.36s-7.05-2.65-11.22-2.65h-25.68v65.84h10.4v-24.52h15.28\r
+ c4.17,0,7.91-0.88,11.22-2.65c3.31-1.76,5.91-4.21,7.78-7.36c1.87-3.14,2.8-6.69,2.8-10.65\r
+ C328.04,810.75,327.11,807.2,325.24,804.05z M316.2,820.15c-0.97,1.61-2.33,2.87-4.08,3.78c-1.74,0.9-3.71,1.35-5.88,1.35h-15.28\r
+ v-21.11h15.28c2.2,0,4.17,0.45,5.91,1.35c1.73,0.91,3.08,2.16,4.05,3.75c0.96,1.6,1.45,3.41,1.45,5.43\r
+ C317.65,816.73,317.16,818.54,316.2,820.15z"/>\r
+ <path class="st0" d="M335.68,791.65v68.23h10.03v-68.23H335.68z"/>\r
+ <path class="st0" d="M393.83,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.53,0,10.68-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C398.62,825.33,397.02,820.4,393.83,817.07z M388.63,846.17\r
+ c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M449.73,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.87,1.55c-2.45,1.02-4.64,2.43-6.58,4.2\r
+ V817c0-1.25-0.23-2.26-0.71-3.01s-1.36-1.13-2.65-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09\r
+ c2.11-1.02,4.17-1.52,6.16-1.52c2.92,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74\r
+ C453.96,825.76,452.55,820.81,449.73,817.3z"/>\r
+ <path class="st0" d="M527.99,791.65v25.67c-1.63-1.56-3.48-2.8-5.55-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13\r
+ c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51s4.31,6.55,7.52,8.63\r
+ c3.2,2.07,6.85,3.1,10.93,3.1c2.82,0,5.39-0.52,7.72-1.56c2.33-1.05,4.41-2.47,6.22-4.28v0.55c0,2.91,1.19,4.37,3.58,4.37h6.44\r
+ v-68.23H527.99z M527.99,844.24c-1.51,1.93-3.2,3.5-5.09,4.69c-1.88,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82\r
+ c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.72-4.61-1.72-7.34c0-2.76,0.58-5.24,1.74-7.43c1.17-2.19,2.79-3.9,4.86-5.13\r
+ c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.1,2.2c1.16,0.88,2,1.73,2.53,2.56V844.24z"/>\r
+ <path class="st0" d="M560.17,794.44c-0.23-0.33-0.55-0.55-0.95-0.67l-3.26-0.83c-2.06,2.24-3.76,4.56-5.11,6.95\r
+ c-1.35,2.39-2.02,5.04-2.02,7.96c0,2.02,0.07,3.69,0.23,5.01c0.15,1.32,0.38,2.84,0.69,4.56c0.09,0.27,0.15,0.53,0.18,0.78\r
+ c0.03,0.24,0.06,0.44,0.09,0.6l8.83-1.57c-0.61-2.05-1.07-3.82-1.38-5.31c-0.3-1.49-0.46-2.97-0.46-4.44c0-1.66,0.23-3.19,0.69-4.6\r
+ c0.47-1.41,1.06-2.9,1.8-4.46c0.27-0.62,0.51-1.19,0.71-1.73c0.2-0.54,0.3-0.94,0.3-1.22C560.51,795.1,560.4,794.76,560.17,794.44z\r
+ "/>\r
+ <path class="st0" d="M613.44,823.88c-2.1-3.7-5.01-6.59-8.72-8.67c-3.71-2.09-7.91-3.13-12.6-3.13c-4.7,0-8.9,1.04-12.63,3.13\r
+ c-3.73,2.08-6.63,4.97-8.72,8.67c-2.09,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.15,12.51c2.1,3.68,5.01,6.57,8.72,8.65\r
+ c3.71,2.09,7.91,3.13,12.61,3.13c4.69,0,8.89-1.04,12.6-3.13c3.71-2.08,6.62-4.97,8.72-8.65s3.15-7.85,3.15-12.51\r
+ S615.54,827.58,613.44,823.88z M604.75,843.85c-1.25,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84s-5.25-0.62-7.46-1.87\r
+ c-2.2-1.24-3.93-2.95-5.17-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43c1.24-2.2,2.97-3.91,5.17-5.13\r
+ c2.21-1.23,4.7-1.84,7.46-1.84s5.24,0.61,7.45,1.84c2.21,1.22,3.93,2.93,5.18,5.13c1.24,2.19,1.86,4.67,1.86,7.43\r
+ S605.99,841.66,604.75,843.85z"/>\r
+ <path class="st0" d="M654.11,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.6,0-4.99,0.64-7.15,1.91c-2.16,1.28-4.04,3.02-5.64,5.23\r
+ v-1.52c0-1.38-0.33-2.53-1.01-3.43c-0.67-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43\r
+ c1.89-1.35,3.96-2.03,6.23-2.03c1.02,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06\r
+ c0.89-0.71,1.46-1.67,1.7-2.9l1.02-4.55C656.43,813.15,655.17,812.72,654.11,812.45z"/>\r
+ <path class="st0" d="M707.36,813.14c-1.38-0.28-3.17-0.42-5.38-0.42c-3.77,0-7.18,0.39-10.21,1.15c-2.76-1.16-5.72-1.74-8.88-1.74\r
+ c-3.59,0-6.86,0.79-9.82,2.37c-2.96,1.58-5.3,3.73-7,6.46c-1.7,2.73-2.55,5.74-2.55,9.02c0,1.96,0.31,3.85,0.94,5.66\r
+ c0.63,1.81,1.53,3.46,2.69,4.96c-1.41,1.14-2.56,2.46-3.45,3.96s-1.33,3.07-1.33,4.69c0,2.4,0.59,4.46,1.77,6.19\r
+ c1.18,1.73,2.85,3.04,5.02,3.91c2.16,0.88,4.67,1.27,7.52,1.18l9.8-0.33c2.85-0.09,5.06,0.22,6.64,0.95\r
+ c1.58,0.72,2.37,1.8,2.37,3.24c0,1.56-0.89,2.78-2.69,3.66c-1.79,0.87-4.3,1.31-7.52,1.31h-3.22c-1.07,0-2.94-0.14-5.59-0.42\r
+ c-2.65-0.27-5.27-0.62-7.84-1.05c-0.56-0.1-1.08-0.14-1.57-0.14c-1.53,0-2.74,0.45-3.63,1.36c-0.89,0.9-1.43,2.24-1.61,4.02\r
+ l-0.32,2.9c3.58,0.86,7.33,1.53,11.24,2.02c3.91,0.49,7.74,0.74,11.48,0.74c4.39,0,8.15-0.57,11.27-1.7\r
+ c3.13-1.14,5.53-2.79,7.18-4.95c1.66-2.16,2.49-4.74,2.49-7.75c0-2.7-0.68-5.05-2.03-7.04s-3.3-3.53-5.86-4.6\r
+ c-2.57-1.07-5.63-1.61-9.18-1.61c-0.77,0-1.34,0.02-1.71,0.05l-9.24,0.36c-1.69,0.07-2.99-0.14-3.91-0.62\r
+ c-0.92-0.47-1.38-1.26-1.38-2.37c0-0.49,0.11-0.99,0.34-1.52c0.23-0.52,0.56-0.99,0.99-1.42c2.98,1.53,6.23,2.3,9.75,2.3\r
+ c3.59,0,6.88-0.83,9.87-2.49c2.99-1.65,5.35-3.9,7.09-6.74c1.73-2.83,2.6-5.97,2.6-9.4c0-3.07-0.8-5.88-2.4-8.42\r
+ c0.83,0.03,1.58,0.13,2.26,0.32c0.43,0.06,0.72,0.09,0.87,0.09c1.41,0,2.48-0.6,3.2-1.82c0.72-1.21,1.05-2.61,0.99-4.21\r
+ L707.36,813.14z M691.45,834.6c-0.86,1.33-2.04,2.39-3.55,3.15c-1.5,0.77-3.16,1.15-4.97,1.15c-1.77,0-3.41-0.38-4.9-1.15\r
+ c-1.48-0.76-2.66-1.82-3.51-3.15c-0.86-1.33-1.29-2.81-1.29-4.44c0-1.66,0.43-3.17,1.29-4.53c0.85-1.37,2.03-2.44,3.51-3.22\r
+ c1.49-0.78,3.13-1.17,4.9-1.17c1.81,0,3.47,0.39,4.97,1.17c1.51,0.78,2.69,1.85,3.55,3.22c0.85,1.36,1.28,2.87,1.28,4.53\r
+ C692.73,831.79,692.3,833.27,691.45,834.6z"/>\r
+ <path class="st0" d="M748.59,817.07c-3.19-3.33-7.92-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.93,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.88,0.49,1.82,0.74,2.83,0.74c0.92,0,1.77-0.17,2.53-0.51\r
+ c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.38,0,5.84,0.93,7.39,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.91-0.55-4.08-0.98-6.54-1.29c-2.45-0.3-4.44-0.46-5.98-0.46c-6.22,0-10.87,1.31-13.94,3.92c-3.06,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.72,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15s4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.17,4.1c0.78,1.01,2,1.52,3.66,1.52h5.15v-28.07C753.37,825.33,751.78,820.4,748.59,817.07z M743.39,846.17\r
+ c-2.27,1.63-4.5,2.95-6.7,3.98c-2.19,1.03-4.48,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.85-4.15,2.57-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,11,1.38V846.17z"/>\r
+ <path class="st0" d="M804.48,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.41,0.52-7.86,1.55c-2.46,1.02-4.65,2.43-6.58,4.2\r
+ V817c0-1.25-0.24-2.26-0.72-3.01c-0.47-0.75-1.35-1.13-2.64-1.13h-6.67v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.93-4.09\r
+ c2.12-1.02,4.17-1.52,6.17-1.52c2.91,0,5.12,0.92,6.62,2.76s2.26,4.74,2.26,8.69v26.64h10.03v-27.74\r
+ C808.72,825.76,807.31,820.81,804.48,817.3z"/>\r
+ <path class="st0" d="M822.98,812.86v47.02h10.03v-47.02H822.98z M833.81,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.02-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.89,2.16-0.89,3.35\r
+ c0,1.2,0.29,2.32,0.89,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.31-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C834.71,798.28,834.41,797.16,833.81,796.12z"/>\r
+ <path class="st0" d="M872.87,836.83c-2.31-2.3-5.96-4.35-10.92-6.16c-2.3-0.8-3.91-1.58-4.83-2.33c-0.93-0.75-1.39-1.66-1.39-2.73\r
+ c0-1.32,0.43-2.33,1.29-3.02c0.86-0.69,2.12-1.03,3.78-1.03c0.55,0,1.1,0.07,1.65,0.2c0.55,0.14,1.13,0.33,1.73,0.56\r
+ c0.6,0.23,1.03,0.4,1.31,0.53c0.86,0.33,1.67,0.5,2.44,0.5c0.98,0,1.88-0.24,2.71-0.71c0.83-0.48,1.44-1.13,1.84-1.96l1.75-3.45\r
+ c-1.69-1.65-3.79-2.93-6.3-3.82c-2.52-0.89-4.99-1.33-7.41-1.33c-3.01,0-5.62,0.56-7.84,1.68c-2.23,1.12-3.94,2.7-5.13,4.74\r
+ c-1.2,2.04-1.8,4.41-1.8,7.11c0,2.23,0.37,4.14,1.11,5.72c0.73,1.58,2.07,3.06,4.02,4.44c1.95,1.38,4.72,2.75,8.31,4.1\r
+ c2.54,0.98,4.37,1.95,5.49,2.92c1.12,0.97,1.68,2.05,1.68,3.24c0,1.69-0.56,2.99-1.68,3.89c-1.12,0.91-2.69,1.36-4.71,1.36\r
+ c-1.44,0-2.8-0.23-4.07-0.69c-1.28-0.46-2.71-1.09-4.31-1.89c-0.85-0.43-1.79-0.64-2.8-0.64c-0.92,0-1.78,0.21-2.58,0.64\r
+ c-0.8,0.43-1.42,1.03-1.88,1.8l-1.89,3.31c2.18,2.08,4.68,3.76,7.52,5.01c2.84,1.26,5.9,1.89,9.18,1.89c3.4,0,6.41-0.62,9.02-1.86\r
+ c2.6-1.25,4.62-2.99,6.05-5.25c1.42-2.25,2.14-4.87,2.14-7.84C876.35,842.11,875.19,839.13,872.87,836.83z"/>\r
+ <path class="st0" d="M920.42,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.49,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.91,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2.01,2.03c0.87,0.49,1.81,0.74,2.83,0.74\r
+ c0.92,0,1.76-0.17,2.53-0.51c1.68-0.77,3.19-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78\r
+ c1.55,1.86,2.34,4.84,2.37,8.95c-1.9-0.55-4.08-0.98-6.53-1.29c-2.46-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.88,1.31-13.94,3.92\r
+ c-3.07,2.6-4.6,6.25-4.6,10.94c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.72,5.15c2.4,1.26,4.97,1.88,7.73,1.88\r
+ c5.52,0,10.68-2.28,15.46-6.85v0.41c0,1.72,0.39,3.09,1.17,4.1c0.79,1.01,2.01,1.52,3.66,1.52h5.15v-28.07\r
+ C925.2,825.33,923.61,820.4,920.42,817.07z M915.22,846.17c-2.27,1.63-4.5,2.95-6.69,3.98c-2.2,1.03-4.49,1.54-6.88,1.54\r
+ c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35c0-2.45,0.86-4.15,2.58-5.1c1.71-0.95,4.37-1.43,7.95-1.43\r
+ c3.96,0,7.63,0.46,11,1.38V846.17z"/>\r
+ <path class="st0" d="M969.78,850.96c-0.27-0.71-0.73-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6\r
+ c-0.92,0.49-1.78,0.88-2.58,1.15c-0.8,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72V822.2\r
+ H965v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97\r
+ c-0.83,0-1.58,0.28-2.26,0.83c-0.67,0.55-1.01,1.35-1.01,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12\r
+ c1.21,2.28,2.91,4.03,5.1,5.24c2.19,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47s4.98-2.17,7.25-3.55L969.78,850.96z"/>\r
+ <path class="st0" d="M979.77,812.86v47.02h10.03v-47.02H979.77z M990.6,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.36,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35\r
+ c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.05,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C991.5,798.28,991.2,797.16,990.6,796.12z"/>\r
+ <path class="st0" d="M1046.22,823.88c-2.1-3.7-5-6.59-8.71-8.67c-3.72-2.09-7.92-3.13-12.61-3.13c-4.69,0-8.9,1.04-12.63,3.13\r
+ c-3.73,2.08-6.63,4.97-8.72,8.67c-2.08,3.7-3.13,7.88-3.13,12.54s1.05,8.83,3.16,12.51c2.1,3.68,5,6.57,8.71,8.65\r
+ c3.71,2.09,7.92,3.13,12.61,3.13c4.69,0,8.89-1.04,12.61-3.13c3.71-2.08,6.61-4.97,8.71-8.65c2.1-3.68,3.16-7.85,3.16-12.51\r
+ S1048.32,827.58,1046.22,823.88z M1037.53,843.85c-1.24,2.19-2.97,3.9-5.18,5.13c-2.21,1.22-4.69,1.84-7.45,1.84\r
+ c-2.76,0-5.24-0.62-7.45-1.87c-2.21-1.24-3.94-2.95-5.18-5.15c-1.24-2.19-1.86-4.65-1.86-7.38c0-2.76,0.62-5.24,1.86-7.43\r
+ c1.24-2.2,2.97-3.91,5.18-5.13c2.21-1.23,4.69-1.84,7.45-1.84c2.76,0,5.24,0.61,7.45,1.84c2.21,1.22,3.94,2.93,5.18,5.13\r
+ c1.24,2.19,1.86,4.67,1.86,7.43S1038.77,841.66,1037.53,843.85z"/>\r
+ <path class="st0" d="M1096.81,817.3c-2.82-3.51-6.93-5.27-12.33-5.27c-2.79,0-5.42,0.52-7.87,1.55c-2.45,1.02-4.65,2.43-6.58,4.2\r
+ V817c0-1.25-0.24-2.26-0.71-3.01c-0.48-0.75-1.36-1.13-2.65-1.13H1060v47.02h10.03V827.4c1.84-1.72,3.82-3.08,5.94-4.09\r
+ c2.11-1.02,4.17-1.52,6.16-1.52c2.91,0,5.12,0.92,6.63,2.76c1.5,1.84,2.25,4.74,2.25,8.69v26.64h10.03v-27.74\r
+ C1101.04,825.76,1099.63,820.81,1096.81,817.3z"/>\r
+ <path class="st0" d="M1175.06,791.65v25.67c-1.62-1.56-3.47-2.8-5.54-3.72s-4.27-1.38-6.6-1.38c-4.42,0-8.37,1.04-11.85,3.13\r
+ c-3.48,2.08-6.2,4.97-8.16,8.67c-1.97,3.69-2.95,7.87-2.95,12.54c0,4.66,0.91,8.83,2.72,12.51c1.81,3.68,4.31,6.55,7.52,8.63\r
+ c3.2,2.07,6.84,3.1,10.92,3.1c2.83,0,5.4-0.52,7.73-1.56c2.33-1.05,4.4-2.47,6.21-4.28v0.55c0,2.91,1.2,4.37,3.59,4.37h6.44v-68.23\r
+ H1175.06z M1175.06,844.24c-1.5,1.93-3.19,3.5-5.08,4.69c-1.89,1.2-4.1,1.8-6.65,1.8c-2.57,0-4.87-0.61-6.9-1.82\r
+ c-2.02-1.21-3.61-2.9-4.76-5.06c-1.15-2.16-1.73-4.61-1.73-7.34c0-2.76,0.59-5.24,1.75-7.43c1.17-2.19,2.79-3.9,4.86-5.13\r
+ c2.07-1.23,4.39-1.84,6.97-1.84c1.71,0,3.36,0.3,4.92,0.9c1.56,0.59,2.93,1.33,4.09,2.2c1.17,0.88,2.01,1.73,2.53,2.56V844.24z"/>\r
+ <path class="st0" d="M1230.41,812.86v32.48c-1.84,1.72-3.83,3.08-5.96,4.1c-2.13,1.01-4.18,1.52-6.14,1.52\r
+ c-2.94,0-5.17-0.92-6.67-2.74c-1.5-1.83-2.26-4.73-2.26-8.72v-26.64h-9.98v27.74c0,6.38,1.41,11.33,4.23,14.84\r
+ c2.83,3.51,6.93,5.27,12.33,5.27c2.79,0,5.42-0.51,7.87-1.54c2.45-1.03,4.65-2.43,6.58-4.21v0.83c0,1.25,0.24,2.25,0.71,2.99\r
+ c0.48,0.73,1.36,1.1,2.65,1.1h6.62v-47.02H1230.41z"/>\r
+ <path class="st0" d="M1313.4,850.96c-0.27-0.71-0.72-1.25-1.35-1.61c-0.63-0.37-1.36-0.56-2.19-0.56c-0.92,0-1.79,0.2-2.62,0.6\r
+ c-0.92,0.49-1.78,0.88-2.58,1.15c-0.79,0.28-1.62,0.42-2.48,0.42c-2.09,0-3.74-0.67-4.97-2.01c-1.23-1.33-1.84-3.24-1.84-5.72\r
+ V822.2h13.25v-9.34h-13.25v-16.38h-6.12c-1.23,0-2.15,0.4-2.78,1.18c-0.63,0.78-0.98,1.75-1.04,2.92l-0.18,12.28h-4.97\r
+ c-0.83,0-1.58,0.28-2.25,0.83c-0.68,0.55-1.02,1.35-1.02,2.39v6.12h8.24v23.33c0,3.13,0.6,5.83,1.82,8.12\r
+ c1.21,2.28,2.91,4.03,5.1,5.24c2.2,1.21,4.73,1.82,7.62,1.82c2.88,0,5.6-0.49,8.16-1.47c2.56-0.98,4.98-2.17,7.25-3.55\r
+ L1313.4,850.96z"/>\r
+ <path class="st0" d="M1350.28,812.45c-1.06-0.28-2.43-0.42-4.12-0.42c-2.61,0-4.99,0.64-7.15,1.91c-2.17,1.28-4.04,3.02-5.64,5.23\r
+ v-1.52c0-1.38-0.34-2.53-1.01-3.43c-0.68-0.91-1.81-1.36-3.4-1.36h-5.57v47.02h9.98v-30.5c1.26-2.27,2.83-4.08,4.72-5.43\r
+ c1.88-1.35,3.96-2.03,6.23-2.03c1.01,0,1.95,0.08,2.81,0.24c0.49,0.06,0.84,0.09,1.06,0.09c1.22,0,2.28-0.35,3.17-1.06\r
+ c0.89-0.71,1.46-1.67,1.7-2.9l1.01-4.55C1352.6,813.15,1351.34,812.72,1350.28,812.45z"/>\r
+ <path class="st0" d="M1392.21,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.17,0-4.48,0.26-6.92,0.78s-4.74,1.26-6.9,2.21\r
+ c-2.16,0.95-3.87,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.13,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.69-0.77,3.2-1.29,4.53-1.56c1.34-0.28,2.89-0.42,4.67-0.42c3.37,0,5.84,0.93,7.39,2.78c1.54,1.86,2.33,4.84,2.36,8.95\r
+ c-1.9-0.55-4.07-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.43,2.17,3.34,3.89,5.73,5.15c2.39,1.26,4.97,1.88,7.73,1.88c5.52,0,10.67-2.28,15.45-6.85v0.41\r
+ c0,1.72,0.4,3.09,1.18,4.1s2,1.52,3.66,1.52h5.15v-28.07C1397,825.33,1395.4,820.4,1392.21,817.07z M1387.01,846.17\r
+ c-2.26,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.35-0.51-5.79-1.54c-1.45-1.03-2.17-2.48-2.17-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.96,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M1445.12,812.86c-1.47,0-2.74,0.35-3.79,1.04c-1.06,0.69-1.84,1.68-2.33,2.96l-11.41,28.81\r
+ c-0.18,0.55-0.32,1.25-0.41,2.09c-0.09,0.84-0.17,1.98-0.23,3.43h-0.09c-0.06-1.41-0.14-2.55-0.23-3.41\r
+ c-0.09-0.86-0.25-1.56-0.46-2.11l-11.37-28.81c-0.49-1.28-1.27-2.27-2.34-2.96c-1.08-0.69-2.35-1.04-3.82-1.04h-6.44l20.24,47.02\r
+ h8.93l20.24-47.02H1445.12z"/>\r
+ <path class="st0" d="M1490.76,817.07c-3.19-3.33-7.91-4.99-14.17-4.99c-2.18,0-4.48,0.26-6.92,0.78c-2.44,0.52-4.74,1.26-6.9,2.21\r
+ c-2.17,0.95-3.88,2.05-5.13,3.31l1.61,3.08c0.46,0.86,1.12,1.54,2,2.03c0.87,0.49,1.82,0.74,2.83,0.74c0.92,0,1.76-0.17,2.53-0.51\r
+ c1.68-0.77,3.2-1.29,4.53-1.56c1.33-0.28,2.89-0.42,4.67-0.42c3.37,0,5.83,0.93,7.38,2.78c1.55,1.86,2.34,4.84,2.37,8.95\r
+ c-1.9-0.55-4.08-0.98-6.53-1.29c-2.45-0.3-4.45-0.46-5.98-0.46c-6.23,0-10.87,1.31-13.94,3.92c-3.07,2.6-4.6,6.25-4.6,10.94\r
+ c0,2.58,0.71,4.96,2.14,7.14c1.42,2.17,3.33,3.89,5.73,5.15c2.39,1.26,4.96,1.88,7.72,1.88c5.52,0,10.68-2.28,15.46-6.85v0.41\r
+ c0,1.72,0.39,3.09,1.18,4.1c0.78,1.01,2,1.52,3.65,1.52h5.16v-28.07C1495.55,825.33,1493.95,820.4,1490.76,817.07z M1485.56,846.17\r
+ c-2.27,1.63-4.5,2.95-6.69,3.98c-2.19,1.03-4.49,1.54-6.88,1.54c-2.42,0-4.36-0.51-5.8-1.54c-1.44-1.03-2.16-2.48-2.16-4.35\r
+ c0-2.45,0.86-4.15,2.58-5.1c1.72-0.95,4.37-1.43,7.96-1.43c3.95,0,7.62,0.46,10.99,1.38V846.17z"/>\r
+ <path class="st0" d="M1509.85,812.86v47.02h10.03v-47.02H1509.85z M1520.69,796.12c-0.6-1.05-1.41-1.87-2.44-2.49\r
+ c-1.03-0.61-2.14-0.92-3.33-0.92c-1.23,0-2.37,0.31-3.41,0.92c-1.04,0.62-1.86,1.44-2.46,2.49c-0.6,1.04-0.9,2.16-0.9,3.35\r
+ c0,1.2,0.3,2.32,0.9,3.36c0.6,1.05,1.42,1.87,2.46,2.49c1.04,0.61,2.18,0.92,3.41,0.92c1.19,0,2.3-0.31,3.33-0.92\r
+ c1.03-0.62,1.84-1.44,2.44-2.49c0.6-1.04,0.9-2.16,0.9-3.36C1521.59,798.28,1521.29,797.16,1520.69,796.12z"/>\r
+ <path class="st0" d="M1534.24,791.65v68.23h10.03v-68.23H1534.24z"/>\r
+</g>\r
+<path class="st2" d="M620.48,351.6c-0.72-46.47-16.42-83.63-47.1-111.47c-31.42-28.52-73.53-42.77-126.33-42.77H289.68\r
+ c-9.98,0-18.07,8.09-18.07,18.07v82.8c14.78-16.16,35.3-26.83,57.84-27.88c28.02-1.31,56.12-0.7,84.18-0.92c0.8,0,1.58,0.38,2.4,0.6\r
+ l0.4,63.51c-16.76,1.57-26.57,10.97-26.99,25.49c-0.43,14.39,9.08,23.89,27.48,27.23l0.4,63.57c-25.22,0.16-49.7,0.4-74.2,0.4\r
+ c-7.3,0-14.69-0.05-21.88-1.21c-19.86-3.2-36.97-13-49.63-27.15v311.46c0,9.98,8.09,18.08,18.07,18.08h43.45\r
+ c9.98,0,18.08-8.1,18.08-18.08V529.49c0-9.99,8.09-18.08,18.08-18.08h40.53c52.28,0,92.41-5.61,120.39-16.83\r
+ c27.99-11.22,50.03-29.24,66.14-54.06c13.39-20.63,21.21-43.82,23.47-69.57c0.46-5.22,0.69-10.54,0.69-15.97\r
+ C620.51,353.85,620.5,352.72,620.48,351.6z M536.79,351.4c-14.22,0.09-28.41,0.29-42.61,0.1c-1.43-0.01-3.22-2.13-4.18-3.71\r
+ c-5.51-9.04-12.77-14.53-23.58-14.25c-11.44,0.29-22.88,0.19-34.61,0.27l-0.41-64C495.18,261.1,534.32,306.85,536.79,351.4z\r
+ M415.01,370.4c-6.43-0.07-10.54-4.08-10.89-10.11c-0.37-6.14,3.22-10.98,9.61-11.2c17.95-0.62,35.92-0.96,53.88-0.86\r
+ c6.81,0.03,10.48,4.78,10.28,11.31c-0.21,6.76-3.71,10.47-10.85,10.71c-8.74,0.32-17.52,0.18-26.3,0.24v-0.2\r
+ C432.17,370.35,423.58,370.52,415.01,370.4z M432.62,449.12l-0.41-63.97c10.99-0.07,21.62-0.7,32.19-0.06\r
+ c12.21,0.74,20.12-5.14,26.08-15.3c0.73-1.24,2.22-2.85,3.38-2.87c14.39-0.3,28.77-0.31,43.19-0.4\r
+ C534.44,410.98,496.74,457.08,432.62,449.12z"/>\r
+<path class="st2" d="M1649.63,193.61h-405.92c-12.49,0-22.62,10.12-22.62,22.62v25.52c0,12.49,10.13,22.62,22.62,22.62h144.46\r
+ c12.49,0,22.62,10.13,22.62,22.62v440.19c0,12.49,10.13,22.62,22.62,22.62h34.36c12.5,0,22.62-10.13,22.62-22.62V286.99\r
+ c0-12.49,10.13-22.62,22.62-22.62h136.62c12.49,0,22.62-10.13,22.62-22.62v-25.52C1672.25,203.73,1662.12,193.61,1649.63,193.61z"/>\r
+<g>\r
+ <path class="st2" d="M560.4,349.53c-1.41,0-2.83,0.29-4.51,0.47l0.11,17.56c1.71,0.12,3.48,0.34,5.27,0.34\r
+ c15.07,0.02,30.16-0.19,45.24,0.06c13.92,0.22,19.38,5.01,21.47,19.27c1.25,8.54,1.73,17.24,2.01,25.87\r
+ c0.99,30.98,17.18,50.79,46.85,55.6c9.62,1.56,19.56,1.28,29.35,1.22c6.08-0.04,9.74-4.48,9.29-9.82\r
+ c-0.42-5.1-4.33-8.12-10.16-8.33c-9.15-0.33-18.49,0.09-27.43-1.58c-19.96-3.75-29.56-16.55-30.35-37.68\r
+ c-0.39-10.14-0.67-20.43-2.58-30.33c-4.1-21.16-13.12-30.28-33.7-32.1C594.42,348.6,577.36,349.61,560.4,349.53z"/>\r
+</g>\r
+</svg>\r
-<?xml version="1.0" encoding="utf-8"?>
-<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink"
- x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64">
-<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/>
+<?xml version="1.0" encoding="utf-8"?> \r
+<svg version="1.2" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" \r
+ x="0px" y="0px" width="50px" height="50px" viewBox="0 0 41.37 64"> \r
+<path fill="#fff" d="M15.981499,13.747002C18.05169,13.747002,19.73,15.426697,19.73,17.496992L19.73,29.981703 19.779463,29.852098C20.305013,28.579597 21.683165,27.672002 23.300499,27.672002 25.370689,27.672002 27.049,29.159006 27.049,30.994911L27.049,32.286549 27.098465,32.167931C27.624022,31.003298 29.002193,30.172002 30.619551,30.172002 32.689867,30.172002 34.368,31.533998 34.368,33.213693L34.368,42.065532 34.802896,37.581322C34.973396,35.815634 36.543791,34.521343 38.310686,34.693342 40.076281,34.862541 41.370577,36.435431 41.198677,38.201019L39.531998,55.4002 39.531998,56.770905C39.531998,60.763145,36.295256,64,32.301731,64L19.449066,64C16.080709,64,13.24998,61.695639,12.447613,58.577476L12.385349,58.30774 2.4728718,41.726652C1.7229061,40.474153 2.3947554,38.692953 3.9740238,37.750153 5.5534835,36.807454 7.4387784,37.057454 8.1887436,38.310053L12.233,45.075792 12.233,17.496992C12.232999,15.426697,13.91121,13.747002,15.981499,13.747002z M2.4651451,5.512001C3.0964394,5.512001,3.7279081,5.7528877,4.2096834,6.2346535L8.3473825,10.372528C9.3108721,11.336092 9.3108721,12.895937 8.3473825,13.859404 7.3840122,14.822868 5.821506,14.822868 4.8593559,13.859404L0.7216568,9.7214584C-0.2405529,8.7580528 -0.2405529,7.1982384 0.7216568,6.2346535 1.2027321,5.7528877 1.8338509,5.512001 2.4651451,5.512001z M29.787703,5.512001C30.419058,5.512001 31.050566,5.7528877 31.532339,6.2346535 32.495886,7.1982384 32.495886,8.7580528 31.532339,9.7214584L27.394133,13.859404C26.430585,14.822868 24.869307,14.822868 23.905759,13.859404 22.943411,12.895937 22.943411,11.336092 23.905759,10.372528L28.043965,6.2346535C28.525139,5.7528877,29.156345,5.512001,29.787703,5.512001z M16.182049,0C17.543967,0,18.648,1.1041412,18.647999,2.466156L18.647999,8.3178291C18.648,9.6823425 17.543967,10.784 16.182049,10.784 14.820132,10.784 13.715999,9.6823425 13.716,8.3178291L13.716,2.466156C13.715999,1.1041412,14.820132,0,16.182049,0z"/> \r
</svg>
\ No newline at end of file
-const fs = require('fs');
-const os = require('os');
-const path = require('path');
-let debug = 0;
-let cfgpath = os.homedir() + '/.hourtrax/';
-let binpath = os.homedir() + '/bin/';
-let preferences= {};
-if (debug == 1){
- cfgpath = path.dirname(__dirname)+ '/.hourtrax/';
- binpath = '/mnt/c/Users/ksaff/Workspace/hourtrax/bin/';
-}
-let app = {
- currentview: null,
-
- viewpanel: function(pnlname){
- let panels = document.getElementsByClassName("panel");
- console.log("change panel to " + pnlname);
- app.currentview = pnlname;
- for (let p=0;p<panels.length;p++){
- panels[p].style.display = 'none';
- }
- if (document.getElementById('pnl_' + pnlname)){
- console.log("Set to block!");
- document.getElementById('pnl_' + pnlname).style.display = 'block';
- }
- return false;
- },
- snackbar: function(msg,color){
- var sb = document.getElementById("snackbar");
- sb.className="show " + color;
- sb.innerHTML = msg;
- setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);
- return false;
- },
- getPreference: function(key){
- let data = null;
- if (fs.existsSync(cfgpath + key + ".json")){
- console.log("Read Key:" + key);
- let data = fs.readFileSync(cfgpath + key + ".json", 'utf-8');
- if (data.startsWith("{") || data.startsWith("[")){
- data = JSON.parse(data);
- }
- return data;
- }
- return data;
- },
- setlanguage: function(nlang){
- if (nlang != 'fr' && nlang != 'de'){ nlang='de';}
- var lbldata = document.getElementsByClassName("lbl");
- for (var l=0;l<lbldata.length;l++){
- console.log(lbldata[l].dataset.lbl);
- lbldata[l].innerHTML=lang[nlang][lbldata[l].dataset.lbl];
-
- }
- }
-}
-
-
-
-document.addEventListener("DOMContentLoaded", function() {
-
- preferences = app.getPreference('hourtrax');
- console.log("Content loaded",preferences);
- db.connect(cfgpath + preferences.db);
- timeclock.inittable();
-});
+const fs = require('fs'); \r
+const os = require('os');\r
+const path = require('path');\r
+let debug = 0;\r
+let cfgpath = os.homedir() + '/.hourtrax/';\r
+let binpath = os.homedir() + '/bin/';\r
+let preferences= {};\r
+if (debug == 1){\r
+ cfgpath = path.dirname(__dirname)+ '/.hourtrax/';\r
+ binpath = '/mnt/c/Users/ksaff/Workspace/hourtrax/bin/';\r
+}\r
+let app = {\r
+ currentview: null,\r
+\r
+ viewpanel: function(pnlname){\r
+ let panels = document.getElementsByClassName("panel");\r
+ console.log("change panel to " + pnlname);\r
+ app.currentview = pnlname;\r
+ for (let p=0;p<panels.length;p++){\r
+ panels[p].style.display = 'none';\r
+ }\r
+ if (document.getElementById('pnl_' + pnlname)){\r
+ console.log("Set to block!");\r
+ document.getElementById('pnl_' + pnlname).style.display = 'block';\r
+ }\r
+ return false;\r
+ },\r
+ snackbar: function(msg,color){\r
+ var sb = document.getElementById("snackbar");\r
+ sb.className="show " + color;\r
+ sb.innerHTML = msg;\r
+ setTimeout(function(){ sb.className = sb.className.replace("show " + color, ""); }, 3000);\r
+ return false;\r
+ },\r
+ getPreference: function(key){\r
+ let data = null;\r
+ if (fs.existsSync(cfgpath + key + ".json")){\r
+ console.log("Read Key:" + key);\r
+ let data = fs.readFileSync(cfgpath + key + ".json", 'utf-8');\r
+ if (data.startsWith("{") || data.startsWith("[")){\r
+ data = JSON.parse(data);\r
+ }\r
+ return data;\r
+ }\r
+ return data;\r
+ },\r
+ setlanguage: function(nlang){\r
+ if (nlang != 'fr' && nlang != 'de'){ nlang='de';}\r
+ var lbldata = document.getElementsByClassName("lbl");\r
+ for (var l=0;l<lbldata.length;l++){\r
+ console.log(lbldata[l].dataset.lbl);\r
+ lbldata[l].innerHTML=lang[nlang][lbldata[l].dataset.lbl];\r
+ \r
+ }\r
+ }\r
+}\r
+\r
+\r
+\r
+document.addEventListener("DOMContentLoaded", function() {\r
+ \r
+ preferences = app.getPreference('hourtrax');\r
+ console.log("Content loaded",preferences);\r
+ db.connect(cfgpath + preferences.db);\r
+ timeclock.inittable();\r
+});\r
-const {app, BrowserWindow, globalShortcut} = require('electron')
-const path = require('path')
-const url = require('url')
-const os = require('os')
-const fs = require('fs')
-//const http = require('http')
-//const dialog = require('electron').dialog
-const {ipcMain} = require('electron')
-//var child = require('child_process').execFile;
-
-app.disableHardwareAcceleration()
-let debug = 0
-// Keep a global reference of the window object, if you don't, the window will
-// be closed automatically when the JavaScript object is garbage collected.
-let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch
-let mainWindow
-console.log("Start App")
-console.log(os.homedir());
-function createWindow () {
- let appcfg = localcfg();
- if (appcfg == null){
- console.log("No Config found!")
- app.quit()
- }
- // var executablePath = "";
- // var parameters = [];
- let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch
-
- mainWindow = new BrowserWindow({
- show: true,
- width: 800,
- height: ((debug == 1)?510:470) ,
- frame: ((debug == 1)?true:false),
- webPreferences: {
- nodeIntegration: true,
- worldSafeExecuteJavaScript: true,
- defaultEncoding: 'UTF-8',
- enableRemoteModule: true,
- }
- })
-
- // if (debug == 1){
-
- // }
- // if (os.platform() == "win32"){
- // const glshort = globalShortcut.register('CommandOrControl+Shift+I', () => {
-// mainWindow.webContents.openDevTools();
- // })
- // }
- mainWindow.setMenu(null)
- mainWindow.setBackgroundColor('#000');
- if (os.platform() != "win32"){
- mainWindow.maximize()
- mainWindow.setFullScreen(true)
- }
-
- console.log("Path:" + __dirname);
- mainWindow.loadFile("index."+ appcfg.type +".html")
- mainWindow.show()
- mainWindow.on('closed', () => {
- mainWindow = null
- })
-}
-
-function localcfg(){
- var data = null;
- cfgfile = os.homedir() + '/.hourtrax/hourtrax.json';
- if (debug == 1){
- cfgfile = path.dirname(__dirname)+ '/.hourtrax/hourtrax.json';
- }
- if (fs.existsSync(cfgfile)){
- var data = fs.readFileSync(cfgfile, 'utf-8');
- if (data.startsWith("{") || data.startsWith("[")){
- data = JSON.parse(data);
- }
- return data;
- }
- return data;
-}
-
-app.on('ready', createWindow)
-app.on('window-all-closed', () => {
- globalShortcut.unregisterAll()
- // if (process.platform !== 'darwin') {
- app.quit()
- // }
-})
-
-app.on('activate', () => {
- if (mainWindow === null) {
- createWindow()
- }
-})
+const {app, BrowserWindow, globalShortcut} = require('electron')\r
+const path = require('path')\r
+const url = require('url')\r
+const os = require('os')\r
+const fs = require('fs')\r
+//const http = require('http')\r
+//const dialog = require('electron').dialog\r
+const {ipcMain} = require('electron')\r
+//var child = require('child_process').execFile;\r
+\r
+app.disableHardwareAcceleration()\r
+let debug = 0\r
+// Keep a global reference of the window object, if you don't, the window will\r
+// be closed automatically when the JavaScript object is garbage collected.\r
+let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch\r
+let mainWindow \r
+console.log("Start App")\r
+console.log(os.homedir());\r
+function createWindow () {\r
+ let appcfg = localcfg();\r
+ if (appcfg == null){\r
+ console.log("No Config found!")\r
+ app.quit()\r
+ }\r
+ // var executablePath = "";\r
+ // var parameters = [];\r
+ let ua = app.getName() + '/' + app.getVersion() + '-' + os.type() + '/' + os.release() + '/' + os.arch\r
+ \r
+ mainWindow = new BrowserWindow({\r
+ show: true, \r
+ width: 800, \r
+ height: ((debug == 1)?510:470) ,\r
+ frame: ((debug == 1)?true:false),\r
+ webPreferences: {\r
+ nodeIntegration: true,\r
+ worldSafeExecuteJavaScript: true,\r
+ defaultEncoding: 'UTF-8',\r
+ enableRemoteModule: true,\r
+ }\r
+ })\r
+ \r
+ // if (debug == 1){\r
+ \r
+ // }\r
+ // if (os.platform() == "win32"){\r
+ // const glshort = globalShortcut.register('CommandOrControl+Shift+I', () => {\r
+// mainWindow.webContents.openDevTools();\r
+ // })\r
+ // }\r
+ mainWindow.setMenu(null)\r
+ mainWindow.setBackgroundColor('#000');\r
+ if (os.platform() != "win32"){\r
+ mainWindow.maximize()\r
+ mainWindow.setFullScreen(true)\r
+ }\r
+\r
+ console.log("Path:" + __dirname);\r
+ mainWindow.loadFile("index."+ appcfg.type +".html")\r
+ mainWindow.show()\r
+ mainWindow.on('closed', () => {\r
+ mainWindow = null\r
+ })\r
+}\r
+\r
+function localcfg(){\r
+ var data = null;\r
+ cfgfile = os.homedir() + '/.hourtrax/hourtrax.json';\r
+ if (debug == 1){\r
+ cfgfile = path.dirname(__dirname)+ '/.hourtrax/hourtrax.json';\r
+ }\r
+ if (fs.existsSync(cfgfile)){\r
+ var data = fs.readFileSync(cfgfile, 'utf-8');\r
+ if (data.startsWith("{") || data.startsWith("[")){\r
+ data = JSON.parse(data);\r
+ }\r
+ return data;\r
+ } \r
+ return data;\r
+}\r
+\r
+app.on('ready', createWindow)\r
+app.on('window-all-closed', () => {\r
+ globalShortcut.unregisterAll()\r
+ // if (process.platform !== 'darwin') {\r
+ app.quit()\r
+ // }\r
+})\r
+\r
+app.on('activate', () => {\r
+ if (mainWindow === null) {\r
+ createWindow()\r
+ }\r
+})\r
-{
- "name": "Hourtrax",
- "version": "1.0.0",
- "lockfileVersion": 1,
- "requires": true,
- "dependencies": {
- "abbrev": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",
- "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="
- },
- "ajv": {
- "version": "6.12.6",
- "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",
- "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",
- "optional": true,
- "requires": {
- "fast-deep-equal": "^3.1.1",
- "fast-json-stable-stringify": "^2.0.0",
- "json-schema-traverse": "^0.4.1",
- "uri-js": "^4.2.2"
- }
- },
- "ansi-regex": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",
- "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="
- },
- "aproba": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",
- "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="
- },
- "are-we-there-yet": {
- "version": "1.1.5",
- "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",
- "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",
- "requires": {
- "delegates": "^1.0.0",
- "readable-stream": "^2.0.6"
- }
- },
- "asn1": {
- "version": "0.2.4",
- "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",
- "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",
- "optional": true,
- "requires": {
- "safer-buffer": "~2.1.0"
- }
- },
- "assert-plus": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",
- "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",
- "optional": true
- },
- "asynckit": {
- "version": "0.4.0",
- "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",
- "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",
- "optional": true
- },
- "aws-sign2": {
- "version": "0.7.0",
- "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",
- "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",
- "optional": true
- },
- "aws4": {
- "version": "1.10.1",
- "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",
- "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",
- "optional": true
- },
- "balanced-match": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",
- "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="
- },
- "bcrypt-pbkdf": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",
- "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",
- "optional": true,
- "requires": {
- "tweetnacl": "^0.14.3"
- }
- },
- "block-stream": {
- "version": "0.0.9",
- "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",
- "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",
- "optional": true,
- "requires": {
- "inherits": "~2.0.0"
- }
- },
- "brace-expansion": {
- "version": "1.1.11",
- "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",
- "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",
- "requires": {
- "balanced-match": "^1.0.0",
- "concat-map": "0.0.1"
- }
- },
- "caseless": {
- "version": "0.12.0",
- "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",
- "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",
- "optional": true
- },
- "chownr": {
- "version": "1.1.4",
- "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",
- "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="
- },
- "code-point-at": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",
- "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="
- },
- "combined-stream": {
- "version": "1.0.8",
- "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",
- "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",
- "optional": true,
- "requires": {
- "delayed-stream": "~1.0.0"
- }
- },
- "concat-map": {
- "version": "0.0.1",
- "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",
- "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="
- },
- "console-control-strings": {
- "version": "1.1.0",
- "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",
- "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="
- },
- "core-util-is": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",
- "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="
- },
- "dashdash": {
- "version": "1.14.1",
- "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",
- "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "debug": {
- "version": "3.2.6",
- "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",
- "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",
- "requires": {
- "ms": "^2.1.1"
- }
- },
- "deep-extend": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",
- "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="
- },
- "delayed-stream": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",
- "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",
- "optional": true
- },
- "delegates": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",
- "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="
- },
- "detect-libc": {
- "version": "1.0.3",
- "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",
- "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="
- },
- "ecc-jsbn": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",
- "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",
- "optional": true,
- "requires": {
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.1.0"
- }
- },
- "extend": {
- "version": "3.0.2",
- "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",
- "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",
- "optional": true
- },
- "extsprintf": {
- "version": "1.3.0",
- "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",
- "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",
- "optional": true
- },
- "fast-deep-equal": {
- "version": "3.1.3",
- "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",
- "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",
- "optional": true
- },
- "fast-json-stable-stringify": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",
- "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",
- "optional": true
- },
- "forever-agent": {
- "version": "0.6.1",
- "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",
- "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",
- "optional": true
- },
- "form-data": {
- "version": "2.3.3",
- "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",
- "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",
- "optional": true,
- "requires": {
- "asynckit": "^0.4.0",
- "combined-stream": "^1.0.6",
- "mime-types": "^2.1.12"
- }
- },
- "fs-minipass": {
- "version": "1.2.7",
- "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",
- "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",
- "requires": {
- "minipass": "^2.6.0"
- }
- },
- "fs.realpath": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",
- "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="
- },
- "fstream": {
- "version": "1.0.12",
- "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",
- "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",
- "optional": true,
- "requires": {
- "graceful-fs": "^4.1.2",
- "inherits": "~2.0.0",
- "mkdirp": ">=0.5 0",
- "rimraf": "2"
- }
- },
- "gauge": {
- "version": "2.7.4",
- "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",
- "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",
- "requires": {
- "aproba": "^1.0.3",
- "console-control-strings": "^1.0.0",
- "has-unicode": "^2.0.0",
- "object-assign": "^4.1.0",
- "signal-exit": "^3.0.0",
- "string-width": "^1.0.1",
- "strip-ansi": "^3.0.1",
- "wide-align": "^1.1.0"
- }
- },
- "getpass": {
- "version": "0.1.7",
- "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",
- "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0"
- }
- },
- "glob": {
- "version": "7.1.6",
- "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",
- "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",
- "requires": {
- "fs.realpath": "^1.0.0",
- "inflight": "^1.0.4",
- "inherits": "2",
- "minimatch": "^3.0.4",
- "once": "^1.3.0",
- "path-is-absolute": "^1.0.0"
- }
- },
- "graceful-fs": {
- "version": "4.2.4",
- "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",
- "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",
- "optional": true
- },
- "har-schema": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",
- "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",
- "optional": true
- },
- "har-validator": {
- "version": "5.1.5",
- "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",
- "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",
- "optional": true,
- "requires": {
- "ajv": "^6.12.3",
- "har-schema": "^2.0.0"
- }
- },
- "has-unicode": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",
- "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="
- },
- "http-signature": {
- "version": "1.2.0",
- "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",
- "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "jsprim": "^1.2.2",
- "sshpk": "^1.7.0"
- }
- },
- "iconv-lite": {
- "version": "0.4.24",
- "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",
- "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",
- "requires": {
- "safer-buffer": ">= 2.1.2 < 3"
- }
- },
- "ignore-walk": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",
- "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",
- "requires": {
- "minimatch": "^3.0.4"
- }
- },
- "inflight": {
- "version": "1.0.6",
- "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",
- "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",
- "requires": {
- "once": "^1.3.0",
- "wrappy": "1"
- }
- },
- "inherits": {
- "version": "2.0.4",
- "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",
- "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="
- },
- "ini": {
- "version": "1.3.8",
- "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",
- "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="
- },
- "is-fullwidth-code-point": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",
- "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",
- "requires": {
- "number-is-nan": "^1.0.0"
- }
- },
- "is-typedarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",
- "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",
- "optional": true
- },
- "isarray": {
- "version": "1.0.0",
- "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",
- "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="
- },
- "isexe": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",
- "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",
- "optional": true
- },
- "isstream": {
- "version": "0.1.2",
- "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",
- "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",
- "optional": true
- },
- "jsbn": {
- "version": "0.1.1",
- "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",
- "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",
- "optional": true
- },
- "json-schema": {
- "version": "0.2.3",
- "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",
- "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",
- "optional": true
- },
- "json-schema-traverse": {
- "version": "0.4.1",
- "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",
- "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",
- "optional": true
- },
- "json-stringify-safe": {
- "version": "5.0.1",
- "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",
- "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",
- "optional": true
- },
- "jsprim": {
- "version": "1.4.1",
- "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",
- "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",
- "optional": true,
- "requires": {
- "assert-plus": "1.0.0",
- "extsprintf": "1.3.0",
- "json-schema": "0.2.3",
- "verror": "1.10.0"
- }
- },
- "mime-db": {
- "version": "1.44.0",
- "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",
- "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",
- "optional": true
- },
- "mime-types": {
- "version": "2.1.27",
- "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",
- "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",
- "optional": true,
- "requires": {
- "mime-db": "1.44.0"
- }
- },
- "minimatch": {
- "version": "3.0.4",
- "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",
- "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",
- "requires": {
- "brace-expansion": "^1.1.7"
- }
- },
- "minimist": {
- "version": "1.2.5",
- "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",
- "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="
- },
- "minipass": {
- "version": "2.9.0",
- "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",
- "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",
- "requires": {
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.0"
- }
- },
- "minizlib": {
- "version": "1.3.3",
- "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",
- "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",
- "requires": {
- "minipass": "^2.9.0"
- }
- },
- "mkdirp": {
- "version": "0.5.5",
- "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",
- "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",
- "requires": {
- "minimist": "^1.2.5"
- }
- },
- "ms": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",
- "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="
- },
- "needle": {
- "version": "2.5.2",
- "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz",
- "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==",
- "requires": {
- "debug": "^3.2.6",
- "iconv-lite": "^0.4.4",
- "sax": "^1.2.4"
- }
- },
- "node-addon-api": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",
- "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="
- },
- "node-gyp": {
- "version": "3.8.0",
- "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",
- "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",
- "optional": true,
- "requires": {
- "fstream": "^1.0.0",
- "glob": "^7.0.3",
- "graceful-fs": "^4.1.2",
- "mkdirp": "^0.5.0",
- "nopt": "2 || 3",
- "npmlog": "0 || 1 || 2 || 3 || 4",
- "osenv": "0",
- "request": "^2.87.0",
- "rimraf": "2",
- "semver": "~5.3.0",
- "tar": "^2.0.0",
- "which": "1"
- }
- },
- "node-pre-gyp": {
- "version": "0.11.0",
- "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",
- "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",
- "requires": {
- "detect-libc": "^1.0.2",
- "mkdirp": "^0.5.1",
- "needle": "^2.2.1",
- "nopt": "^4.0.1",
- "npm-packlist": "^1.1.6",
- "npmlog": "^4.0.2",
- "rc": "^1.2.7",
- "rimraf": "^2.6.1",
- "semver": "^5.3.0",
- "tar": "^4"
- },
- "dependencies": {
- "nopt": {
- "version": "4.0.3",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",
- "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",
- "requires": {
- "abbrev": "1",
- "osenv": "^0.1.4"
- }
- },
- "tar": {
- "version": "4.4.13",
- "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",
- "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",
- "requires": {
- "chownr": "^1.1.1",
- "fs-minipass": "^1.2.5",
- "minipass": "^2.8.6",
- "minizlib": "^1.2.1",
- "mkdirp": "^0.5.0",
- "safe-buffer": "^5.1.2",
- "yallist": "^3.0.3"
- }
- }
- }
- },
- "nopt": {
- "version": "3.0.6",
- "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",
- "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",
- "optional": true,
- "requires": {
- "abbrev": "1"
- }
- },
- "npm-bundled": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",
- "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",
- "requires": {
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npm-normalize-package-bin": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",
- "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="
- },
- "npm-packlist": {
- "version": "1.4.8",
- "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",
- "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",
- "requires": {
- "ignore-walk": "^3.0.1",
- "npm-bundled": "^1.0.1",
- "npm-normalize-package-bin": "^1.0.1"
- }
- },
- "npmlog": {
- "version": "4.1.2",
- "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",
- "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",
- "requires": {
- "are-we-there-yet": "~1.1.2",
- "console-control-strings": "~1.1.0",
- "gauge": "~2.7.3",
- "set-blocking": "~2.0.0"
- }
- },
- "number-is-nan": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",
- "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="
- },
- "oauth-sign": {
- "version": "0.9.0",
- "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",
- "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",
- "optional": true
- },
- "object-assign": {
- "version": "4.1.1",
- "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",
- "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="
- },
- "once": {
- "version": "1.4.0",
- "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",
- "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",
- "requires": {
- "wrappy": "1"
- }
- },
- "os-homedir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",
- "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="
- },
- "os-tmpdir": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",
- "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="
- },
- "osenv": {
- "version": "0.1.5",
- "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",
- "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",
- "requires": {
- "os-homedir": "^1.0.0",
- "os-tmpdir": "^1.0.0"
- }
- },
- "path-is-absolute": {
- "version": "1.0.1",
- "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",
- "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="
- },
- "performance-now": {
- "version": "2.1.0",
- "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",
- "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",
- "optional": true
- },
- "process-nextick-args": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",
- "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="
- },
- "psl": {
- "version": "1.8.0",
- "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",
- "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",
- "optional": true
- },
- "punycode": {
- "version": "2.1.1",
- "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",
- "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",
- "optional": true
- },
- "qs": {
- "version": "6.5.2",
- "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",
- "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",
- "optional": true
- },
- "rc": {
- "version": "1.2.8",
- "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",
- "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",
- "requires": {
- "deep-extend": "^0.6.0",
- "ini": "~1.3.0",
- "minimist": "^1.2.0",
- "strip-json-comments": "~2.0.1"
- }
- },
- "readable-stream": {
- "version": "2.3.7",
- "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",
- "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",
- "requires": {
- "core-util-is": "~1.0.0",
- "inherits": "~2.0.3",
- "isarray": "~1.0.0",
- "process-nextick-args": "~2.0.0",
- "safe-buffer": "~5.1.1",
- "string_decoder": "~1.1.1",
- "util-deprecate": "~1.0.1"
- }
- },
- "request": {
- "version": "2.88.2",
- "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",
- "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",
- "optional": true,
- "requires": {
- "aws-sign2": "~0.7.0",
- "aws4": "^1.8.0",
- "caseless": "~0.12.0",
- "combined-stream": "~1.0.6",
- "extend": "~3.0.2",
- "forever-agent": "~0.6.1",
- "form-data": "~2.3.2",
- "har-validator": "~5.1.3",
- "http-signature": "~1.2.0",
- "is-typedarray": "~1.0.0",
- "isstream": "~0.1.2",
- "json-stringify-safe": "~5.0.1",
- "mime-types": "~2.1.19",
- "oauth-sign": "~0.9.0",
- "performance-now": "^2.1.0",
- "qs": "~6.5.2",
- "safe-buffer": "^5.1.2",
- "tough-cookie": "~2.5.0",
- "tunnel-agent": "^0.6.0",
- "uuid": "^3.3.2"
- }
- },
- "rimraf": {
- "version": "2.7.1",
- "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",
- "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",
- "requires": {
- "glob": "^7.1.3"
- }
- },
- "safe-buffer": {
- "version": "5.1.2",
- "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",
- "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="
- },
- "safer-buffer": {
- "version": "2.1.2",
- "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",
- "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="
- },
- "sax": {
- "version": "1.2.4",
- "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",
- "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="
- },
- "semver": {
- "version": "5.3.0",
- "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",
- "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="
- },
- "set-blocking": {
- "version": "2.0.0",
- "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",
- "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="
- },
- "signal-exit": {
- "version": "3.0.3",
- "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",
- "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="
- },
- "sqlite3": {
- "version": "5.0.0",
- "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.0.tgz",
- "integrity": "sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw==",
- "requires": {
- "node-addon-api": "2.0.0",
- "node-gyp": "3.x",
- "node-pre-gyp": "^0.11.0"
- }
- },
- "sshpk": {
- "version": "1.16.1",
- "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",
- "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",
- "optional": true,
- "requires": {
- "asn1": "~0.2.3",
- "assert-plus": "^1.0.0",
- "bcrypt-pbkdf": "^1.0.0",
- "dashdash": "^1.12.0",
- "ecc-jsbn": "~0.1.1",
- "getpass": "^0.1.1",
- "jsbn": "~0.1.0",
- "safer-buffer": "^2.0.2",
- "tweetnacl": "~0.14.0"
- }
- },
- "string-width": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",
- "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",
- "requires": {
- "code-point-at": "^1.0.0",
- "is-fullwidth-code-point": "^1.0.0",
- "strip-ansi": "^3.0.0"
- }
- },
- "string_decoder": {
- "version": "1.1.1",
- "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",
- "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",
- "requires": {
- "safe-buffer": "~5.1.0"
- }
- },
- "strip-ansi": {
- "version": "3.0.1",
- "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",
- "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",
- "requires": {
- "ansi-regex": "^2.0.0"
- }
- },
- "strip-json-comments": {
- "version": "2.0.1",
- "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",
- "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="
- },
- "tar": {
- "version": "2.2.2",
- "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",
- "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",
- "optional": true,
- "requires": {
- "block-stream": "*",
- "fstream": "^1.0.12",
- "inherits": "2"
- }
- },
- "tough-cookie": {
- "version": "2.5.0",
- "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",
- "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",
- "optional": true,
- "requires": {
- "psl": "^1.1.28",
- "punycode": "^2.1.1"
- }
- },
- "tunnel-agent": {
- "version": "0.6.0",
- "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",
- "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",
- "optional": true,
- "requires": {
- "safe-buffer": "^5.0.1"
- }
- },
- "tweetnacl": {
- "version": "0.14.5",
- "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",
- "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",
- "optional": true
- },
- "uri-js": {
- "version": "4.4.0",
- "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",
- "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",
- "optional": true,
- "requires": {
- "punycode": "^2.1.0"
- }
- },
- "util-deprecate": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",
- "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="
- },
- "uuid": {
- "version": "3.4.0",
- "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",
- "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",
- "optional": true
- },
- "verror": {
- "version": "1.10.0",
- "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",
- "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",
- "optional": true,
- "requires": {
- "assert-plus": "^1.0.0",
- "core-util-is": "1.0.2",
- "extsprintf": "^1.2.0"
- }
- },
- "which": {
- "version": "1.3.1",
- "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",
- "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",
- "optional": true,
- "requires": {
- "isexe": "^2.0.0"
- }
- },
- "wide-align": {
- "version": "1.1.3",
- "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",
- "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",
- "requires": {
- "string-width": "^1.0.2 || 2"
- }
- },
- "wrappy": {
- "version": "1.0.2",
- "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",
- "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="
- },
- "yallist": {
- "version": "3.1.1",
- "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",
- "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="
- }
- }
-}
+{\r
+ "name": "Hourtrax",\r
+ "version": "1.0.0",\r
+ "lockfileVersion": 1,\r
+ "requires": true,\r
+ "dependencies": {\r
+ "abbrev": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/abbrev/-/abbrev-1.1.1.tgz",\r
+ "integrity": "sha512-nne9/IiQ/hzIhY6pdDnbBtz7DjPTKrY00P/zvPSm5pOFkl6xuGrGnXn/VtTNNfNtAfZ9/1RtehkszU9qcTii0Q=="\r
+ },\r
+ "ajv": {\r
+ "version": "6.12.6",\r
+ "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz",\r
+ "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "fast-deep-equal": "^3.1.1",\r
+ "fast-json-stable-stringify": "^2.0.0",\r
+ "json-schema-traverse": "^0.4.1",\r
+ "uri-js": "^4.2.2"\r
+ }\r
+ },\r
+ "ansi-regex": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-2.1.1.tgz",\r
+ "integrity": "sha1-w7M6te42DYbg5ijwRorn7yfWVN8="\r
+ },\r
+ "aproba": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/aproba/-/aproba-1.2.0.tgz",\r
+ "integrity": "sha512-Y9J6ZjXtoYh8RnXVCMOU/ttDmk1aBjunq9vO0ta5x85WDQiQfUF9sIPBITdbiiIVcBo03Hi3jMxigBtsddlXRw=="\r
+ },\r
+ "are-we-there-yet": {\r
+ "version": "1.1.5",\r
+ "resolved": "https://registry.npmjs.org/are-we-there-yet/-/are-we-there-yet-1.1.5.tgz",\r
+ "integrity": "sha512-5hYdAkZlcG8tOLujVDTgCT+uPX0VnpAH28gWsLfzpXYm7wP6mp5Q/gYyR7YQ0cKVJcXJnl3j2kpBan13PtQf6w==",\r
+ "requires": {\r
+ "delegates": "^1.0.0",\r
+ "readable-stream": "^2.0.6"\r
+ }\r
+ },\r
+ "asn1": {\r
+ "version": "0.2.4",\r
+ "resolved": "https://registry.npmjs.org/asn1/-/asn1-0.2.4.tgz",\r
+ "integrity": "sha512-jxwzQpLQjSmWXgwaCZE9Nz+glAG01yF1QnWgbhGwHI5A6FRIEY6IVqtHhIepHqI7/kyEyQEagBC5mBEFlIYvdg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "safer-buffer": "~2.1.0"\r
+ }\r
+ },\r
+ "assert-plus": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/assert-plus/-/assert-plus-1.0.0.tgz",\r
+ "integrity": "sha1-8S4PPF13sLHN2RRpQuTpbB5N1SU=",\r
+ "optional": true\r
+ },\r
+ "asynckit": {\r
+ "version": "0.4.0",\r
+ "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz",\r
+ "integrity": "sha1-x57Zf380y48robyXkLzDZkdLS3k=",\r
+ "optional": true\r
+ },\r
+ "aws-sign2": {\r
+ "version": "0.7.0",\r
+ "resolved": "https://registry.npmjs.org/aws-sign2/-/aws-sign2-0.7.0.tgz",\r
+ "integrity": "sha1-tG6JCTSpWR8tL2+G1+ap8bP+dqg=",\r
+ "optional": true\r
+ },\r
+ "aws4": {\r
+ "version": "1.10.1",\r
+ "resolved": "https://registry.npmjs.org/aws4/-/aws4-1.10.1.tgz",\r
+ "integrity": "sha512-zg7Hz2k5lI8kb7U32998pRRFin7zJlkfezGJjUc2heaD4Pw2wObakCDVzkKztTm/Ln7eiVvYsjqak0Ed4LkMDA==",\r
+ "optional": true\r
+ },\r
+ "balanced-match": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.0.tgz",\r
+ "integrity": "sha1-ibTRmasr7kneFk6gK4nORi1xt2c="\r
+ },\r
+ "bcrypt-pbkdf": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/bcrypt-pbkdf/-/bcrypt-pbkdf-1.0.2.tgz",\r
+ "integrity": "sha1-pDAdOJtqQ/m2f/PKEaP2Y342Dp4=",\r
+ "optional": true,\r
+ "requires": {\r
+ "tweetnacl": "^0.14.3"\r
+ }\r
+ },\r
+ "block-stream": {\r
+ "version": "0.0.9",\r
+ "resolved": "https://registry.npmjs.org/block-stream/-/block-stream-0.0.9.tgz",\r
+ "integrity": "sha1-E+v+d4oDIFz+A3UUgeu0szAMEmo=",\r
+ "optional": true,\r
+ "requires": {\r
+ "inherits": "~2.0.0"\r
+ }\r
+ },\r
+ "brace-expansion": {\r
+ "version": "1.1.11",\r
+ "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz",\r
+ "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==",\r
+ "requires": {\r
+ "balanced-match": "^1.0.0",\r
+ "concat-map": "0.0.1"\r
+ }\r
+ },\r
+ "caseless": {\r
+ "version": "0.12.0",\r
+ "resolved": "https://registry.npmjs.org/caseless/-/caseless-0.12.0.tgz",\r
+ "integrity": "sha1-G2gcIf+EAzyCZUMJBolCDRhxUdw=",\r
+ "optional": true\r
+ },\r
+ "chownr": {\r
+ "version": "1.1.4",\r
+ "resolved": "https://registry.npmjs.org/chownr/-/chownr-1.1.4.tgz",\r
+ "integrity": "sha512-jJ0bqzaylmJtVnNgzTeSOs8DPavpbYgEr/b0YL8/2GO3xJEhInFmhKMUnEJQjZumK7KXGFhUy89PrsJWlakBVg=="\r
+ },\r
+ "code-point-at": {\r
+ "version": "1.1.0",\r
+ "resolved": "https://registry.npmjs.org/code-point-at/-/code-point-at-1.1.0.tgz",\r
+ "integrity": "sha1-DQcLTQQ6W+ozovGkDi7bPZpMz3c="\r
+ },\r
+ "combined-stream": {\r
+ "version": "1.0.8",\r
+ "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz",\r
+ "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "delayed-stream": "~1.0.0"\r
+ }\r
+ },\r
+ "concat-map": {\r
+ "version": "0.0.1",\r
+ "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz",\r
+ "integrity": "sha1-2Klr13/Wjfd5OnMDajug1UBdR3s="\r
+ },\r
+ "console-control-strings": {\r
+ "version": "1.1.0",\r
+ "resolved": "https://registry.npmjs.org/console-control-strings/-/console-control-strings-1.1.0.tgz",\r
+ "integrity": "sha1-PXz0Rk22RG6mRL9LOVB/mFEAjo4="\r
+ },\r
+ "core-util-is": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/core-util-is/-/core-util-is-1.0.2.tgz",\r
+ "integrity": "sha1-tf1UIgqivFq1eqtxQMlAdUUDwac="\r
+ },\r
+ "dashdash": {\r
+ "version": "1.14.1",\r
+ "resolved": "https://registry.npmjs.org/dashdash/-/dashdash-1.14.1.tgz",\r
+ "integrity": "sha1-hTz6D3y+L+1d4gMmuN1YEDX24vA=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0"\r
+ }\r
+ },\r
+ "debug": {\r
+ "version": "3.2.6",\r
+ "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.6.tgz",\r
+ "integrity": "sha512-mel+jf7nrtEl5Pn1Qx46zARXKDpBbvzezse7p7LqINmdoIk8PYP5SySaxEmYv6TZ0JyEKA1hsCId6DIhgITtWQ==",\r
+ "requires": {\r
+ "ms": "^2.1.1"\r
+ }\r
+ },\r
+ "deep-extend": {\r
+ "version": "0.6.0",\r
+ "resolved": "https://registry.npmjs.org/deep-extend/-/deep-extend-0.6.0.tgz",\r
+ "integrity": "sha512-LOHxIOaPYdHlJRtCQfDIVZtfw/ufM8+rVj649RIHzcm/vGwQRXFt6OPqIFWsm2XEMrNIEtWR64sY1LEKD2vAOA=="\r
+ },\r
+ "delayed-stream": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz",\r
+ "integrity": "sha1-3zrhmayt+31ECqrgsp4icrJOxhk=",\r
+ "optional": true\r
+ },\r
+ "delegates": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/delegates/-/delegates-1.0.0.tgz",\r
+ "integrity": "sha1-hMbhWbgZBP3KWaDvRM2HDTElD5o="\r
+ },\r
+ "detect-libc": {\r
+ "version": "1.0.3",\r
+ "resolved": "https://registry.npmjs.org/detect-libc/-/detect-libc-1.0.3.tgz",\r
+ "integrity": "sha1-+hN8S9aY7fVc1c0CrFWfkaTEups="\r
+ },\r
+ "ecc-jsbn": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/ecc-jsbn/-/ecc-jsbn-0.1.2.tgz",\r
+ "integrity": "sha1-OoOpBOVDUyh4dMVkt1SThoSamMk=",\r
+ "optional": true,\r
+ "requires": {\r
+ "jsbn": "~0.1.0",\r
+ "safer-buffer": "^2.1.0"\r
+ }\r
+ },\r
+ "extend": {\r
+ "version": "3.0.2",\r
+ "resolved": "https://registry.npmjs.org/extend/-/extend-3.0.2.tgz",\r
+ "integrity": "sha512-fjquC59cD7CyW6urNXK0FBufkZcoiGG80wTuPujX590cB5Ttln20E2UB4S/WARVqhXffZl2LNgS+gQdPIIim/g==",\r
+ "optional": true\r
+ },\r
+ "extsprintf": {\r
+ "version": "1.3.0",\r
+ "resolved": "https://registry.npmjs.org/extsprintf/-/extsprintf-1.3.0.tgz",\r
+ "integrity": "sha1-lpGEQOMEGnpBT4xS48V06zw+HgU=",\r
+ "optional": true\r
+ },\r
+ "fast-deep-equal": {\r
+ "version": "3.1.3",\r
+ "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz",\r
+ "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==",\r
+ "optional": true\r
+ },\r
+ "fast-json-stable-stringify": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz",\r
+ "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==",\r
+ "optional": true\r
+ },\r
+ "forever-agent": {\r
+ "version": "0.6.1",\r
+ "resolved": "https://registry.npmjs.org/forever-agent/-/forever-agent-0.6.1.tgz",\r
+ "integrity": "sha1-+8cfDEGt6zf5bFd60e1C2P2sypE=",\r
+ "optional": true\r
+ },\r
+ "form-data": {\r
+ "version": "2.3.3",\r
+ "resolved": "https://registry.npmjs.org/form-data/-/form-data-2.3.3.tgz",\r
+ "integrity": "sha512-1lLKB2Mu3aGP1Q/2eCOx0fNbRMe7XdwktwOruhfqqd0rIJWwN4Dh+E3hrPSlDCXnSR7UtZ1N38rVXm+6+MEhJQ==",\r
+ "optional": true,\r
+ "requires": {\r
+ "asynckit": "^0.4.0",\r
+ "combined-stream": "^1.0.6",\r
+ "mime-types": "^2.1.12"\r
+ }\r
+ },\r
+ "fs-minipass": {\r
+ "version": "1.2.7",\r
+ "resolved": "https://registry.npmjs.org/fs-minipass/-/fs-minipass-1.2.7.tgz",\r
+ "integrity": "sha512-GWSSJGFy4e9GUeCcbIkED+bgAoFyj7XF1mV8rma3QW4NIqX9Kyx79N/PF61H5udOV3aY1IaMLs6pGbH71nlCTA==",\r
+ "requires": {\r
+ "minipass": "^2.6.0"\r
+ }\r
+ },\r
+ "fs.realpath": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz",\r
+ "integrity": "sha1-FQStJSMVjKpA20onh8sBQRmU6k8="\r
+ },\r
+ "fstream": {\r
+ "version": "1.0.12",\r
+ "resolved": "https://registry.npmjs.org/fstream/-/fstream-1.0.12.tgz",\r
+ "integrity": "sha512-WvJ193OHa0GHPEL+AycEJgxvBEwyfRkN1vhjca23OaPVMCaLCXTd5qAu82AjTcgP1UJmytkOKb63Ypde7raDIg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "graceful-fs": "^4.1.2",\r
+ "inherits": "~2.0.0",\r
+ "mkdirp": ">=0.5 0",\r
+ "rimraf": "2"\r
+ }\r
+ },\r
+ "gauge": {\r
+ "version": "2.7.4",\r
+ "resolved": "https://registry.npmjs.org/gauge/-/gauge-2.7.4.tgz",\r
+ "integrity": "sha1-LANAXHU4w51+s3sxcCLjJfsBi/c=",\r
+ "requires": {\r
+ "aproba": "^1.0.3",\r
+ "console-control-strings": "^1.0.0",\r
+ "has-unicode": "^2.0.0",\r
+ "object-assign": "^4.1.0",\r
+ "signal-exit": "^3.0.0",\r
+ "string-width": "^1.0.1",\r
+ "strip-ansi": "^3.0.1",\r
+ "wide-align": "^1.1.0"\r
+ }\r
+ },\r
+ "getpass": {\r
+ "version": "0.1.7",\r
+ "resolved": "https://registry.npmjs.org/getpass/-/getpass-0.1.7.tgz",\r
+ "integrity": "sha1-Xv+OPmhNVprkyysSgmBOi6YhSfo=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0"\r
+ }\r
+ },\r
+ "glob": {\r
+ "version": "7.1.6",\r
+ "resolved": "https://registry.npmjs.org/glob/-/glob-7.1.6.tgz",\r
+ "integrity": "sha512-LwaxwyZ72Lk7vZINtNNrywX0ZuLyStrdDtabefZKAY5ZGJhVtgdznluResxNmPitE0SAO+O26sWTHeKSI2wMBA==",\r
+ "requires": {\r
+ "fs.realpath": "^1.0.0",\r
+ "inflight": "^1.0.4",\r
+ "inherits": "2",\r
+ "minimatch": "^3.0.4",\r
+ "once": "^1.3.0",\r
+ "path-is-absolute": "^1.0.0"\r
+ }\r
+ },\r
+ "graceful-fs": {\r
+ "version": "4.2.4",\r
+ "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.4.tgz",\r
+ "integrity": "sha512-WjKPNJF79dtJAVniUlGGWHYGz2jWxT6VhN/4m1NdkbZ2nOsEF+cI1Edgql5zCRhs/VsQYRvrXctxktVXZUkixw==",\r
+ "optional": true\r
+ },\r
+ "har-schema": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/har-schema/-/har-schema-2.0.0.tgz",\r
+ "integrity": "sha1-qUwiJOvKwEeCoNkDVSHyRzW37JI=",\r
+ "optional": true\r
+ },\r
+ "har-validator": {\r
+ "version": "5.1.5",\r
+ "resolved": "https://registry.npmjs.org/har-validator/-/har-validator-5.1.5.tgz",\r
+ "integrity": "sha512-nmT2T0lljbxdQZfspsno9hgrG3Uir6Ks5afism62poxqBM6sDnMEuPmzTq8XN0OEwqKLLdh1jQI3qyE66Nzb3w==",\r
+ "optional": true,\r
+ "requires": {\r
+ "ajv": "^6.12.3",\r
+ "har-schema": "^2.0.0"\r
+ }\r
+ },\r
+ "has-unicode": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/has-unicode/-/has-unicode-2.0.1.tgz",\r
+ "integrity": "sha1-4Ob+aijPUROIVeCG0Wkedx3iqLk="\r
+ },\r
+ "http-signature": {\r
+ "version": "1.2.0",\r
+ "resolved": "https://registry.npmjs.org/http-signature/-/http-signature-1.2.0.tgz",\r
+ "integrity": "sha1-muzZJRFHcvPZW2WmCruPfBj7rOE=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0",\r
+ "jsprim": "^1.2.2",\r
+ "sshpk": "^1.7.0"\r
+ }\r
+ },\r
+ "iconv-lite": {\r
+ "version": "0.4.24",\r
+ "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.4.24.tgz",\r
+ "integrity": "sha512-v3MXnZAcvnywkTUEZomIActle7RXXeedOR31wwl7VlyoXO4Qi9arvSenNQWne1TcRwhCL1HwLI21bEqdpj8/rA==",\r
+ "requires": {\r
+ "safer-buffer": ">= 2.1.2 < 3"\r
+ }\r
+ },\r
+ "ignore-walk": {\r
+ "version": "3.0.3",\r
+ "resolved": "https://registry.npmjs.org/ignore-walk/-/ignore-walk-3.0.3.tgz",\r
+ "integrity": "sha512-m7o6xuOaT1aqheYHKf8W6J5pYH85ZI9w077erOzLje3JsB1gkafkAhHHY19dqjulgIZHFm32Cp5uNZgcQqdJKw==",\r
+ "requires": {\r
+ "minimatch": "^3.0.4"\r
+ }\r
+ },\r
+ "inflight": {\r
+ "version": "1.0.6",\r
+ "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz",\r
+ "integrity": "sha1-Sb1jMdfQLQwJvJEKEHW6gWW1bfk=",\r
+ "requires": {\r
+ "once": "^1.3.0",\r
+ "wrappy": "1"\r
+ }\r
+ },\r
+ "inherits": {\r
+ "version": "2.0.4",\r
+ "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz",\r
+ "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ=="\r
+ },\r
+ "ini": {\r
+ "version": "1.3.8",\r
+ "resolved": "https://registry.npmjs.org/ini/-/ini-1.3.8.tgz",\r
+ "integrity": "sha512-JV/yugV2uzW5iMRSiZAyDtQd+nxtUnjeLt0acNdw98kKLrvuRVyB80tsREOE7yvGVgalhZ6RNXCmEHkUKBKxew=="\r
+ },\r
+ "is-fullwidth-code-point": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-1.0.0.tgz",\r
+ "integrity": "sha1-754xOG8DGn8NZDr4L95QxFfvAMs=",\r
+ "requires": {\r
+ "number-is-nan": "^1.0.0"\r
+ }\r
+ },\r
+ "is-typedarray": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/is-typedarray/-/is-typedarray-1.0.0.tgz",\r
+ "integrity": "sha1-5HnICFjfDBsR3dppQPlgEfzaSpo=",\r
+ "optional": true\r
+ },\r
+ "isarray": {\r
+ "version": "1.0.0",\r
+ "resolved": "https://registry.npmjs.org/isarray/-/isarray-1.0.0.tgz",\r
+ "integrity": "sha1-u5NdSFgsuhaMBoNJV6VKPgcSTxE="\r
+ },\r
+ "isexe": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz",\r
+ "integrity": "sha1-6PvzdNxVb/iUehDcsFctYz8s+hA=",\r
+ "optional": true\r
+ },\r
+ "isstream": {\r
+ "version": "0.1.2",\r
+ "resolved": "https://registry.npmjs.org/isstream/-/isstream-0.1.2.tgz",\r
+ "integrity": "sha1-R+Y/evVa+m+S4VAOaQ64uFKcCZo=",\r
+ "optional": true\r
+ },\r
+ "jsbn": {\r
+ "version": "0.1.1",\r
+ "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-0.1.1.tgz",\r
+ "integrity": "sha1-peZUwuWi3rXyAdls77yoDA7y9RM=",\r
+ "optional": true\r
+ },\r
+ "json-schema": {\r
+ "version": "0.2.3",\r
+ "resolved": "https://registry.npmjs.org/json-schema/-/json-schema-0.2.3.tgz",\r
+ "integrity": "sha1-tIDIkuWaLwWVTOcnvT8qTogvnhM=",\r
+ "optional": true\r
+ },\r
+ "json-schema-traverse": {\r
+ "version": "0.4.1",\r
+ "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz",\r
+ "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==",\r
+ "optional": true\r
+ },\r
+ "json-stringify-safe": {\r
+ "version": "5.0.1",\r
+ "resolved": "https://registry.npmjs.org/json-stringify-safe/-/json-stringify-safe-5.0.1.tgz",\r
+ "integrity": "sha1-Epai1Y/UXxmg9s4B1lcB4sc1tus=",\r
+ "optional": true\r
+ },\r
+ "jsprim": {\r
+ "version": "1.4.1",\r
+ "resolved": "https://registry.npmjs.org/jsprim/-/jsprim-1.4.1.tgz",\r
+ "integrity": "sha1-MT5mvB5cwG5Di8G3SZwuXFastqI=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "1.0.0",\r
+ "extsprintf": "1.3.0",\r
+ "json-schema": "0.2.3",\r
+ "verror": "1.10.0"\r
+ }\r
+ },\r
+ "mime-db": {\r
+ "version": "1.44.0",\r
+ "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.44.0.tgz",\r
+ "integrity": "sha512-/NOTfLrsPBVeH7YtFPgsVWveuL+4SjjYxaQ1xtM1KMFj7HdxlBlxeyNLzhyJVx7r4rZGJAZ/6lkKCitSc/Nmpg==",\r
+ "optional": true\r
+ },\r
+ "mime-types": {\r
+ "version": "2.1.27",\r
+ "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.27.tgz",\r
+ "integrity": "sha512-JIhqnCasI9yD+SsmkquHBxTSEuZdQX5BuQnS2Vc7puQQQ+8yiP5AY5uWhpdv4YL4VM5c6iliiYWPgJ/nJQLp7w==",\r
+ "optional": true,\r
+ "requires": {\r
+ "mime-db": "1.44.0"\r
+ }\r
+ },\r
+ "minimatch": {\r
+ "version": "3.0.4",\r
+ "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.0.4.tgz",\r
+ "integrity": "sha512-yJHVQEhyqPLUTgt9B83PXu6W3rx4MvvHvSUvToogpwoGDOUQ+yDrR0HRot+yOCdCO7u4hX3pWft6kWBBcqh0UA==",\r
+ "requires": {\r
+ "brace-expansion": "^1.1.7"\r
+ }\r
+ },\r
+ "minimist": {\r
+ "version": "1.2.5",\r
+ "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.5.tgz",\r
+ "integrity": "sha512-FM9nNUYrRBAELZQT3xeZQ7fmMOBg6nWNmJKTcgsJeaLstP/UODVpGsr5OhXhhXg6f+qtJ8uiZ+PUxkDWcgIXLw=="\r
+ },\r
+ "minipass": {\r
+ "version": "2.9.0",\r
+ "resolved": "https://registry.npmjs.org/minipass/-/minipass-2.9.0.tgz",\r
+ "integrity": "sha512-wxfUjg9WebH+CUDX/CdbRlh5SmfZiy/hpkxaRI16Y9W56Pa75sWgd/rvFilSgrauD9NyFymP/+JFV3KwzIsJeg==",\r
+ "requires": {\r
+ "safe-buffer": "^5.1.2",\r
+ "yallist": "^3.0.0"\r
+ }\r
+ },\r
+ "minizlib": {\r
+ "version": "1.3.3",\r
+ "resolved": "https://registry.npmjs.org/minizlib/-/minizlib-1.3.3.tgz",\r
+ "integrity": "sha512-6ZYMOEnmVsdCeTJVE0W9ZD+pVnE8h9Hma/iOwwRDsdQoePpoX56/8B6z3P9VNwppJuBKNRuFDRNRqRWexT9G9Q==",\r
+ "requires": {\r
+ "minipass": "^2.9.0"\r
+ }\r
+ },\r
+ "mkdirp": {\r
+ "version": "0.5.5",\r
+ "resolved": "https://registry.npmjs.org/mkdirp/-/mkdirp-0.5.5.tgz",\r
+ "integrity": "sha512-NKmAlESf6jMGym1++R0Ra7wvhV+wFW63FaSOFPwRahvea0gMUcGUhVeAg/0BC0wiv9ih5NYPB1Wn1UEI1/L+xQ==",\r
+ "requires": {\r
+ "minimist": "^1.2.5"\r
+ }\r
+ },\r
+ "ms": {\r
+ "version": "2.1.2",\r
+ "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz",\r
+ "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w=="\r
+ },\r
+ "needle": {\r
+ "version": "2.5.2",\r
+ "resolved": "https://registry.npmjs.org/needle/-/needle-2.5.2.tgz",\r
+ "integrity": "sha512-LbRIwS9BfkPvNwNHlsA41Q29kL2L/6VaOJ0qisM5lLWsTV3nP15abO5ITL6L81zqFhzjRKDAYjpcBcwM0AVvLQ==",\r
+ "requires": {\r
+ "debug": "^3.2.6",\r
+ "iconv-lite": "^0.4.4",\r
+ "sax": "^1.2.4"\r
+ }\r
+ },\r
+ "node-addon-api": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/node-addon-api/-/node-addon-api-2.0.0.tgz",\r
+ "integrity": "sha512-ASCL5U13as7HhOExbT6OlWJJUV/lLzL2voOSP1UVehpRD8FbSrSDjfScK/KwAvVTI5AS6r4VwbOMlIqtvRidnA=="\r
+ },\r
+ "node-gyp": {\r
+ "version": "3.8.0",\r
+ "resolved": "https://registry.npmjs.org/node-gyp/-/node-gyp-3.8.0.tgz",\r
+ "integrity": "sha512-3g8lYefrRRzvGeSowdJKAKyks8oUpLEd/DyPV4eMhVlhJ0aNaZqIrNUIPuEWWTAoPqyFkfGrM67MC69baqn6vA==",\r
+ "optional": true,\r
+ "requires": {\r
+ "fstream": "^1.0.0",\r
+ "glob": "^7.0.3",\r
+ "graceful-fs": "^4.1.2",\r
+ "mkdirp": "^0.5.0",\r
+ "nopt": "2 || 3",\r
+ "npmlog": "0 || 1 || 2 || 3 || 4",\r
+ "osenv": "0",\r
+ "request": "^2.87.0",\r
+ "rimraf": "2",\r
+ "semver": "~5.3.0",\r
+ "tar": "^2.0.0",\r
+ "which": "1"\r
+ }\r
+ },\r
+ "node-pre-gyp": {\r
+ "version": "0.11.0",\r
+ "resolved": "https://registry.npmjs.org/node-pre-gyp/-/node-pre-gyp-0.11.0.tgz",\r
+ "integrity": "sha512-TwWAOZb0j7e9eGaf9esRx3ZcLaE5tQ2lvYy1pb5IAaG1a2e2Kv5Lms1Y4hpj+ciXJRofIxxlt5haeQ/2ANeE0Q==",\r
+ "requires": {\r
+ "detect-libc": "^1.0.2",\r
+ "mkdirp": "^0.5.1",\r
+ "needle": "^2.2.1",\r
+ "nopt": "^4.0.1",\r
+ "npm-packlist": "^1.1.6",\r
+ "npmlog": "^4.0.2",\r
+ "rc": "^1.2.7",\r
+ "rimraf": "^2.6.1",\r
+ "semver": "^5.3.0",\r
+ "tar": "^4"\r
+ },\r
+ "dependencies": {\r
+ "nopt": {\r
+ "version": "4.0.3",\r
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-4.0.3.tgz",\r
+ "integrity": "sha512-CvaGwVMztSMJLOeXPrez7fyfObdZqNUK1cPAEzLHrTybIua9pMdmmPR5YwtfNftIOMv3DPUhFaxsZMNTQO20Kg==",\r
+ "requires": {\r
+ "abbrev": "1",\r
+ "osenv": "^0.1.4"\r
+ }\r
+ },\r
+ "tar": {\r
+ "version": "4.4.13",\r
+ "resolved": "https://registry.npmjs.org/tar/-/tar-4.4.13.tgz",\r
+ "integrity": "sha512-w2VwSrBoHa5BsSyH+KxEqeQBAllHhccyMFVHtGtdMpF4W7IRWfZjFiQceJPChOeTsSDVUpER2T8FA93pr0L+QA==",\r
+ "requires": {\r
+ "chownr": "^1.1.1",\r
+ "fs-minipass": "^1.2.5",\r
+ "minipass": "^2.8.6",\r
+ "minizlib": "^1.2.1",\r
+ "mkdirp": "^0.5.0",\r
+ "safe-buffer": "^5.1.2",\r
+ "yallist": "^3.0.3"\r
+ }\r
+ }\r
+ }\r
+ },\r
+ "nopt": {\r
+ "version": "3.0.6",\r
+ "resolved": "https://registry.npmjs.org/nopt/-/nopt-3.0.6.tgz",\r
+ "integrity": "sha1-xkZdvwirzU2zWTF/eaxopkayj/k=",\r
+ "optional": true,\r
+ "requires": {\r
+ "abbrev": "1"\r
+ }\r
+ },\r
+ "npm-bundled": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/npm-bundled/-/npm-bundled-1.1.1.tgz",\r
+ "integrity": "sha512-gqkfgGePhTpAEgUsGEgcq1rqPXA+tv/aVBlgEzfXwA1yiUJF7xtEt3CtVwOjNYQOVknDk0F20w58Fnm3EtG0fA==",\r
+ "requires": {\r
+ "npm-normalize-package-bin": "^1.0.1"\r
+ }\r
+ },\r
+ "npm-normalize-package-bin": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/npm-normalize-package-bin/-/npm-normalize-package-bin-1.0.1.tgz",\r
+ "integrity": "sha512-EPfafl6JL5/rU+ot6P3gRSCpPDW5VmIzX959Ob1+ySFUuuYHWHekXpwdUZcKP5C+DS4GEtdJluwBjnsNDl+fSA=="\r
+ },\r
+ "npm-packlist": {\r
+ "version": "1.4.8",\r
+ "resolved": "https://registry.npmjs.org/npm-packlist/-/npm-packlist-1.4.8.tgz",\r
+ "integrity": "sha512-5+AZgwru5IevF5ZdnFglB5wNlHG1AOOuw28WhUq8/8emhBmLv6jX5by4WJCh7lW0uSYZYS6DXqIsyZVIXRZU9A==",\r
+ "requires": {\r
+ "ignore-walk": "^3.0.1",\r
+ "npm-bundled": "^1.0.1",\r
+ "npm-normalize-package-bin": "^1.0.1"\r
+ }\r
+ },\r
+ "npmlog": {\r
+ "version": "4.1.2",\r
+ "resolved": "https://registry.npmjs.org/npmlog/-/npmlog-4.1.2.tgz",\r
+ "integrity": "sha512-2uUqazuKlTaSI/dC8AzicUck7+IrEaOnN/e0jd3Xtt1KcGpwx30v50mL7oPyr/h9bL3E4aZccVwpwP+5W9Vjkg==",\r
+ "requires": {\r
+ "are-we-there-yet": "~1.1.2",\r
+ "console-control-strings": "~1.1.0",\r
+ "gauge": "~2.7.3",\r
+ "set-blocking": "~2.0.0"\r
+ }\r
+ },\r
+ "number-is-nan": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/number-is-nan/-/number-is-nan-1.0.1.tgz",\r
+ "integrity": "sha1-CXtgK1NCKlIsGvuHkDGDNpQaAR0="\r
+ },\r
+ "oauth-sign": {\r
+ "version": "0.9.0",\r
+ "resolved": "https://registry.npmjs.org/oauth-sign/-/oauth-sign-0.9.0.tgz",\r
+ "integrity": "sha512-fexhUFFPTGV8ybAtSIGbV6gOkSv8UtRbDBnAyLQw4QPKkgNlsH2ByPGtMUqdWkos6YCRmAqViwgZrJc/mRDzZQ==",\r
+ "optional": true\r
+ },\r
+ "object-assign": {\r
+ "version": "4.1.1",\r
+ "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz",\r
+ "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM="\r
+ },\r
+ "once": {\r
+ "version": "1.4.0",\r
+ "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz",\r
+ "integrity": "sha1-WDsap3WWHUsROsF9nFC6753Xa9E=",\r
+ "requires": {\r
+ "wrappy": "1"\r
+ }\r
+ },\r
+ "os-homedir": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/os-homedir/-/os-homedir-1.0.2.tgz",\r
+ "integrity": "sha1-/7xJiDNuDoM94MFox+8VISGqf7M="\r
+ },\r
+ "os-tmpdir": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/os-tmpdir/-/os-tmpdir-1.0.2.tgz",\r
+ "integrity": "sha1-u+Z0BseaqFxc/sdm/lc0VV36EnQ="\r
+ },\r
+ "osenv": {\r
+ "version": "0.1.5",\r
+ "resolved": "https://registry.npmjs.org/osenv/-/osenv-0.1.5.tgz",\r
+ "integrity": "sha512-0CWcCECdMVc2Rw3U5w9ZjqX6ga6ubk1xDVKxtBQPK7wis/0F2r9T6k4ydGYhecl7YUBxBVxhL5oisPsNxAPe2g==",\r
+ "requires": {\r
+ "os-homedir": "^1.0.0",\r
+ "os-tmpdir": "^1.0.0"\r
+ }\r
+ },\r
+ "path-is-absolute": {\r
+ "version": "1.0.1",\r
+ "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz",\r
+ "integrity": "sha1-F0uSaHNVNP+8es5r9TpanhtcX18="\r
+ },\r
+ "performance-now": {\r
+ "version": "2.1.0",\r
+ "resolved": "https://registry.npmjs.org/performance-now/-/performance-now-2.1.0.tgz",\r
+ "integrity": "sha1-Ywn04OX6kT7BxpMHrjZLSzd8nns=",\r
+ "optional": true\r
+ },\r
+ "process-nextick-args": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/process-nextick-args/-/process-nextick-args-2.0.1.tgz",\r
+ "integrity": "sha512-3ouUOpQhtgrbOa17J7+uxOTpITYWaGP7/AhoR3+A+/1e9skrzelGi/dXzEYyvbxubEF6Wn2ypscTKiKJFFn1ag=="\r
+ },\r
+ "psl": {\r
+ "version": "1.8.0",\r
+ "resolved": "https://registry.npmjs.org/psl/-/psl-1.8.0.tgz",\r
+ "integrity": "sha512-RIdOzyoavK+hA18OGGWDqUTsCLhtA7IcZ/6NCs4fFJaHBDab+pDDmDIByWFRQJq2Cd7r1OoQxBGKOaztq+hjIQ==",\r
+ "optional": true\r
+ },\r
+ "punycode": {\r
+ "version": "2.1.1",\r
+ "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.1.1.tgz",\r
+ "integrity": "sha512-XRsRjdf+j5ml+y/6GKHPZbrF/8p2Yga0JPtdqTIY2Xe5ohJPD9saDJJLPvp9+NSBprVvevdXZybnj2cv8OEd0A==",\r
+ "optional": true\r
+ },\r
+ "qs": {\r
+ "version": "6.5.2",\r
+ "resolved": "https://registry.npmjs.org/qs/-/qs-6.5.2.tgz",\r
+ "integrity": "sha512-N5ZAX4/LxJmF+7wN74pUD6qAh9/wnvdQcjq9TZjevvXzSUo7bfmw91saqMjzGS2xq91/odN2dW/WOl7qQHNDGA==",\r
+ "optional": true\r
+ },\r
+ "rc": {\r
+ "version": "1.2.8",\r
+ "resolved": "https://registry.npmjs.org/rc/-/rc-1.2.8.tgz",\r
+ "integrity": "sha512-y3bGgqKj3QBdxLbLkomlohkvsA8gdAiUQlSBJnBhfn+BPxg4bc62d8TcBW15wavDfgexCgccckhcZvywyQYPOw==",\r
+ "requires": {\r
+ "deep-extend": "^0.6.0",\r
+ "ini": "~1.3.0",\r
+ "minimist": "^1.2.0",\r
+ "strip-json-comments": "~2.0.1"\r
+ }\r
+ },\r
+ "readable-stream": {\r
+ "version": "2.3.7",\r
+ "resolved": "https://registry.npmjs.org/readable-stream/-/readable-stream-2.3.7.tgz",\r
+ "integrity": "sha512-Ebho8K4jIbHAxnuxi7o42OrZgF/ZTNcsZj6nRKyUmkhLFq8CHItp/fy6hQZuZmP/n3yZ9VBUbp4zz/mX8hmYPw==",\r
+ "requires": {\r
+ "core-util-is": "~1.0.0",\r
+ "inherits": "~2.0.3",\r
+ "isarray": "~1.0.0",\r
+ "process-nextick-args": "~2.0.0",\r
+ "safe-buffer": "~5.1.1",\r
+ "string_decoder": "~1.1.1",\r
+ "util-deprecate": "~1.0.1"\r
+ }\r
+ },\r
+ "request": {\r
+ "version": "2.88.2",\r
+ "resolved": "https://registry.npmjs.org/request/-/request-2.88.2.tgz",\r
+ "integrity": "sha512-MsvtOrfG9ZcrOwAW+Qi+F6HbD0CWXEh9ou77uOb7FM2WPhwT7smM833PzanhJLsgXjN89Ir6V2PczXNnMpwKhw==",\r
+ "optional": true,\r
+ "requires": {\r
+ "aws-sign2": "~0.7.0",\r
+ "aws4": "^1.8.0",\r
+ "caseless": "~0.12.0",\r
+ "combined-stream": "~1.0.6",\r
+ "extend": "~3.0.2",\r
+ "forever-agent": "~0.6.1",\r
+ "form-data": "~2.3.2",\r
+ "har-validator": "~5.1.3",\r
+ "http-signature": "~1.2.0",\r
+ "is-typedarray": "~1.0.0",\r
+ "isstream": "~0.1.2",\r
+ "json-stringify-safe": "~5.0.1",\r
+ "mime-types": "~2.1.19",\r
+ "oauth-sign": "~0.9.0",\r
+ "performance-now": "^2.1.0",\r
+ "qs": "~6.5.2",\r
+ "safe-buffer": "^5.1.2",\r
+ "tough-cookie": "~2.5.0",\r
+ "tunnel-agent": "^0.6.0",\r
+ "uuid": "^3.3.2"\r
+ }\r
+ },\r
+ "rimraf": {\r
+ "version": "2.7.1",\r
+ "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-2.7.1.tgz",\r
+ "integrity": "sha512-uWjbaKIK3T1OSVptzX7Nl6PvQ3qAGtKEtVRjRuazjfL3Bx5eI409VZSqgND+4UNnmzLVdPj9FqFJNPqBZFve4w==",\r
+ "requires": {\r
+ "glob": "^7.1.3"\r
+ }\r
+ },\r
+ "safe-buffer": {\r
+ "version": "5.1.2",\r
+ "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz",\r
+ "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g=="\r
+ },\r
+ "safer-buffer": {\r
+ "version": "2.1.2",\r
+ "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz",\r
+ "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg=="\r
+ },\r
+ "sax": {\r
+ "version": "1.2.4",\r
+ "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz",\r
+ "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw=="\r
+ },\r
+ "semver": {\r
+ "version": "5.3.0",\r
+ "resolved": "https://registry.npmjs.org/semver/-/semver-5.3.0.tgz",\r
+ "integrity": "sha1-myzl094C0XxgEq0yaqa00M9U+U8="\r
+ },\r
+ "set-blocking": {\r
+ "version": "2.0.0",\r
+ "resolved": "https://registry.npmjs.org/set-blocking/-/set-blocking-2.0.0.tgz",\r
+ "integrity": "sha1-BF+XgtARrppoA93TgrJDkrPYkPc="\r
+ },\r
+ "signal-exit": {\r
+ "version": "3.0.3",\r
+ "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.3.tgz",\r
+ "integrity": "sha512-VUJ49FC8U1OxwZLxIbTTrDvLnf/6TDgxZcK8wxR8zs13xpx7xbG60ndBlhNrFi2EMuFRoeDoJO7wthSLq42EjA=="\r
+ },\r
+ "sqlite3": {\r
+ "version": "5.0.0",\r
+ "resolved": "https://registry.npmjs.org/sqlite3/-/sqlite3-5.0.0.tgz",\r
+ "integrity": "sha512-rjvqHFUaSGnzxDy2AHCwhHy6Zp6MNJzCPGYju4kD8yi6bze4d1/zMTg6C7JI49b7/EM7jKMTvyfN/4ylBKdwfw==",\r
+ "requires": {\r
+ "node-addon-api": "2.0.0",\r
+ "node-gyp": "3.x",\r
+ "node-pre-gyp": "^0.11.0"\r
+ }\r
+ },\r
+ "sshpk": {\r
+ "version": "1.16.1",\r
+ "resolved": "https://registry.npmjs.org/sshpk/-/sshpk-1.16.1.tgz",\r
+ "integrity": "sha512-HXXqVUq7+pcKeLqqZj6mHFUMvXtOJt1uoUx09pFW6011inTMxqI8BA8PM95myrIyyKwdnzjdFjLiE6KBPVtJIg==",\r
+ "optional": true,\r
+ "requires": {\r
+ "asn1": "~0.2.3",\r
+ "assert-plus": "^1.0.0",\r
+ "bcrypt-pbkdf": "^1.0.0",\r
+ "dashdash": "^1.12.0",\r
+ "ecc-jsbn": "~0.1.1",\r
+ "getpass": "^0.1.1",\r
+ "jsbn": "~0.1.0",\r
+ "safer-buffer": "^2.0.2",\r
+ "tweetnacl": "~0.14.0"\r
+ }\r
+ },\r
+ "string-width": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/string-width/-/string-width-1.0.2.tgz",\r
+ "integrity": "sha1-EYvfW4zcUaKn5w0hHgfisLmxB9M=",\r
+ "requires": {\r
+ "code-point-at": "^1.0.0",\r
+ "is-fullwidth-code-point": "^1.0.0",\r
+ "strip-ansi": "^3.0.0"\r
+ }\r
+ },\r
+ "string_decoder": {\r
+ "version": "1.1.1",\r
+ "resolved": "https://registry.npmjs.org/string_decoder/-/string_decoder-1.1.1.tgz",\r
+ "integrity": "sha512-n/ShnvDi6FHbbVfviro+WojiFzv+s8MPMHBczVePfUpDJLwoLT0ht1l4YwBCbi8pJAveEEdnkHyPyTP/mzRfwg==",\r
+ "requires": {\r
+ "safe-buffer": "~5.1.0"\r
+ }\r
+ },\r
+ "strip-ansi": {\r
+ "version": "3.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-3.0.1.tgz",\r
+ "integrity": "sha1-ajhfuIU9lS1f8F0Oiq+UJ43GPc8=",\r
+ "requires": {\r
+ "ansi-regex": "^2.0.0"\r
+ }\r
+ },\r
+ "strip-json-comments": {\r
+ "version": "2.0.1",\r
+ "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-2.0.1.tgz",\r
+ "integrity": "sha1-PFMZQukIwml8DsNEhYwobHygpgo="\r
+ },\r
+ "tar": {\r
+ "version": "2.2.2",\r
+ "resolved": "https://registry.npmjs.org/tar/-/tar-2.2.2.tgz",\r
+ "integrity": "sha512-FCEhQ/4rE1zYv9rYXJw/msRqsnmlje5jHP6huWeBZ704jUTy02c5AZyWujpMR1ax6mVw9NyJMfuK2CMDWVIfgA==",\r
+ "optional": true,\r
+ "requires": {\r
+ "block-stream": "*",\r
+ "fstream": "^1.0.12",\r
+ "inherits": "2"\r
+ }\r
+ },\r
+ "tough-cookie": {\r
+ "version": "2.5.0",\r
+ "resolved": "https://registry.npmjs.org/tough-cookie/-/tough-cookie-2.5.0.tgz",\r
+ "integrity": "sha512-nlLsUzgm1kfLXSXfRZMc1KLAugd4hqJHDTvc2hDIwS3mZAfMEuMbc03SujMF+GEcpaX/qboeycw6iO8JwVv2+g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "psl": "^1.1.28",\r
+ "punycode": "^2.1.1"\r
+ }\r
+ },\r
+ "tunnel-agent": {\r
+ "version": "0.6.0",\r
+ "resolved": "https://registry.npmjs.org/tunnel-agent/-/tunnel-agent-0.6.0.tgz",\r
+ "integrity": "sha1-J6XeoGs2sEoKmWZ3SykIaPD8QP0=",\r
+ "optional": true,\r
+ "requires": {\r
+ "safe-buffer": "^5.0.1"\r
+ }\r
+ },\r
+ "tweetnacl": {\r
+ "version": "0.14.5",\r
+ "resolved": "https://registry.npmjs.org/tweetnacl/-/tweetnacl-0.14.5.tgz",\r
+ "integrity": "sha1-WuaBd/GS1EViadEIr6k/+HQ/T2Q=",\r
+ "optional": true\r
+ },\r
+ "uri-js": {\r
+ "version": "4.4.0",\r
+ "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.0.tgz",\r
+ "integrity": "sha512-B0yRTzYdUCCn9n+F4+Gh4yIDtMQcaJsmYBDsTSG8g/OejKBodLQ2IHfN3bM7jUsRXndopT7OIXWdYqc1fjmV6g==",\r
+ "optional": true,\r
+ "requires": {\r
+ "punycode": "^2.1.0"\r
+ }\r
+ },\r
+ "util-deprecate": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz",\r
+ "integrity": "sha1-RQ1Nyfpw3nMnYvvS1KKJgUGaDM8="\r
+ },\r
+ "uuid": {\r
+ "version": "3.4.0",\r
+ "resolved": "https://registry.npmjs.org/uuid/-/uuid-3.4.0.tgz",\r
+ "integrity": "sha512-HjSDRw6gZE5JMggctHBcjVak08+KEVhSIiDzFnT9S9aegmp85S/bReBVTb4QTFaRNptJ9kuYaNhnbNEOkbKb/A==",\r
+ "optional": true\r
+ },\r
+ "verror": {\r
+ "version": "1.10.0",\r
+ "resolved": "https://registry.npmjs.org/verror/-/verror-1.10.0.tgz",\r
+ "integrity": "sha1-OhBcoXBTr1XW4nDB+CiGguGNpAA=",\r
+ "optional": true,\r
+ "requires": {\r
+ "assert-plus": "^1.0.0",\r
+ "core-util-is": "1.0.2",\r
+ "extsprintf": "^1.2.0"\r
+ }\r
+ },\r
+ "which": {\r
+ "version": "1.3.1",\r
+ "resolved": "https://registry.npmjs.org/which/-/which-1.3.1.tgz",\r
+ "integrity": "sha512-HxJdYWq1MTIQbJ3nw0cqssHoTNU267KlrDuGZ1WYlxDStUtKUhOaJmh112/TZmHxxUfuJqPXSOm7tDyas0OSIQ==",\r
+ "optional": true,\r
+ "requires": {\r
+ "isexe": "^2.0.0"\r
+ }\r
+ },\r
+ "wide-align": {\r
+ "version": "1.1.3",\r
+ "resolved": "https://registry.npmjs.org/wide-align/-/wide-align-1.1.3.tgz",\r
+ "integrity": "sha512-QGkOQc8XL6Bt5PwnsExKBPuMKBxnGxWWW3fU55Xt4feHozMUhdUMaBCk290qpm/wG5u/RSKzwdAC4i51YigihA==",\r
+ "requires": {\r
+ "string-width": "^1.0.2 || 2"\r
+ }\r
+ },\r
+ "wrappy": {\r
+ "version": "1.0.2",\r
+ "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz",\r
+ "integrity": "sha1-tSQ9jz7BqjXxNkYFvA0QNuMKtp8="\r
+ },\r
+ "yallist": {\r
+ "version": "3.1.1",\r
+ "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz",\r
+ "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g=="\r
+ }\r
+ }\r
+}\r
-{
- "name": "Hourtrax",
- "version": "1.0.0",
- "main": "main.js",
- "author": "POT s.à r.l.",
- "license": "UNLICENSED",
- "dependencies": {
- "sqlite3": "^5.0.0"
- }
-}
+{\r
+ "name": "Hourtrax",\r
+ "version": "1.0.0",\r
+ "main": "main.js",\r
+ "author": "POT s.à r.l.",\r
+ "license": "UNLICENSED",\r
+ "dependencies": {\r
+ "sqlite3": "^5.0.0"\r
+ }\r
+}\r