From 70f72f2e540f0f4eaea6a4301585f42a9b198e36 Mon Sep 17 00:00:00 2001 From: Valentin Verdier Date: Fri, 15 May 2020 12:27:34 +0200 Subject: [PATCH] Commit initial --- camera/Makefile.am | 1 + camera/Makefile.in | 766 +++ camera/aclocal.m4 | 1152 ++++ camera/cameramanager/Makefile.am | 5 + camera/cameramanager/Makefile.in | 634 ++ camera/cameramanager/commander.c | 156 + camera/cameramanager/commander.h | 11 + camera/cameramanager/config.c | 119 + camera/cameramanager/config.h | 12 + camera/cameramanager/main.c | 97 + camera/cameramanager/streaming.c | 112 + camera/cameramanager/streaming.h | 11 + camera/compile | 347 ++ camera/configure | 5425 +++++++++++++++++ camera/configure.ac | 53 + camera/depcomp | 791 +++ camera/include/config.h.in | 61 + camera/install-sh | 501 ++ camera/missing | 215 + server/conf/nginx/nginx.conf | 21 + server/conf/sql/startBDD.sql | 79 + server/lib/CameraCommander/Camera.py | 7 + server/lib/CameraCommander/CameraCommander.py | 33 + .../lib/CameraCommander/CameraConnection.py | 32 + server/lib/CameraCommander/CameraContext.py | 86 + server/lib/CameraCommander/CameraModel.py | 24 + server/lib/CameraCommander/DataBase.py | 8 + server/lib/CameraCommander/DeadState.py | 10 + server/lib/CameraCommander/User.py | 5 + server/lib/CameraCommander/UserCommand.py | 120 + server/lib/CameraCommander/UserModel.py | 28 + server/lib/CameraCommander/WaitActivity.py | 14 + .../lib/CameraCommander/WaitAuthentication.py | 55 + .../CameraCommander/WaitDisabledModeReply.py | 40 + .../CameraCommander/WaitDisconnectedReply.py | 35 + .../CameraCommander/WaitEnabledModeReply.py | 40 + server/lib/CameraCommander/WaitState.py | 17 + server/lib/CameraCommander/main.py | 102 + server/lib/recorder.py | 73 + .../apps/CameraMonitor/Config/config.ini | 10 + .../Controller/ControllerCamera.php | 137 + .../Controller/ControllerConnexion.php | 76 + .../Controller/ControllerDefault.php | 150 + .../Controller/ControllerSecure.php | 15 + .../Controller/ControllerSecureUserCam.php | 27 + .../CameraMonitor/Framework/Configuration.php | 30 + .../CameraMonitor/Framework/Controller.php | 46 + .../apps/CameraMonitor/Framework/Model.php | 32 + .../apps/CameraMonitor/Framework/Request.php | 31 + .../apps/CameraMonitor/Framework/Router.php | 58 + .../apps/CameraMonitor/Framework/Session.php | 35 + .../apps/CameraMonitor/Framework/View.php | 49 + .../CameraMonitor/Model/Entity/Camera.php | 122 + .../apps/CameraMonitor/Model/Entity/User.php | 64 + .../apps/CameraMonitor/Model/ModelCamera.php | 85 + .../apps/CameraMonitor/Model/ModelUser.php | 75 + .../CameraMonitor/View/Camera/delayed.php | 24 + .../apps/CameraMonitor/View/Camera/index.php | 37 + .../CameraMonitor/View/Connexion/index.php | 17 + .../View/Connexion/registration.php | 23 + .../apps/CameraMonitor/View/Default/admin.php | 10 + .../apps/CameraMonitor/View/Default/index.php | 34 + .../apps/CameraMonitor/View/Default/live.php | 18 + .../CameraMonitor/View/Default/settings.php | 61 + .../apps/CameraMonitor/View/error.php | 18 + .../apps/CameraMonitor/View/template.php | 15 + server/webplatform/www/.htaccess | 2 + server/webplatform/www/Content/myStyle.css | 1 + server/webplatform/www/camera-auth/index.php | 25 + server/webplatform/www/client-auth/index.php | 25 + server/webplatform/www/index.php | 10 + .../www/jwplayer/jwplayer.flash.swf | Bin 0 -> 95730 bytes server/webplatform/www/jwplayer/jwplayer.js | 7 + .../www/jwplayer/polyfills.base64.js | 1 + .../www/jwplayer/polyfills.promise.js | 1 + .../webplatform/www/jwplayer/provider.cast.js | 1 + .../www/jwplayer/provider.shaka.js | 4 + .../www/jwplayer/provider.youtube.js | 1 + .../www/jwplayer/skins/beelden.css | 1 + .../webplatform/www/jwplayer/skins/bekle.css | 1 + .../webplatform/www/jwplayer/skins/five.css | 1 + .../webplatform/www/jwplayer/skins/glow.css | 1 + .../www/jwplayer/skins/roundster.css | 1 + .../webplatform/www/jwplayer/skins/seven.css | 1 + server/webplatform/www/jwplayer/skins/six.css | 1 + .../www/jwplayer/skins/stormtrooper.css | 1 + .../webplatform/www/jwplayer/skins/vapor.css | 1 + 87 files changed, 12684 insertions(+) create mode 100644 camera/Makefile.am create mode 100644 camera/Makefile.in create mode 100644 camera/aclocal.m4 create mode 100644 camera/cameramanager/Makefile.am create mode 100644 camera/cameramanager/Makefile.in create mode 100644 camera/cameramanager/commander.c create mode 100644 camera/cameramanager/commander.h create mode 100644 camera/cameramanager/config.c create mode 100644 camera/cameramanager/config.h create mode 100644 camera/cameramanager/main.c create mode 100644 camera/cameramanager/streaming.c create mode 100644 camera/cameramanager/streaming.h create mode 100755 camera/compile create mode 100755 camera/configure create mode 100644 camera/configure.ac create mode 100755 camera/depcomp create mode 100644 camera/include/config.h.in create mode 100755 camera/install-sh create mode 100755 camera/missing create mode 100644 server/conf/nginx/nginx.conf create mode 100644 server/conf/sql/startBDD.sql create mode 100644 server/lib/CameraCommander/Camera.py create mode 100644 server/lib/CameraCommander/CameraCommander.py create mode 100644 server/lib/CameraCommander/CameraConnection.py create mode 100644 server/lib/CameraCommander/CameraContext.py create mode 100644 server/lib/CameraCommander/CameraModel.py create mode 100644 server/lib/CameraCommander/DataBase.py create mode 100644 server/lib/CameraCommander/DeadState.py create mode 100644 server/lib/CameraCommander/User.py create mode 100644 server/lib/CameraCommander/UserCommand.py create mode 100644 server/lib/CameraCommander/UserModel.py create mode 100644 server/lib/CameraCommander/WaitActivity.py create mode 100644 server/lib/CameraCommander/WaitAuthentication.py create mode 100644 server/lib/CameraCommander/WaitDisabledModeReply.py create mode 100644 server/lib/CameraCommander/WaitDisconnectedReply.py create mode 100644 server/lib/CameraCommander/WaitEnabledModeReply.py create mode 100644 server/lib/CameraCommander/WaitState.py create mode 100644 server/lib/CameraCommander/main.py create mode 100755 server/lib/recorder.py create mode 100644 server/webplatform/apps/CameraMonitor/Config/config.ini create mode 100644 server/webplatform/apps/CameraMonitor/Controller/ControllerCamera.php create mode 100644 server/webplatform/apps/CameraMonitor/Controller/ControllerConnexion.php create mode 100644 server/webplatform/apps/CameraMonitor/Controller/ControllerDefault.php create mode 100644 server/webplatform/apps/CameraMonitor/Controller/ControllerSecure.php create mode 100644 server/webplatform/apps/CameraMonitor/Controller/ControllerSecureUserCam.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Configuration.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Controller.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Model.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Request.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Router.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/Session.php create mode 100644 server/webplatform/apps/CameraMonitor/Framework/View.php create mode 100644 server/webplatform/apps/CameraMonitor/Model/Entity/Camera.php create mode 100644 server/webplatform/apps/CameraMonitor/Model/Entity/User.php create mode 100644 server/webplatform/apps/CameraMonitor/Model/ModelCamera.php create mode 100644 server/webplatform/apps/CameraMonitor/Model/ModelUser.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Camera/delayed.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Camera/index.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Connexion/index.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Connexion/registration.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Default/admin.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Default/index.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Default/live.php create mode 100644 server/webplatform/apps/CameraMonitor/View/Default/settings.php create mode 100644 server/webplatform/apps/CameraMonitor/View/error.php create mode 100644 server/webplatform/apps/CameraMonitor/View/template.php create mode 100644 server/webplatform/www/.htaccess create mode 100644 server/webplatform/www/Content/myStyle.css create mode 100644 server/webplatform/www/camera-auth/index.php create mode 100644 server/webplatform/www/client-auth/index.php create mode 100644 server/webplatform/www/index.php create mode 100644 server/webplatform/www/jwplayer/jwplayer.flash.swf create mode 100644 server/webplatform/www/jwplayer/jwplayer.js create mode 100644 server/webplatform/www/jwplayer/polyfills.base64.js create mode 100644 server/webplatform/www/jwplayer/polyfills.promise.js create mode 100644 server/webplatform/www/jwplayer/provider.cast.js create mode 100644 server/webplatform/www/jwplayer/provider.shaka.js create mode 100644 server/webplatform/www/jwplayer/provider.youtube.js create mode 100644 server/webplatform/www/jwplayer/skins/beelden.css create mode 100644 server/webplatform/www/jwplayer/skins/bekle.css create mode 100644 server/webplatform/www/jwplayer/skins/five.css create mode 100644 server/webplatform/www/jwplayer/skins/glow.css create mode 100644 server/webplatform/www/jwplayer/skins/roundster.css create mode 100644 server/webplatform/www/jwplayer/skins/seven.css create mode 100644 server/webplatform/www/jwplayer/skins/six.css create mode 100644 server/webplatform/www/jwplayer/skins/stormtrooper.css create mode 100644 server/webplatform/www/jwplayer/skins/vapor.css diff --git a/camera/Makefile.am b/camera/Makefile.am new file mode 100644 index 0000000..62e0b19 --- /dev/null +++ b/camera/Makefile.am @@ -0,0 +1 @@ +SUBDIRS = cameramanager diff --git a/camera/Makefile.in b/camera/Makefile.in new file mode 100644 index 0000000..e18fb4f --- /dev/null +++ b/camera/Makefile.in @@ -0,0 +1,766 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +subdir = . +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(top_srcdir)/configure \ + $(am__configure_deps) $(am__DIST_COMMON) +am__CONFIG_DISTCLEAN_FILES = config.status config.cache config.log \ + configure.lineno config.status.lineno +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +SOURCES = +DIST_SOURCES = +RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \ + ctags-recursive dvi-recursive html-recursive info-recursive \ + install-data-recursive install-dvi-recursive \ + install-exec-recursive install-html-recursive \ + install-info-recursive install-pdf-recursive \ + install-ps-recursive install-recursive installcheck-recursive \ + installdirs-recursive pdf-recursive ps-recursive \ + tags-recursive uninstall-recursive +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive \ + distclean-recursive maintainer-clean-recursive +am__recursive_targets = \ + $(RECURSIVE_TARGETS) \ + $(RECURSIVE_CLEAN_TARGETS) \ + $(am__extra_recursive_targets) +AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \ + cscope distdir dist dist-all distcheck +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +CSCOPE = cscope +DIST_SUBDIRS = $(SUBDIRS) +am__DIST_COMMON = $(srcdir)/Makefile.in \ + $(top_srcdir)/include/config.h.in compile depcomp install-sh \ + missing +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +distdir = $(PACKAGE)-$(VERSION) +top_distdir = $(distdir) +am__remove_distdir = \ + if test -d "$(distdir)"; then \ + find "$(distdir)" -type d ! -perm -200 -exec chmod u+w {} ';' \ + && rm -rf "$(distdir)" \ + || { sleep 5 && rm -rf "$(distdir)"; }; \ + else :; fi +am__post_remove_distdir = $(am__remove_distdir) +am__relativize = \ + dir0=`pwd`; \ + sed_first='s,^\([^/]*\)/.*$$,\1,'; \ + sed_rest='s,^[^/]*/*,,'; \ + sed_last='s,^.*/\([^/]*\)$$,\1,'; \ + sed_butlast='s,/*[^/]*$$,,'; \ + while test -n "$$dir1"; do \ + first=`echo "$$dir1" | sed -e "$$sed_first"`; \ + if test "$$first" != "."; then \ + if test "$$first" = ".."; then \ + dir2=`echo "$$dir0" | sed -e "$$sed_last"`/"$$dir2"; \ + dir0=`echo "$$dir0" | sed -e "$$sed_butlast"`; \ + else \ + first2=`echo "$$dir2" | sed -e "$$sed_first"`; \ + if test "$$first2" = "$$first"; then \ + dir2=`echo "$$dir2" | sed -e "$$sed_rest"`; \ + else \ + dir2="../$$dir2"; \ + fi; \ + dir0="$$dir0"/"$$first"; \ + fi; \ + fi; \ + dir1=`echo "$$dir1" | sed -e "$$sed_rest"`; \ + done; \ + reldir="$$dir2" +DIST_ARCHIVES = $(distdir).tar.gz +GZIP_ENV = --best +DIST_TARGETS = dist-gzip +distuninstallcheck_listfiles = find . -type f -print +am__distuninstallcheck_listfiles = $(distuninstallcheck_listfiles) \ + | sed 's|^\./|$(prefix)/|' | grep -v '$(infodir)/dir$$' +distcleancheck_listfiles = find . -type f -print +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAMERAMANAGER_CFLAGS = @CAMERAMANAGER_CFLAGS@ +CAMERAMANAGER_CPPFLAGS = @CAMERAMANAGER_CPPFLAGS@ +CAMERAMANAGER_LIBS = @CAMERAMANAGER_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +SUBDIRS = cameramanager +all: all-recursive + +.SUFFIXES: +am--refresh: Makefile + @: +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + echo ' cd $(srcdir) && $(AUTOMAKE) --foreign'; \ + $(am__cd) $(srcdir) && $(AUTOMAKE) --foreign \ + && exit 0; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + echo ' $(SHELL) ./config.status'; \ + $(SHELL) ./config.status;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + $(SHELL) ./config.status --recheck + +$(top_srcdir)/configure: $(am__configure_deps) + $(am__cd) $(srcdir) && $(AUTOCONF) +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + $(am__cd) $(srcdir) && $(ACLOCAL) $(ACLOCAL_AMFLAGS) +$(am__aclocal_m4_deps): + +include/config.h: include/stamp-h1 + @test -f $@ || rm -f include/stamp-h1 + @test -f $@ || $(MAKE) $(AM_MAKEFLAGS) include/stamp-h1 + +include/stamp-h1: $(top_srcdir)/include/config.h.in $(top_builddir)/config.status + @rm -f include/stamp-h1 + cd $(top_builddir) && $(SHELL) ./config.status include/config.h +$(top_srcdir)/include/config.h.in: $(am__configure_deps) + ($(am__cd) $(top_srcdir) && $(AUTOHEADER)) + rm -f include/stamp-h1 + touch $@ + +distclean-hdr: + -rm -f include/config.h include/stamp-h1 + +# This directory's subdirectories are mostly independent; you can cd +# into them and run 'make' without going through this Makefile. +# To change the values of 'make' variables: instead of editing Makefiles, +# (1) if the variable is set in 'config.status', edit 'config.status' +# (which will cause the Makefiles to be regenerated when you run 'make'); +# (2) otherwise, pass the desired values on the 'make' command line. +$(am__recursive_targets): + @fail=; \ + if $(am__make_keepgoing); then \ + failcom='fail=yes'; \ + else \ + failcom='exit 1'; \ + fi; \ + dot_seen=no; \ + target=`echo $@ | sed s/-recursive//`; \ + case "$@" in \ + distclean-* | maintainer-clean-*) list='$(DIST_SUBDIRS)' ;; \ + *) list='$(SUBDIRS)' ;; \ + esac; \ + for subdir in $$list; do \ + echo "Making $$target in $$subdir"; \ + if test "$$subdir" = "."; then \ + dot_seen=yes; \ + local_target="$$target-am"; \ + else \ + local_target="$$target"; \ + fi; \ + ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) $$local_target) \ + || eval $$failcom; \ + done; \ + if test "$$dot_seen" = "no"; then \ + $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \ + fi; test -z "$$fail" + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-recursive +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \ + include_option=--etags-include; \ + empty_fix=.; \ + else \ + include_option=--include; \ + empty_fix=; \ + fi; \ + list='$(SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + test ! -f $$subdir/TAGS || \ + set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \ + fi; \ + done; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-recursive + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscope: cscope.files + test ! -s cscope.files \ + || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS) +clean-cscope: + -rm -f cscope.files +cscope.files: clean-cscope cscopelist +cscopelist: cscopelist-recursive + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + -rm -f cscope.out cscope.in.out cscope.po.out cscope.files + +distdir: $(DISTFILES) + $(am__remove_distdir) + test -d "$(distdir)" || mkdir "$(distdir)" + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done + @list='$(DIST_SUBDIRS)'; for subdir in $$list; do \ + if test "$$subdir" = .; then :; else \ + $(am__make_dryrun) \ + || test -d "$(distdir)/$$subdir" \ + || $(MKDIR_P) "$(distdir)/$$subdir" \ + || exit 1; \ + dir1=$$subdir; dir2="$(distdir)/$$subdir"; \ + $(am__relativize); \ + new_distdir=$$reldir; \ + dir1=$$subdir; dir2="$(top_distdir)"; \ + $(am__relativize); \ + new_top_distdir=$$reldir; \ + echo " (cd $$subdir && $(MAKE) $(AM_MAKEFLAGS) top_distdir="$$new_top_distdir" distdir="$$new_distdir" \\"; \ + echo " am__remove_distdir=: am__skip_length_check=: am__skip_mode_fix=: distdir)"; \ + ($(am__cd) $$subdir && \ + $(MAKE) $(AM_MAKEFLAGS) \ + top_distdir="$$new_top_distdir" \ + distdir="$$new_distdir" \ + am__remove_distdir=: \ + am__skip_length_check=: \ + am__skip_mode_fix=: \ + distdir) \ + || exit 1; \ + fi; \ + done + -test -n "$(am__skip_mode_fix)" \ + || find "$(distdir)" -type d ! -perm -755 \ + -exec chmod u+rwx,go+rx {} \; -o \ + ! -type d ! -perm -444 -links 1 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -400 -exec chmod a+r {} \; -o \ + ! -type d ! -perm -444 -exec $(install_sh) -c -m a+r {} {} \; \ + || chmod -R a+r "$(distdir)" +dist-gzip: distdir + tardir=$(distdir) && $(am__tar) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).tar.gz + $(am__post_remove_distdir) + +dist-bzip2: distdir + tardir=$(distdir) && $(am__tar) | BZIP2=$${BZIP2--9} bzip2 -c >$(distdir).tar.bz2 + $(am__post_remove_distdir) + +dist-lzip: distdir + tardir=$(distdir) && $(am__tar) | lzip -c $${LZIP_OPT--9} >$(distdir).tar.lz + $(am__post_remove_distdir) + +dist-xz: distdir + tardir=$(distdir) && $(am__tar) | XZ_OPT=$${XZ_OPT--e} xz -c >$(distdir).tar.xz + $(am__post_remove_distdir) + +dist-tarZ: distdir + @echo WARNING: "Support for distribution archives compressed with" \ + "legacy program 'compress' is deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z + $(am__post_remove_distdir) + +dist-shar: distdir + @echo WARNING: "Support for shar distribution archives is" \ + "deprecated." >&2 + @echo WARNING: "It will be removed altogether in Automake 2.0" >&2 + shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz + $(am__post_remove_distdir) + +dist-zip: distdir + -rm -f $(distdir).zip + zip -rq $(distdir).zip $(distdir) + $(am__post_remove_distdir) + +dist dist-all: + $(MAKE) $(AM_MAKEFLAGS) $(DIST_TARGETS) am__post_remove_distdir='@:' + $(am__post_remove_distdir) + +# This target untars the dist file and tries a VPATH configuration. Then +# it guarantees that the distribution is self-contained by making another +# tarfile. +distcheck: dist + case '$(DIST_ARCHIVES)' in \ + *.tar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).tar.gz | $(am__untar) ;;\ + *.tar.bz2*) \ + bzip2 -dc $(distdir).tar.bz2 | $(am__untar) ;;\ + *.tar.lz*) \ + lzip -dc $(distdir).tar.lz | $(am__untar) ;;\ + *.tar.xz*) \ + xz -dc $(distdir).tar.xz | $(am__untar) ;;\ + *.tar.Z*) \ + uncompress -c $(distdir).tar.Z | $(am__untar) ;;\ + *.shar.gz*) \ + GZIP=$(GZIP_ENV) gzip -dc $(distdir).shar.gz | unshar ;;\ + *.zip*) \ + unzip $(distdir).zip ;;\ + esac + chmod -R a-w $(distdir) + chmod u+w $(distdir) + mkdir $(distdir)/_build $(distdir)/_build/sub $(distdir)/_inst + chmod a-w $(distdir) + test -d $(distdir)/_build || exit 0; \ + dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \ + && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \ + && am__cwd=`pwd` \ + && $(am__cd) $(distdir)/_build/sub \ + && ../../configure \ + $(AM_DISTCHECK_CONFIGURE_FLAGS) \ + $(DISTCHECK_CONFIGURE_FLAGS) \ + --srcdir=../.. --prefix="$$dc_install_base" \ + && $(MAKE) $(AM_MAKEFLAGS) \ + && $(MAKE) $(AM_MAKEFLAGS) dvi \ + && $(MAKE) $(AM_MAKEFLAGS) check \ + && $(MAKE) $(AM_MAKEFLAGS) install \ + && $(MAKE) $(AM_MAKEFLAGS) installcheck \ + && $(MAKE) $(AM_MAKEFLAGS) uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) distuninstallcheck_dir="$$dc_install_base" \ + distuninstallcheck \ + && chmod -R a-w "$$dc_install_base" \ + && ({ \ + (cd ../.. && umask 077 && mkdir "$$dc_destdir") \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" install \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" uninstall \ + && $(MAKE) $(AM_MAKEFLAGS) DESTDIR="$$dc_destdir" \ + distuninstallcheck_dir="$$dc_destdir" distuninstallcheck; \ + } || { rm -rf "$$dc_destdir"; exit 1; }) \ + && rm -rf "$$dc_destdir" \ + && $(MAKE) $(AM_MAKEFLAGS) dist \ + && rm -rf $(DIST_ARCHIVES) \ + && $(MAKE) $(AM_MAKEFLAGS) distcleancheck \ + && cd "$$am__cwd" \ + || exit 1 + $(am__post_remove_distdir) + @(echo "$(distdir) archives ready for distribution: "; \ + list='$(DIST_ARCHIVES)'; for i in $$list; do echo $$i; done) | \ + sed -e 1h -e 1s/./=/g -e 1p -e 1x -e '$$p' -e '$$x' +distuninstallcheck: + @test -n '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: trying to run $@ with an empty' \ + '$$(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + $(am__cd) '$(distuninstallcheck_dir)' || { \ + echo 'ERROR: cannot chdir into $(distuninstallcheck_dir)' >&2; \ + exit 1; \ + }; \ + test `$(am__distuninstallcheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left after uninstall:" ; \ + if test -n "$(DESTDIR)"; then \ + echo " (check DESTDIR support)"; \ + fi ; \ + $(distuninstallcheck_listfiles) ; \ + exit 1; } >&2 +distcleancheck: distclean + @if test '$(srcdir)' = . ; then \ + echo "ERROR: distcleancheck can only run from a VPATH build" ; \ + exit 1 ; \ + fi + @test `$(distcleancheck_listfiles) | wc -l` -eq 0 \ + || { echo "ERROR: files left in build directory after distclean:" ; \ + $(distcleancheck_listfiles) ; \ + exit 1; } >&2 +check-am: all-am +check: check-recursive +all-am: Makefile +installdirs: installdirs-recursive +installdirs-am: +install: install-recursive +install-exec: install-exec-recursive +install-data: install-data-recursive +uninstall: uninstall-recursive + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-recursive +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-recursive + +clean-am: clean-generic mostlyclean-am + +distclean: distclean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -f Makefile +distclean-am: clean-am distclean-generic distclean-hdr distclean-tags + +dvi: dvi-recursive + +dvi-am: + +html: html-recursive + +html-am: + +info: info-recursive + +info-am: + +install-data-am: + +install-dvi: install-dvi-recursive + +install-dvi-am: + +install-exec-am: + +install-html: install-html-recursive + +install-html-am: + +install-info: install-info-recursive + +install-info-am: + +install-man: + +install-pdf: install-pdf-recursive + +install-pdf-am: + +install-ps: install-ps-recursive + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-recursive + -rm -f $(am__CONFIG_DISTCLEAN_FILES) + -rm -rf $(top_srcdir)/autom4te.cache + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-recursive + +mostlyclean-am: mostlyclean-generic + +pdf: pdf-recursive + +pdf-am: + +ps: ps-recursive + +ps-am: + +uninstall-am: + +.MAKE: $(am__recursive_targets) install-am install-strip + +.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \ + am--refresh check check-am clean clean-cscope clean-generic \ + cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \ + dist-gzip dist-lzip dist-shar dist-tarZ dist-xz dist-zip \ + distcheck distclean distclean-generic distclean-hdr \ + distclean-tags distcleancheck distdir distuninstallcheck dvi \ + dvi-am html html-am info info-am install install-am \ + install-data install-data-am install-dvi install-dvi-am \ + install-exec install-exec-am install-html install-html-am \ + install-info install-info-am install-man install-pdf \ + install-pdf-am install-ps install-ps-am install-strip \ + installcheck installcheck-am installdirs installdirs-am \ + maintainer-clean maintainer-clean-generic mostlyclean \ + mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \ + uninstall-am + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/camera/aclocal.m4 b/camera/aclocal.m4 new file mode 100644 index 0000000..f3018f6 --- /dev/null +++ b/camera/aclocal.m4 @@ -0,0 +1,1152 @@ +# generated automatically by aclocal 1.15 -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. + +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])]) +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],, +[m4_warning([this file was generated for autoconf 2.69. +You have another version of autoconf. It may work, but is not guaranteed to. +If you have problems, you may need to regenerate the build system entirely. +To do so, use the procedure documented by the package, typically 'autoreconf'.])]) + +# Copyright (C) 2002-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_AUTOMAKE_VERSION(VERSION) +# ---------------------------- +# Automake X.Y traces this macro to ensure aclocal.m4 has been +# generated from the m4 files accompanying Automake X.Y. +# (This private macro should not be called outside this file.) +AC_DEFUN([AM_AUTOMAKE_VERSION], +[am__api_version='1.15' +dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to +dnl require some minimum version. Point them to the right macro. +m4_if([$1], [1.15], [], + [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl +]) + +# _AM_AUTOCONF_VERSION(VERSION) +# ----------------------------- +# aclocal traces this macro to find the Autoconf version. +# This is a private macro too. Using m4_define simplifies +# the logic in aclocal, which can simply ignore this definition. +m4_define([_AM_AUTOCONF_VERSION], []) + +# AM_SET_CURRENT_AUTOMAKE_VERSION +# ------------------------------- +# Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced. +# This function is AC_REQUIREd by AM_INIT_AUTOMAKE. +AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION], +[AM_AUTOMAKE_VERSION([1.15])dnl +m4_ifndef([AC_AUTOCONF_VERSION], + [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl +_AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))]) + +# AM_AUX_DIR_EXPAND -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets +# $ac_aux_dir to '$srcdir/foo'. In other projects, it is set to +# '$srcdir', '$srcdir/..', or '$srcdir/../..'. +# +# Of course, Automake must honor this variable whenever it calls a +# tool from the auxiliary directory. The problem is that $srcdir (and +# therefore $ac_aux_dir as well) can be either absolute or relative, +# depending on how configure is run. This is pretty annoying, since +# it makes $ac_aux_dir quite unusable in subdirectories: in the top +# source directory, any form will work fine, but in subdirectories a +# relative path needs to be adjusted first. +# +# $ac_aux_dir/missing +# fails when called from a subdirectory if $ac_aux_dir is relative +# $top_srcdir/$ac_aux_dir/missing +# fails if $ac_aux_dir is absolute, +# fails when called from a subdirectory in a VPATH build with +# a relative $ac_aux_dir +# +# The reason of the latter failure is that $top_srcdir and $ac_aux_dir +# are both prefixed by $srcdir. In an in-source build this is usually +# harmless because $srcdir is '.', but things will broke when you +# start a VPATH build or use an absolute $srcdir. +# +# So we could use something similar to $top_srcdir/$ac_aux_dir/missing, +# iff we strip the leading $srcdir from $ac_aux_dir. That would be: +# am_aux_dir='\$(top_srcdir)/'`expr "$ac_aux_dir" : "$srcdir//*\(.*\)"` +# and then we would define $MISSING as +# MISSING="\${SHELL} $am_aux_dir/missing" +# This will work as long as MISSING is not called from configure, because +# unfortunately $(top_srcdir) has no meaning in configure. +# However there are other variables, like CC, which are often used in +# configure, and could therefore not use this "fixed" $ac_aux_dir. +# +# Another solution, used here, is to always expand $ac_aux_dir to an +# absolute PATH. The drawback is that using absolute paths prevent a +# configured tree to be moved without reconfiguration. + +AC_DEFUN([AM_AUX_DIR_EXPAND], +[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` +]) + +# AM_CONDITIONAL -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_CONDITIONAL(NAME, SHELL-CONDITION) +# ------------------------------------- +# Define a conditional. +AC_DEFUN([AM_CONDITIONAL], +[AC_PREREQ([2.52])dnl + m4_if([$1], [TRUE], [AC_FATAL([$0: invalid condition: $1])], + [$1], [FALSE], [AC_FATAL([$0: invalid condition: $1])])dnl +AC_SUBST([$1_TRUE])dnl +AC_SUBST([$1_FALSE])dnl +_AM_SUBST_NOTMAKE([$1_TRUE])dnl +_AM_SUBST_NOTMAKE([$1_FALSE])dnl +m4_define([_AM_COND_VALUE_$1], [$2])dnl +if $2; then + $1_TRUE= + $1_FALSE='#' +else + $1_TRUE='#' + $1_FALSE= +fi +AC_CONFIG_COMMANDS_PRE( +[if test -z "${$1_TRUE}" && test -z "${$1_FALSE}"; then + AC_MSG_ERROR([[conditional "$1" was never defined. +Usually this means the macro was only invoked conditionally.]]) +fi])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be +# written in clear, in which case automake, when reading aclocal.m4, +# will think it sees a *use*, and therefore will trigger all it's +# C support machinery. Also note that it means that autoscan, seeing +# CC etc. in the Makefile, will ask for an AC_PROG_CC use... + + +# _AM_DEPENDENCIES(NAME) +# ---------------------- +# See how the compiler implements dependency checking. +# NAME is "CC", "CXX", "OBJC", "OBJCXX", "UPC", or "GJC". +# We try a few techniques and use that to set a single cache variable. +# +# We don't AC_REQUIRE the corresponding AC_PROG_CC since the latter was +# modified to invoke _AM_DEPENDENCIES(CC); we would have a circular +# dependency, and given that the user is not expected to run this macro, +# just rely on AC_PROG_CC. +AC_DEFUN([_AM_DEPENDENCIES], +[AC_REQUIRE([AM_SET_DEPDIR])dnl +AC_REQUIRE([AM_OUTPUT_DEPENDENCY_COMMANDS])dnl +AC_REQUIRE([AM_MAKE_INCLUDE])dnl +AC_REQUIRE([AM_DEP_TRACK])dnl + +m4_if([$1], [CC], [depcc="$CC" am_compiler_list=], + [$1], [CXX], [depcc="$CXX" am_compiler_list=], + [$1], [OBJC], [depcc="$OBJC" am_compiler_list='gcc3 gcc'], + [$1], [OBJCXX], [depcc="$OBJCXX" am_compiler_list='gcc3 gcc'], + [$1], [UPC], [depcc="$UPC" am_compiler_list=], + [$1], [GCJ], [depcc="$GCJ" am_compiler_list='gcc3 gcc'], + [depcc="$$1" am_compiler_list=]) + +AC_CACHE_CHECK([dependency style of $depcc], + [am_cv_$1_dependencies_compiler_type], +[if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_$1_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n ['s/^#*\([a-zA-Z0-9]*\))$/\1/p'] < ./depcomp` + fi + am__universal=false + m4_case([$1], [CC], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac], + [CXX], + [case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac]) + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_$1_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_$1_dependencies_compiler_type=none +fi +]) +AC_SUBST([$1DEPMODE], [depmode=$am_cv_$1_dependencies_compiler_type]) +AM_CONDITIONAL([am__fastdep$1], [ + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_$1_dependencies_compiler_type" = gcc3]) +]) + + +# AM_SET_DEPDIR +# ------------- +# Choose a directory name for dependency files. +# This macro is AC_REQUIREd in _AM_DEPENDENCIES. +AC_DEFUN([AM_SET_DEPDIR], +[AC_REQUIRE([AM_SET_LEADING_DOT])dnl +AC_SUBST([DEPDIR], ["${am__leading_dot}deps"])dnl +]) + + +# AM_DEP_TRACK +# ------------ +AC_DEFUN([AM_DEP_TRACK], +[AC_ARG_ENABLE([dependency-tracking], [dnl +AS_HELP_STRING( + [--enable-dependency-tracking], + [do not reject slow dependency extractors]) +AS_HELP_STRING( + [--disable-dependency-tracking], + [speeds up one-time build])]) +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi +AM_CONDITIONAL([AMDEP], [test "x$enable_dependency_tracking" != xno]) +AC_SUBST([AMDEPBACKSLASH])dnl +_AM_SUBST_NOTMAKE([AMDEPBACKSLASH])dnl +AC_SUBST([am__nodep])dnl +_AM_SUBST_NOTMAKE([am__nodep])dnl +]) + +# Generate code to set up dependency tracking. -*- Autoconf -*- + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + + +# _AM_OUTPUT_DEPENDENCY_COMMANDS +# ------------------------------ +AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS], +[{ + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`AS_DIRNAME("$mf")` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`AS_DIRNAME(["$file"])` + AS_MKDIR_P([$dirpart/$fdir]) + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} +])# _AM_OUTPUT_DEPENDENCY_COMMANDS + + +# AM_OUTPUT_DEPENDENCY_COMMANDS +# ----------------------------- +# This macro should only be invoked once -- use via AC_REQUIRE. +# +# This code is only required when automatic dependency tracking +# is enabled. FIXME. This creates each '.P' file that we will +# need in order to bootstrap the dependency handling code. +AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS], +[AC_CONFIG_COMMANDS([depfiles], + [test x"$AMDEP_TRUE" != x"" || _AM_OUTPUT_DEPENDENCY_COMMANDS], + [AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir"]) +]) + +# Do all the work for Automake. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This macro actually does too much. Some checks are only needed if +# your package does certain things. But this isn't really a big deal. + +dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O. +m4_define([AC_PROG_CC], +m4_defn([AC_PROG_CC]) +[_AM_PROG_CC_C_O +]) + +# AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE]) +# AM_INIT_AUTOMAKE([OPTIONS]) +# ----------------------------------------------- +# The call with PACKAGE and VERSION arguments is the old style +# call (pre autoconf-2.50), which is being phased out. PACKAGE +# and VERSION should now be passed to AC_INIT and removed from +# the call to AM_INIT_AUTOMAKE. +# We support both call styles for the transition. After +# the next Automake release, Autoconf can make the AC_INIT +# arguments mandatory, and then we can depend on a new Autoconf +# release and drop the old call support. +AC_DEFUN([AM_INIT_AUTOMAKE], +[AC_PREREQ([2.65])dnl +dnl Autoconf wants to disallow AM_ names. We explicitly allow +dnl the ones we care about. +m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl +AC_REQUIRE([AM_SET_CURRENT_AUTOMAKE_VERSION])dnl +AC_REQUIRE([AC_PROG_INSTALL])dnl +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + AC_SUBST([am__isrc], [' -I$(srcdir)'])_AM_SUBST_NOTMAKE([am__isrc])dnl + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + AC_MSG_ERROR([source directory already configured; run "make distclean" there first]) + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi +AC_SUBST([CYGPATH_W]) + +# Define the identity of the package. +dnl Distinguish between old-style and new-style calls. +m4_ifval([$2], +[AC_DIAGNOSE([obsolete], + [$0: two- and three-arguments forms are deprecated.]) +m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl + AC_SUBST([PACKAGE], [$1])dnl + AC_SUBST([VERSION], [$2])], +[_AM_SET_OPTIONS([$1])dnl +dnl Diagnose old-style AC_INIT with new-style AM_AUTOMAKE_INIT. +m4_if( + m4_ifdef([AC_PACKAGE_NAME], [ok]):m4_ifdef([AC_PACKAGE_VERSION], [ok]), + [ok:ok],, + [m4_fatal([AC_INIT should be called with package and version arguments])])dnl + AC_SUBST([PACKAGE], ['AC_PACKAGE_TARNAME'])dnl + AC_SUBST([VERSION], ['AC_PACKAGE_VERSION'])])dnl + +_AM_IF_OPTION([no-define],, +[AC_DEFINE_UNQUOTED([PACKAGE], ["$PACKAGE"], [Name of package]) + AC_DEFINE_UNQUOTED([VERSION], ["$VERSION"], [Version number of package])])dnl + +# Some tools Automake needs. +AC_REQUIRE([AM_SANITY_CHECK])dnl +AC_REQUIRE([AC_ARG_PROGRAM])dnl +AM_MISSING_PROG([ACLOCAL], [aclocal-${am__api_version}]) +AM_MISSING_PROG([AUTOCONF], [autoconf]) +AM_MISSING_PROG([AUTOMAKE], [automake-${am__api_version}]) +AM_MISSING_PROG([AUTOHEADER], [autoheader]) +AM_MISSING_PROG([MAKEINFO], [makeinfo]) +AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +AC_REQUIRE([AM_PROG_INSTALL_STRIP])dnl +AC_REQUIRE([AC_PROG_MKDIR_P])dnl +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +AC_SUBST([mkdir_p], ['$(MKDIR_P)']) +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +AC_REQUIRE([AC_PROG_AWK])dnl +AC_REQUIRE([AC_PROG_MAKE_SET])dnl +AC_REQUIRE([AM_SET_LEADING_DOT])dnl +_AM_IF_OPTION([tar-ustar], [_AM_PROG_TAR([ustar])], + [_AM_IF_OPTION([tar-pax], [_AM_PROG_TAR([pax])], + [_AM_PROG_TAR([v7])])]) +_AM_IF_OPTION([no-dependencies],, +[AC_PROVIDE_IFELSE([AC_PROG_CC], + [_AM_DEPENDENCIES([CC])], + [m4_define([AC_PROG_CC], + m4_defn([AC_PROG_CC])[_AM_DEPENDENCIES([CC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_CXX], + [_AM_DEPENDENCIES([CXX])], + [m4_define([AC_PROG_CXX], + m4_defn([AC_PROG_CXX])[_AM_DEPENDENCIES([CXX])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJC], + [_AM_DEPENDENCIES([OBJC])], + [m4_define([AC_PROG_OBJC], + m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl +AC_PROVIDE_IFELSE([AC_PROG_OBJCXX], + [_AM_DEPENDENCIES([OBJCXX])], + [m4_define([AC_PROG_OBJCXX], + m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl +]) +AC_REQUIRE([AM_SILENT_RULES])dnl +dnl The testsuite driver may need to know about EXEEXT, so add the +dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen. This +dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below. +AC_CONFIG_COMMANDS_PRE(dnl +[m4_provide_if([_AM_COMPILER_EXEEXT], + [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + AC_MSG_ERROR([Your 'rm' program is bad, sorry.]) + fi +fi +dnl The trailing newline in this macro's definition is deliberate, for +dnl backward compatibility and to allow trailing 'dnl'-style comments +dnl after the AM_INIT_AUTOMAKE invocation. See automake bug#16841. +]) + +dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion. Do not +dnl add the conditional right here, as _AC_COMPILER_EXEEXT may be further +dnl mangled by Autoconf and run in a shell conditional statement. +m4_define([_AC_COMPILER_EXEEXT], +m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])]) + +# When config.status generates a header, we must update the stamp-h file. +# This file resides in the same directory as the config header +# that is generated. The stamp files are numbered to have different names. + +# Autoconf calls _AC_AM_CONFIG_HEADER_HOOK (when defined) in the +# loop where config.status creates the headers, so we can generate +# our stamp files there. +AC_DEFUN([_AC_AM_CONFIG_HEADER_HOOK], +[# Compute $1's index in $config_headers. +_am_arg=$1 +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_SH +# ------------------ +# Define $install_sh. +AC_DEFUN([AM_PROG_INSTALL_SH], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi +AC_SUBST([install_sh])]) + +# Copyright (C) 2003-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# Check whether the underlying file-system supports filenames +# with a leading dot. For instance MS-DOS doesn't. +AC_DEFUN([AM_SET_LEADING_DOT], +[rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null +AC_SUBST([am__leading_dot])]) + +# Check to see how 'make' treats includes. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MAKE_INCLUDE() +# ----------------- +# Check to see how make treats includes. +AC_DEFUN([AM_MAKE_INCLUDE], +[am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +AC_MSG_CHECKING([for style of include used by $am_make]) +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi +AC_SUBST([am__include]) +AC_SUBST([am__quote]) +AC_MSG_RESULT([$_am_result]) +rm -f confinc confmf +]) + +# Fake the existence of programs that GNU maintainers use. -*- Autoconf -*- + +# Copyright (C) 1997-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_MISSING_PROG(NAME, PROGRAM) +# ------------------------------ +AC_DEFUN([AM_MISSING_PROG], +[AC_REQUIRE([AM_MISSING_HAS_RUN]) +$1=${$1-"${am_missing_run}$2"} +AC_SUBST($1)]) + +# AM_MISSING_HAS_RUN +# ------------------ +# Define MISSING if not defined so far and test if it is modern enough. +# If it is, set am_missing_run to use it, otherwise, to nothing. +AC_DEFUN([AM_MISSING_HAS_RUN], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([missing])dnl +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + AC_MSG_WARN(['missing' script is too old or missing]) +fi +]) + +# Helper functions for option handling. -*- Autoconf -*- + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_MANGLE_OPTION(NAME) +# ----------------------- +AC_DEFUN([_AM_MANGLE_OPTION], +[[_AM_OPTION_]m4_bpatsubst($1, [[^a-zA-Z0-9_]], [_])]) + +# _AM_SET_OPTION(NAME) +# -------------------- +# Set option NAME. Presently that only means defining a flag for this option. +AC_DEFUN([_AM_SET_OPTION], +[m4_define(_AM_MANGLE_OPTION([$1]), [1])]) + +# _AM_SET_OPTIONS(OPTIONS) +# ------------------------ +# OPTIONS is a space-separated list of Automake options. +AC_DEFUN([_AM_SET_OPTIONS], +[m4_foreach_w([_AM_Option], [$1], [_AM_SET_OPTION(_AM_Option)])]) + +# _AM_IF_OPTION(OPTION, IF-SET, [IF-NOT-SET]) +# ------------------------------------------- +# Execute IF-SET if OPTION is set, IF-NOT-SET otherwise. +AC_DEFUN([_AM_IF_OPTION], +[m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])]) + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_CC_C_O +# --------------- +# Like AC_PROG_CC_C_O, but changed for automake. We rewrite AC_PROG_CC +# to automatically call this. +AC_DEFUN([_AM_PROG_CC_C_O], +[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl +AC_REQUIRE_AUX_FILE([compile])dnl +AC_LANG_PUSH([C])dnl +AC_CACHE_CHECK( + [whether $CC understands -c and -o together], + [am_cv_prog_cc_c_o], + [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])]) + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i]) +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +AC_LANG_POP([C])]) + +# For backward compatibility. +AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_RUN_LOG(COMMAND) +# ------------------- +# Run COMMAND, save the exit status in ac_status, and log it. +# (This has been adapted from Autoconf's _AC_RUN_LOG macro.) +AC_DEFUN([AM_RUN_LOG], +[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD + ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD + (exit $ac_status); }]) + +# Check to make sure that the build environment is sane. -*- Autoconf -*- + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SANITY_CHECK +# --------------- +AC_DEFUN([AM_SANITY_CHECK], +[AC_MSG_CHECKING([whether build environment is sane]) +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[[\\\"\#\$\&\'\`$am_lf]]*) + AC_MSG_ERROR([unsafe absolute working directory name]);; +esac +case $srcdir in + *[[\\\"\#\$\&\'\`$am_lf\ \ ]]*) + AC_MSG_ERROR([unsafe srcdir value: '$srcdir']);; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$[*]" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$[*]" != "X $srcdir/configure conftest.file" \ + && test "$[*]" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + AC_MSG_ERROR([ls -t appears to fail. Make sure there is not a broken + alias in your environment]) + fi + if test "$[2]" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$[2]" = conftest.file + ) +then + # Ok. + : +else + AC_MSG_ERROR([newly created file is older than distributed files! +Check your system clock]) +fi +AC_MSG_RESULT([yes]) +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi +AC_CONFIG_COMMANDS_PRE( + [AC_MSG_CHECKING([that generated files are newer than configure]) + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + AC_MSG_RESULT([done])]) +rm -f conftest.file +]) + +# Copyright (C) 2009-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_SILENT_RULES([DEFAULT]) +# -------------------------- +# Enable less verbose build rules; with the default set to DEFAULT +# ("yes" being less verbose, "no" or empty being verbose). +AC_DEFUN([AM_SILENT_RULES], +[AC_ARG_ENABLE([silent-rules], [dnl +AS_HELP_STRING( + [--enable-silent-rules], + [less verbose build output (undo: "make V=1")]) +AS_HELP_STRING( + [--disable-silent-rules], + [verbose build output (undo: "make V=0")])dnl +]) +case $enable_silent_rules in @%:@ ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=m4_if([$1], [yes], [0], [1]);; +esac +dnl +dnl A few 'make' implementations (e.g., NonStop OS and NextStep) +dnl do not support nested variable expansions. +dnl See automake bug#9928 and bug#10237. +am_make=${MAKE-make} +AC_CACHE_CHECK([whether $am_make supports nested variables], + [am_cv_make_support_nested_variables], + [if AS_ECHO([['TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit']]) | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi]) +if test $am_cv_make_support_nested_variables = yes; then + dnl Using '$V' instead of '$(V)' breaks IRIX make. + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AC_SUBST([AM_V])dnl +AM_SUBST_NOTMAKE([AM_V])dnl +AC_SUBST([AM_DEFAULT_V])dnl +AM_SUBST_NOTMAKE([AM_DEFAULT_V])dnl +AC_SUBST([AM_DEFAULT_VERBOSITY])dnl +AM_BACKSLASH='\' +AC_SUBST([AM_BACKSLASH])dnl +_AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl +]) + +# Copyright (C) 2001-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# AM_PROG_INSTALL_STRIP +# --------------------- +# One issue with vendor 'install' (even GNU) is that you can't +# specify the program used to strip binaries. This is especially +# annoying in cross-compiling environments, where the build's strip +# is unlikely to handle the host's binaries. +# Fortunately install-sh will honor a STRIPPROG variable, so we +# always use install-sh in "make install-strip", and initialize +# STRIPPROG with the value of the STRIP variable (set by the user). +AC_DEFUN([AM_PROG_INSTALL_STRIP], +[AC_REQUIRE([AM_PROG_INSTALL_SH])dnl +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +dnl Don't test for $cross_compiling = yes, because it might be 'maybe'. +if test "$cross_compiling" != no; then + AC_CHECK_TOOL([STRIP], [strip], :) +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" +AC_SUBST([INSTALL_STRIP_PROGRAM])]) + +# Copyright (C) 2006-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_SUBST_NOTMAKE(VARIABLE) +# --------------------------- +# Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in. +# This macro is traced by Automake. +AC_DEFUN([_AM_SUBST_NOTMAKE]) + +# AM_SUBST_NOTMAKE(VARIABLE) +# -------------------------- +# Public sister of _AM_SUBST_NOTMAKE. +AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)]) + +# Check how to create a tarball. -*- Autoconf -*- + +# Copyright (C) 2004-2014 Free Software Foundation, Inc. +# +# This file is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# _AM_PROG_TAR(FORMAT) +# -------------------- +# Check how to create a tarball in format FORMAT. +# FORMAT should be one of 'v7', 'ustar', or 'pax'. +# +# Substitute a variable $(am__tar) that is a command +# writing to stdout a FORMAT-tarball containing the directory +# $tardir. +# tardir=directory && $(am__tar) > result.tar +# +# Substitute a variable $(am__untar) that extract such +# a tarball read from stdin. +# $(am__untar) < result.tar +# +AC_DEFUN([_AM_PROG_TAR], +[# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AC_SUBST([AMTAR], ['$${TAR-tar}']) + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar m4_if([$1], [ustar], [plaintar]) pax cpio none' + +m4_if([$1], [v7], + [am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -'], + + [m4_case([$1], + [ustar], + [# The POSIX 1988 'ustar' format is defined with fixed-size fields. + # There is notably a 21 bits limit for the UID and the GID. In fact, + # the 'pax' utility can hang on bigger UID/GID (see automake bug#8343 + # and bug#13588). + am_max_uid=2097151 # 2^21 - 1 + am_max_gid=$am_max_uid + # The $UID and $GID variables are not portable, so we need to resort + # to the POSIX-mandated id(1) utility. Errors in the 'id' calls + # below are definitely unexpected, so allow the users to see them + # (that is, avoid stderr redirection). + am_uid=`id -u || echo unknown` + am_gid=`id -g || echo unknown` + AC_MSG_CHECKING([whether UID '$am_uid' is supported by ustar format]) + if test $am_uid -le $am_max_uid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi + AC_MSG_CHECKING([whether GID '$am_gid' is supported by ustar format]) + if test $am_gid -le $am_max_gid; then + AC_MSG_RESULT([yes]) + else + AC_MSG_RESULT([no]) + _am_tools=none + fi], + + [pax], + [], + + [m4_fatal([Unknown tar format])]) + + AC_MSG_CHECKING([how to create a $1 tar archive]) + + # Go ahead even if we have the value already cached. We do so because we + # need to set the values for the 'am__tar' and 'am__untar' variables. + _am_tools=${am_cv_prog_tar_$1-$_am_tools} + + for _am_tool in $_am_tools; do + case $_am_tool in + gnutar) + for _am_tar in tar gnutar gtar; do + AM_RUN_LOG([$_am_tar --version]) && break + done + am__tar="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$$tardir"' + am__tar_="$_am_tar --format=m4_if([$1], [pax], [posix], [$1]) -chf - "'"$tardir"' + am__untar="$_am_tar -xf -" + ;; + plaintar) + # Must skip GNU tar: if it does not support --format= it doesn't create + # ustar tarball either. + (tar --version) >/dev/null 2>&1 && continue + am__tar='tar chf - "$$tardir"' + am__tar_='tar chf - "$tardir"' + am__untar='tar xf -' + ;; + pax) + am__tar='pax -L -x $1 -w "$$tardir"' + am__tar_='pax -L -x $1 -w "$tardir"' + am__untar='pax -r' + ;; + cpio) + am__tar='find "$$tardir" -print | cpio -o -H $1 -L' + am__tar_='find "$tardir" -print | cpio -o -H $1 -L' + am__untar='cpio -i -H $1 -d' + ;; + none) + am__tar=false + am__tar_=false + am__untar=false + ;; + esac + + # If the value was cached, stop now. We just wanted to have am__tar + # and am__untar set. + test -n "${am_cv_prog_tar_$1}" && break + + # tar/untar a dummy directory, and stop if the command works. + rm -rf conftest.dir + mkdir conftest.dir + echo GrepMe > conftest.dir/file + AM_RUN_LOG([tardir=conftest.dir && eval $am__tar_ >conftest.tar]) + rm -rf conftest.dir + if test -s conftest.tar; then + AM_RUN_LOG([$am__untar /dev/null 2>&1 && break + fi + done + rm -rf conftest.dir + + AC_CACHE_VAL([am_cv_prog_tar_$1], [am_cv_prog_tar_$1=$_am_tool]) + AC_MSG_RESULT([$am_cv_prog_tar_$1])]) + +AC_SUBST([am__tar]) +AC_SUBST([am__untar]) +]) # _AM_PROG_TAR + diff --git a/camera/cameramanager/Makefile.am b/camera/cameramanager/Makefile.am new file mode 100644 index 0000000..8ed5448 --- /dev/null +++ b/camera/cameramanager/Makefile.am @@ -0,0 +1,5 @@ +bin_PROGRAMS = cameramanager +cameramanager_SOURCES = main.c config.c commander.c streaming.c +cameramanager_LDADD = @CAMERAMANAGER_LIBS@ +cameramanager_CFLAGS = @CAMERAMANAGER_CFLAGS@ +cameramanager_CPPFLAGS = @CAMERAMANAGER_CPPFLAGS@ diff --git a/camera/cameramanager/Makefile.in b/camera/cameramanager/Makefile.in new file mode 100644 index 0000000..713b052 --- /dev/null +++ b/camera/cameramanager/Makefile.in @@ -0,0 +1,634 @@ +# Makefile.in generated by automake 1.15 from Makefile.am. +# @configure_input@ + +# Copyright (C) 1994-2014 Free Software Foundation, Inc. + +# This Makefile.in is free software; the Free Software Foundation +# gives unlimited permission to copy and/or distribute it, +# with or without modifications, as long as this notice is preserved. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY, to the extent permitted by law; without +# even the implied warranty of MERCHANTABILITY or FITNESS FOR A +# PARTICULAR PURPOSE. + +@SET_MAKE@ + +VPATH = @srcdir@ +am__is_gnu_make = { \ + if test -z '$(MAKELEVEL)'; then \ + false; \ + elif test -n '$(MAKE_HOST)'; then \ + true; \ + elif test -n '$(MAKE_VERSION)' && test -n '$(CURDIR)'; then \ + true; \ + else \ + false; \ + fi; \ +} +am__make_running_with_option = \ + case $${target_option-} in \ + ?) ;; \ + *) echo "am__make_running_with_option: internal error: invalid" \ + "target option '$${target_option-}' specified" >&2; \ + exit 1;; \ + esac; \ + has_opt=no; \ + sane_makeflags=$$MAKEFLAGS; \ + if $(am__is_gnu_make); then \ + sane_makeflags=$$MFLAGS; \ + else \ + case $$MAKEFLAGS in \ + *\\[\ \ ]*) \ + bs=\\; \ + sane_makeflags=`printf '%s\n' "$$MAKEFLAGS" \ + | sed "s/$$bs$$bs[$$bs $$bs ]*//g"`;; \ + esac; \ + fi; \ + skip_next=no; \ + strip_trailopt () \ + { \ + flg=`printf '%s\n' "$$flg" | sed "s/$$1.*$$//"`; \ + }; \ + for flg in $$sane_makeflags; do \ + test $$skip_next = yes && { skip_next=no; continue; }; \ + case $$flg in \ + *=*|--*) continue;; \ + -*I) strip_trailopt 'I'; skip_next=yes;; \ + -*I?*) strip_trailopt 'I';; \ + -*O) strip_trailopt 'O'; skip_next=yes;; \ + -*O?*) strip_trailopt 'O';; \ + -*l) strip_trailopt 'l'; skip_next=yes;; \ + -*l?*) strip_trailopt 'l';; \ + -[dEDm]) skip_next=yes;; \ + -[JT]) skip_next=yes;; \ + esac; \ + case $$flg in \ + *$$target_option*) has_opt=yes; break;; \ + esac; \ + done; \ + test $$has_opt = yes +am__make_dryrun = (target_option=n; $(am__make_running_with_option)) +am__make_keepgoing = (target_option=k; $(am__make_running_with_option)) +pkgdatadir = $(datadir)/@PACKAGE@ +pkgincludedir = $(includedir)/@PACKAGE@ +pkglibdir = $(libdir)/@PACKAGE@ +pkglibexecdir = $(libexecdir)/@PACKAGE@ +am__cd = CDPATH="$${ZSH_VERSION+.}$(PATH_SEPARATOR)" && cd +install_sh_DATA = $(install_sh) -c -m 644 +install_sh_PROGRAM = $(install_sh) -c +install_sh_SCRIPT = $(install_sh) -c +INSTALL_HEADER = $(INSTALL_DATA) +transform = $(program_transform_name) +NORMAL_INSTALL = : +PRE_INSTALL = : +POST_INSTALL = : +NORMAL_UNINSTALL = : +PRE_UNINSTALL = : +POST_UNINSTALL = : +bin_PROGRAMS = cameramanager$(EXEEXT) +subdir = cameramanager +ACLOCAL_M4 = $(top_srcdir)/aclocal.m4 +am__aclocal_m4_deps = $(top_srcdir)/configure.ac +am__configure_deps = $(am__aclocal_m4_deps) $(CONFIGURE_DEPENDENCIES) \ + $(ACLOCAL_M4) +DIST_COMMON = $(srcdir)/Makefile.am $(am__DIST_COMMON) +mkinstalldirs = $(install_sh) -d +CONFIG_HEADER = $(top_builddir)/include/config.h +CONFIG_CLEAN_FILES = +CONFIG_CLEAN_VPATH_FILES = +am__installdirs = "$(DESTDIR)$(bindir)" +PROGRAMS = $(bin_PROGRAMS) +am_cameramanager_OBJECTS = cameramanager-main.$(OBJEXT) \ + cameramanager-config.$(OBJEXT) \ + cameramanager-commander.$(OBJEXT) \ + cameramanager-streaming.$(OBJEXT) +cameramanager_OBJECTS = $(am_cameramanager_OBJECTS) +cameramanager_DEPENDENCIES = +cameramanager_LINK = $(CCLD) $(cameramanager_CFLAGS) $(CFLAGS) \ + $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_P = $(am__v_P_@AM_V@) +am__v_P_ = $(am__v_P_@AM_DEFAULT_V@) +am__v_P_0 = false +am__v_P_1 = : +AM_V_GEN = $(am__v_GEN_@AM_V@) +am__v_GEN_ = $(am__v_GEN_@AM_DEFAULT_V@) +am__v_GEN_0 = @echo " GEN " $@; +am__v_GEN_1 = +AM_V_at = $(am__v_at_@AM_V@) +am__v_at_ = $(am__v_at_@AM_DEFAULT_V@) +am__v_at_0 = @ +am__v_at_1 = +DEFAULT_INCLUDES = -I.@am__isrc@ -I$(top_builddir)/include +depcomp = $(SHELL) $(top_srcdir)/depcomp +am__depfiles_maybe = depfiles +am__mv = mv -f +AM_V_lt = $(am__v_lt_@AM_V@) +am__v_lt_ = $(am__v_lt_@AM_DEFAULT_V@) +am__v_lt_0 = --silent +am__v_lt_1 = +COMPILE = $(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) \ + $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) +AM_V_CC = $(am__v_CC_@AM_V@) +am__v_CC_ = $(am__v_CC_@AM_DEFAULT_V@) +am__v_CC_0 = @echo " CC " $@; +am__v_CC_1 = +CCLD = $(CC) +LINK = $(CCLD) $(AM_CFLAGS) $(CFLAGS) $(AM_LDFLAGS) $(LDFLAGS) -o $@ +AM_V_CCLD = $(am__v_CCLD_@AM_V@) +am__v_CCLD_ = $(am__v_CCLD_@AM_DEFAULT_V@) +am__v_CCLD_0 = @echo " CCLD " $@; +am__v_CCLD_1 = +SOURCES = $(cameramanager_SOURCES) +DIST_SOURCES = $(cameramanager_SOURCES) +am__can_run_installinfo = \ + case $$AM_UPDATE_INFO_DIR in \ + n|no|NO) false;; \ + *) (install-info --version) >/dev/null 2>&1;; \ + esac +am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP) +# Read a list of newline-separated strings from the standard input, +# and print each of them once, without duplicates. Input order is +# *not* preserved. +am__uniquify_input = $(AWK) '\ + BEGIN { nonempty = 0; } \ + { items[$$0] = 1; nonempty = 1; } \ + END { if (nonempty) { for (i in items) print i; }; } \ +' +# Make sure the list of sources is unique. This is necessary because, +# e.g., the same source file might be shared among _SOURCES variables +# for different programs/libraries. +am__define_uniq_tagged_files = \ + list='$(am__tagged_files)'; \ + unique=`for i in $$list; do \ + if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \ + done | $(am__uniquify_input)` +ETAGS = etags +CTAGS = ctags +am__DIST_COMMON = $(srcdir)/Makefile.in $(top_srcdir)/depcomp +DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST) +ACLOCAL = @ACLOCAL@ +AMTAR = @AMTAR@ +AM_DEFAULT_VERBOSITY = @AM_DEFAULT_VERBOSITY@ +AUTOCONF = @AUTOCONF@ +AUTOHEADER = @AUTOHEADER@ +AUTOMAKE = @AUTOMAKE@ +AWK = @AWK@ +CAMERAMANAGER_CFLAGS = @CAMERAMANAGER_CFLAGS@ +CAMERAMANAGER_CPPFLAGS = @CAMERAMANAGER_CPPFLAGS@ +CAMERAMANAGER_LIBS = @CAMERAMANAGER_LIBS@ +CC = @CC@ +CCDEPMODE = @CCDEPMODE@ +CFLAGS = @CFLAGS@ +CPP = @CPP@ +CPPFLAGS = @CPPFLAGS@ +CYGPATH_W = @CYGPATH_W@ +DEFS = @DEFS@ +DEPDIR = @DEPDIR@ +ECHO_C = @ECHO_C@ +ECHO_N = @ECHO_N@ +ECHO_T = @ECHO_T@ +EGREP = @EGREP@ +EXEEXT = @EXEEXT@ +GREP = @GREP@ +INSTALL = @INSTALL@ +INSTALL_DATA = @INSTALL_DATA@ +INSTALL_PROGRAM = @INSTALL_PROGRAM@ +INSTALL_SCRIPT = @INSTALL_SCRIPT@ +INSTALL_STRIP_PROGRAM = @INSTALL_STRIP_PROGRAM@ +LDFLAGS = @LDFLAGS@ +LIBOBJS = @LIBOBJS@ +LIBS = @LIBS@ +LTLIBOBJS = @LTLIBOBJS@ +MAKEINFO = @MAKEINFO@ +MKDIR_P = @MKDIR_P@ +OBJEXT = @OBJEXT@ +PACKAGE = @PACKAGE@ +PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@ +PACKAGE_NAME = @PACKAGE_NAME@ +PACKAGE_STRING = @PACKAGE_STRING@ +PACKAGE_TARNAME = @PACKAGE_TARNAME@ +PACKAGE_URL = @PACKAGE_URL@ +PACKAGE_VERSION = @PACKAGE_VERSION@ +PATH_SEPARATOR = @PATH_SEPARATOR@ +SET_MAKE = @SET_MAKE@ +SHELL = @SHELL@ +STRIP = @STRIP@ +VERSION = @VERSION@ +abs_builddir = @abs_builddir@ +abs_srcdir = @abs_srcdir@ +abs_top_builddir = @abs_top_builddir@ +abs_top_srcdir = @abs_top_srcdir@ +ac_ct_CC = @ac_ct_CC@ +am__include = @am__include@ +am__leading_dot = @am__leading_dot@ +am__quote = @am__quote@ +am__tar = @am__tar@ +am__untar = @am__untar@ +bindir = @bindir@ +build_alias = @build_alias@ +builddir = @builddir@ +datadir = @datadir@ +datarootdir = @datarootdir@ +docdir = @docdir@ +dvidir = @dvidir@ +exec_prefix = @exec_prefix@ +host_alias = @host_alias@ +htmldir = @htmldir@ +includedir = @includedir@ +infodir = @infodir@ +install_sh = @install_sh@ +libdir = @libdir@ +libexecdir = @libexecdir@ +localedir = @localedir@ +localstatedir = @localstatedir@ +mandir = @mandir@ +mkdir_p = @mkdir_p@ +oldincludedir = @oldincludedir@ +pdfdir = @pdfdir@ +prefix = @prefix@ +program_transform_name = @program_transform_name@ +psdir = @psdir@ +sbindir = @sbindir@ +sharedstatedir = @sharedstatedir@ +srcdir = @srcdir@ +sysconfdir = @sysconfdir@ +target_alias = @target_alias@ +top_build_prefix = @top_build_prefix@ +top_builddir = @top_builddir@ +top_srcdir = @top_srcdir@ +cameramanager_SOURCES = main.c config.c commander.c streaming.c +cameramanager_LDADD = @CAMERAMANAGER_LIBS@ +cameramanager_CFLAGS = @CAMERAMANAGER_CFLAGS@ +cameramanager_CPPFLAGS = @CAMERAMANAGER_CPPFLAGS@ +all: all-am + +.SUFFIXES: +.SUFFIXES: .c .o .obj +$(srcdir)/Makefile.in: $(srcdir)/Makefile.am $(am__configure_deps) + @for dep in $?; do \ + case '$(am__configure_deps)' in \ + *$$dep*) \ + ( cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh ) \ + && { if test -f $@; then exit 0; else break; fi; }; \ + exit 1;; \ + esac; \ + done; \ + echo ' cd $(top_srcdir) && $(AUTOMAKE) --foreign cameramanager/Makefile'; \ + $(am__cd) $(top_srcdir) && \ + $(AUTOMAKE) --foreign cameramanager/Makefile +Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status + @case '$?' in \ + *config.status*) \ + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh;; \ + *) \ + echo ' cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe)'; \ + cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@ $(am__depfiles_maybe);; \ + esac; + +$(top_builddir)/config.status: $(top_srcdir)/configure $(CONFIG_STATUS_DEPENDENCIES) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh + +$(top_srcdir)/configure: $(am__configure_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(ACLOCAL_M4): $(am__aclocal_m4_deps) + cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh +$(am__aclocal_m4_deps): +install-binPROGRAMS: $(bin_PROGRAMS) + @$(NORMAL_INSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + if test -n "$$list"; then \ + echo " $(MKDIR_P) '$(DESTDIR)$(bindir)'"; \ + $(MKDIR_P) "$(DESTDIR)$(bindir)" || exit 1; \ + fi; \ + for p in $$list; do echo "$$p $$p"; done | \ + sed 's/$(EXEEXT)$$//' | \ + while read p p1; do if test -f $$p \ + ; then echo "$$p"; echo "$$p"; else :; fi; \ + done | \ + sed -e 'p;s,.*/,,;n;h' \ + -e 's|.*|.|' \ + -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \ + sed 'N;N;N;s,\n, ,g' | \ + $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \ + { d=$$3; if (dirs[d] != 1) { print "d", d; dirs[d] = 1 } \ + if ($$2 == $$4) files[d] = files[d] " " $$1; \ + else { print "f", $$3 "/" $$4, $$1; } } \ + END { for (d in files) print "f", d, files[d] }' | \ + while read type dir files; do \ + if test "$$dir" = .; then dir=; else dir=/$$dir; fi; \ + test -z "$$files" || { \ + echo " $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files '$(DESTDIR)$(bindir)$$dir'"; \ + $(INSTALL_PROGRAM_ENV) $(INSTALL_PROGRAM) $$files "$(DESTDIR)$(bindir)$$dir" || exit $$?; \ + } \ + ; done + +uninstall-binPROGRAMS: + @$(NORMAL_UNINSTALL) + @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \ + files=`for p in $$list; do echo "$$p"; done | \ + sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \ + -e 's/$$/$(EXEEXT)/' \ + `; \ + test -n "$$list" || exit 0; \ + echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \ + cd "$(DESTDIR)$(bindir)" && rm -f $$files + +clean-binPROGRAMS: + -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS) + +cameramanager$(EXEEXT): $(cameramanager_OBJECTS) $(cameramanager_DEPENDENCIES) $(EXTRA_cameramanager_DEPENDENCIES) + @rm -f cameramanager$(EXEEXT) + $(AM_V_CCLD)$(cameramanager_LINK) $(cameramanager_OBJECTS) $(cameramanager_LDADD) $(LIBS) + +mostlyclean-compile: + -rm -f *.$(OBJEXT) + +distclean-compile: + -rm -f *.tab.c + +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cameramanager-commander.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cameramanager-config.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cameramanager-main.Po@am__quote@ +@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/cameramanager-streaming.Po@am__quote@ + +.c.o: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ $< +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ $< + +.c.obj: +@am__fastdepCC_TRUE@ $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF $(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='$<' object='$@' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'` + +cameramanager-main.o: main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-main.o -MD -MP -MF $(DEPDIR)/cameramanager-main.Tpo -c -o cameramanager-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-main.Tpo $(DEPDIR)/cameramanager-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='cameramanager-main.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-main.o `test -f 'main.c' || echo '$(srcdir)/'`main.c + +cameramanager-main.obj: main.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-main.obj -MD -MP -MF $(DEPDIR)/cameramanager-main.Tpo -c -o cameramanager-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-main.Tpo $(DEPDIR)/cameramanager-main.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='main.c' object='cameramanager-main.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-main.obj `if test -f 'main.c'; then $(CYGPATH_W) 'main.c'; else $(CYGPATH_W) '$(srcdir)/main.c'; fi` + +cameramanager-config.o: config.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-config.o -MD -MP -MF $(DEPDIR)/cameramanager-config.Tpo -c -o cameramanager-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-config.Tpo $(DEPDIR)/cameramanager-config.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='cameramanager-config.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-config.o `test -f 'config.c' || echo '$(srcdir)/'`config.c + +cameramanager-config.obj: config.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-config.obj -MD -MP -MF $(DEPDIR)/cameramanager-config.Tpo -c -o cameramanager-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-config.Tpo $(DEPDIR)/cameramanager-config.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='config.c' object='cameramanager-config.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-config.obj `if test -f 'config.c'; then $(CYGPATH_W) 'config.c'; else $(CYGPATH_W) '$(srcdir)/config.c'; fi` + +cameramanager-commander.o: commander.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-commander.o -MD -MP -MF $(DEPDIR)/cameramanager-commander.Tpo -c -o cameramanager-commander.o `test -f 'commander.c' || echo '$(srcdir)/'`commander.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-commander.Tpo $(DEPDIR)/cameramanager-commander.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='commander.c' object='cameramanager-commander.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-commander.o `test -f 'commander.c' || echo '$(srcdir)/'`commander.c + +cameramanager-commander.obj: commander.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-commander.obj -MD -MP -MF $(DEPDIR)/cameramanager-commander.Tpo -c -o cameramanager-commander.obj `if test -f 'commander.c'; then $(CYGPATH_W) 'commander.c'; else $(CYGPATH_W) '$(srcdir)/commander.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-commander.Tpo $(DEPDIR)/cameramanager-commander.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='commander.c' object='cameramanager-commander.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-commander.obj `if test -f 'commander.c'; then $(CYGPATH_W) 'commander.c'; else $(CYGPATH_W) '$(srcdir)/commander.c'; fi` + +cameramanager-streaming.o: streaming.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-streaming.o -MD -MP -MF $(DEPDIR)/cameramanager-streaming.Tpo -c -o cameramanager-streaming.o `test -f 'streaming.c' || echo '$(srcdir)/'`streaming.c +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-streaming.Tpo $(DEPDIR)/cameramanager-streaming.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='streaming.c' object='cameramanager-streaming.o' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-streaming.o `test -f 'streaming.c' || echo '$(srcdir)/'`streaming.c + +cameramanager-streaming.obj: streaming.c +@am__fastdepCC_TRUE@ $(AM_V_CC)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -MT cameramanager-streaming.obj -MD -MP -MF $(DEPDIR)/cameramanager-streaming.Tpo -c -o cameramanager-streaming.obj `if test -f 'streaming.c'; then $(CYGPATH_W) 'streaming.c'; else $(CYGPATH_W) '$(srcdir)/streaming.c'; fi` +@am__fastdepCC_TRUE@ $(AM_V_at)$(am__mv) $(DEPDIR)/cameramanager-streaming.Tpo $(DEPDIR)/cameramanager-streaming.Po +@AMDEP_TRUE@@am__fastdepCC_FALSE@ $(AM_V_CC)source='streaming.c' object='cameramanager-streaming.obj' libtool=no @AMDEPBACKSLASH@ +@AMDEP_TRUE@@am__fastdepCC_FALSE@ DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@ +@am__fastdepCC_FALSE@ $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(cameramanager_CPPFLAGS) $(CPPFLAGS) $(cameramanager_CFLAGS) $(CFLAGS) -c -o cameramanager-streaming.obj `if test -f 'streaming.c'; then $(CYGPATH_W) 'streaming.c'; else $(CYGPATH_W) '$(srcdir)/streaming.c'; fi` + +ID: $(am__tagged_files) + $(am__define_uniq_tagged_files); mkid -fID $$unique +tags: tags-am +TAGS: tags + +tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + set x; \ + here=`pwd`; \ + $(am__define_uniq_tagged_files); \ + shift; \ + if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \ + test -n "$$unique" || unique=$$empty_fix; \ + if test $$# -gt 0; then \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + "$$@" $$unique; \ + else \ + $(ETAGS) $(ETAGSFLAGS) $(AM_ETAGSFLAGS) $(ETAGS_ARGS) \ + $$unique; \ + fi; \ + fi +ctags: ctags-am + +CTAGS: ctags +ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files) + $(am__define_uniq_tagged_files); \ + test -z "$(CTAGS_ARGS)$$unique" \ + || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \ + $$unique + +GTAGS: + here=`$(am__cd) $(top_builddir) && pwd` \ + && $(am__cd) $(top_srcdir) \ + && gtags -i $(GTAGS_ARGS) "$$here" +cscopelist: cscopelist-am + +cscopelist-am: $(am__tagged_files) + list='$(am__tagged_files)'; \ + case "$(srcdir)" in \ + [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \ + *) sdir=$(subdir)/$(srcdir) ;; \ + esac; \ + for i in $$list; do \ + if test -f "$$i"; then \ + echo "$(subdir)/$$i"; \ + else \ + echo "$$sdir/$$i"; \ + fi; \ + done >> $(top_builddir)/cscope.files + +distclean-tags: + -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags + +distdir: $(DISTFILES) + @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \ + list='$(DISTFILES)'; \ + dist_files=`for file in $$list; do echo $$file; done | \ + sed -e "s|^$$srcdirstrip/||;t" \ + -e "s|^$$topsrcdirstrip/|$(top_builddir)/|;t"`; \ + case $$dist_files in \ + */*) $(MKDIR_P) `echo "$$dist_files" | \ + sed '/\//!d;s|^|$(distdir)/|;s,/[^/]*$$,,' | \ + sort -u` ;; \ + esac; \ + for file in $$dist_files; do \ + if test -f $$file || test -d $$file; then d=.; else d=$(srcdir); fi; \ + if test -d $$d/$$file; then \ + dir=`echo "/$$file" | sed -e 's,/[^/]*$$,,'`; \ + if test -d "$(distdir)/$$file"; then \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + if test -d $(srcdir)/$$file && test $$d != $(srcdir); then \ + cp -fpR $(srcdir)/$$file "$(distdir)$$dir" || exit 1; \ + find "$(distdir)/$$file" -type d ! -perm -700 -exec chmod u+rwx {} \;; \ + fi; \ + cp -fpR $$d/$$file "$(distdir)$$dir" || exit 1; \ + else \ + test -f "$(distdir)/$$file" \ + || cp -p $$d/$$file "$(distdir)/$$file" \ + || exit 1; \ + fi; \ + done +check-am: all-am +check: check-am +all-am: Makefile $(PROGRAMS) +installdirs: + for dir in "$(DESTDIR)$(bindir)"; do \ + test -z "$$dir" || $(MKDIR_P) "$$dir"; \ + done +install: install-am +install-exec: install-exec-am +install-data: install-data-am +uninstall: uninstall-am + +install-am: all-am + @$(MAKE) $(AM_MAKEFLAGS) install-exec-am install-data-am + +installcheck: installcheck-am +install-strip: + if test -z '$(STRIP)'; then \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + install; \ + else \ + $(MAKE) $(AM_MAKEFLAGS) INSTALL_PROGRAM="$(INSTALL_STRIP_PROGRAM)" \ + install_sh_PROGRAM="$(INSTALL_STRIP_PROGRAM)" INSTALL_STRIP_FLAG=-s \ + "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \ + fi +mostlyclean-generic: + +clean-generic: + +distclean-generic: + -test -z "$(CONFIG_CLEAN_FILES)" || rm -f $(CONFIG_CLEAN_FILES) + -test . = "$(srcdir)" || test -z "$(CONFIG_CLEAN_VPATH_FILES)" || rm -f $(CONFIG_CLEAN_VPATH_FILES) + +maintainer-clean-generic: + @echo "This command is intended for maintainers to use" + @echo "it deletes files that may require special tools to rebuild." +clean: clean-am + +clean-am: clean-binPROGRAMS clean-generic mostlyclean-am + +distclean: distclean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +distclean-am: clean-am distclean-compile distclean-generic \ + distclean-tags + +dvi: dvi-am + +dvi-am: + +html: html-am + +html-am: + +info: info-am + +info-am: + +install-data-am: + +install-dvi: install-dvi-am + +install-dvi-am: + +install-exec-am: install-binPROGRAMS + +install-html: install-html-am + +install-html-am: + +install-info: install-info-am + +install-info-am: + +install-man: + +install-pdf: install-pdf-am + +install-pdf-am: + +install-ps: install-ps-am + +install-ps-am: + +installcheck-am: + +maintainer-clean: maintainer-clean-am + -rm -rf ./$(DEPDIR) + -rm -f Makefile +maintainer-clean-am: distclean-am maintainer-clean-generic + +mostlyclean: mostlyclean-am + +mostlyclean-am: mostlyclean-compile mostlyclean-generic + +pdf: pdf-am + +pdf-am: + +ps: ps-am + +ps-am: + +uninstall-am: uninstall-binPROGRAMS + +.MAKE: install-am install-strip + +.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \ + clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \ + distclean distclean-compile distclean-generic distclean-tags \ + distdir dvi dvi-am html html-am info info-am install \ + install-am install-binPROGRAMS install-data install-data-am \ + install-dvi install-dvi-am install-exec install-exec-am \ + install-html install-html-am install-info install-info-am \ + install-man install-pdf install-pdf-am install-ps \ + install-ps-am install-strip installcheck installcheck-am \ + installdirs maintainer-clean maintainer-clean-generic \ + mostlyclean mostlyclean-compile mostlyclean-generic pdf pdf-am \ + ps ps-am tags tags-am uninstall uninstall-am \ + uninstall-binPROGRAMS + +.PRECIOUS: Makefile + + +# Tell versions [3.59,3.63) of GNU make to not export all variables. +# Otherwise a system limit (for SysV at least) may be exceeded. +.NOEXPORT: diff --git a/camera/cameramanager/commander.c b/camera/cameramanager/commander.c new file mode 100644 index 0000000..962179a --- /dev/null +++ b/camera/cameramanager/commander.c @@ -0,0 +1,156 @@ +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include "commander.h" + + +static int commander_sock = 0; + +int commander_connect(char* host, char* port, char* serial_number, char* product_key, char* rtmp_handle) { + struct addrinfo hints; + struct addrinfo* results; + struct addrinfo* n; + int gai_err; + char buf[256]; + buf[255] = '\0'; + + printf("[CameraManager] : Connecting with the CameraCommander at %s:%s...", host, port); + if((commander_sock = socket(AF_INET, SOCK_STREAM, 0)) == -1) { + printf("Failed\n"); + perror("Error (socket)"); + exit(errno); + } + + memset(&hints, 0, sizeof(struct addrinfo)); + hints.ai_family = AF_UNSPEC; + hints.ai_socktype = SOCK_STREAM; + hints.ai_flags = AI_PASSIVE; + hints.ai_protocol = 0; + + if((gai_err = getaddrinfo(host, port, &hints, &results))) { + printf("Failed\n"); + fprintf(stderr, "Error (getaddrinfo) : %s\n", gai_strerror(gai_err)); + commander_close(); + exit(-1); + } + + for(n = results; n != NULL; n = n->ai_next) { + if(!connect(commander_sock, n->ai_addr, n->ai_addrlen)) { + printf("Success\n"); + break; + } + } + + if(n == NULL) { + printf("Failed\n"); + commander_close(); + return -1; + } + + freeaddrinfo(results); + + printf("[CameraManager] : Authentication..."); + + sprintf(buf, "%s:%s", serial_number, product_key); + if(commander_send(buf)) { + printf("Failed\n"); + return -2; + } + + if(commander_receive(buf, 255)) { + printf("Failed\n"); + return -2; + } + + if(strstr(buf, "accepted") == buf && buf[8] == ':' && strlen(buf) > 9) { + printf("Accepted\n"); + strcpy(rtmp_handle, buf + 9); + } else if(!strcmp(buf, "refused")){ + printf("Refused\n"); + commander_close(); + return -3; + } else { + printf("Failed\n"); + printf("[CameraManager] : CameraCommander error = %s\n", buf); + commander_close(); + return -4; + } + + return 0; +} + +int commander_wait_activity() { + fd_set readfs; + struct timeval timeout; + int ret; + + timeout.tv_sec = 0; + timeout.tv_usec = 50000; + + FD_ZERO(&readfs); + FD_SET(commander_sock, &readfs); + + if((ret = select(commander_sock + 1, &readfs, NULL, NULL, &timeout)) == -1) { + perror("Error (select)"); + commander_close(); + exit(errno); + } + + if(!ret || !FD_ISSET(commander_sock, &readfs)) { + return 0; + } + return 1; +} + +int commander_receive(char* buf, int max) { + unsigned int pos = 0; + ssize_t ret; + if(max <= 0) { + return 0; + } + while(pos < max && (ret = recv(commander_sock, buf + pos, 1, 0)) == 1 && buf[pos] != '\0') { + pos++; + } + if(ret == -1) { + perror("Error (recv)"); + commander_close(); + exit(errno); + } + if(ret == 0 && pos == 0) { + fprintf(stderr, "[CameraManager] (error) : Connection lost\n"); + commander_close(); + return -1; + } + return 0; +} + +int commander_send(char* msg) { + int ret; + int msg_size = strlen(msg); + if((ret = send(commander_sock, msg, msg_size + 1, 0)) == -1) { + perror("Error (send)"); + commander_close(); + exit(errno); + } + if(ret != msg_size + 1) { + fprintf(stderr, "[CameraManager] (error) : Connection lost\n"); + commander_close(); + return -1; + } + return 0; +} + +void commander_close() { + if(commander_sock != 0) { + close(commander_sock); + commander_sock = 0; + } +} diff --git a/camera/cameramanager/commander.h b/camera/cameramanager/commander.h new file mode 100644 index 0000000..83e3128 --- /dev/null +++ b/camera/cameramanager/commander.h @@ -0,0 +1,11 @@ +#ifndef COMMANDER_H +#define COMMANDER_H + + +int commander_connect(char* host, char* port, char* serial_number, char* product_key, char* rtmp_handle); +int commander_wait_activity(); +int commander_receive(char* buf, int max); +int commander_send(char* msg); +void commander_close(); + +#endif diff --git a/camera/cameramanager/config.c b/camera/cameramanager/config.c new file mode 100644 index 0000000..3470c00 --- /dev/null +++ b/camera/cameramanager/config.c @@ -0,0 +1,119 @@ +#include +#include +#include +#include +#include + +#include "config.h" + + +struct config_symbol { + char* name; + char* value; +}; + +static struct config_symbol config[] = { + {"RTMP_HOST", NULL}, + {"RTMP_PORT", NULL}, + {"RTMP_APP", NULL}, + {"CAM_COMMANDER_HOST", NULL}, + {"CAM_COMMANDER_PORT", NULL}, + {"SERIAL_NUMBER", NULL}, + {"PRODUCT_KEY", NULL}, + {NULL, NULL} +}; + +int config_set(char* name, char* value) { + unsigned int i; + for(i = 0; config[i].name != NULL; i++) { + if(!strcmp(config[i].name, name)) { + size_t value_size = strlen(value); + if(config[i].value == NULL) { + if((config[i].value = malloc(value_size + 1)) == NULL) { + fprintf(stderr, "error malloc()\n"); + exit(-1); + } + } else { + if((config[i].value = realloc(config[i].value, value_size + 1)) == NULL) { + fprintf(stderr, "error realloc()\n"); + exit(-1); + } + } + strcpy(config[i].value, value); + return 0; + } + } + return -1; +} + +void config_free() { + unsigned int i; + for(i = 0; config[i].name != NULL; i++) { + if(config[i].value != NULL) { + free(config[i].value); + config[i].value = NULL; + } + } +} + +char* config_get(char* name) { + unsigned int i; + for(i = 0; config[i].name != NULL; i++) { + if(!strcmp(config[i].name, name)) { + return config[i].value; + } + } + return NULL; +} + +int config_check_values() { + unsigned int i; + int ret = 0; + for(i = 0; config[i].name != NULL; i++) { + if(config[i].value == NULL) { + fprintf(stderr, "[CameraManager] (error) : The configuration variable <%s> is not set\n", config[i].name); + ret = -1; + } + } + return ret; +} + +void config_load_default_values() { + config_free(); + config_set("RTMP_PORT", "1935"); + config_set("CAM_COMMANDER_PORT", "41551"); +} + +int config_load_from_file(char* path) { + char tmp_name[256]; + char tmp_value[256]; + int c; + int scan; + FILE* file; + + printf("[CameraManager] : Load configuration from file <%s>...", path); + + file = fopen(path, "r"); + if(file == NULL) { + printf("Failed\n"); + perror("config_load_from_file"); + return -1; + } + + do { + scan = fscanf(file, "%[A-Za-z0-9_]=%s", tmp_name, tmp_value); + if(scan == 2) { + config_set(tmp_name, tmp_value); + } else if(scan == EOF) { + break; + } + + do { + c = fgetc(file); + } while(c != EOF && c != '\n'); + } while(!feof(file)); + + fclose(file); + printf("Success\n"); + return 0; +} diff --git a/camera/cameramanager/config.h b/camera/cameramanager/config.h new file mode 100644 index 0000000..1d649b3 --- /dev/null +++ b/camera/cameramanager/config.h @@ -0,0 +1,12 @@ +#ifndef CONFIG_H +#define CONFIG_H + + +int config_set(char* name, char* value); +void config_free(); +char* config_get(char* name); +int config_check_values(); +void config_load_default_values(); +int config_load_from_file(char* path); + +#endif diff --git a/camera/cameramanager/main.c b/camera/cameramanager/main.c new file mode 100644 index 0000000..f15cc8c --- /dev/null +++ b/camera/cameramanager/main.c @@ -0,0 +1,97 @@ +#include +#include +#include +#include + +#include "config.h" +#include "commander.h" +#include "streaming.h" + + +int main(int argc, char** argv) { + char buf[256]; + char rtmp_handle[41]; + + buf[255] = '\0'; + + gst_init(&argc, &argv); + + config_load_default_values(); + + if(config_load_from_file("camera-manager.conf")) { + exit(-1); + } + + if(config_check_values()) { + config_free(); + exit(-2); + } + + if(commander_connect(config_get("CAM_COMMANDER_HOST"), config_get("CAM_COMMANDER_PORT"), config_get("SERIAL_NUMBER"), config_get("PRODUCT_KEY"), rtmp_handle)) { + config_free(); + exit(-3); + } + + for(;;) { + if(streaming_pop_error()) { + commander_send("streaming_error"); + commander_close(); + config_free(); + exit(4); + } + + if(!commander_wait_activity()) { + continue; + } + + if(commander_receive(buf, 255) == -1) { + exit(3); + } + + if(!strcmp(buf, "enable")) { + if(streaming_enable(config_get("RTMP_HOST"), config_get("RTMP_PORT"), config_get("RTMP_APP"), config_get("SERIAL_NUMBER"), rtmp_handle)) { + commander_send("streaming_start_error"); + commander_close(); + config_free(); + exit(4); + } + if(commander_send("enabled")) { + streaming_close(); + commander_close(); + config_free(); + exit(3); + } + } else if(!strcmp(buf, "disable")) { + if(streaming_disable()) { + commander_send("streaming_stop_error"); + commander_close(); + config_free(); + exit(4); + } + if(commander_send("disabled")) { + commander_close(); + config_free(); + exit(3); + } + } else if(!strcmp(buf, "disconnect")) { + if(streaming_disable()) { + commander_send("streaming_stop_error"); + commander_close(); + config_free(); + exit(4); + } + if(commander_send("disconnected")) { + commander_close(); + config_free(); + exit(3); + } + break; + } + } + + printf("[CameraManager] : bye !!\n"); + commander_close(); + config_free(); + + return 0; +} diff --git a/camera/cameramanager/streaming.c b/camera/cameramanager/streaming.c new file mode 100644 index 0000000..6041892 --- /dev/null +++ b/camera/cameramanager/streaming.c @@ -0,0 +1,112 @@ +#include +#include +#include + +#include "streaming.h" + + +static GstElement* streaming_pipeline = NULL; + +int streaming_enable(char* host, char* port, char* app, char* serial_number, char* handle) { + char pipeline_command[512]; + GError* error = NULL; + + sprintf(pipeline_command, "v4l2src device=/dev/video0 ! video/x-raw,width=640,height=480,framerate=30/1 ! clockoverlay font-desc=\"DejaVu Sans Book 15\" shaded-background=false ! omxh264enc target-bitrate=700000 control-rate=variable ! video/x-h264,profile=high ! h264parse ! flvmux ! rtmpsink location=rtmp://%s:%s/%s/%s?rtmp_handle=%s", host, port, app, serial_number, handle); + + if(streaming_pipeline != NULL) { + return 0; + } + printf("[CameraManager] : Enable RTMP streaming..."); + streaming_pipeline = gst_parse_launch(pipeline_command, &error); + if(streaming_pipeline == NULL) { + printf("Failed\n"); + fprintf(stderr, "[CameraManager] (error) : Unable to create the pipeline, error = %s\n", error->message); + g_error_free(error); + return -1; + } + gst_element_set_state(streaming_pipeline, GST_STATE_PLAYING); + if(gst_element_get_state(streaming_pipeline, NULL, NULL, 5000000000) != GST_STATE_CHANGE_SUCCESS) { + printf("Failed\n"); + fprintf(stderr, "[CameraManager] (error) : Unable to change state of pipeline\n"); + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + return -2; + } + printf("Success\n"); + return 0; +} + +int streaming_disable() { + if(streaming_pipeline == NULL) { + return 0; + } + printf("[CameraManager] : Disable RTMP streaming..."); + gst_element_set_state(streaming_pipeline, GST_STATE_NULL); + if(gst_element_get_state(streaming_pipeline, NULL, NULL, 5000000000) != GST_STATE_CHANGE_SUCCESS) { + printf("Failed\n"); + fprintf(stderr, "[CameraManager] (error) : Unable to change state of pipeline\n"); + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + return -1; + } + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + printf("Success\n"); + return 0; +} + +int streaming_pop_error() { + GstBus* bus = NULL; + GstMessage* msg = NULL; + GError* error = NULL; + gchar* dbg = NULL; + + if(streaming_pipeline == NULL) { + return 0; + } + bus = gst_element_get_bus(streaming_pipeline); + + msg = gst_bus_pop_filtered(bus, GST_MESSAGE_EOS | GST_MESSAGE_ERROR); + if(msg != NULL) { + switch(GST_MESSAGE_TYPE(msg)) { + case GST_MESSAGE_EOS: + fprintf(stderr, "[CameraManager] (error) : End of stream\n"); + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + gst_object_unref(bus); + gst_message_unref(msg); + return -1; + break; + + case GST_MESSAGE_ERROR: + gst_message_parse_error(msg, &error, &dbg); + if(error != NULL) { + fprintf(stderr, "[CameraManager] (error) : Gstreamer error = %s\n", error->message); + g_error_free(error); + } + if(dbg != NULL) { + fprintf(stderr, "[CameraManager] (error) : Gstreamer debug = %s\n", dbg); + g_free(dbg); + } + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + gst_object_unref(bus); + gst_message_unref(msg); + return -2; + break; + + default: + gst_message_unref(msg); + break; + } + } + gst_object_unref(bus); + return 0; +} + +void streaming_close() { + if(streaming_pipeline != NULL) { + gst_object_unref(streaming_pipeline); + streaming_pipeline = NULL; + } +} diff --git a/camera/cameramanager/streaming.h b/camera/cameramanager/streaming.h new file mode 100644 index 0000000..491dced --- /dev/null +++ b/camera/cameramanager/streaming.h @@ -0,0 +1,11 @@ +#ifndef STREAMING_H +#define STREAMING_H + + +int streaming_enable(char* host, char* port, char* app, char* serial_number, char* handle); +int streaming_disable(); +int streaming_pop_error(); +void streaming_close(); + + +#endif diff --git a/camera/compile b/camera/compile new file mode 100755 index 0000000..a85b723 --- /dev/null +++ b/camera/compile @@ -0,0 +1,347 @@ +#! /bin/sh +# Wrapper for compilers which do not understand '-c -o'. + +scriptversion=2012-10-14.11; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. +# Written by Tom Tromey . +# +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. +# +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. +# +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# This file is maintained in Automake, please report +# bugs to or send patches to +# . + +nl=' +' + +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent tools from complaining about whitespace usage. +IFS=" "" $nl" + +file_conv= + +# func_file_conv build_file lazy +# Convert a $build file to $host form and store it in $file +# Currently only supports Windows hosts. If the determined conversion +# type is listed in (the comma separated) LAZY, no conversion will +# take place. +func_file_conv () +{ + file=$1 + case $file in + / | /[!/]*) # absolute file, and not a UNC file + if test -z "$file_conv"; then + # lazily determine how to convert abs files + case `uname -s` in + MINGW*) + file_conv=mingw + ;; + CYGWIN*) + file_conv=cygwin + ;; + *) + file_conv=wine + ;; + esac + fi + case $file_conv/,$2, in + *,$file_conv,*) + ;; + mingw/*) + file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'` + ;; + cygwin/*) + file=`cygpath -m "$file" || echo "$file"` + ;; + wine/*) + file=`winepath -w "$file" || echo "$file"` + ;; + esac + ;; + esac +} + +# func_cl_dashL linkdir +# Make cl look for libraries in LINKDIR +func_cl_dashL () +{ + func_file_conv "$1" + if test -z "$lib_path"; then + lib_path=$file + else + lib_path="$lib_path;$file" + fi + linker_opts="$linker_opts -LIBPATH:$file" +} + +# func_cl_dashl library +# Do a library search-path lookup for cl +func_cl_dashl () +{ + lib=$1 + found=no + save_IFS=$IFS + IFS=';' + for dir in $lib_path $LIB + do + IFS=$save_IFS + if $shared && test -f "$dir/$lib.dll.lib"; then + found=yes + lib=$dir/$lib.dll.lib + break + fi + if test -f "$dir/$lib.lib"; then + found=yes + lib=$dir/$lib.lib + break + fi + if test -f "$dir/lib$lib.a"; then + found=yes + lib=$dir/lib$lib.a + break + fi + done + IFS=$save_IFS + + if test "$found" != yes; then + lib=$lib.lib + fi +} + +# func_cl_wrapper cl arg... +# Adjust compile command to suit cl +func_cl_wrapper () +{ + # Assume a capable shell + lib_path= + shared=: + linker_opts= + for arg + do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + eat=1 + case $2 in + *.o | *.[oO][bB][jJ]) + func_file_conv "$2" + set x "$@" -Fo"$file" + shift + ;; + *) + func_file_conv "$2" + set x "$@" -Fe"$file" + shift + ;; + esac + ;; + -I) + eat=1 + func_file_conv "$2" mingw + set x "$@" -I"$file" + shift + ;; + -I*) + func_file_conv "${1#-I}" mingw + set x "$@" -I"$file" + shift + ;; + -l) + eat=1 + func_cl_dashl "$2" + set x "$@" "$lib" + shift + ;; + -l*) + func_cl_dashl "${1#-l}" + set x "$@" "$lib" + shift + ;; + -L) + eat=1 + func_cl_dashL "$2" + ;; + -L*) + func_cl_dashL "${1#-L}" + ;; + -static) + shared=false + ;; + -Wl,*) + arg=${1#-Wl,} + save_ifs="$IFS"; IFS=',' + for flag in $arg; do + IFS="$save_ifs" + linker_opts="$linker_opts $flag" + done + IFS="$save_ifs" + ;; + -Xlinker) + eat=1 + linker_opts="$linker_opts $2" + ;; + -*) + set x "$@" "$1" + shift + ;; + *.cc | *.CC | *.cxx | *.CXX | *.[cC]++) + func_file_conv "$1" + set x "$@" -Tp"$file" + shift + ;; + *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO]) + func_file_conv "$1" mingw + set x "$@" "$file" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift + done + if test -n "$linker_opts"; then + linker_opts="-link$linker_opts" + fi + exec "$@" $linker_opts + exit 1 +} + +eat= + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: compile [--help] [--version] PROGRAM [ARGS] + +Wrapper for compilers which do not understand '-c -o'. +Remove '-o dest.o' from ARGS, run PROGRAM with the remaining +arguments, and rename the output as expected. + +If you are trying to build a whole package this is not the +right script to run: please start by reading the file 'INSTALL'. + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "compile $scriptversion" + exit $? + ;; + cl | *[/\\]cl | cl.exe | *[/\\]cl.exe ) + func_cl_wrapper "$@" # Doesn't return... + ;; +esac + +ofile= +cfile= + +for arg +do + if test -n "$eat"; then + eat= + else + case $1 in + -o) + # configure might choose to run compile as 'compile cc -o foo foo.c'. + # So we strip '-o arg' only if arg is an object. + eat=1 + case $2 in + *.o | *.obj) + ofile=$2 + ;; + *) + set x "$@" -o "$2" + shift + ;; + esac + ;; + *.c) + cfile=$1 + set x "$@" "$1" + shift + ;; + *) + set x "$@" "$1" + shift + ;; + esac + fi + shift +done + +if test -z "$ofile" || test -z "$cfile"; then + # If no '-o' option was seen then we might have been invoked from a + # pattern rule where we don't need one. That is ok -- this is a + # normal compilation that the losing compiler can handle. If no + # '.c' file was seen then we are probably linking. That is also + # ok. + exec "$@" +fi + +# Name of file we expect compiler to create. +cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'` + +# Create the lock directory. +# Note: use '[/\\:.-]' here to ensure that we don't use the same name +# that we are using for the .o file. Also, base the name on the expected +# object file name, since that is what matters with a parallel build. +lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d +while true; do + if mkdir "$lockdir" >/dev/null 2>&1; then + break + fi + sleep 1 +done +# FIXME: race condition here if user kills between mkdir and trap. +trap "rmdir '$lockdir'; exit 1" 1 2 15 + +# Run the compile. +"$@" +ret=$? + +if test -f "$cofile"; then + test "$cofile" = "$ofile" || mv "$cofile" "$ofile" +elif test -f "${cofile}bj"; then + test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile" +fi + +rmdir "$lockdir" +exit $ret + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/camera/configure b/camera/configure new file mode 100755 index 0000000..ff80157 --- /dev/null +++ b/camera/configure @@ -0,0 +1,5425 @@ +#! /bin/sh +# Guess values for system-dependent variables and create Makefiles. +# Generated by GNU Autoconf 2.69 for CameraManager 0.01. +# +# Report bugs to . +# +# +# Copyright (C) 1992-1996, 1998-2012 Free Software Foundation, Inc. +# +# +# This configure script is free software; the Free Software Foundation +# gives unlimited permission to copy, distribute and modify it. +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + +# Use a proper internal environment variable to ensure we don't fall + # into an infinite loop, continuously re-executing ourselves. + if test x"${_as_can_reexec}" != xno && test "x$CONFIG_SHELL" != x; then + _as_can_reexec=no; export _as_can_reexec; + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +as_fn_exit 255 + fi + # We don't want this to propagate to other subprocesses. + { _as_can_reexec=; unset _as_can_reexec;} +if test "x$CONFIG_SHELL" = x; then + as_bourne_compatible="if test -n \"\${ZSH_VERSION+set}\" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on \${1+\"\$@\"}, which + # is contrary to our usage. Disable this feature. + alias -g '\${1+\"\$@\"}'='\"\$@\"' + setopt NO_GLOB_SUBST +else + case \`(set -o) 2>/dev/null\` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi +" + as_required="as_fn_return () { (exit \$1); } +as_fn_success () { as_fn_return 0; } +as_fn_failure () { as_fn_return 1; } +as_fn_ret_success () { return 0; } +as_fn_ret_failure () { return 1; } + +exitcode=0 +as_fn_success || { exitcode=1; echo as_fn_success failed.; } +as_fn_failure && { exitcode=1; echo as_fn_failure succeeded.; } +as_fn_ret_success || { exitcode=1; echo as_fn_ret_success failed.; } +as_fn_ret_failure && { exitcode=1; echo as_fn_ret_failure succeeded.; } +if ( set x; as_fn_ret_success y && test x = \"\$1\" ); then : + +else + exitcode=1; echo positional parameters were not saved. +fi +test x\$exitcode = x0 || exit 1 +test -x / || exit 1" + as_suggested=" as_lineno_1=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_1a=\$LINENO + as_lineno_2=";as_suggested=$as_suggested$LINENO;as_suggested=$as_suggested" as_lineno_2a=\$LINENO + eval 'test \"x\$as_lineno_1'\$as_run'\" != \"x\$as_lineno_2'\$as_run'\" && + test \"x\`expr \$as_lineno_1'\$as_run' + 1\`\" = \"x\$as_lineno_2'\$as_run'\"' || exit 1 +test \$(( 1 + 1 )) = 2 || exit 1" + if (eval "$as_required") 2>/dev/null; then : + as_have_required=yes +else + as_have_required=no +fi + if test x$as_have_required = xyes && (eval "$as_suggested") 2>/dev/null; then : + +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +as_found=false +for as_dir in /bin$PATH_SEPARATOR/usr/bin$PATH_SEPARATOR$PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + as_found=: + case $as_dir in #( + /*) + for as_base in sh bash ksh sh5; do + # Try only shells that exist, to save several forks. + as_shell=$as_dir/$as_base + if { test -f "$as_shell" || test -f "$as_shell.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$as_shell"; } 2>/dev/null; then : + CONFIG_SHELL=$as_shell as_have_required=yes + if { $as_echo "$as_bourne_compatible""$as_suggested" | as_run=a "$as_shell"; } 2>/dev/null; then : + break 2 +fi +fi + done;; + esac + as_found=false +done +$as_found || { if { test -f "$SHELL" || test -f "$SHELL.exe"; } && + { $as_echo "$as_bourne_compatible""$as_required" | as_run=a "$SHELL"; } 2>/dev/null; then : + CONFIG_SHELL=$SHELL as_have_required=yes +fi; } +IFS=$as_save_IFS + + + if test "x$CONFIG_SHELL" != x; then : + export CONFIG_SHELL + # We cannot yet assume a decent shell, so we have to provide a +# neutralization value for shells without unset; and this also +# works around shells that cannot unset nonexistent variables. +# Preserve -v and -x to the replacement shell. +BASH_ENV=/dev/null +ENV=/dev/null +(unset BASH_ENV) >/dev/null 2>&1 && unset BASH_ENV ENV +case $- in # (((( + *v*x* | *x*v* ) as_opts=-vx ;; + *v* ) as_opts=-v ;; + *x* ) as_opts=-x ;; + * ) as_opts= ;; +esac +exec $CONFIG_SHELL $as_opts "$as_myself" ${1+"$@"} +# Admittedly, this is quite paranoid, since all the known shells bail +# out after a failed `exec'. +$as_echo "$0: could not re-execute with $CONFIG_SHELL" >&2 +exit 255 +fi + + if test x$as_have_required = xno; then : + $as_echo "$0: This script requires a shell more modern than all" + $as_echo "$0: the shells that I found on your system." + if test x${ZSH_VERSION+set} = xset ; then + $as_echo "$0: In particular, zsh $ZSH_VERSION has bugs and should" + $as_echo "$0: be upgraded to zsh 4.3.4 or later." + else + $as_echo "$0: Please tell bug-autoconf@gnu.org and +$0: valentin.verdier03@gmail.com about your system, +$0: including any error possibly output before this +$0: message. Then install a modern shell, or manually run +$0: the script under such a shell if you do have one." + fi + exit 1 +fi +fi +fi +SHELL=${CONFIG_SHELL-/bin/sh} +export SHELL +# Unset more variables known to interfere with behavior of common tools. +CLICOLOR_FORCE= GREP_OPTIONS= +unset CLICOLOR_FORCE GREP_OPTIONS + +## --------------------- ## +## M4sh Shell Functions. ## +## --------------------- ## +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + + + as_lineno_1=$LINENO as_lineno_1a=$LINENO + as_lineno_2=$LINENO as_lineno_2a=$LINENO + eval 'test "x$as_lineno_1'$as_run'" != "x$as_lineno_2'$as_run'" && + test "x`expr $as_lineno_1'$as_run' + 1`" = "x$as_lineno_2'$as_run'"' || { + # Blame Lee E. McMahon (1931-1989) for sed's syntax. :-) + sed -n ' + p + /[$]LINENO/= + ' <$as_myself | + sed ' + s/[$]LINENO.*/&-/ + t lineno + b + :lineno + N + :loop + s/[$]LINENO\([^'$as_cr_alnum'_].*\n\)\(.*\)/\2\1\2/ + t loop + s/-\n.*// + ' >$as_me.lineno && + chmod +x "$as_me.lineno" || + { $as_echo "$as_me: error: cannot create $as_me.lineno; rerun with a POSIX shell" >&2; as_fn_exit 1; } + + # If we had to re-execute with $CONFIG_SHELL, we're ensured to have + # already done that, so ensure we don't try to do so again and fall + # in an infinite loop. This has already happened in practice. + _as_can_reexec=no; export _as_can_reexec + # Don't try to exec as it changes $[0], causing all sort of problems + # (the dirname of $[0] is not the place where we might find the + # original and so on. Autoconf is especially sensitive to this). + . "./$as_me.lineno" + # Exit status is that of the last command. + exit +} + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +test -n "$DJDIR" || exec 7<&0 &1 + +# Name of the host. +# hostname on some systems (SVR3.2, old GNU/Linux) returns a bogus exit status, +# so uname gets run too. +ac_hostname=`(hostname || uname -n) 2>/dev/null | sed 1q` + +# +# Initializations. +# +ac_default_prefix=/usr/local +ac_clean_files= +ac_config_libobj_dir=. +LIBOBJS= +cross_compiling=no +subdirs= +MFLAGS= +MAKEFLAGS= + +# Identity of this package. +PACKAGE_NAME='CameraManager' +PACKAGE_TARNAME='cameramanager' +PACKAGE_VERSION='0.01' +PACKAGE_STRING='CameraManager 0.01' +PACKAGE_BUGREPORT='valentin.verdier03@gmail.com' +PACKAGE_URL='' + +ac_unique_file="configure.ac" +# Factoring default headers for most tests. +ac_includes_default="\ +#include +#ifdef HAVE_SYS_TYPES_H +# include +#endif +#ifdef HAVE_SYS_STAT_H +# include +#endif +#ifdef STDC_HEADERS +# include +# include +#else +# ifdef HAVE_STDLIB_H +# include +# endif +#endif +#ifdef HAVE_STRING_H +# if !defined STDC_HEADERS && defined HAVE_MEMORY_H +# include +# endif +# include +#endif +#ifdef HAVE_STRINGS_H +# include +#endif +#ifdef HAVE_INTTYPES_H +# include +#endif +#ifdef HAVE_STDINT_H +# include +#endif +#ifdef HAVE_UNISTD_H +# include +#endif" + +ac_subst_vars='am__EXEEXT_FALSE +am__EXEEXT_TRUE +LTLIBOBJS +LIBOBJS +CAMERAMANAGER_LIBS +CAMERAMANAGER_CPPFLAGS +CAMERAMANAGER_CFLAGS +EGREP +GREP +CPP +am__fastdepCC_FALSE +am__fastdepCC_TRUE +CCDEPMODE +am__nodep +AMDEPBACKSLASH +AMDEP_FALSE +AMDEP_TRUE +am__quote +am__include +DEPDIR +OBJEXT +EXEEXT +ac_ct_CC +CPPFLAGS +LDFLAGS +CFLAGS +CC +AM_BACKSLASH +AM_DEFAULT_VERBOSITY +AM_DEFAULT_V +AM_V +am__untar +am__tar +AMTAR +am__leading_dot +SET_MAKE +AWK +mkdir_p +MKDIR_P +INSTALL_STRIP_PROGRAM +STRIP +install_sh +MAKEINFO +AUTOHEADER +AUTOMAKE +AUTOCONF +ACLOCAL +VERSION +PACKAGE +CYGPATH_W +am__isrc +INSTALL_DATA +INSTALL_SCRIPT +INSTALL_PROGRAM +target_alias +host_alias +build_alias +LIBS +ECHO_T +ECHO_N +ECHO_C +DEFS +mandir +localedir +libdir +psdir +pdfdir +dvidir +htmldir +infodir +docdir +oldincludedir +includedir +localstatedir +sharedstatedir +sysconfdir +datadir +datarootdir +libexecdir +sbindir +bindir +program_transform_name +prefix +exec_prefix +PACKAGE_URL +PACKAGE_BUGREPORT +PACKAGE_STRING +PACKAGE_VERSION +PACKAGE_TARNAME +PACKAGE_NAME +PATH_SEPARATOR +SHELL' +ac_subst_files='' +ac_user_opts=' +enable_option_checking +enable_debug +enable_silent_rules +enable_dependency_tracking +' + ac_precious_vars='build_alias +host_alias +target_alias +CC +CFLAGS +LDFLAGS +LIBS +CPPFLAGS +CPP' + + +# Initialize some variables set by options. +ac_init_help= +ac_init_version=false +ac_unrecognized_opts= +ac_unrecognized_sep= +# The variables have the same names as the options, with +# dashes changed to underlines. +cache_file=/dev/null +exec_prefix=NONE +no_create= +no_recursion= +prefix=NONE +program_prefix=NONE +program_suffix=NONE +program_transform_name=s,x,x, +silent= +site= +srcdir= +verbose= +x_includes=NONE +x_libraries=NONE + +# Installation directory options. +# These are left unexpanded so users can "make install exec_prefix=/foo" +# and all the variables that are supposed to be based on exec_prefix +# by default will actually change. +# Use braces instead of parens because sh, perl, etc. also accept them. +# (The list follows the same order as the GNU Coding Standards.) +bindir='${exec_prefix}/bin' +sbindir='${exec_prefix}/sbin' +libexecdir='${exec_prefix}/libexec' +datarootdir='${prefix}/share' +datadir='${datarootdir}' +sysconfdir='${prefix}/etc' +sharedstatedir='${prefix}/com' +localstatedir='${prefix}/var' +includedir='${prefix}/include' +oldincludedir='/usr/include' +docdir='${datarootdir}/doc/${PACKAGE_TARNAME}' +infodir='${datarootdir}/info' +htmldir='${docdir}' +dvidir='${docdir}' +pdfdir='${docdir}' +psdir='${docdir}' +libdir='${exec_prefix}/lib' +localedir='${datarootdir}/locale' +mandir='${datarootdir}/man' + +ac_prev= +ac_dashdash= +for ac_option +do + # If the previous option needs an argument, assign it. + if test -n "$ac_prev"; then + eval $ac_prev=\$ac_option + ac_prev= + continue + fi + + case $ac_option in + *=?*) ac_optarg=`expr "X$ac_option" : '[^=]*=\(.*\)'` ;; + *=) ac_optarg= ;; + *) ac_optarg=yes ;; + esac + + # Accept the important Cygnus configure options, so we can diagnose typos. + + case $ac_dashdash$ac_option in + --) + ac_dashdash=yes ;; + + -bindir | --bindir | --bindi | --bind | --bin | --bi) + ac_prev=bindir ;; + -bindir=* | --bindir=* | --bindi=* | --bind=* | --bin=* | --bi=*) + bindir=$ac_optarg ;; + + -build | --build | --buil | --bui | --bu) + ac_prev=build_alias ;; + -build=* | --build=* | --buil=* | --bui=* | --bu=*) + build_alias=$ac_optarg ;; + + -cache-file | --cache-file | --cache-fil | --cache-fi \ + | --cache-f | --cache- | --cache | --cach | --cac | --ca | --c) + ac_prev=cache_file ;; + -cache-file=* | --cache-file=* | --cache-fil=* | --cache-fi=* \ + | --cache-f=* | --cache-=* | --cache=* | --cach=* | --cac=* | --ca=* | --c=*) + cache_file=$ac_optarg ;; + + --config-cache | -C) + cache_file=config.cache ;; + + -datadir | --datadir | --datadi | --datad) + ac_prev=datadir ;; + -datadir=* | --datadir=* | --datadi=* | --datad=*) + datadir=$ac_optarg ;; + + -datarootdir | --datarootdir | --datarootdi | --datarootd | --dataroot \ + | --dataroo | --dataro | --datar) + ac_prev=datarootdir ;; + -datarootdir=* | --datarootdir=* | --datarootdi=* | --datarootd=* \ + | --dataroot=* | --dataroo=* | --dataro=* | --datar=*) + datarootdir=$ac_optarg ;; + + -disable-* | --disable-*) + ac_useropt=`expr "x$ac_option" : 'x-*disable-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--disable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=no ;; + + -docdir | --docdir | --docdi | --doc | --do) + ac_prev=docdir ;; + -docdir=* | --docdir=* | --docdi=* | --doc=* | --do=*) + docdir=$ac_optarg ;; + + -dvidir | --dvidir | --dvidi | --dvid | --dvi | --dv) + ac_prev=dvidir ;; + -dvidir=* | --dvidir=* | --dvidi=* | --dvid=* | --dvi=* | --dv=*) + dvidir=$ac_optarg ;; + + -enable-* | --enable-*) + ac_useropt=`expr "x$ac_option" : 'x-*enable-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid feature name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"enable_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--enable-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval enable_$ac_useropt=\$ac_optarg ;; + + -exec-prefix | --exec_prefix | --exec-prefix | --exec-prefi \ + | --exec-pref | --exec-pre | --exec-pr | --exec-p | --exec- \ + | --exec | --exe | --ex) + ac_prev=exec_prefix ;; + -exec-prefix=* | --exec_prefix=* | --exec-prefix=* | --exec-prefi=* \ + | --exec-pref=* | --exec-pre=* | --exec-pr=* | --exec-p=* | --exec-=* \ + | --exec=* | --exe=* | --ex=*) + exec_prefix=$ac_optarg ;; + + -gas | --gas | --ga | --g) + # Obsolete; use --with-gas. + with_gas=yes ;; + + -help | --help | --hel | --he | -h) + ac_init_help=long ;; + -help=r* | --help=r* | --hel=r* | --he=r* | -hr*) + ac_init_help=recursive ;; + -help=s* | --help=s* | --hel=s* | --he=s* | -hs*) + ac_init_help=short ;; + + -host | --host | --hos | --ho) + ac_prev=host_alias ;; + -host=* | --host=* | --hos=* | --ho=*) + host_alias=$ac_optarg ;; + + -htmldir | --htmldir | --htmldi | --htmld | --html | --htm | --ht) + ac_prev=htmldir ;; + -htmldir=* | --htmldir=* | --htmldi=* | --htmld=* | --html=* | --htm=* \ + | --ht=*) + htmldir=$ac_optarg ;; + + -includedir | --includedir | --includedi | --included | --include \ + | --includ | --inclu | --incl | --inc) + ac_prev=includedir ;; + -includedir=* | --includedir=* | --includedi=* | --included=* | --include=* \ + | --includ=* | --inclu=* | --incl=* | --inc=*) + includedir=$ac_optarg ;; + + -infodir | --infodir | --infodi | --infod | --info | --inf) + ac_prev=infodir ;; + -infodir=* | --infodir=* | --infodi=* | --infod=* | --info=* | --inf=*) + infodir=$ac_optarg ;; + + -libdir | --libdir | --libdi | --libd) + ac_prev=libdir ;; + -libdir=* | --libdir=* | --libdi=* | --libd=*) + libdir=$ac_optarg ;; + + -libexecdir | --libexecdir | --libexecdi | --libexecd | --libexec \ + | --libexe | --libex | --libe) + ac_prev=libexecdir ;; + -libexecdir=* | --libexecdir=* | --libexecdi=* | --libexecd=* | --libexec=* \ + | --libexe=* | --libex=* | --libe=*) + libexecdir=$ac_optarg ;; + + -localedir | --localedir | --localedi | --localed | --locale) + ac_prev=localedir ;; + -localedir=* | --localedir=* | --localedi=* | --localed=* | --locale=*) + localedir=$ac_optarg ;; + + -localstatedir | --localstatedir | --localstatedi | --localstated \ + | --localstate | --localstat | --localsta | --localst | --locals) + ac_prev=localstatedir ;; + -localstatedir=* | --localstatedir=* | --localstatedi=* | --localstated=* \ + | --localstate=* | --localstat=* | --localsta=* | --localst=* | --locals=*) + localstatedir=$ac_optarg ;; + + -mandir | --mandir | --mandi | --mand | --man | --ma | --m) + ac_prev=mandir ;; + -mandir=* | --mandir=* | --mandi=* | --mand=* | --man=* | --ma=* | --m=*) + mandir=$ac_optarg ;; + + -nfp | --nfp | --nf) + # Obsolete; use --without-fp. + with_fp=no ;; + + -no-create | --no-create | --no-creat | --no-crea | --no-cre \ + | --no-cr | --no-c | -n) + no_create=yes ;; + + -no-recursion | --no-recursion | --no-recursio | --no-recursi \ + | --no-recurs | --no-recur | --no-recu | --no-rec | --no-re | --no-r) + no_recursion=yes ;; + + -oldincludedir | --oldincludedir | --oldincludedi | --oldincluded \ + | --oldinclude | --oldinclud | --oldinclu | --oldincl | --oldinc \ + | --oldin | --oldi | --old | --ol | --o) + ac_prev=oldincludedir ;; + -oldincludedir=* | --oldincludedir=* | --oldincludedi=* | --oldincluded=* \ + | --oldinclude=* | --oldinclud=* | --oldinclu=* | --oldincl=* | --oldinc=* \ + | --oldin=* | --oldi=* | --old=* | --ol=* | --o=*) + oldincludedir=$ac_optarg ;; + + -prefix | --prefix | --prefi | --pref | --pre | --pr | --p) + ac_prev=prefix ;; + -prefix=* | --prefix=* | --prefi=* | --pref=* | --pre=* | --pr=* | --p=*) + prefix=$ac_optarg ;; + + -program-prefix | --program-prefix | --program-prefi | --program-pref \ + | --program-pre | --program-pr | --program-p) + ac_prev=program_prefix ;; + -program-prefix=* | --program-prefix=* | --program-prefi=* \ + | --program-pref=* | --program-pre=* | --program-pr=* | --program-p=*) + program_prefix=$ac_optarg ;; + + -program-suffix | --program-suffix | --program-suffi | --program-suff \ + | --program-suf | --program-su | --program-s) + ac_prev=program_suffix ;; + -program-suffix=* | --program-suffix=* | --program-suffi=* \ + | --program-suff=* | --program-suf=* | --program-su=* | --program-s=*) + program_suffix=$ac_optarg ;; + + -program-transform-name | --program-transform-name \ + | --program-transform-nam | --program-transform-na \ + | --program-transform-n | --program-transform- \ + | --program-transform | --program-transfor \ + | --program-transfo | --program-transf \ + | --program-trans | --program-tran \ + | --progr-tra | --program-tr | --program-t) + ac_prev=program_transform_name ;; + -program-transform-name=* | --program-transform-name=* \ + | --program-transform-nam=* | --program-transform-na=* \ + | --program-transform-n=* | --program-transform-=* \ + | --program-transform=* | --program-transfor=* \ + | --program-transfo=* | --program-transf=* \ + | --program-trans=* | --program-tran=* \ + | --progr-tra=* | --program-tr=* | --program-t=*) + program_transform_name=$ac_optarg ;; + + -pdfdir | --pdfdir | --pdfdi | --pdfd | --pdf | --pd) + ac_prev=pdfdir ;; + -pdfdir=* | --pdfdir=* | --pdfdi=* | --pdfd=* | --pdf=* | --pd=*) + pdfdir=$ac_optarg ;; + + -psdir | --psdir | --psdi | --psd | --ps) + ac_prev=psdir ;; + -psdir=* | --psdir=* | --psdi=* | --psd=* | --ps=*) + psdir=$ac_optarg ;; + + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + silent=yes ;; + + -sbindir | --sbindir | --sbindi | --sbind | --sbin | --sbi | --sb) + ac_prev=sbindir ;; + -sbindir=* | --sbindir=* | --sbindi=* | --sbind=* | --sbin=* \ + | --sbi=* | --sb=*) + sbindir=$ac_optarg ;; + + -sharedstatedir | --sharedstatedir | --sharedstatedi \ + | --sharedstated | --sharedstate | --sharedstat | --sharedsta \ + | --sharedst | --shareds | --shared | --share | --shar \ + | --sha | --sh) + ac_prev=sharedstatedir ;; + -sharedstatedir=* | --sharedstatedir=* | --sharedstatedi=* \ + | --sharedstated=* | --sharedstate=* | --sharedstat=* | --sharedsta=* \ + | --sharedst=* | --shareds=* | --shared=* | --share=* | --shar=* \ + | --sha=* | --sh=*) + sharedstatedir=$ac_optarg ;; + + -site | --site | --sit) + ac_prev=site ;; + -site=* | --site=* | --sit=*) + site=$ac_optarg ;; + + -srcdir | --srcdir | --srcdi | --srcd | --src | --sr) + ac_prev=srcdir ;; + -srcdir=* | --srcdir=* | --srcdi=* | --srcd=* | --src=* | --sr=*) + srcdir=$ac_optarg ;; + + -sysconfdir | --sysconfdir | --sysconfdi | --sysconfd | --sysconf \ + | --syscon | --sysco | --sysc | --sys | --sy) + ac_prev=sysconfdir ;; + -sysconfdir=* | --sysconfdir=* | --sysconfdi=* | --sysconfd=* | --sysconf=* \ + | --syscon=* | --sysco=* | --sysc=* | --sys=* | --sy=*) + sysconfdir=$ac_optarg ;; + + -target | --target | --targe | --targ | --tar | --ta | --t) + ac_prev=target_alias ;; + -target=* | --target=* | --targe=* | --targ=* | --tar=* | --ta=* | --t=*) + target_alias=$ac_optarg ;; + + -v | -verbose | --verbose | --verbos | --verbo | --verb) + verbose=yes ;; + + -version | --version | --versio | --versi | --vers | -V) + ac_init_version=: ;; + + -with-* | --with-*) + ac_useropt=`expr "x$ac_option" : 'x-*with-\([^=]*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--with-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=\$ac_optarg ;; + + -without-* | --without-*) + ac_useropt=`expr "x$ac_option" : 'x-*without-\(.*\)'` + # Reject names that are not valid shell variable names. + expr "x$ac_useropt" : ".*[^-+._$as_cr_alnum]" >/dev/null && + as_fn_error $? "invalid package name: $ac_useropt" + ac_useropt_orig=$ac_useropt + ac_useropt=`$as_echo "$ac_useropt" | sed 's/[-+.]/_/g'` + case $ac_user_opts in + *" +"with_$ac_useropt" +"*) ;; + *) ac_unrecognized_opts="$ac_unrecognized_opts$ac_unrecognized_sep--without-$ac_useropt_orig" + ac_unrecognized_sep=', ';; + esac + eval with_$ac_useropt=no ;; + + --x) + # Obsolete; use --with-x. + with_x=yes ;; + + -x-includes | --x-includes | --x-include | --x-includ | --x-inclu \ + | --x-incl | --x-inc | --x-in | --x-i) + ac_prev=x_includes ;; + -x-includes=* | --x-includes=* | --x-include=* | --x-includ=* | --x-inclu=* \ + | --x-incl=* | --x-inc=* | --x-in=* | --x-i=*) + x_includes=$ac_optarg ;; + + -x-libraries | --x-libraries | --x-librarie | --x-librari \ + | --x-librar | --x-libra | --x-libr | --x-lib | --x-li | --x-l) + ac_prev=x_libraries ;; + -x-libraries=* | --x-libraries=* | --x-librarie=* | --x-librari=* \ + | --x-librar=* | --x-libra=* | --x-libr=* | --x-lib=* | --x-li=* | --x-l=*) + x_libraries=$ac_optarg ;; + + -*) as_fn_error $? "unrecognized option: \`$ac_option' +Try \`$0 --help' for more information" + ;; + + *=*) + ac_envvar=`expr "x$ac_option" : 'x\([^=]*\)='` + # Reject names that are not valid shell variable names. + case $ac_envvar in #( + '' | [0-9]* | *[!_$as_cr_alnum]* ) + as_fn_error $? "invalid variable name: \`$ac_envvar'" ;; + esac + eval $ac_envvar=\$ac_optarg + export $ac_envvar ;; + + *) + # FIXME: should be removed in autoconf 3.0. + $as_echo "$as_me: WARNING: you should use --build, --host, --target" >&2 + expr "x$ac_option" : ".*[^-._$as_cr_alnum]" >/dev/null && + $as_echo "$as_me: WARNING: invalid host type: $ac_option" >&2 + : "${build_alias=$ac_option} ${host_alias=$ac_option} ${target_alias=$ac_option}" + ;; + + esac +done + +if test -n "$ac_prev"; then + ac_option=--`echo $ac_prev | sed 's/_/-/g'` + as_fn_error $? "missing argument to $ac_option" +fi + +if test -n "$ac_unrecognized_opts"; then + case $enable_option_checking in + no) ;; + fatal) as_fn_error $? "unrecognized options: $ac_unrecognized_opts" ;; + *) $as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2 ;; + esac +fi + +# Check all directory arguments for consistency. +for ac_var in exec_prefix prefix bindir sbindir libexecdir datarootdir \ + datadir sysconfdir sharedstatedir localstatedir includedir \ + oldincludedir docdir infodir htmldir dvidir pdfdir psdir \ + libdir localedir mandir +do + eval ac_val=\$$ac_var + # Remove trailing slashes. + case $ac_val in + */ ) + ac_val=`expr "X$ac_val" : 'X\(.*[^/]\)' \| "X$ac_val" : 'X\(.*\)'` + eval $ac_var=\$ac_val;; + esac + # Be sure to have absolute directory names. + case $ac_val in + [\\/$]* | ?:[\\/]* ) continue;; + NONE | '' ) case $ac_var in *prefix ) continue;; esac;; + esac + as_fn_error $? "expected an absolute directory name for --$ac_var: $ac_val" +done + +# There might be people who depend on the old broken behavior: `$host' +# used to hold the argument of --host etc. +# FIXME: To remove some day. +build=$build_alias +host=$host_alias +target=$target_alias + +# FIXME: To remove some day. +if test "x$host_alias" != x; then + if test "x$build_alias" = x; then + cross_compiling=maybe + elif test "x$build_alias" != "x$host_alias"; then + cross_compiling=yes + fi +fi + +ac_tool_prefix= +test -n "$host_alias" && ac_tool_prefix=$host_alias- + +test "$silent" = yes && exec 6>/dev/null + + +ac_pwd=`pwd` && test -n "$ac_pwd" && +ac_ls_di=`ls -di .` && +ac_pwd_ls_di=`cd "$ac_pwd" && ls -di .` || + as_fn_error $? "working directory cannot be determined" +test "X$ac_ls_di" = "X$ac_pwd_ls_di" || + as_fn_error $? "pwd does not report name of working directory" + + +# Find the source files, if location was not specified. +if test -z "$srcdir"; then + ac_srcdir_defaulted=yes + # Try the directory containing this script, then the parent directory. + ac_confdir=`$as_dirname -- "$as_myself" || +$as_expr X"$as_myself" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_myself" : 'X\(//\)[^/]' \| \ + X"$as_myself" : 'X\(//\)$' \| \ + X"$as_myself" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_myself" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + srcdir=$ac_confdir + if test ! -r "$srcdir/$ac_unique_file"; then + srcdir=.. + fi +else + ac_srcdir_defaulted=no +fi +if test ! -r "$srcdir/$ac_unique_file"; then + test "$ac_srcdir_defaulted" = yes && srcdir="$ac_confdir or .." + as_fn_error $? "cannot find sources ($ac_unique_file) in $srcdir" +fi +ac_msg="sources are in $srcdir, but \`cd $srcdir' does not work" +ac_abs_confdir=`( + cd "$srcdir" && test -r "./$ac_unique_file" || as_fn_error $? "$ac_msg" + pwd)` +# When building in place, set srcdir=. +if test "$ac_abs_confdir" = "$ac_pwd"; then + srcdir=. +fi +# Remove unnecessary trailing slashes from srcdir. +# Double slashes in file names in object file debugging info +# mess up M-x gdb in Emacs. +case $srcdir in +*/) srcdir=`expr "X$srcdir" : 'X\(.*[^/]\)' \| "X$srcdir" : 'X\(.*\)'`;; +esac +for ac_var in $ac_precious_vars; do + eval ac_env_${ac_var}_set=\${${ac_var}+set} + eval ac_env_${ac_var}_value=\$${ac_var} + eval ac_cv_env_${ac_var}_set=\${${ac_var}+set} + eval ac_cv_env_${ac_var}_value=\$${ac_var} +done + +# +# Report the --help message. +# +if test "$ac_init_help" = "long"; then + # Omit some internal or obsolete options to make the list less imposing. + # This message is too long to be a string in the A/UX 3.1 sh. + cat <<_ACEOF +\`configure' configures CameraManager 0.01 to adapt to many kinds of systems. + +Usage: $0 [OPTION]... [VAR=VALUE]... + +To assign environment variables (e.g., CC, CFLAGS...), specify them as +VAR=VALUE. See below for descriptions of some of the useful variables. + +Defaults for the options are specified in brackets. + +Configuration: + -h, --help display this help and exit + --help=short display options specific to this package + --help=recursive display the short help of all the included packages + -V, --version display version information and exit + -q, --quiet, --silent do not print \`checking ...' messages + --cache-file=FILE cache test results in FILE [disabled] + -C, --config-cache alias for \`--cache-file=config.cache' + -n, --no-create do not create output files + --srcdir=DIR find the sources in DIR [configure dir or \`..'] + +Installation directories: + --prefix=PREFIX install architecture-independent files in PREFIX + [$ac_default_prefix] + --exec-prefix=EPREFIX install architecture-dependent files in EPREFIX + [PREFIX] + +By default, \`make install' will install all the files in +\`$ac_default_prefix/bin', \`$ac_default_prefix/lib' etc. You can specify +an installation prefix other than \`$ac_default_prefix' using \`--prefix', +for instance \`--prefix=\$HOME'. + +For better control, use the options below. + +Fine tuning of the installation directories: + --bindir=DIR user executables [EPREFIX/bin] + --sbindir=DIR system admin executables [EPREFIX/sbin] + --libexecdir=DIR program executables [EPREFIX/libexec] + --sysconfdir=DIR read-only single-machine data [PREFIX/etc] + --sharedstatedir=DIR modifiable architecture-independent data [PREFIX/com] + --localstatedir=DIR modifiable single-machine data [PREFIX/var] + --libdir=DIR object code libraries [EPREFIX/lib] + --includedir=DIR C header files [PREFIX/include] + --oldincludedir=DIR C header files for non-gcc [/usr/include] + --datarootdir=DIR read-only arch.-independent data root [PREFIX/share] + --datadir=DIR read-only architecture-independent data [DATAROOTDIR] + --infodir=DIR info documentation [DATAROOTDIR/info] + --localedir=DIR locale-dependent data [DATAROOTDIR/locale] + --mandir=DIR man documentation [DATAROOTDIR/man] + --docdir=DIR documentation root [DATAROOTDIR/doc/cameramanager] + --htmldir=DIR html documentation [DOCDIR] + --dvidir=DIR dvi documentation [DOCDIR] + --pdfdir=DIR pdf documentation [DOCDIR] + --psdir=DIR ps documentation [DOCDIR] +_ACEOF + + cat <<\_ACEOF + +Program names: + --program-prefix=PREFIX prepend PREFIX to installed program names + --program-suffix=SUFFIX append SUFFIX to installed program names + --program-transform-name=PROGRAM run sed PROGRAM on installed program names +_ACEOF +fi + +if test -n "$ac_init_help"; then + case $ac_init_help in + short | recursive ) echo "Configuration of CameraManager 0.01:";; + esac + cat <<\_ACEOF + +Optional Features: + --disable-option-checking ignore unrecognized --enable/--with options + --disable-FEATURE do not include FEATURE (same as --enable-FEATURE=no) + --enable-FEATURE[=ARG] include FEATURE [ARG=yes] +Enable debug mode + --enable-silent-rules less verbose build output (undo: "make V=1") + --disable-silent-rules verbose build output (undo: "make V=0") + --enable-dependency-tracking + do not reject slow dependency extractors + --disable-dependency-tracking + speeds up one-time build + +Some influential environment variables: + CC C compiler command + CFLAGS C compiler flags + LDFLAGS linker flags, e.g. -L if you have libraries in a + nonstandard directory + LIBS libraries to pass to the linker, e.g. -l + CPPFLAGS (Objective) C/C++ preprocessor flags, e.g. -I if + you have headers in a nonstandard directory + CPP C preprocessor + +Use these variables to override the choices made by `configure' or to help +it to find libraries and programs with nonstandard names/locations. + +Report bugs to . +_ACEOF +ac_status=$? +fi + +if test "$ac_init_help" = "recursive"; then + # If there are subdirs, report their specific --help. + for ac_dir in : $ac_subdirs_all; do test "x$ac_dir" = x: && continue + test -d "$ac_dir" || + { cd "$srcdir" && ac_pwd=`pwd` && srcdir=. && test -d "$ac_dir"; } || + continue + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + cd "$ac_dir" || { ac_status=$?; continue; } + # Check for guested configure. + if test -f "$ac_srcdir/configure.gnu"; then + echo && + $SHELL "$ac_srcdir/configure.gnu" --help=recursive + elif test -f "$ac_srcdir/configure"; then + echo && + $SHELL "$ac_srcdir/configure" --help=recursive + else + $as_echo "$as_me: WARNING: no configuration information is in $ac_dir" >&2 + fi || ac_status=$? + cd "$ac_pwd" || { ac_status=$?; break; } + done +fi + +test -n "$ac_init_help" && exit $ac_status +if $ac_init_version; then + cat <<\_ACEOF +CameraManager configure 0.01 +generated by GNU Autoconf 2.69 + +Copyright (C) 2012 Free Software Foundation, Inc. +This configure script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it. +_ACEOF + exit +fi + +## ------------------------ ## +## Autoconf initialization. ## +## ------------------------ ## + +# ac_fn_c_try_compile LINENO +# -------------------------- +# Try to compile conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + rm -f conftest.$ac_objext + if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { + test -z "$ac_c_werror_flag" || + test ! -s conftest.err + } && test -s conftest.$ac_objext; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_compile + +# ac_fn_c_try_cpp LINENO +# ---------------------- +# Try to preprocess conftest.$ac_ext, and return whether this succeeded. +ac_fn_c_try_cpp () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_cpp conftest.$ac_ext" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_cpp conftest.$ac_ext") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + grep -v '^ *+' conftest.err >conftest.er1 + cat conftest.er1 >&5 + mv -f conftest.er1 conftest.err + fi + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } > conftest.i && { + test -z "$ac_c_preproc_warn_flag$ac_c_werror_flag" || + test ! -s conftest.err + }; then : + ac_retval=0 +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=1 +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_cpp + +# ac_fn_c_check_header_mongrel LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists, giving a warning if it cannot be compiled using +# the include files in INCLUDES and setting the cache variable VAR +# accordingly. +ac_fn_c_check_header_mongrel () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if eval \${$3+:} false; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +else + # Is the header compilable? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 usability" >&5 +$as_echo_n "checking $2 usability... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_header_compiler=yes +else + ac_header_compiler=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_compiler" >&5 +$as_echo "$ac_header_compiler" >&6; } + +# Is the header present? +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking $2 presence" >&5 +$as_echo_n "checking $2 presence... " >&6; } +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include <$2> +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + ac_header_preproc=yes +else + ac_header_preproc=no +fi +rm -f conftest.err conftest.i conftest.$ac_ext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_header_preproc" >&5 +$as_echo "$ac_header_preproc" >&6; } + +# So? What about this header? +case $ac_header_compiler:$ac_header_preproc:$ac_c_preproc_warn_flag in #(( + yes:no: ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&5 +$as_echo "$as_me: WARNING: $2: accepted by the compiler, rejected by the preprocessor!" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} + ;; + no:yes:* ) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: present but cannot be compiled" >&5 +$as_echo "$as_me: WARNING: $2: present but cannot be compiled" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: check for missing prerequisite headers?" >&5 +$as_echo "$as_me: WARNING: $2: check for missing prerequisite headers?" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: see the Autoconf documentation" >&5 +$as_echo "$as_me: WARNING: $2: see the Autoconf documentation" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&5 +$as_echo "$as_me: WARNING: $2: section \"Present But Cannot Be Compiled\"" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $2: proceeding with the compiler's result" >&5 +$as_echo "$as_me: WARNING: $2: proceeding with the compiler's result" >&2;} +( $as_echo "## ------------------------------------------- ## +## Report this to valentin.verdier03@gmail.com ## +## ------------------------------------------- ##" + ) | sed "s/^/$as_me: WARNING: /" >&2 + ;; +esac + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + eval "$3=\$ac_header_compiler" +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } +fi + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_mongrel + +# ac_fn_c_try_run LINENO +# ---------------------- +# Try to link conftest.$ac_ext, and return whether this succeeded. Assumes +# that executables *can* be run. +ac_fn_c_try_run () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } && { ac_try='./conftest$ac_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then : + ac_retval=0 +else + $as_echo "$as_me: program exited with status $ac_status" >&5 + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + + ac_retval=$ac_status +fi + rm -rf conftest.dSYM conftest_ipa8_conftest.oo + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + as_fn_set_status $ac_retval + +} # ac_fn_c_try_run + +# ac_fn_c_check_header_compile LINENO HEADER VAR INCLUDES +# ------------------------------------------------------- +# Tests whether HEADER exists and can be compiled using the include files in +# INCLUDES, setting the cache variable VAR accordingly. +ac_fn_c_check_header_compile () +{ + as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + { $as_echo "$as_me:${as_lineno-$LINENO}: checking for $2" >&5 +$as_echo_n "checking for $2... " >&6; } +if eval \${$3+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +$4 +#include <$2> +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + eval "$3=yes" +else + eval "$3=no" +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +eval ac_res=\$$3 + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5 +$as_echo "$ac_res" >&6; } + eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno + +} # ac_fn_c_check_header_compile +cat >config.log <<_ACEOF +This file contains any messages produced by compilers while +running configure, to aid debugging if configure makes a mistake. + +It was created by CameraManager $as_me 0.01, which was +generated by GNU Autoconf 2.69. Invocation command line was + + $ $0 $@ + +_ACEOF +exec 5>>config.log +{ +cat <<_ASUNAME +## --------- ## +## Platform. ## +## --------- ## + +hostname = `(hostname || uname -n) 2>/dev/null | sed 1q` +uname -m = `(uname -m) 2>/dev/null || echo unknown` +uname -r = `(uname -r) 2>/dev/null || echo unknown` +uname -s = `(uname -s) 2>/dev/null || echo unknown` +uname -v = `(uname -v) 2>/dev/null || echo unknown` + +/usr/bin/uname -p = `(/usr/bin/uname -p) 2>/dev/null || echo unknown` +/bin/uname -X = `(/bin/uname -X) 2>/dev/null || echo unknown` + +/bin/arch = `(/bin/arch) 2>/dev/null || echo unknown` +/usr/bin/arch -k = `(/usr/bin/arch -k) 2>/dev/null || echo unknown` +/usr/convex/getsysinfo = `(/usr/convex/getsysinfo) 2>/dev/null || echo unknown` +/usr/bin/hostinfo = `(/usr/bin/hostinfo) 2>/dev/null || echo unknown` +/bin/machine = `(/bin/machine) 2>/dev/null || echo unknown` +/usr/bin/oslevel = `(/usr/bin/oslevel) 2>/dev/null || echo unknown` +/bin/universe = `(/bin/universe) 2>/dev/null || echo unknown` + +_ASUNAME + +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + $as_echo "PATH: $as_dir" + done +IFS=$as_save_IFS + +} >&5 + +cat >&5 <<_ACEOF + + +## ----------- ## +## Core tests. ## +## ----------- ## + +_ACEOF + + +# Keep a trace of the command line. +# Strip out --no-create and --no-recursion so they do not pile up. +# Strip out --silent because we don't want to record it for future runs. +# Also quote any args containing shell meta-characters. +# Make two passes to allow for proper duplicate-argument suppression. +ac_configure_args= +ac_configure_args0= +ac_configure_args1= +ac_must_keep_next=false +for ac_pass in 1 2 +do + for ac_arg + do + case $ac_arg in + -no-create | --no-c* | -n | -no-recursion | --no-r*) continue ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil) + continue ;; + *\'*) + ac_arg=`$as_echo "$ac_arg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + case $ac_pass in + 1) as_fn_append ac_configure_args0 " '$ac_arg'" ;; + 2) + as_fn_append ac_configure_args1 " '$ac_arg'" + if test $ac_must_keep_next = true; then + ac_must_keep_next=false # Got value, back to normal. + else + case $ac_arg in + *=* | --config-cache | -C | -disable-* | --disable-* \ + | -enable-* | --enable-* | -gas | --g* | -nfp | --nf* \ + | -q | -quiet | --q* | -silent | --sil* | -v | -verb* \ + | -with-* | --with-* | -without-* | --without-* | --x) + case "$ac_configure_args0 " in + "$ac_configure_args1"*" '$ac_arg' "* ) continue ;; + esac + ;; + -* ) ac_must_keep_next=true ;; + esac + fi + as_fn_append ac_configure_args " '$ac_arg'" + ;; + esac + done +done +{ ac_configure_args0=; unset ac_configure_args0;} +{ ac_configure_args1=; unset ac_configure_args1;} + +# When interrupted or exit'd, cleanup temporary files, and complete +# config.log. We remove comments because anyway the quotes in there +# would cause problems or look ugly. +# WARNING: Use '\'' to represent an apostrophe within the trap. +# WARNING: Do not start the trap code with a newline, due to a FreeBSD 4.0 bug. +trap 'exit_status=$? + # Save into config.log some information that might help in debugging. + { + echo + + $as_echo "## ---------------- ## +## Cache variables. ## +## ---------------- ##" + echo + # The following way of writing the cache mishandles newlines in values, +( + for ac_var in `(set) 2>&1 | sed -n '\''s/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'\''`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + (set) 2>&1 | + case $as_nl`(ac_space='\'' '\''; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + sed -n \ + "s/'\''/'\''\\\\'\'''\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\''\\2'\''/p" + ;; #( + *) + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) + echo + + $as_echo "## ----------------- ## +## Output variables. ## +## ----------------- ##" + echo + for ac_var in $ac_subst_vars + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + + if test -n "$ac_subst_files"; then + $as_echo "## ------------------- ## +## File substitutions. ## +## ------------------- ##" + echo + for ac_var in $ac_subst_files + do + eval ac_val=\$$ac_var + case $ac_val in + *\'\''*) ac_val=`$as_echo "$ac_val" | sed "s/'\''/'\''\\\\\\\\'\'''\''/g"`;; + esac + $as_echo "$ac_var='\''$ac_val'\''" + done | sort + echo + fi + + if test -s confdefs.h; then + $as_echo "## ----------- ## +## confdefs.h. ## +## ----------- ##" + echo + cat confdefs.h + echo + fi + test "$ac_signal" != 0 && + $as_echo "$as_me: caught signal $ac_signal" + $as_echo "$as_me: exit $exit_status" + } >&5 + rm -f core *.core core.conftest.* && + rm -f -r conftest* confdefs* conf$$* $ac_clean_files && + exit $exit_status +' 0 +for ac_signal in 1 2 13 15; do + trap 'ac_signal='$ac_signal'; as_fn_exit 1' $ac_signal +done +ac_signal=0 + +# confdefs.h avoids OS command line length limits that DEFS can exceed. +rm -f -r conftest* confdefs.h + +$as_echo "/* confdefs.h */" > confdefs.h + +# Predefined preprocessor variables. + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_NAME "$PACKAGE_NAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_TARNAME "$PACKAGE_TARNAME" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_VERSION "$PACKAGE_VERSION" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_STRING "$PACKAGE_STRING" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_BUGREPORT "$PACKAGE_BUGREPORT" +_ACEOF + +cat >>confdefs.h <<_ACEOF +#define PACKAGE_URL "$PACKAGE_URL" +_ACEOF + + +# Let the site file select an alternate cache file if it wants to. +# Prefer an explicitly selected file to automatically selected ones. +ac_site_file1=NONE +ac_site_file2=NONE +if test -n "$CONFIG_SITE"; then + # We do not want a PATH search for config.site. + case $CONFIG_SITE in #(( + -*) ac_site_file1=./$CONFIG_SITE;; + */*) ac_site_file1=$CONFIG_SITE;; + *) ac_site_file1=./$CONFIG_SITE;; + esac +elif test "x$prefix" != xNONE; then + ac_site_file1=$prefix/share/config.site + ac_site_file2=$prefix/etc/config.site +else + ac_site_file1=$ac_default_prefix/share/config.site + ac_site_file2=$ac_default_prefix/etc/config.site +fi +for ac_site_file in "$ac_site_file1" "$ac_site_file2" +do + test "x$ac_site_file" = xNONE && continue + if test /dev/null != "$ac_site_file" && test -r "$ac_site_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading site script $ac_site_file" >&5 +$as_echo "$as_me: loading site script $ac_site_file" >&6;} + sed 's/^/| /' "$ac_site_file" >&5 + . "$ac_site_file" \ + || { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "failed to load site script $ac_site_file +See \`config.log' for more details" "$LINENO" 5; } + fi +done + +if test -r "$cache_file"; then + # Some versions of bash will fail to source /dev/null (special files + # actually), so we avoid doing that. DJGPP emulates it as a regular file. + if test /dev/null != "$cache_file" && test -f "$cache_file"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: loading cache $cache_file" >&5 +$as_echo "$as_me: loading cache $cache_file" >&6;} + case $cache_file in + [\\/]* | ?:[\\/]* ) . "$cache_file";; + *) . "./$cache_file";; + esac + fi +else + { $as_echo "$as_me:${as_lineno-$LINENO}: creating cache $cache_file" >&5 +$as_echo "$as_me: creating cache $cache_file" >&6;} + >$cache_file +fi + +# Check that the precious variables saved in the cache have kept the same +# value. +ac_cache_corrupted=false +for ac_var in $ac_precious_vars; do + eval ac_old_set=\$ac_cv_env_${ac_var}_set + eval ac_new_set=\$ac_env_${ac_var}_set + eval ac_old_val=\$ac_cv_env_${ac_var}_value + eval ac_new_val=\$ac_env_${ac_var}_value + case $ac_old_set,$ac_new_set in + set,) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was set to \`$ac_old_val' in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,set) + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' was not set in the previous run" >&5 +$as_echo "$as_me: error: \`$ac_var' was not set in the previous run" >&2;} + ac_cache_corrupted=: ;; + ,);; + *) + if test "x$ac_old_val" != "x$ac_new_val"; then + # differences in whitespace do not lead to failure. + ac_old_val_w=`echo x $ac_old_val` + ac_new_val_w=`echo x $ac_new_val` + if test "$ac_old_val_w" != "$ac_new_val_w"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: \`$ac_var' has changed since the previous run:" >&5 +$as_echo "$as_me: error: \`$ac_var' has changed since the previous run:" >&2;} + ac_cache_corrupted=: + else + { $as_echo "$as_me:${as_lineno-$LINENO}: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&5 +$as_echo "$as_me: warning: ignoring whitespace changes in \`$ac_var' since the previous run:" >&2;} + eval $ac_var=\$ac_old_val + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: former value: \`$ac_old_val'" >&5 +$as_echo "$as_me: former value: \`$ac_old_val'" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: current value: \`$ac_new_val'" >&5 +$as_echo "$as_me: current value: \`$ac_new_val'" >&2;} + fi;; + esac + # Pass precious variables to config.status. + if test "$ac_new_set" = set; then + case $ac_new_val in + *\'*) ac_arg=$ac_var=`$as_echo "$ac_new_val" | sed "s/'/'\\\\\\\\''/g"` ;; + *) ac_arg=$ac_var=$ac_new_val ;; + esac + case " $ac_configure_args " in + *" '$ac_arg' "*) ;; # Avoid dups. Use of quotes ensures accuracy. + *) as_fn_append ac_configure_args " '$ac_arg'" ;; + esac + fi +done +if $ac_cache_corrupted; then + { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} + { $as_echo "$as_me:${as_lineno-$LINENO}: error: changes in the environment can compromise the build" >&5 +$as_echo "$as_me: error: changes in the environment can compromise the build" >&2;} + as_fn_error $? "run \`make distclean' and/or \`rm $cache_file' and start over" "$LINENO" 5 +fi +## -------------------- ## +## Main body of script. ## +## -------------------- ## + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + + +CFLAGS="$CFLAGS -Wall" +CPPFLAGS="$CPPFLAGS" +LDFLAGS="$LDFLAGS" + +# Check whether --enable-debug was given. +if test "${enable_debug+set}" = set; then : + enableval=$enable_debug; debug=$enableval +else + debug='no' +fi + +case "$debug" in + 'yes') + CFLAGS="$CFLAGS -g" + +$as_echo "#define HAVE_DEBUG 1" >>confdefs.h + + ;; + 'no') + CFLAGS="$CFLAGS -O2" + LDFLAGS="$LDFLAGS -s" + ;; + *) + as_fn_error $? "bad value for --enable-debug" "$LINENO" 5 + ;; +esac + + +ac_config_headers="$ac_config_headers include/config.h" + +am__api_version='1.15' + +ac_aux_dir= +for ac_dir in "$srcdir" "$srcdir/.." "$srcdir/../.."; do + if test -f "$ac_dir/install-sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install-sh -c" + break + elif test -f "$ac_dir/install.sh"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/install.sh -c" + break + elif test -f "$ac_dir/shtool"; then + ac_aux_dir=$ac_dir + ac_install_sh="$ac_aux_dir/shtool install -c" + break + fi +done +if test -z "$ac_aux_dir"; then + as_fn_error $? "cannot find install-sh, install.sh, or shtool in \"$srcdir\" \"$srcdir/..\" \"$srcdir/../..\"" "$LINENO" 5 +fi + +# These three variables are undocumented and unsupported, +# and are intended to be withdrawn in a future Autoconf release. +# They can cause serious problems if a builder's source tree is in a directory +# whose full name contains unusual characters. +ac_config_guess="$SHELL $ac_aux_dir/config.guess" # Please don't use this var. +ac_config_sub="$SHELL $ac_aux_dir/config.sub" # Please don't use this var. +ac_configure="$SHELL $ac_aux_dir/configure" # Please don't use this var. + + +# Find a good install program. We prefer a C program (faster), +# so one script is as good as another. But avoid the broken or +# incompatible versions: +# SysV /etc/install, /usr/sbin/install +# SunOS /usr/etc/install +# IRIX /sbin/install +# AIX /bin/install +# AmigaOS /C/install, which installs bootblocks on floppy discs +# AIX 4 /usr/bin/installbsd, which doesn't work without a -g flag +# AFS /usr/afsws/bin/install, which mishandles nonexistent args +# SVR4 /usr/ucb/install, which tries to use the nonexistent group "staff" +# OS/2's system install, which has a completely different semantic +# ./install, which can be erroneously created by make from ./install.sh. +# Reject install programs that cannot install multiple files. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a BSD-compatible install" >&5 +$as_echo_n "checking for a BSD-compatible install... " >&6; } +if test -z "$INSTALL"; then +if ${ac_cv_path_install+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + # Account for people who put trailing slashes in PATH elements. +case $as_dir/ in #(( + ./ | .// | /[cC]/* | \ + /etc/* | /usr/sbin/* | /usr/etc/* | /sbin/* | /usr/afsws/bin/* | \ + ?:[\\/]os2[\\/]install[\\/]* | ?:[\\/]OS2[\\/]INSTALL[\\/]* | \ + /usr/ucb/* ) ;; + *) + # OSF1 and SCO ODT 3.0 have their own names for install. + # Don't use installbsd from OSF since it installs stuff as root + # by default. + for ac_prog in ginstall scoinst install; do + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext"; then + if test $ac_prog = install && + grep dspmsg "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # AIX install. It has an incompatible calling convention. + : + elif test $ac_prog = install && + grep pwplus "$as_dir/$ac_prog$ac_exec_ext" >/dev/null 2>&1; then + # program-specific install script used by HP pwplus--don't use. + : + else + rm -rf conftest.one conftest.two conftest.dir + echo one > conftest.one + echo two > conftest.two + mkdir conftest.dir + if "$as_dir/$ac_prog$ac_exec_ext" -c conftest.one conftest.two "`pwd`/conftest.dir" && + test -s conftest.one && test -s conftest.two && + test -s conftest.dir/conftest.one && + test -s conftest.dir/conftest.two + then + ac_cv_path_install="$as_dir/$ac_prog$ac_exec_ext -c" + break 3 + fi + fi + fi + done + done + ;; +esac + + done +IFS=$as_save_IFS + +rm -rf conftest.one conftest.two conftest.dir + +fi + if test "${ac_cv_path_install+set}" = set; then + INSTALL=$ac_cv_path_install + else + # As a last resort, use the slow shell script. Don't cache a + # value for INSTALL within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + INSTALL=$ac_install_sh + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $INSTALL" >&5 +$as_echo "$INSTALL" >&6; } + +# Use test -z because SunOS4 sh mishandles braces in ${var-val}. +# It thinks the first close brace ends the variable substitution. +test -z "$INSTALL_PROGRAM" && INSTALL_PROGRAM='${INSTALL}' + +test -z "$INSTALL_SCRIPT" && INSTALL_SCRIPT='${INSTALL}' + +test -z "$INSTALL_DATA" && INSTALL_DATA='${INSTALL} -m 644' + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether build environment is sane" >&5 +$as_echo_n "checking whether build environment is sane... " >&6; } +# Reject unsafe characters in $srcdir or the absolute working directory +# name. Accept space and tab only in the latter. +am_lf=' +' +case `pwd` in + *[\\\"\#\$\&\'\`$am_lf]*) + as_fn_error $? "unsafe absolute working directory name" "$LINENO" 5;; +esac +case $srcdir in + *[\\\"\#\$\&\'\`$am_lf\ \ ]*) + as_fn_error $? "unsafe srcdir value: '$srcdir'" "$LINENO" 5;; +esac + +# Do 'set' in a subshell so we don't clobber the current shell's +# arguments. Must try -L first in case configure is actually a +# symlink; some systems play weird games with the mod time of symlinks +# (eg FreeBSD returns the mod time of the symlink's containing +# directory). +if ( + am_has_slept=no + for am_try in 1 2; do + echo "timestamp, slept: $am_has_slept" > conftest.file + set X `ls -Lt "$srcdir/configure" conftest.file 2> /dev/null` + if test "$*" = "X"; then + # -L didn't work. + set X `ls -t "$srcdir/configure" conftest.file` + fi + if test "$*" != "X $srcdir/configure conftest.file" \ + && test "$*" != "X conftest.file $srcdir/configure"; then + + # If neither matched, then we have a broken ls. This can happen + # if, for instance, CONFIG_SHELL is bash and it inherits a + # broken ls alias from the environment. This has actually + # happened. Such a system could not be considered "sane". + as_fn_error $? "ls -t appears to fail. Make sure there is not a broken + alias in your environment" "$LINENO" 5 + fi + if test "$2" = conftest.file || test $am_try -eq 2; then + break + fi + # Just in case. + sleep 1 + am_has_slept=yes + done + test "$2" = conftest.file + ) +then + # Ok. + : +else + as_fn_error $? "newly created file is older than distributed files! +Check your system clock" "$LINENO" 5 +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +# If we didn't sleep, we still need to ensure time stamps of config.status and +# generated files are strictly newer. +am_sleep_pid= +if grep 'slept: no' conftest.file >/dev/null 2>&1; then + ( sleep 1 ) & + am_sleep_pid=$! +fi + +rm -f conftest.file + +test "$program_prefix" != NONE && + program_transform_name="s&^&$program_prefix&;$program_transform_name" +# Use a double $ so make ignores it. +test "$program_suffix" != NONE && + program_transform_name="s&\$&$program_suffix&;$program_transform_name" +# Double any \ or $. +# By default was `s,x,x', remove it if useless. +ac_script='s/[\\$]/&&/g;s/;s,x,x,$//' +program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"` + +# Expand $ac_aux_dir to an absolute path. +am_aux_dir=`cd "$ac_aux_dir" && pwd` + +if test x"${MISSING+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + MISSING="\${SHELL} \"$am_aux_dir/missing\"" ;; + *) + MISSING="\${SHELL} $am_aux_dir/missing" ;; + esac +fi +# Use eval to expand $SHELL +if eval "$MISSING --is-lightweight"; then + am_missing_run="$MISSING " +else + am_missing_run= + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5 +$as_echo "$as_me: WARNING: 'missing' script is too old or missing" >&2;} +fi + +if test x"${install_sh+set}" != xset; then + case $am_aux_dir in + *\ * | *\ *) + install_sh="\${SHELL} '$am_aux_dir/install-sh'" ;; + *) + install_sh="\${SHELL} $am_aux_dir/install-sh" + esac +fi + +# Installed binaries are usually stripped using 'strip' when the user +# run "make install-strip". However 'strip' might not be the right +# tool to use in cross-compilation environments, therefore Automake +# will honor the 'STRIP' environment variable to overrule this program. +if test "$cross_compiling" != no; then + if test -n "$ac_tool_prefix"; then + # Extract the first word of "${ac_tool_prefix}strip", so it can be a program name with args. +set dummy ${ac_tool_prefix}strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$STRIP"; then + ac_cv_prog_STRIP="$STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_STRIP="${ac_tool_prefix}strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +STRIP=$ac_cv_prog_STRIP +if test -n "$STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $STRIP" >&5 +$as_echo "$STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + +fi +if test -z "$ac_cv_prog_STRIP"; then + ac_ct_STRIP=$STRIP + # Extract the first word of "strip", so it can be a program name with args. +set dummy strip; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_STRIP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_STRIP"; then + ac_cv_prog_ac_ct_STRIP="$ac_ct_STRIP" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_STRIP="strip" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_STRIP=$ac_cv_prog_ac_ct_STRIP +if test -n "$ac_ct_STRIP"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_STRIP" >&5 +$as_echo "$ac_ct_STRIP" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + if test "x$ac_ct_STRIP" = x; then + STRIP=":" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + STRIP=$ac_ct_STRIP + fi +else + STRIP="$ac_cv_prog_STRIP" +fi + +fi +INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s" + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for a thread-safe mkdir -p" >&5 +$as_echo_n "checking for a thread-safe mkdir -p... " >&6; } +if test -z "$MKDIR_P"; then + if ${ac_cv_path_mkdir+:} false; then : + $as_echo_n "(cached) " >&6 +else + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/opt/sfw/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in mkdir gmkdir; do + for ac_exec_ext in '' $ac_executable_extensions; do + as_fn_executable_p "$as_dir/$ac_prog$ac_exec_ext" || continue + case `"$as_dir/$ac_prog$ac_exec_ext" --version 2>&1` in #( + 'mkdir (GNU coreutils) '* | \ + 'mkdir (coreutils) '* | \ + 'mkdir (fileutils) '4.1*) + ac_cv_path_mkdir=$as_dir/$ac_prog$ac_exec_ext + break 3;; + esac + done + done + done +IFS=$as_save_IFS + +fi + + test -d ./--version && rmdir ./--version + if test "${ac_cv_path_mkdir+set}" = set; then + MKDIR_P="$ac_cv_path_mkdir -p" + else + # As a last resort, use the slow shell script. Don't cache a + # value for MKDIR_P within a source directory, because that will + # break other packages using the cache if that directory is + # removed, or if the value is a relative name. + MKDIR_P="$ac_install_sh -d" + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5 +$as_echo "$MKDIR_P" >&6; } + +for ac_prog in gawk mawk nawk awk +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_AWK+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$AWK"; then + ac_cv_prog_AWK="$AWK" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_AWK="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +AWK=$ac_cv_prog_AWK +if test -n "$AWK"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $AWK" >&5 +$as_echo "$AWK" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$AWK" && break +done + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether ${MAKE-make} sets \$(MAKE)" >&5 +$as_echo_n "checking whether ${MAKE-make} sets \$(MAKE)... " >&6; } +set x ${MAKE-make} +ac_make=`$as_echo "$2" | sed 's/+/p/g; s/[^a-zA-Z0-9_]/_/g'` +if eval \${ac_cv_prog_make_${ac_make}_set+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat >conftest.make <<\_ACEOF +SHELL = /bin/sh +all: + @echo '@@@%%%=$(MAKE)=@@@%%%' +_ACEOF +# GNU make sometimes prints "make[1]: Entering ...", which would confuse us. +case `${MAKE-make} -f conftest.make 2>/dev/null` in + *@@@%%%=?*=@@@%%%*) + eval ac_cv_prog_make_${ac_make}_set=yes;; + *) + eval ac_cv_prog_make_${ac_make}_set=no;; +esac +rm -f conftest.make +fi +if eval test \$ac_cv_prog_make_${ac_make}_set = yes; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } + SET_MAKE= +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } + SET_MAKE="MAKE=${MAKE-make}" +fi + +rm -rf .tst 2>/dev/null +mkdir .tst 2>/dev/null +if test -d .tst; then + am__leading_dot=. +else + am__leading_dot=_ +fi +rmdir .tst 2>/dev/null + +# Check whether --enable-silent-rules was given. +if test "${enable_silent_rules+set}" = set; then : + enableval=$enable_silent_rules; +fi + +case $enable_silent_rules in # ((( + yes) AM_DEFAULT_VERBOSITY=0;; + no) AM_DEFAULT_VERBOSITY=1;; + *) AM_DEFAULT_VERBOSITY=1;; +esac +am_make=${MAKE-make} +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $am_make supports nested variables" >&5 +$as_echo_n "checking whether $am_make supports nested variables... " >&6; } +if ${am_cv_make_support_nested_variables+:} false; then : + $as_echo_n "(cached) " >&6 +else + if $as_echo 'TRUE=$(BAR$(V)) +BAR0=false +BAR1=true +V=1 +am__doit: + @$(TRUE) +.PHONY: am__doit' | $am_make -f - >/dev/null 2>&1; then + am_cv_make_support_nested_variables=yes +else + am_cv_make_support_nested_variables=no +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_make_support_nested_variables" >&5 +$as_echo "$am_cv_make_support_nested_variables" >&6; } +if test $am_cv_make_support_nested_variables = yes; then + AM_V='$(V)' + AM_DEFAULT_V='$(AM_DEFAULT_VERBOSITY)' +else + AM_V=$AM_DEFAULT_VERBOSITY + AM_DEFAULT_V=$AM_DEFAULT_VERBOSITY +fi +AM_BACKSLASH='\' + +if test "`cd $srcdir && pwd`" != "`pwd`"; then + # Use -I$(srcdir) only when $(srcdir) != ., so that make's output + # is not polluted with repeated "-I." + am__isrc=' -I$(srcdir)' + # test to see if srcdir already configured + if test -f $srcdir/config.status; then + as_fn_error $? "source directory already configured; run \"make distclean\" there first" "$LINENO" 5 + fi +fi + +# test whether we have cygpath +if test -z "$CYGPATH_W"; then + if (cygpath --version) >/dev/null 2>/dev/null; then + CYGPATH_W='cygpath -w' + else + CYGPATH_W=echo + fi +fi + + +# Define the identity of the package. + PACKAGE='cameramanager' + VERSION='0.01' + + +cat >>confdefs.h <<_ACEOF +#define PACKAGE "$PACKAGE" +_ACEOF + + +cat >>confdefs.h <<_ACEOF +#define VERSION "$VERSION" +_ACEOF + +# Some tools Automake needs. + +ACLOCAL=${ACLOCAL-"${am_missing_run}aclocal-${am__api_version}"} + + +AUTOCONF=${AUTOCONF-"${am_missing_run}autoconf"} + + +AUTOMAKE=${AUTOMAKE-"${am_missing_run}automake-${am__api_version}"} + + +AUTOHEADER=${AUTOHEADER-"${am_missing_run}autoheader"} + + +MAKEINFO=${MAKEINFO-"${am_missing_run}makeinfo"} + +# For better backward compatibility. To be removed once Automake 1.9.x +# dies out for good. For more background, see: +# +# +mkdir_p='$(MKDIR_P)' + +# We need awk for the "check" target (and possibly the TAP driver). The +# system "awk" is bad on some platforms. +# Always define AMTAR for backward compatibility. Yes, it's still used +# in the wild :-( We should find a proper way to deprecate it ... +AMTAR='$${TAR-tar}' + + +# We'll loop over all known methods to create a tar archive until one works. +_am_tools='gnutar pax cpio none' + +am__tar='$${TAR-tar} chof - "$$tardir"' am__untar='$${TAR-tar} xf -' + + + + + + +# POSIX will say in a future version that running "rm -f" with no argument +# is OK; and we want to be able to make that assumption in our Makefile +# recipes. So use an aggressive probe to check that the usage we want is +# actually supported "in the wild" to an acceptable degree. +# See automake bug#10828. +# To make any issue more visible, cause the running configure to be aborted +# by default if the 'rm' program in use doesn't match our expectations; the +# user can still override this though. +if rm -f && rm -fr && rm -rf; then : OK; else + cat >&2 <<'END' +Oops! + +Your 'rm' program seems unable to run without file operands specified +on the command line, even when the '-f' option is present. This is contrary +to the behaviour of most rm programs out there, and not conforming with +the upcoming POSIX standard: + +Please tell bug-automake@gnu.org about your system, including the value +of your $PATH and any error possibly output before this message. This +can help us improve future automake versions. + +END + if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then + echo 'Configuration will proceed anyway, since you have set the' >&2 + echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2 + echo >&2 + else + cat >&2 <<'END' +Aborting the configuration process, to ensure you take notice of the issue. + +You can download and install GNU coreutils to get an 'rm' implementation +that behaves properly: . + +If you want to complete the configuration process using your problematic +'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM +to "yes", and re-run configure. + +END + as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5 + fi +fi + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +if test -n "$ac_tool_prefix"; then + for ac_prog in gcc + do + # Extract the first word of "$ac_tool_prefix$ac_prog", so it can be a program name with args. +set dummy $ac_tool_prefix$ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$CC"; then + ac_cv_prog_CC="$CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_CC="$ac_tool_prefix$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +CC=$ac_cv_prog_CC +if test -n "$CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $CC" >&5 +$as_echo "$CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$CC" && break + done +fi +if test -z "$CC"; then + ac_ct_CC=$CC + for ac_prog in gcc +do + # Extract the first word of "$ac_prog", so it can be a program name with args. +set dummy $ac_prog; ac_word=$2 +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5 +$as_echo_n "checking for $ac_word... " >&6; } +if ${ac_cv_prog_ac_ct_CC+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -n "$ac_ct_CC"; then + ac_cv_prog_ac_ct_CC="$ac_ct_CC" # Let the user override the test. +else +as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_exec_ext in '' $ac_executable_extensions; do + if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then + ac_cv_prog_ac_ct_CC="$ac_prog" + $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5 + break 2 + fi +done + done +IFS=$as_save_IFS + +fi +fi +ac_ct_CC=$ac_cv_prog_ac_ct_CC +if test -n "$ac_ct_CC"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_ct_CC" >&5 +$as_echo "$ac_ct_CC" >&6; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +fi + + + test -n "$ac_ct_CC" && break +done + + if test "x$ac_ct_CC" = x; then + CC="" + else + case $cross_compiling:$ac_tool_warned in +yes:) +{ $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: using cross tools not prefixed with host triplet" >&5 +$as_echo "$as_me: WARNING: using cross tools not prefixed with host triplet" >&2;} +ac_tool_warned=yes ;; +esac + CC=$ac_ct_CC + fi +fi + + +test -z "$CC" && { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "no acceptable C compiler found in \$PATH +See \`config.log' for more details" "$LINENO" 5; } + +# Provide some information about the compiler. +$as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler version" >&5 +set X $ac_compile +ac_compiler=$2 +for ac_option in --version -v -V -qversion; do + { { ac_try="$ac_compiler $ac_option >&5" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compiler $ac_option >&5") 2>conftest.err + ac_status=$? + if test -s conftest.err; then + sed '10a\ +... rest of stderr output deleted ... + 10q' conftest.err >conftest.er1 + cat conftest.er1 >&5 + fi + rm -f conftest.er1 conftest.err + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } +done + +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files a.out a.out.dSYM a.exe b.out" +# Try to create an executable without -o first, disregard a.out. +# It will help us diagnose broken compilers, and finding out an intuition +# of exeext. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the C compiler works" >&5 +$as_echo_n "checking whether the C compiler works... " >&6; } +ac_link_default=`$as_echo "$ac_link" | sed 's/ -o *conftest[^ ]*//'` + +# The possible output files: +ac_files="a.out conftest.exe conftest a.exe a_out.exe b.out conftest.*" + +ac_rmfiles= +for ac_file in $ac_files +do + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + * ) ac_rmfiles="$ac_rmfiles $ac_file";; + esac +done +rm -f $ac_rmfiles + +if { { ac_try="$ac_link_default" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link_default") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # Autoconf-2.13 could set the ac_cv_exeext variable to `no'. +# So ignore a value of `no', otherwise this would lead to `EXEEXT = no' +# in a Makefile. We should not override ac_cv_exeext if it was cached, +# so that the user can short-circuit this test for compilers unknown to +# Autoconf. +for ac_file in $ac_files '' +do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) + ;; + [ab].out ) + # We found the default executable, but exeext='' is most + # certainly right. + break;; + *.* ) + if test "${ac_cv_exeext+set}" = set && test "$ac_cv_exeext" != no; + then :; else + ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + fi + # We set ac_cv_exeext here because the later test for it is not + # safe: cross compilers may not add the suffix if given an `-o' + # argument, so we may need to know it at that point already. + # Even if this section looks crufty: it has the advantage of + # actually working. + break;; + * ) + break;; + esac +done +test "$ac_cv_exeext" = no && ac_cv_exeext= + +else + ac_file='' +fi +if test -z "$ac_file"; then : + { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5 +$as_echo "no" >&6; } +$as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error 77 "C compiler cannot create executables +See \`config.log' for more details" "$LINENO" 5; } +else + { $as_echo "$as_me:${as_lineno-$LINENO}: result: yes" >&5 +$as_echo "yes" >&6; } +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for C compiler default output file name" >&5 +$as_echo_n "checking for C compiler default output file name... " >&6; } +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_file" >&5 +$as_echo "$ac_file" >&6; } +ac_exeext=$ac_cv_exeext + +rm -f -r a.out a.out.dSYM a.exe conftest$ac_cv_exeext b.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of executables" >&5 +$as_echo_n "checking for suffix of executables... " >&6; } +if { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + # If both `conftest.exe' and `conftest' are `present' (well, observable) +# catch `conftest.exe'. For instance with Cygwin, `ls conftest' will +# work properly (i.e., refer to `conftest.exe'), while it won't with +# `rm'. +for ac_file in conftest.exe conftest conftest.*; do + test -f "$ac_file" || continue + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM | *.o | *.obj ) ;; + *.* ) ac_cv_exeext=`expr "$ac_file" : '[^.]*\(\..*\)'` + break;; + * ) break;; + esac +done +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of executables: cannot compile and link +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest conftest$ac_cv_exeext +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_exeext" >&5 +$as_echo "$ac_cv_exeext" >&6; } + +rm -f conftest.$ac_ext +EXEEXT=$ac_cv_exeext +ac_exeext=$EXEEXT +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +int +main () +{ +FILE *f = fopen ("conftest.out", "w"); + return ferror (f) || fclose (f) != 0; + + ; + return 0; +} +_ACEOF +ac_clean_files="$ac_clean_files conftest.out" +# Check that the compiler produces executables we can run. If not, either +# the compiler is broken, or we cross compile. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are cross compiling" >&5 +$as_echo_n "checking whether we are cross compiling... " >&6; } +if test "$cross_compiling" != yes; then + { { ac_try="$ac_link" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_link") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; } + if { ac_try='./conftest$ac_cv_exeext' + { { case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_try") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; }; then + cross_compiling=no + else + if test "$cross_compiling" = maybe; then + cross_compiling=yes + else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot run C compiled programs. +If you meant to cross compile, use \`--host'. +See \`config.log' for more details" "$LINENO" 5; } + fi + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $cross_compiling" >&5 +$as_echo "$cross_compiling" >&6; } + +rm -f conftest.$ac_ext conftest$ac_cv_exeext conftest.out +ac_clean_files=$ac_clean_files_save +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for suffix of object files" >&5 +$as_echo_n "checking for suffix of object files... " >&6; } +if ${ac_cv_objext+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +rm -f conftest.o conftest.obj +if { { ac_try="$ac_compile" +case "(($ac_try" in + *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;; + *) ac_try_echo=$ac_try;; +esac +eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\"" +$as_echo "$ac_try_echo"; } >&5 + (eval "$ac_compile") 2>&5 + ac_status=$? + $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5 + test $ac_status = 0; }; then : + for ac_file in conftest.o conftest.obj conftest.*; do + test -f "$ac_file" || continue; + case $ac_file in + *.$ac_ext | *.xcoff | *.tds | *.d | *.pdb | *.xSYM | *.bb | *.bbg | *.map | *.inf | *.dSYM ) ;; + *) ac_cv_objext=`expr "$ac_file" : '.*\.\(.*\)'` + break;; + esac +done +else + $as_echo "$as_me: failed program was:" >&5 +sed 's/^/| /' conftest.$ac_ext >&5 + +{ { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "cannot compute suffix of object files: cannot compile +See \`config.log' for more details" "$LINENO" 5; } +fi +rm -f conftest.$ac_cv_objext conftest.$ac_ext +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_objext" >&5 +$as_echo "$ac_cv_objext" >&6; } +OBJEXT=$ac_cv_objext +ac_objext=$OBJEXT +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether we are using the GNU C compiler" >&5 +$as_echo_n "checking whether we are using the GNU C compiler... " >&6; } +if ${ac_cv_c_compiler_gnu+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ +#ifndef __GNUC__ + choke me +#endif + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_compiler_gnu=yes +else + ac_compiler_gnu=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +ac_cv_c_compiler_gnu=$ac_compiler_gnu + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_c_compiler_gnu" >&5 +$as_echo "$ac_cv_c_compiler_gnu" >&6; } +if test $ac_compiler_gnu = yes; then + GCC=yes +else + GCC= +fi +ac_test_CFLAGS=${CFLAGS+set} +ac_save_CFLAGS=$CFLAGS +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC accepts -g" >&5 +$as_echo_n "checking whether $CC accepts -g... " >&6; } +if ${ac_cv_prog_cc_g+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_save_c_werror_flag=$ac_c_werror_flag + ac_c_werror_flag=yes + ac_cv_prog_cc_g=no + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +else + CFLAGS="" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + +else + ac_c_werror_flag=$ac_save_c_werror_flag + CFLAGS="-g" + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_g=yes +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + ac_c_werror_flag=$ac_save_c_werror_flag +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_g" >&5 +$as_echo "$ac_cv_prog_cc_g" >&6; } +if test "$ac_test_CFLAGS" = set; then + CFLAGS=$ac_save_CFLAGS +elif test $ac_cv_prog_cc_g = yes; then + if test "$GCC" = yes; then + CFLAGS="-g -O2" + else + CFLAGS="-g" + fi +else + if test "$GCC" = yes; then + CFLAGS="-O2" + else + CFLAGS= + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $CC option to accept ISO C89" >&5 +$as_echo_n "checking for $CC option to accept ISO C89... " >&6; } +if ${ac_cv_prog_cc_c89+:} false; then : + $as_echo_n "(cached) " >&6 +else + ac_cv_prog_cc_c89=no +ac_save_CC=$CC +cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +struct stat; +/* Most of the following tests are stolen from RCS 5.7's src/conf.sh. */ +struct buf { int x; }; +FILE * (*rcsopen) (struct buf *, struct stat *, int); +static char *e (p, i) + char **p; + int i; +{ + return p[i]; +} +static char *f (char * (*g) (char **, int), char **p, ...) +{ + char *s; + va_list v; + va_start (v,p); + s = g (p, va_arg (v,int)); + va_end (v); + return s; +} + +/* OSF 4.0 Compaq cc is some sort of almost-ANSI by default. It has + function prototypes and stuff, but not '\xHH' hex character constants. + These don't provoke an error unfortunately, instead are silently treated + as 'x'. The following induces an error, until -std is added to get + proper ANSI mode. Curiously '\x00'!='x' always comes out true, for an + array size at least. It's necessary to write '\x00'==0 to get something + that's true only with -std. */ +int osf4_cc_array ['\x00' == 0 ? 1 : -1]; + +/* IBM C 6 for AIX is almost-ANSI by default, but it replaces macro parameters + inside strings and character constants. */ +#define FOO(x) 'x' +int xlc6_cc_array[FOO(a) == 'x' ? 1 : -1]; + +int test (int i, double x); +struct s1 {int (*f) (int a);}; +struct s2 {int (*f) (double a);}; +int pairnames (int, char **, FILE *(*)(struct buf *, struct stat *, int), int, int); +int argc; +char **argv; +int +main () +{ +return f (e, argv, 0) != argv[0] || f (e, argv, 1) != argv[1]; + ; + return 0; +} +_ACEOF +for ac_arg in '' -qlanglvl=extc89 -qlanglvl=ansi -std \ + -Ae "-Aa -D_HPUX_SOURCE" "-Xc -D__EXTENSIONS__" +do + CC="$ac_save_CC $ac_arg" + if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_prog_cc_c89=$ac_arg +fi +rm -f core conftest.err conftest.$ac_objext + test "x$ac_cv_prog_cc_c89" != "xno" && break +done +rm -f conftest.$ac_ext +CC=$ac_save_CC + +fi +# AC_CACHE_VAL +case "x$ac_cv_prog_cc_c89" in + x) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: none needed" >&5 +$as_echo "none needed" >&6; } ;; + xno) + { $as_echo "$as_me:${as_lineno-$LINENO}: result: unsupported" >&5 +$as_echo "unsupported" >&6; } ;; + *) + CC="$CC $ac_cv_prog_cc_c89" + { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_prog_cc_c89" >&5 +$as_echo "$ac_cv_prog_cc_c89" >&6; } ;; +esac +if test "x$ac_cv_prog_cc_c89" != xno; then : + +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c and -o together" >&5 +$as_echo_n "checking whether $CC understands -c and -o together... " >&6; } +if ${am_cv_prog_cc_c_o+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ + +int +main () +{ + + ; + return 0; +} +_ACEOF + # Make sure it works both with $CC and with simple cc. + # Following AC_PROG_CC_C_O, we do the test twice because some + # compilers refuse to overwrite an existing .o file with -o, + # though they will create one. + am_cv_prog_cc_c_o=yes + for am_i in 1 2; do + if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o conftest2.$ac_objext" >&5 + ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5 + ac_status=$? + echo "$as_me:$LINENO: \$? = $ac_status" >&5 + (exit $ac_status); } \ + && test -f conftest2.$ac_objext; then + : OK + else + am_cv_prog_cc_c_o=no + break + fi + done + rm -f core conftest* + unset am_i +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5 +$as_echo "$am_cv_prog_cc_c_o" >&6; } +if test "$am_cv_prog_cc_c_o" != yes; then + # Losing compiler, so override with the script. + # FIXME: It is wrong to rewrite CC. + # But if we don't then we get into trouble of one sort or another. + # A longer-term fix would be to have automake use am__CC in this case, + # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)" + CC="$am_aux_dir/compile $CC" +fi +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + +DEPDIR="${am__leading_dot}deps" + +ac_config_commands="$ac_config_commands depfiles" + + +am_make=${MAKE-make} +cat > confinc << 'END' +am__doit: + @echo this is the am__doit target +.PHONY: am__doit +END +# If we don't find an include directive, just comment out the code. +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for style of include used by $am_make" >&5 +$as_echo_n "checking for style of include used by $am_make... " >&6; } +am__include="#" +am__quote= +_am_result=none +# First try GNU make style include. +echo "include confinc" > confmf +# Ignore all kinds of additional output from 'make'. +case `$am_make -s -f confmf 2> /dev/null` in #( +*the\ am__doit\ target*) + am__include=include + am__quote= + _am_result=GNU + ;; +esac +# Now try BSD make style include. +if test "$am__include" = "#"; then + echo '.include "confinc"' > confmf + case `$am_make -s -f confmf 2> /dev/null` in #( + *the\ am__doit\ target*) + am__include=.include + am__quote="\"" + _am_result=BSD + ;; + esac +fi + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $_am_result" >&5 +$as_echo "$_am_result" >&6; } +rm -f confinc confmf + +# Check whether --enable-dependency-tracking was given. +if test "${enable_dependency_tracking+set}" = set; then : + enableval=$enable_dependency_tracking; +fi + +if test "x$enable_dependency_tracking" != xno; then + am_depcomp="$ac_aux_dir/depcomp" + AMDEPBACKSLASH='\' + am__nodep='_no' +fi + if test "x$enable_dependency_tracking" != xno; then + AMDEP_TRUE= + AMDEP_FALSE='#' +else + AMDEP_TRUE='#' + AMDEP_FALSE= +fi + + + +depcc="$CC" am_compiler_list= + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking dependency style of $depcc" >&5 +$as_echo_n "checking dependency style of $depcc... " >&6; } +if ${am_cv_CC_dependencies_compiler_type+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$AMDEP_TRUE" && test -f "$am_depcomp"; then + # We make a subdir and do the tests there. Otherwise we can end up + # making bogus files that we don't know about and never remove. For + # instance it was reported that on HP-UX the gcc test will end up + # making a dummy file named 'D' -- because '-MD' means "put the output + # in D". + rm -rf conftest.dir + mkdir conftest.dir + # Copy depcomp to subdir because otherwise we won't find it if we're + # using a relative directory. + cp "$am_depcomp" conftest.dir + cd conftest.dir + # We will build objects and dependencies in a subdirectory because + # it helps to detect inapplicable dependency modes. For instance + # both Tru64's cc and ICC support -MD to output dependencies as a + # side effect of compilation, but ICC will put the dependencies in + # the current directory while Tru64 will put them in the object + # directory. + mkdir sub + + am_cv_CC_dependencies_compiler_type=none + if test "$am_compiler_list" = ""; then + am_compiler_list=`sed -n 's/^#*\([a-zA-Z0-9]*\))$/\1/p' < ./depcomp` + fi + am__universal=false + case " $depcc " in #( + *\ -arch\ *\ -arch\ *) am__universal=true ;; + esac + + for depmode in $am_compiler_list; do + # Setup a source with many dependencies, because some compilers + # like to wrap large dependency lists on column 80 (with \), and + # we should not choose a depcomp mode which is confused by this. + # + # We need to recreate these files for each test, as the compiler may + # overwrite some of them when testing with obscure command lines. + # This happens at least with the AIX C compiler. + : > sub/conftest.c + for i in 1 2 3 4 5 6; do + echo '#include "conftst'$i'.h"' >> sub/conftest.c + # Using ": > sub/conftst$i.h" creates only sub/conftst1.h with + # Solaris 10 /bin/sh. + echo '/* dummy */' > sub/conftst$i.h + done + echo "${am__include} ${am__quote}sub/conftest.Po${am__quote}" > confmf + + # We check with '-c' and '-o' for the sake of the "dashmstdout" + # mode. It turns out that the SunPro C++ compiler does not properly + # handle '-M -o', and we need to detect this. Also, some Intel + # versions had trouble with output in subdirs. + am__obj=sub/conftest.${OBJEXT-o} + am__minus_obj="-o $am__obj" + case $depmode in + gcc) + # This depmode causes a compiler race in universal mode. + test "$am__universal" = false || continue + ;; + nosideeffect) + # After this tag, mechanisms are not by side-effect, so they'll + # only be used when explicitly requested. + if test "x$enable_dependency_tracking" = xyes; then + continue + else + break + fi + ;; + msvc7 | msvc7msys | msvisualcpp | msvcmsys) + # This compiler won't grok '-c -o', but also, the minuso test has + # not run yet. These depmodes are late enough in the game, and + # so weak that their functioning should not be impacted. + am__obj=conftest.${OBJEXT-o} + am__minus_obj= + ;; + none) break ;; + esac + if depmode=$depmode \ + source=sub/conftest.c object=$am__obj \ + depfile=sub/conftest.Po tmpdepfile=sub/conftest.TPo \ + $SHELL ./depcomp $depcc -c $am__minus_obj sub/conftest.c \ + >/dev/null 2>conftest.err && + grep sub/conftst1.h sub/conftest.Po > /dev/null 2>&1 && + grep sub/conftst6.h sub/conftest.Po > /dev/null 2>&1 && + grep $am__obj sub/conftest.Po > /dev/null 2>&1 && + ${MAKE-make} -s -f confmf > /dev/null 2>&1; then + # icc doesn't choke on unknown options, it will just issue warnings + # or remarks (even with -Werror). So we grep stderr for any message + # that says an option was ignored or not supported. + # When given -MP, icc 7.0 and 7.1 complain thusly: + # icc: Command line warning: ignoring option '-M'; no argument required + # The diagnosis changed in icc 8.0: + # icc: Command line remark: option '-MP' not supported + if (grep 'ignoring option' conftest.err || + grep 'not supported' conftest.err) >/dev/null 2>&1; then :; else + am_cv_CC_dependencies_compiler_type=$depmode + break + fi + fi + done + + cd .. + rm -rf conftest.dir +else + am_cv_CC_dependencies_compiler_type=none +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_CC_dependencies_compiler_type" >&5 +$as_echo "$am_cv_CC_dependencies_compiler_type" >&6; } +CCDEPMODE=depmode=$am_cv_CC_dependencies_compiler_type + + if + test "x$enable_dependency_tracking" != xno \ + && test "$am_cv_CC_dependencies_compiler_type" = gcc3; then + am__fastdepCC_TRUE= + am__fastdepCC_FALSE='#' +else + am__fastdepCC_TRUE='#' + am__fastdepCC_FALSE= +fi + + + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +CAMERAMANAGER_CFLAGS='' +CAMERAMANAGER_CPPFLAGS='-I../include/' +CAMERAMANAGER_LIBS='' + +SAVE_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS -I/usr/include/gstreamer-1.0/ -I/usr/lib/gstreamer-1.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/" + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking how to run the C preprocessor" >&5 +$as_echo_n "checking how to run the C preprocessor... " >&6; } +# On Suns, sometimes $CPP names a directory. +if test -n "$CPP" && test -d "$CPP"; then + CPP= +fi +if test -z "$CPP"; then + if ${ac_cv_prog_CPP+:} false; then : + $as_echo_n "(cached) " >&6 +else + # Double quotes because CPP needs to be expanded + for CPP in "$CC -E" "$CC -E -traditional-cpp" "/lib/cpp" + do + ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + break +fi + + done + ac_cv_prog_CPP=$CPP + +fi + CPP=$ac_cv_prog_CPP +else + ac_cv_prog_CPP=$CPP +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $CPP" >&5 +$as_echo "$CPP" >&6; } +ac_preproc_ok=false +for ac_c_preproc_warn_flag in '' yes +do + # Use a header file that comes with gcc, so configuring glibc + # with a fresh cross-compiler works. + # Prefer to if __STDC__ is defined, since + # exists even on freestanding compilers. + # On the NeXT, cc -E runs the code through the compiler's parser, + # not just through cpp. "Syntax error" is here to catch this case. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#ifdef __STDC__ +# include +#else +# include +#endif + Syntax error +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + +else + # Broken: fails on valid input. +continue +fi +rm -f conftest.err conftest.i conftest.$ac_ext + + # OK, works on sane cases. Now check whether nonexistent headers + # can be detected and how. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +_ACEOF +if ac_fn_c_try_cpp "$LINENO"; then : + # Broken: success on invalid input. +continue +else + # Passes both tests. +ac_preproc_ok=: +break +fi +rm -f conftest.err conftest.i conftest.$ac_ext + +done +# Because of `break', _AC_PREPROC_IFELSE's cleaning code was skipped. +rm -f conftest.i conftest.err conftest.$ac_ext +if $ac_preproc_ok; then : + +else + { { $as_echo "$as_me:${as_lineno-$LINENO}: error: in \`$ac_pwd':" >&5 +$as_echo "$as_me: error: in \`$ac_pwd':" >&2;} +as_fn_error $? "C preprocessor \"$CPP\" fails sanity check +See \`config.log' for more details" "$LINENO" 5; } +fi + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for grep that handles long lines and -e" >&5 +$as_echo_n "checking for grep that handles long lines and -e... " >&6; } +if ${ac_cv_path_GREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if test -z "$GREP"; then + ac_path_GREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in grep ggrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_GREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_GREP" || continue +# Check for GNU ac_path_GREP and select it if it is found. + # Check for GNU $ac_path_GREP +case `"$ac_path_GREP" --version 2>&1` in +*GNU*) + ac_cv_path_GREP="$ac_path_GREP" ac_path_GREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'GREP' >> "conftest.nl" + "$ac_path_GREP" -e 'GREP$' -e '-(cannot match)-' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_GREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_GREP="$ac_path_GREP" + ac_path_GREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_GREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_GREP"; then + as_fn_error $? "no acceptable grep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_GREP=$GREP +fi + +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_GREP" >&5 +$as_echo "$ac_cv_path_GREP" >&6; } + GREP="$ac_cv_path_GREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for egrep" >&5 +$as_echo_n "checking for egrep... " >&6; } +if ${ac_cv_path_EGREP+:} false; then : + $as_echo_n "(cached) " >&6 +else + if echo a | $GREP -E '(a|b)' >/dev/null 2>&1 + then ac_cv_path_EGREP="$GREP -E" + else + if test -z "$EGREP"; then + ac_path_EGREP_found=false + # Loop through the user's path and test for each of PROGNAME-LIST + as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH$PATH_SEPARATOR/usr/xpg4/bin +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + for ac_prog in egrep; do + for ac_exec_ext in '' $ac_executable_extensions; do + ac_path_EGREP="$as_dir/$ac_prog$ac_exec_ext" + as_fn_executable_p "$ac_path_EGREP" || continue +# Check for GNU ac_path_EGREP and select it if it is found. + # Check for GNU $ac_path_EGREP +case `"$ac_path_EGREP" --version 2>&1` in +*GNU*) + ac_cv_path_EGREP="$ac_path_EGREP" ac_path_EGREP_found=:;; +*) + ac_count=0 + $as_echo_n 0123456789 >"conftest.in" + while : + do + cat "conftest.in" "conftest.in" >"conftest.tmp" + mv "conftest.tmp" "conftest.in" + cp "conftest.in" "conftest.nl" + $as_echo 'EGREP' >> "conftest.nl" + "$ac_path_EGREP" 'EGREP$' < "conftest.nl" >"conftest.out" 2>/dev/null || break + diff "conftest.out" "conftest.nl" >/dev/null 2>&1 || break + as_fn_arith $ac_count + 1 && ac_count=$as_val + if test $ac_count -gt ${ac_path_EGREP_max-0}; then + # Best one so far, save it but keep looking for a better one + ac_cv_path_EGREP="$ac_path_EGREP" + ac_path_EGREP_max=$ac_count + fi + # 10*(2^10) chars as input seems more than enough + test $ac_count -gt 10 && break + done + rm -f conftest.in conftest.tmp conftest.nl conftest.out;; +esac + + $ac_path_EGREP_found && break 3 + done + done + done +IFS=$as_save_IFS + if test -z "$ac_cv_path_EGREP"; then + as_fn_error $? "no acceptable egrep could be found in $PATH$PATH_SEPARATOR/usr/xpg4/bin" "$LINENO" 5 + fi +else + ac_cv_path_EGREP=$EGREP +fi + + fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_path_EGREP" >&5 +$as_echo "$ac_cv_path_EGREP" >&6; } + EGREP="$ac_cv_path_EGREP" + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5 +$as_echo_n "checking for ANSI C header files... " >&6; } +if ${ac_cv_header_stdc+:} false; then : + $as_echo_n "(cached) " >&6 +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#include +#include + +int +main () +{ + + ; + return 0; +} +_ACEOF +if ac_fn_c_try_compile "$LINENO"; then : + ac_cv_header_stdc=yes +else + ac_cv_header_stdc=no +fi +rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext + +if test $ac_cv_header_stdc = yes; then + # SunOS 4.x string.h does not declare mem*, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "memchr" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI. + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include + +_ACEOF +if (eval "$ac_cpp conftest.$ac_ext") 2>&5 | + $EGREP "free" >/dev/null 2>&1; then : + +else + ac_cv_header_stdc=no +fi +rm -f conftest* + +fi + +if test $ac_cv_header_stdc = yes; then + # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi. + if test "$cross_compiling" = yes; then : + : +else + cat confdefs.h - <<_ACEOF >conftest.$ac_ext +/* end confdefs.h. */ +#include +#include +#if ((' ' & 0x0FF) == 0x020) +# define ISLOWER(c) ('a' <= (c) && (c) <= 'z') +# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c)) +#else +# define ISLOWER(c) \ + (('a' <= (c) && (c) <= 'i') \ + || ('j' <= (c) && (c) <= 'r') \ + || ('s' <= (c) && (c) <= 'z')) +# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c)) +#endif + +#define XOR(e, f) (((e) && !(f)) || (!(e) && (f))) +int +main () +{ + int i; + for (i = 0; i < 256; i++) + if (XOR (islower (i), ISLOWER (i)) + || toupper (i) != TOUPPER (i)) + return 2; + return 0; +} +_ACEOF +if ac_fn_c_try_run "$LINENO"; then : + +else + ac_cv_header_stdc=no +fi +rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \ + conftest.$ac_objext conftest.beam conftest.$ac_ext +fi + +fi +fi +{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5 +$as_echo "$ac_cv_header_stdc" >&6; } +if test $ac_cv_header_stdc = yes; then + +$as_echo "#define STDC_HEADERS 1" >>confdefs.h + +fi + +# On IRIX 5.3, sys/types and inttypes.h are conflicting. +for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \ + inttypes.h stdint.h unistd.h +do : + as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh` +ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default +" +if eval test \"x\$"$as_ac_Header"\" = x"yes"; then : + cat >>confdefs.h <<_ACEOF +#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1 +_ACEOF + +fi + +done + + +for ac_header in gst/gst.h +do : + ac_fn_c_check_header_mongrel "$LINENO" "gst/gst.h" "ac_cv_header_gst_gst_h" "$ac_includes_default" +if test "x$ac_cv_header_gst_gst_h" = xyes; then : + cat >>confdefs.h <<_ACEOF +#define HAVE_GST_GST_H 1 +_ACEOF + + CAMERAMANAGER_LIBS="$CAMERAMANAGER_LIBS -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0" + CAMERAMANAGER_CFLAGS="$CAMERAMANAGER_CFLAGS -pthread" + CAMERAMANAGER_CPPFLAGS="$CAMERAMANAGER_CPPFLAGS -I/usr/include/gstreamer-1.0/ -I/usr/lib/gstreamer-1.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/" + +else + as_fn_error $? "This program need gstreamer >= 1.0" "$LINENO" 5 + +fi + +done + +CPPFLAGS=$SAVE_CPPFLAGS + +ac_ext=c +ac_cpp='$CPP $CPPFLAGS' +ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5' +ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5' +ac_compiler_gnu=$ac_cv_c_compiler_gnu + + +CAMERAMANAGER_CFLAGS=$CAMERAMANAGER_CFLAGS + +CAMERAMANAGER_CPPFLAGS=$CAMERAMANAGER_CPPFLAGS + +CAMERAMANAGER_LIBS=$CAMERAMANAGER_LIBS + + +ac_config_files="$ac_config_files Makefile cameramanager/Makefile" + +cat >confcache <<\_ACEOF +# This file is a shell script that caches the results of configure +# tests run on this system so they can be shared between configure +# scripts and configure runs, see configure's option --config-cache. +# It is not useful on other systems. If it contains results you don't +# want to keep, you may remove or edit it. +# +# config.status only pays attention to the cache file if you give it +# the --recheck option to rerun configure. +# +# `ac_cv_env_foo' variables (set or unset) will be overridden when +# loading this file, other *unset* `ac_cv_foo' will be assigned the +# following values. + +_ACEOF + +# The following way of writing the cache mishandles newlines in values, +# but we know of no workaround that is simple, portable, and efficient. +# So, we kill variables containing newlines. +# Ultrix sh set writes to stderr and can't be redirected directly, +# and sets the high bit in the cache file unless we assign to the vars. +( + for ac_var in `(set) 2>&1 | sed -n 's/^\([a-zA-Z_][a-zA-Z0-9_]*\)=.*/\1/p'`; do + eval ac_val=\$$ac_var + case $ac_val in #( + *${as_nl}*) + case $ac_var in #( + *_cv_*) { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: cache variable $ac_var contains a newline" >&5 +$as_echo "$as_me: WARNING: cache variable $ac_var contains a newline" >&2;} ;; + esac + case $ac_var in #( + _ | IFS | as_nl) ;; #( + BASH_ARGV | BASH_SOURCE) eval $ac_var= ;; #( + *) { eval $ac_var=; unset $ac_var;} ;; + esac ;; + esac + done + + (set) 2>&1 | + case $as_nl`(ac_space=' '; set) 2>&1` in #( + *${as_nl}ac_space=\ *) + # `set' does not quote correctly, so add quotes: double-quote + # substitution turns \\\\ into \\, and sed turns \\ into \. + sed -n \ + "s/'/'\\\\''/g; + s/^\\([_$as_cr_alnum]*_cv_[_$as_cr_alnum]*\\)=\\(.*\\)/\\1='\\2'/p" + ;; #( + *) + # `set' quotes correctly as required by POSIX, so do not add quotes. + sed -n "/^[_$as_cr_alnum]*_cv_[_$as_cr_alnum]*=/p" + ;; + esac | + sort +) | + sed ' + /^ac_cv_env_/b end + t clear + :clear + s/^\([^=]*\)=\(.*[{}].*\)$/test "${\1+set}" = set || &/ + t end + s/^\([^=]*\)=\(.*\)$/\1=${\1=\2}/ + :end' >>confcache +if diff "$cache_file" confcache >/dev/null 2>&1; then :; else + if test -w "$cache_file"; then + if test "x$cache_file" != "x/dev/null"; then + { $as_echo "$as_me:${as_lineno-$LINENO}: updating cache $cache_file" >&5 +$as_echo "$as_me: updating cache $cache_file" >&6;} + if test ! -f "$cache_file" || test -h "$cache_file"; then + cat confcache >"$cache_file" + else + case $cache_file in #( + */* | ?:*) + mv -f confcache "$cache_file"$$ && + mv -f "$cache_file"$$ "$cache_file" ;; #( + *) + mv -f confcache "$cache_file" ;; + esac + fi + fi + else + { $as_echo "$as_me:${as_lineno-$LINENO}: not updating unwritable cache $cache_file" >&5 +$as_echo "$as_me: not updating unwritable cache $cache_file" >&6;} + fi +fi +rm -f confcache + +test "x$prefix" = xNONE && prefix=$ac_default_prefix +# Let make expand exec_prefix. +test "x$exec_prefix" = xNONE && exec_prefix='${prefix}' + +DEFS=-DHAVE_CONFIG_H + +ac_libobjs= +ac_ltlibobjs= +U= +for ac_i in : $LIBOBJS; do test "x$ac_i" = x: && continue + # 1. Remove the extension, and $U if already installed. + ac_script='s/\$U\././;s/\.o$//;s/\.obj$//' + ac_i=`$as_echo "$ac_i" | sed "$ac_script"` + # 2. Prepend LIBOBJDIR. When used with automake>=1.10 LIBOBJDIR + # will be set to the directory where LIBOBJS objects are built. + as_fn_append ac_libobjs " \${LIBOBJDIR}$ac_i\$U.$ac_objext" + as_fn_append ac_ltlibobjs " \${LIBOBJDIR}$ac_i"'$U.lo' +done +LIBOBJS=$ac_libobjs + +LTLIBOBJS=$ac_ltlibobjs + + +{ $as_echo "$as_me:${as_lineno-$LINENO}: checking that generated files are newer than configure" >&5 +$as_echo_n "checking that generated files are newer than configure... " >&6; } + if test -n "$am_sleep_pid"; then + # Hide warnings about reused PIDs. + wait $am_sleep_pid 2>/dev/null + fi + { $as_echo "$as_me:${as_lineno-$LINENO}: result: done" >&5 +$as_echo "done" >&6; } + if test -n "$EXEEXT"; then + am__EXEEXT_TRUE= + am__EXEEXT_FALSE='#' +else + am__EXEEXT_TRUE='#' + am__EXEEXT_FALSE= +fi + +if test -z "${AMDEP_TRUE}" && test -z "${AMDEP_FALSE}"; then + as_fn_error $? "conditional \"AMDEP\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi +if test -z "${am__fastdepCC_TRUE}" && test -z "${am__fastdepCC_FALSE}"; then + as_fn_error $? "conditional \"am__fastdepCC\" was never defined. +Usually this means the macro was only invoked conditionally." "$LINENO" 5 +fi + +: "${CONFIG_STATUS=./config.status}" +ac_write_fail=0 +ac_clean_files_save=$ac_clean_files +ac_clean_files="$ac_clean_files $CONFIG_STATUS" +{ $as_echo "$as_me:${as_lineno-$LINENO}: creating $CONFIG_STATUS" >&5 +$as_echo "$as_me: creating $CONFIG_STATUS" >&6;} +as_write_fail=0 +cat >$CONFIG_STATUS <<_ASEOF || as_write_fail=1 +#! $SHELL +# Generated by $as_me. +# Run this file to recreate the current configuration. +# Compiler output produced by configure, useful for debugging +# configure, is in config.log if it exists. + +debug=false +ac_cs_recheck=false +ac_cs_silent=false + +SHELL=\${CONFIG_SHELL-$SHELL} +export SHELL +_ASEOF +cat >>$CONFIG_STATUS <<\_ASEOF || as_write_fail=1 +## -------------------- ## +## M4sh Initialization. ## +## -------------------- ## + +# Be more Bourne compatible +DUALCASE=1; export DUALCASE # for MKS sh +if test -n "${ZSH_VERSION+set}" && (emulate sh) >/dev/null 2>&1; then : + emulate sh + NULLCMD=: + # Pre-4.2 versions of Zsh do word splitting on ${1+"$@"}, which + # is contrary to our usage. Disable this feature. + alias -g '${1+"$@"}'='"$@"' + setopt NO_GLOB_SUBST +else + case `(set -o) 2>/dev/null` in #( + *posix*) : + set -o posix ;; #( + *) : + ;; +esac +fi + + +as_nl=' +' +export as_nl +# Printing a long string crashes Solaris 7 /usr/bin/printf. +as_echo='\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\\' +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo +as_echo=$as_echo$as_echo$as_echo$as_echo$as_echo$as_echo +# Prefer a ksh shell builtin over an external printf program on Solaris, +# but without wasting forks for bash or zsh. +if test -z "$BASH_VERSION$ZSH_VERSION" \ + && (test "X`print -r -- $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='print -r --' + as_echo_n='print -rn --' +elif (test "X`printf %s $as_echo`" = "X$as_echo") 2>/dev/null; then + as_echo='printf %s\n' + as_echo_n='printf %s' +else + if test "X`(/usr/ucb/echo -n -n $as_echo) 2>/dev/null`" = "X-n $as_echo"; then + as_echo_body='eval /usr/ucb/echo -n "$1$as_nl"' + as_echo_n='/usr/ucb/echo -n' + else + as_echo_body='eval expr "X$1" : "X\\(.*\\)"' + as_echo_n_body='eval + arg=$1; + case $arg in #( + *"$as_nl"*) + expr "X$arg" : "X\\(.*\\)$as_nl"; + arg=`expr "X$arg" : ".*$as_nl\\(.*\\)"`;; + esac; + expr "X$arg" : "X\\(.*\\)" | tr -d "$as_nl" + ' + export as_echo_n_body + as_echo_n='sh -c $as_echo_n_body as_echo' + fi + export as_echo_body + as_echo='sh -c $as_echo_body as_echo' +fi + +# The user is always right. +if test "${PATH_SEPARATOR+set}" != set; then + PATH_SEPARATOR=: + (PATH='/bin;/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 && { + (PATH='/bin:/bin'; FPATH=$PATH; sh -c :) >/dev/null 2>&1 || + PATH_SEPARATOR=';' + } +fi + + +# IFS +# We need space, tab and new line, in precisely that order. Quoting is +# there to prevent editors from complaining about space-tab. +# (If _AS_PATH_WALK were called with IFS unset, it would disable word +# splitting by setting IFS to empty value.) +IFS=" "" $as_nl" + +# Find who we are. Look in the path if we contain no directory separator. +as_myself= +case $0 in #(( + *[\\/]* ) as_myself=$0 ;; + *) as_save_IFS=$IFS; IFS=$PATH_SEPARATOR +for as_dir in $PATH +do + IFS=$as_save_IFS + test -z "$as_dir" && as_dir=. + test -r "$as_dir/$0" && as_myself=$as_dir/$0 && break + done +IFS=$as_save_IFS + + ;; +esac +# We did not find ourselves, most probably we were run as `sh COMMAND' +# in which case we are not to be found in the path. +if test "x$as_myself" = x; then + as_myself=$0 +fi +if test ! -f "$as_myself"; then + $as_echo "$as_myself: error: cannot find myself; rerun with an absolute file name" >&2 + exit 1 +fi + +# Unset variables that we do not need and which cause bugs (e.g. in +# pre-3.0 UWIN ksh). But do not cause bugs in bash 2.01; the "|| exit 1" +# suppresses any "Segmentation fault" message there. '((' could +# trigger a bug in pdksh 5.2.14. +for as_var in BASH_ENV ENV MAIL MAILPATH +do eval test x\${$as_var+set} = xset \ + && ( (unset $as_var) || exit 1) >/dev/null 2>&1 && unset $as_var || : +done +PS1='$ ' +PS2='> ' +PS4='+ ' + +# NLS nuisances. +LC_ALL=C +export LC_ALL +LANGUAGE=C +export LANGUAGE + +# CDPATH. +(unset CDPATH) >/dev/null 2>&1 && unset CDPATH + + +# as_fn_error STATUS ERROR [LINENO LOG_FD] +# ---------------------------------------- +# Output "`basename $0`: error: ERROR" to stderr. If LINENO and LOG_FD are +# provided, also output the error to LOG_FD, referencing LINENO. Then exit the +# script with STATUS, using 1 if that was 0. +as_fn_error () +{ + as_status=$1; test $as_status -eq 0 && as_status=1 + if test "$4"; then + as_lineno=${as_lineno-"$3"} as_lineno_stack=as_lineno_stack=$as_lineno_stack + $as_echo "$as_me:${as_lineno-$LINENO}: error: $2" >&$4 + fi + $as_echo "$as_me: error: $2" >&2 + as_fn_exit $as_status +} # as_fn_error + + +# as_fn_set_status STATUS +# ----------------------- +# Set $? to STATUS, without forking. +as_fn_set_status () +{ + return $1 +} # as_fn_set_status + +# as_fn_exit STATUS +# ----------------- +# Exit the shell with STATUS, even in a "trap 0" or "set -e" context. +as_fn_exit () +{ + set +e + as_fn_set_status $1 + exit $1 +} # as_fn_exit + +# as_fn_unset VAR +# --------------- +# Portably unset VAR. +as_fn_unset () +{ + { eval $1=; unset $1;} +} +as_unset=as_fn_unset +# as_fn_append VAR VALUE +# ---------------------- +# Append the text in VALUE to the end of the definition contained in VAR. Take +# advantage of any shell optimizations that allow amortized linear growth over +# repeated appends, instead of the typical quadratic growth present in naive +# implementations. +if (eval "as_var=1; as_var+=2; test x\$as_var = x12") 2>/dev/null; then : + eval 'as_fn_append () + { + eval $1+=\$2 + }' +else + as_fn_append () + { + eval $1=\$$1\$2 + } +fi # as_fn_append + +# as_fn_arith ARG... +# ------------------ +# Perform arithmetic evaluation on the ARGs, and store the result in the +# global $as_val. Take advantage of shells that can avoid forks. The arguments +# must be portable across $(()) and expr. +if (eval "test \$(( 1 + 1 )) = 2") 2>/dev/null; then : + eval 'as_fn_arith () + { + as_val=$(( $* )) + }' +else + as_fn_arith () + { + as_val=`expr "$@" || test $? -eq 1` + } +fi # as_fn_arith + + +if expr a : '\(a\)' >/dev/null 2>&1 && + test "X`expr 00001 : '.*\(...\)'`" = X001; then + as_expr=expr +else + as_expr=false +fi + +if (basename -- /) >/dev/null 2>&1 && test "X`basename -- / 2>&1`" = "X/"; then + as_basename=basename +else + as_basename=false +fi + +if (as_dir=`dirname -- /` && test "X$as_dir" = X/) >/dev/null 2>&1; then + as_dirname=dirname +else + as_dirname=false +fi + +as_me=`$as_basename -- "$0" || +$as_expr X/"$0" : '.*/\([^/][^/]*\)/*$' \| \ + X"$0" : 'X\(//\)$' \| \ + X"$0" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X/"$0" | + sed '/^.*\/\([^/][^/]*\)\/*$/{ + s//\1/ + q + } + /^X\/\(\/\/\)$/{ + s//\1/ + q + } + /^X\/\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + +# Avoid depending upon Character Ranges. +as_cr_letters='abcdefghijklmnopqrstuvwxyz' +as_cr_LETTERS='ABCDEFGHIJKLMNOPQRSTUVWXYZ' +as_cr_Letters=$as_cr_letters$as_cr_LETTERS +as_cr_digits='0123456789' +as_cr_alnum=$as_cr_Letters$as_cr_digits + +ECHO_C= ECHO_N= ECHO_T= +case `echo -n x` in #((((( +-n*) + case `echo 'xy\c'` in + *c*) ECHO_T=' ';; # ECHO_T is single tab character. + xy) ECHO_C='\c';; + *) echo `echo ksh88 bug on AIX 6.1` > /dev/null + ECHO_T=' ';; + esac;; +*) + ECHO_N='-n';; +esac + +rm -f conf$$ conf$$.exe conf$$.file +if test -d conf$$.dir; then + rm -f conf$$.dir/conf$$.file +else + rm -f conf$$.dir + mkdir conf$$.dir 2>/dev/null +fi +if (echo >conf$$.file) 2>/dev/null; then + if ln -s conf$$.file conf$$ 2>/dev/null; then + as_ln_s='ln -s' + # ... but there are two gotchas: + # 1) On MSYS, both `ln -s file dir' and `ln file dir' fail. + # 2) DJGPP < 2.04 has no symlinks; `ln -s' creates a wrapper executable. + # In both cases, we have to default to `cp -pR'. + ln -s conf$$.file conf$$.dir 2>/dev/null && test ! -f conf$$.exe || + as_ln_s='cp -pR' + elif ln conf$$.file conf$$ 2>/dev/null; then + as_ln_s=ln + else + as_ln_s='cp -pR' + fi +else + as_ln_s='cp -pR' +fi +rm -f conf$$ conf$$.exe conf$$.dir/conf$$.file conf$$.file +rmdir conf$$.dir 2>/dev/null + + +# as_fn_mkdir_p +# ------------- +# Create "$as_dir" as a directory, including parents if necessary. +as_fn_mkdir_p () +{ + + case $as_dir in #( + -*) as_dir=./$as_dir;; + esac + test -d "$as_dir" || eval $as_mkdir_p || { + as_dirs= + while :; do + case $as_dir in #( + *\'*) as_qdir=`$as_echo "$as_dir" | sed "s/'/'\\\\\\\\''/g"`;; #'( + *) as_qdir=$as_dir;; + esac + as_dirs="'$as_qdir' $as_dirs" + as_dir=`$as_dirname -- "$as_dir" || +$as_expr X"$as_dir" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$as_dir" : 'X\(//\)[^/]' \| \ + X"$as_dir" : 'X\(//\)$' \| \ + X"$as_dir" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$as_dir" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + test -d "$as_dir" && break + done + test -z "$as_dirs" || eval "mkdir $as_dirs" + } || test -d "$as_dir" || as_fn_error $? "cannot create directory $as_dir" + + +} # as_fn_mkdir_p +if mkdir -p . 2>/dev/null; then + as_mkdir_p='mkdir -p "$as_dir"' +else + test -d ./-p && rmdir ./-p + as_mkdir_p=false +fi + + +# as_fn_executable_p FILE +# ----------------------- +# Test if FILE is an executable regular file. +as_fn_executable_p () +{ + test -f "$1" && test -x "$1" +} # as_fn_executable_p +as_test_x='test -x' +as_executable_p=as_fn_executable_p + +# Sed expression to map a string onto a valid CPP name. +as_tr_cpp="eval sed 'y%*$as_cr_letters%P$as_cr_LETTERS%;s%[^_$as_cr_alnum]%_%g'" + +# Sed expression to map a string onto a valid variable name. +as_tr_sh="eval sed 'y%*+%pp%;s%[^_$as_cr_alnum]%_%g'" + + +exec 6>&1 +## ----------------------------------- ## +## Main body of $CONFIG_STATUS script. ## +## ----------------------------------- ## +_ASEOF +test $as_write_fail = 0 && chmod +x $CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# Save the log message, to keep $0 and so on meaningful, and to +# report actual input values of CONFIG_FILES etc. instead of their +# values after options handling. +ac_log=" +This file was extended by CameraManager $as_me 0.01, which was +generated by GNU Autoconf 2.69. Invocation command line was + + CONFIG_FILES = $CONFIG_FILES + CONFIG_HEADERS = $CONFIG_HEADERS + CONFIG_LINKS = $CONFIG_LINKS + CONFIG_COMMANDS = $CONFIG_COMMANDS + $ $0 $@ + +on `(hostname || uname -n) 2>/dev/null | sed 1q` +" + +_ACEOF + +case $ac_config_files in *" +"*) set x $ac_config_files; shift; ac_config_files=$*;; +esac + +case $ac_config_headers in *" +"*) set x $ac_config_headers; shift; ac_config_headers=$*;; +esac + + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# Files that config.status was made for. +config_files="$ac_config_files" +config_headers="$ac_config_headers" +config_commands="$ac_config_commands" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +ac_cs_usage="\ +\`$as_me' instantiates files and other configuration actions +from templates according to the current configuration. Unless the files +and actions are specified as TAGs, all are instantiated by default. + +Usage: $0 [OPTION]... [TAG]... + + -h, --help print this help, then exit + -V, --version print version number and configuration settings, then exit + --config print configuration, then exit + -q, --quiet, --silent + do not print progress messages + -d, --debug don't remove temporary files + --recheck update $as_me by reconfiguring in the same conditions + --file=FILE[:TEMPLATE] + instantiate the configuration file FILE + --header=FILE[:TEMPLATE] + instantiate the configuration header FILE + +Configuration files: +$config_files + +Configuration headers: +$config_headers + +Configuration commands: +$config_commands + +Report bugs to ." + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; s/[\\""\`\$]/\\\\&/g'`" +ac_cs_version="\\ +CameraManager config.status 0.01 +configured by $0, generated by GNU Autoconf 2.69, + with options \\"\$ac_cs_config\\" + +Copyright (C) 2012 Free Software Foundation, Inc. +This config.status script is free software; the Free Software Foundation +gives unlimited permission to copy, distribute and modify it." + +ac_pwd='$ac_pwd' +srcdir='$srcdir' +INSTALL='$INSTALL' +MKDIR_P='$MKDIR_P' +AWK='$AWK' +test -n "\$AWK" || AWK=awk +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# The default lists apply if the user does not specify any file. +ac_need_defaults=: +while test $# != 0 +do + case $1 in + --*=?*) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg=`expr "X$1" : 'X[^=]*=\(.*\)'` + ac_shift=: + ;; + --*=) + ac_option=`expr "X$1" : 'X\([^=]*\)='` + ac_optarg= + ac_shift=: + ;; + *) + ac_option=$1 + ac_optarg=$2 + ac_shift=shift + ;; + esac + + case $ac_option in + # Handling of the options. + -recheck | --recheck | --rechec | --reche | --rech | --rec | --re | --r) + ac_cs_recheck=: ;; + --version | --versio | --versi | --vers | --ver | --ve | --v | -V ) + $as_echo "$ac_cs_version"; exit ;; + --config | --confi | --conf | --con | --co | --c ) + $as_echo "$ac_cs_config"; exit ;; + --debug | --debu | --deb | --de | --d | -d ) + debug=: ;; + --file | --fil | --fi | --f ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + '') as_fn_error $? "missing file argument" ;; + esac + as_fn_append CONFIG_FILES " '$ac_optarg'" + ac_need_defaults=false;; + --header | --heade | --head | --hea ) + $ac_shift + case $ac_optarg in + *\'*) ac_optarg=`$as_echo "$ac_optarg" | sed "s/'/'\\\\\\\\''/g"` ;; + esac + as_fn_append CONFIG_HEADERS " '$ac_optarg'" + ac_need_defaults=false;; + --he | --h) + # Conflict between --help and --header + as_fn_error $? "ambiguous option: \`$1' +Try \`$0 --help' for more information.";; + --help | --hel | -h ) + $as_echo "$ac_cs_usage"; exit ;; + -q | -quiet | --quiet | --quie | --qui | --qu | --q \ + | -silent | --silent | --silen | --sile | --sil | --si | --s) + ac_cs_silent=: ;; + + # This is an error. + -*) as_fn_error $? "unrecognized option: \`$1' +Try \`$0 --help' for more information." ;; + + *) as_fn_append ac_config_targets " $1" + ac_need_defaults=false ;; + + esac + shift +done + +ac_configure_extra_args= + +if $ac_cs_silent; then + exec 6>/dev/null + ac_configure_extra_args="$ac_configure_extra_args --silent" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +if \$ac_cs_recheck; then + set X $SHELL '$0' $ac_configure_args \$ac_configure_extra_args --no-create --no-recursion + shift + \$as_echo "running CONFIG_SHELL=$SHELL \$*" >&6 + CONFIG_SHELL='$SHELL' + export CONFIG_SHELL + exec "\$@" +fi + +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +exec 5>>config.log +{ + echo + sed 'h;s/./-/g;s/^.../## /;s/...$/ ##/;p;x;p;x' <<_ASBOX +## Running $as_me. ## +_ASBOX + $as_echo "$ac_log" +} >&5 + +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +# +# INIT-COMMANDS +# +AMDEP_TRUE="$AMDEP_TRUE" ac_aux_dir="$ac_aux_dir" + +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + +# Handling of arguments. +for ac_config_target in $ac_config_targets +do + case $ac_config_target in + "include/config.h") CONFIG_HEADERS="$CONFIG_HEADERS include/config.h" ;; + "depfiles") CONFIG_COMMANDS="$CONFIG_COMMANDS depfiles" ;; + "Makefile") CONFIG_FILES="$CONFIG_FILES Makefile" ;; + "cameramanager/Makefile") CONFIG_FILES="$CONFIG_FILES cameramanager/Makefile" ;; + + *) as_fn_error $? "invalid argument: \`$ac_config_target'" "$LINENO" 5;; + esac +done + + +# If the user did not use the arguments to specify the items to instantiate, +# then the envvar interface is used. Set only those that are not. +# We use the long form for the default assignment because of an extremely +# bizarre bug on SunOS 4.1.3. +if $ac_need_defaults; then + test "${CONFIG_FILES+set}" = set || CONFIG_FILES=$config_files + test "${CONFIG_HEADERS+set}" = set || CONFIG_HEADERS=$config_headers + test "${CONFIG_COMMANDS+set}" = set || CONFIG_COMMANDS=$config_commands +fi + +# Have a temporary directory for convenience. Make it in the build tree +# simply because there is no reason against having it here, and in addition, +# creating and moving files from /tmp can sometimes cause problems. +# Hook for its removal unless debugging. +# Note that there is a small window in which the directory will not be cleaned: +# after its creation but before its name has been assigned to `$tmp'. +$debug || +{ + tmp= ac_tmp= + trap 'exit_status=$? + : "${ac_tmp:=$tmp}" + { test ! -d "$ac_tmp" || rm -fr "$ac_tmp"; } && exit $exit_status +' 0 + trap 'as_fn_exit 1' 1 2 13 15 +} +# Create a (secure) tmp directory for tmp files. + +{ + tmp=`(umask 077 && mktemp -d "./confXXXXXX") 2>/dev/null` && + test -d "$tmp" +} || +{ + tmp=./conf$$-$RANDOM + (umask 077 && mkdir "$tmp") +} || as_fn_error $? "cannot create a temporary directory in ." "$LINENO" 5 +ac_tmp=$tmp + +# Set up the scripts for CONFIG_FILES section. +# No need to generate them if there are no CONFIG_FILES. +# This happens for instance with `./config.status config.h'. +if test -n "$CONFIG_FILES"; then + + +ac_cr=`echo X | tr X '\015'` +# On cygwin, bash can eat \r inside `` if the user requested igncr. +# But we know of no other shell where ac_cr would be empty at this +# point, so we can use a bashism as a fallback. +if test "x$ac_cr" = x; then + eval ac_cr=\$\'\\r\' +fi +ac_cs_awk_cr=`$AWK 'BEGIN { print "a\rb" }' /dev/null` +if test "$ac_cs_awk_cr" = "a${ac_cr}b"; then + ac_cs_awk_cr='\\r' +else + ac_cs_awk_cr=$ac_cr +fi + +echo 'BEGIN {' >"$ac_tmp/subs1.awk" && +_ACEOF + + +{ + echo "cat >conf$$subs.awk <<_ACEOF" && + echo "$ac_subst_vars" | sed 's/.*/&!$&$ac_delim/' && + echo "_ACEOF" +} >conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 +ac_delim_num=`echo "$ac_subst_vars" | grep -c '^'` +ac_delim='%!_!# ' +for ac_last_try in false false false false false :; do + . ./conf$$subs.sh || + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + + ac_delim_n=`sed -n "s/.*$ac_delim\$/X/p" conf$$subs.awk | grep -c X` + if test $ac_delim_n = $ac_delim_num; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_STATUS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done +rm -f conf$$subs.sh + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +cat >>"\$ac_tmp/subs1.awk" <<\\_ACAWK && +_ACEOF +sed -n ' +h +s/^/S["/; s/!.*/"]=/ +p +g +s/^[^!]*!// +:repl +t repl +s/'"$ac_delim"'$// +t delim +:nl +h +s/\(.\{148\}\)..*/\1/ +t more1 +s/["\\]/\\&/g; s/^/"/; s/$/\\n"\\/ +p +n +b repl +:more1 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t nl +:delim +h +s/\(.\{148\}\)..*/\1/ +t more2 +s/["\\]/\\&/g; s/^/"/; s/$/"/ +p +b +:more2 +s/["\\]/\\&/g; s/^/"/; s/$/"\\/ +p +g +s/.\{148\}// +t delim +' >$CONFIG_STATUS || ac_write_fail=1 +rm -f conf$$subs.awk +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +_ACAWK +cat >>"\$ac_tmp/subs1.awk" <<_ACAWK && + for (key in S) S_is_set[key] = 1 + FS = "" + +} +{ + line = $ 0 + nfields = split(line, field, "@") + substed = 0 + len = length(field[1]) + for (i = 2; i < nfields; i++) { + key = field[i] + keylen = length(key) + if (S_is_set[key]) { + value = S[key] + line = substr(line, 1, len) "" value "" substr(line, len + keylen + 3) + len += length(value) + length(field[++i]) + substed = 1 + } else + len += 1 + keylen + } + + print line +} + +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +if sed "s/$ac_cr//" < /dev/null > /dev/null 2>&1; then + sed "s/$ac_cr\$//; s/$ac_cr/$ac_cs_awk_cr/g" +else + cat +fi < "$ac_tmp/subs1.awk" > "$ac_tmp/subs.awk" \ + || as_fn_error $? "could not setup config files machinery" "$LINENO" 5 +_ACEOF + +# VPATH may cause trouble with some makes, so we remove sole $(srcdir), +# ${srcdir} and @srcdir@ entries from VPATH if srcdir is ".", strip leading and +# trailing colons and then remove the whole line if VPATH becomes empty +# (actually we leave an empty line to preserve line numbers). +if test "x$srcdir" = x.; then + ac_vpsub='/^[ ]*VPATH[ ]*=[ ]*/{ +h +s/// +s/^/:/ +s/[ ]*$/:/ +s/:\$(srcdir):/:/g +s/:\${srcdir}:/:/g +s/:@srcdir@:/:/g +s/^:*// +s/:*$// +x +s/\(=[ ]*\).*/\1/ +G +s/\n// +s/^[^=]*=[ ]*$// +}' +fi + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +fi # test -n "$CONFIG_FILES" + +# Set up the scripts for CONFIG_HEADERS section. +# No need to generate them if there are no CONFIG_HEADERS. +# This happens for instance with `./config.status Makefile'. +if test -n "$CONFIG_HEADERS"; then +cat >"$ac_tmp/defines.awk" <<\_ACAWK || +BEGIN { +_ACEOF + +# Transform confdefs.h into an awk script `defines.awk', embedded as +# here-document in config.status, that substitutes the proper values into +# config.h.in to produce config.h. + +# Create a delimiter string that does not exist in confdefs.h, to ease +# handling of long lines. +ac_delim='%!_!# ' +for ac_last_try in false false :; do + ac_tt=`sed -n "/$ac_delim/p" confdefs.h` + if test -z "$ac_tt"; then + break + elif $ac_last_try; then + as_fn_error $? "could not make $CONFIG_HEADERS" "$LINENO" 5 + else + ac_delim="$ac_delim!$ac_delim _$ac_delim!! " + fi +done + +# For the awk script, D is an array of macro values keyed by name, +# likewise P contains macro parameters if any. Preserve backslash +# newline sequences. + +ac_word_re=[_$as_cr_Letters][_$as_cr_alnum]* +sed -n ' +s/.\{148\}/&'"$ac_delim"'/g +t rset +:rset +s/^[ ]*#[ ]*define[ ][ ]*/ / +t def +d +:def +s/\\$// +t bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3"/p +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2"/p +d +:bsnl +s/["\\]/\\&/g +s/^ \('"$ac_word_re"'\)\(([^()]*)\)[ ]*\(.*\)/P["\1"]="\2"\ +D["\1"]=" \3\\\\\\n"\\/p +t cont +s/^ \('"$ac_word_re"'\)[ ]*\(.*\)/D["\1"]=" \2\\\\\\n"\\/p +t cont +d +:cont +n +s/.\{148\}/&'"$ac_delim"'/g +t clear +:clear +s/\\$// +t bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/"/p +d +:bsnlc +s/["\\]/\\&/g; s/^/"/; s/$/\\\\\\n"\\/p +b cont +' >$CONFIG_STATUS || ac_write_fail=1 + +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + for (key in D) D_is_set[key] = 1 + FS = "" +} +/^[\t ]*#[\t ]*(define|undef)[\t ]+$ac_word_re([\t (]|\$)/ { + line = \$ 0 + split(line, arg, " ") + if (arg[1] == "#") { + defundef = arg[2] + mac1 = arg[3] + } else { + defundef = substr(arg[1], 2) + mac1 = arg[2] + } + split(mac1, mac2, "(") #) + macro = mac2[1] + prefix = substr(line, 1, index(line, defundef) - 1) + if (D_is_set[macro]) { + # Preserve the white space surrounding the "#". + print prefix "define", macro P[macro] D[macro] + next + } else { + # Replace #undef with comments. This is necessary, for example, + # in the case of _POSIX_SOURCE, which is predefined and required + # on some systems where configure will not decide to define it. + if (defundef == "undef") { + print "/*", prefix defundef, macro, "*/" + next + } + } +} +{ print } +_ACAWK +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 + as_fn_error $? "could not setup config headers machinery" "$LINENO" 5 +fi # test -n "$CONFIG_HEADERS" + + +eval set X " :F $CONFIG_FILES :H $CONFIG_HEADERS :C $CONFIG_COMMANDS" +shift +for ac_tag +do + case $ac_tag in + :[FHLC]) ac_mode=$ac_tag; continue;; + esac + case $ac_mode$ac_tag in + :[FHL]*:*);; + :L* | :C*:*) as_fn_error $? "invalid tag \`$ac_tag'" "$LINENO" 5;; + :[FH]-) ac_tag=-:-;; + :[FH]*) ac_tag=$ac_tag:$ac_tag.in;; + esac + ac_save_IFS=$IFS + IFS=: + set x $ac_tag + IFS=$ac_save_IFS + shift + ac_file=$1 + shift + + case $ac_mode in + :L) ac_source=$1;; + :[FH]) + ac_file_inputs= + for ac_f + do + case $ac_f in + -) ac_f="$ac_tmp/stdin";; + *) # Look for the file first in the build tree, then in the source tree + # (if the path is not absolute). The absolute path cannot be DOS-style, + # because $ac_f cannot contain `:'. + test -f "$ac_f" || + case $ac_f in + [\\/$]*) false;; + *) test -f "$srcdir/$ac_f" && ac_f="$srcdir/$ac_f";; + esac || + as_fn_error 1 "cannot find input file: \`$ac_f'" "$LINENO" 5;; + esac + case $ac_f in *\'*) ac_f=`$as_echo "$ac_f" | sed "s/'/'\\\\\\\\''/g"`;; esac + as_fn_append ac_file_inputs " '$ac_f'" + done + + # Let's still pretend it is `configure' which instantiates (i.e., don't + # use $as_me), people would be surprised to read: + # /* config.h. Generated by config.status. */ + configure_input='Generated from '` + $as_echo "$*" | sed 's|^[^:]*/||;s|:[^:]*/|, |g' + `' by configure.' + if test x"$ac_file" != x-; then + configure_input="$ac_file. $configure_input" + { $as_echo "$as_me:${as_lineno-$LINENO}: creating $ac_file" >&5 +$as_echo "$as_me: creating $ac_file" >&6;} + fi + # Neutralize special characters interpreted by sed in replacement strings. + case $configure_input in #( + *\&* | *\|* | *\\* ) + ac_sed_conf_input=`$as_echo "$configure_input" | + sed 's/[\\\\&|]/\\\\&/g'`;; #( + *) ac_sed_conf_input=$configure_input;; + esac + + case $ac_tag in + *:-:* | *:-) cat >"$ac_tmp/stdin" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 ;; + esac + ;; + esac + + ac_dir=`$as_dirname -- "$ac_file" || +$as_expr X"$ac_file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$ac_file" : 'X\(//\)[^/]' \| \ + X"$ac_file" : 'X\(//\)$' \| \ + X"$ac_file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$ac_file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir="$ac_dir"; as_fn_mkdir_p + ac_builddir=. + +case "$ac_dir" in +.) ac_dir_suffix= ac_top_builddir_sub=. ac_top_build_prefix= ;; +*) + ac_dir_suffix=/`$as_echo "$ac_dir" | sed 's|^\.[\\/]||'` + # A ".." for each directory in $ac_dir_suffix. + ac_top_builddir_sub=`$as_echo "$ac_dir_suffix" | sed 's|/[^\\/]*|/..|g;s|/||'` + case $ac_top_builddir_sub in + "") ac_top_builddir_sub=. ac_top_build_prefix= ;; + *) ac_top_build_prefix=$ac_top_builddir_sub/ ;; + esac ;; +esac +ac_abs_top_builddir=$ac_pwd +ac_abs_builddir=$ac_pwd$ac_dir_suffix +# for backward compatibility: +ac_top_builddir=$ac_top_build_prefix + +case $srcdir in + .) # We are building in place. + ac_srcdir=. + ac_top_srcdir=$ac_top_builddir_sub + ac_abs_top_srcdir=$ac_pwd ;; + [\\/]* | ?:[\\/]* ) # Absolute name. + ac_srcdir=$srcdir$ac_dir_suffix; + ac_top_srcdir=$srcdir + ac_abs_top_srcdir=$srcdir ;; + *) # Relative name. + ac_srcdir=$ac_top_build_prefix$srcdir$ac_dir_suffix + ac_top_srcdir=$ac_top_build_prefix$srcdir + ac_abs_top_srcdir=$ac_pwd/$srcdir ;; +esac +ac_abs_srcdir=$ac_abs_top_srcdir$ac_dir_suffix + + + case $ac_mode in + :F) + # + # CONFIG_FILE + # + + case $INSTALL in + [\\/$]* | ?:[\\/]* ) ac_INSTALL=$INSTALL ;; + *) ac_INSTALL=$ac_top_build_prefix$INSTALL ;; + esac + ac_MKDIR_P=$MKDIR_P + case $MKDIR_P in + [\\/$]* | ?:[\\/]* ) ;; + */*) ac_MKDIR_P=$ac_top_build_prefix$MKDIR_P ;; + esac +_ACEOF + +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +# If the template does not know about datarootdir, expand it. +# FIXME: This hack should be removed a few years after 2.60. +ac_datarootdir_hack=; ac_datarootdir_seen= +ac_sed_dataroot=' +/datarootdir/ { + p + q +} +/@datadir@/p +/@docdir@/p +/@infodir@/p +/@localedir@/p +/@mandir@/p' +case `eval "sed -n \"\$ac_sed_dataroot\" $ac_file_inputs"` in +*datarootdir*) ac_datarootdir_seen=yes;; +*@datadir@*|*@docdir@*|*@infodir@*|*@localedir@*|*@mandir@*) + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&5 +$as_echo "$as_me: WARNING: $ac_file_inputs seems to ignore the --datarootdir setting" >&2;} +_ACEOF +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 + ac_datarootdir_hack=' + s&@datadir@&$datadir&g + s&@docdir@&$docdir&g + s&@infodir@&$infodir&g + s&@localedir@&$localedir&g + s&@mandir@&$mandir&g + s&\\\${datarootdir}&$datarootdir&g' ;; +esac +_ACEOF + +# Neutralize VPATH when `$srcdir' = `.'. +# Shell code in configure.ac might set extrasub. +# FIXME: do we really want to maintain this feature? +cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1 +ac_sed_extra="$ac_vpsub +$extrasub +_ACEOF +cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1 +:t +/@[a-zA-Z_][a-zA-Z_0-9]*@/!b +s|@configure_input@|$ac_sed_conf_input|;t t +s&@top_builddir@&$ac_top_builddir_sub&;t t +s&@top_build_prefix@&$ac_top_build_prefix&;t t +s&@srcdir@&$ac_srcdir&;t t +s&@abs_srcdir@&$ac_abs_srcdir&;t t +s&@top_srcdir@&$ac_top_srcdir&;t t +s&@abs_top_srcdir@&$ac_abs_top_srcdir&;t t +s&@builddir@&$ac_builddir&;t t +s&@abs_builddir@&$ac_abs_builddir&;t t +s&@abs_top_builddir@&$ac_abs_top_builddir&;t t +s&@INSTALL@&$ac_INSTALL&;t t +s&@MKDIR_P@&$ac_MKDIR_P&;t t +$ac_datarootdir_hack +" +eval sed \"\$ac_sed_extra\" "$ac_file_inputs" | $AWK -f "$ac_tmp/subs.awk" \ + >$ac_tmp/out || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + +test -z "$ac_datarootdir_hack$ac_datarootdir_seen" && + { ac_out=`sed -n '/\${datarootdir}/p' "$ac_tmp/out"`; test -n "$ac_out"; } && + { ac_out=`sed -n '/^[ ]*datarootdir[ ]*:*=/p' \ + "$ac_tmp/out"`; test -z "$ac_out"; } && + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&5 +$as_echo "$as_me: WARNING: $ac_file contains a reference to the variable \`datarootdir' +which seems to be undefined. Please make sure it is defined" >&2;} + + rm -f "$ac_tmp/stdin" + case $ac_file in + -) cat "$ac_tmp/out" && rm -f "$ac_tmp/out";; + *) rm -f "$ac_file" && mv "$ac_tmp/out" "$ac_file";; + esac \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + ;; + :H) + # + # CONFIG_HEADER + # + if test x"$ac_file" != x-; then + { + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" + } >"$ac_tmp/config.h" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + if diff "$ac_file" "$ac_tmp/config.h" >/dev/null 2>&1; then + { $as_echo "$as_me:${as_lineno-$LINENO}: $ac_file is unchanged" >&5 +$as_echo "$as_me: $ac_file is unchanged" >&6;} + else + rm -f "$ac_file" + mv "$ac_tmp/config.h" "$ac_file" \ + || as_fn_error $? "could not create $ac_file" "$LINENO" 5 + fi + else + $as_echo "/* $configure_input */" \ + && eval '$AWK -f "$ac_tmp/defines.awk"' "$ac_file_inputs" \ + || as_fn_error $? "could not create -" "$LINENO" 5 + fi +# Compute "$ac_file"'s index in $config_headers. +_am_arg="$ac_file" +_am_stamp_count=1 +for _am_header in $config_headers :; do + case $_am_header in + $_am_arg | $_am_arg:* ) + break ;; + * ) + _am_stamp_count=`expr $_am_stamp_count + 1` ;; + esac +done +echo "timestamp for $_am_arg" >`$as_dirname -- "$_am_arg" || +$as_expr X"$_am_arg" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$_am_arg" : 'X\(//\)[^/]' \| \ + X"$_am_arg" : 'X\(//\)$' \| \ + X"$_am_arg" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$_am_arg" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'`/stamp-h$_am_stamp_count + ;; + + :C) { $as_echo "$as_me:${as_lineno-$LINENO}: executing $ac_file commands" >&5 +$as_echo "$as_me: executing $ac_file commands" >&6;} + ;; + esac + + + case $ac_file$ac_mode in + "depfiles":C) test x"$AMDEP_TRUE" != x"" || { + # Older Autoconf quotes --file arguments for eval, but not when files + # are listed without --file. Let's play safe and only enable the eval + # if we detect the quoting. + case $CONFIG_FILES in + *\'*) eval set x "$CONFIG_FILES" ;; + *) set x $CONFIG_FILES ;; + esac + shift + for mf + do + # Strip MF so we end up with the name of the file. + mf=`echo "$mf" | sed -e 's/:.*$//'` + # Check whether this is an Automake generated Makefile or not. + # We used to match only the files named 'Makefile.in', but + # some people rename them; so instead we look at the file content. + # Grep'ing the first line is not enough: some people post-process + # each Makefile.in and add a new line on top of each file to say so. + # Grep'ing the whole file is not good either: AIX grep has a line + # limit of 2048, but all sed's we know have understand at least 4000. + if sed -n 's,^#.*generated by automake.*,X,p' "$mf" | grep X >/dev/null 2>&1; then + dirpart=`$as_dirname -- "$mf" || +$as_expr X"$mf" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$mf" : 'X\(//\)[^/]' \| \ + X"$mf" : 'X\(//\)$' \| \ + X"$mf" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$mf" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + else + continue + fi + # Extract the definition of DEPDIR, am__include, and am__quote + # from the Makefile without running 'make'. + DEPDIR=`sed -n 's/^DEPDIR = //p' < "$mf"` + test -z "$DEPDIR" && continue + am__include=`sed -n 's/^am__include = //p' < "$mf"` + test -z "$am__include" && continue + am__quote=`sed -n 's/^am__quote = //p' < "$mf"` + # Find all dependency output files, they are included files with + # $(DEPDIR) in their names. We invoke sed twice because it is the + # simplest approach to changing $(DEPDIR) to its actual value in the + # expansion. + for file in `sed -n " + s/^$am__include $am__quote\(.*(DEPDIR).*\)$am__quote"'$/\1/p' <"$mf" | \ + sed -e 's/\$(DEPDIR)/'"$DEPDIR"'/g'`; do + # Make sure the directory exists. + test -f "$dirpart/$file" && continue + fdir=`$as_dirname -- "$file" || +$as_expr X"$file" : 'X\(.*[^/]\)//*[^/][^/]*/*$' \| \ + X"$file" : 'X\(//\)[^/]' \| \ + X"$file" : 'X\(//\)$' \| \ + X"$file" : 'X\(/\)' \| . 2>/dev/null || +$as_echo X"$file" | + sed '/^X\(.*[^/]\)\/\/*[^/][^/]*\/*$/{ + s//\1/ + q + } + /^X\(\/\/\)[^/].*/{ + s//\1/ + q + } + /^X\(\/\/\)$/{ + s//\1/ + q + } + /^X\(\/\).*/{ + s//\1/ + q + } + s/.*/./; q'` + as_dir=$dirpart/$fdir; as_fn_mkdir_p + # echo "creating $dirpart/$file" + echo '# dummy' > "$dirpart/$file" + done + done +} + ;; + + esac +done # for ac_tag + + +as_fn_exit 0 +_ACEOF +ac_clean_files=$ac_clean_files_save + +test $ac_write_fail = 0 || + as_fn_error $? "write failure creating $CONFIG_STATUS" "$LINENO" 5 + + +# configure is writing to config.log, and then calls config.status. +# config.status does its own redirection, appending to config.log. +# Unfortunately, on DOS this fails, as config.log is still kept open +# by configure, so config.status won't be able to write to it; its +# output is simply discarded. So we exec the FD to /dev/null, +# effectively closing config.log, so it can be properly (re)opened and +# appended to by config.status. When coming back to configure, we +# need to make the FD available again. +if test "$no_create" != yes; then + ac_cs_success=: + ac_config_status_args= + test "$silent" = yes && + ac_config_status_args="$ac_config_status_args --quiet" + exec 5>/dev/null + $SHELL $CONFIG_STATUS $ac_config_status_args || ac_cs_success=false + exec 5>>config.log + # Use ||, not &&, to avoid exiting from the if with $? = 1, which + # would make configure fail if this is the last instruction. + $ac_cs_success || as_fn_exit 1 +fi +if test -n "$ac_unrecognized_opts" && test "$enable_option_checking" != no; then + { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: unrecognized options: $ac_unrecognized_opts" >&5 +$as_echo "$as_me: WARNING: unrecognized options: $ac_unrecognized_opts" >&2;} +fi + diff --git a/camera/configure.ac b/camera/configure.ac new file mode 100644 index 0000000..9431b4f --- /dev/null +++ b/camera/configure.ac @@ -0,0 +1,53 @@ +AC_PREREQ([2.69]) +AC_INIT([CameraManager], [0.01], [valentin.verdier03@gmail.com]) + +CFLAGS="$CFLAGS -Wall" +CPPFLAGS="$CPPFLAGS" +LDFLAGS="$LDFLAGS" + +AC_ARG_ENABLE([debug], [Enable debug mode], [debug=$enableval], [debug='no']) +case "$debug" in + 'yes') + CFLAGS="$CFLAGS -g" + AC_DEFINE([HAVE_DEBUG], [1], ['Debug mode is enabled']) + ;; + 'no') + CFLAGS="$CFLAGS -O2" + LDFLAGS="$LDFLAGS -s" + ;; + *) + AC_MSG_ERROR([bad value for --enable-debug]) + ;; +esac + +AC_CONFIG_SRCDIR([configure.ac]) +AC_CONFIG_HEADERS([include/config.h]) +AM_INIT_AUTOMAKE([foreign]) + +AC_PROG_CC([gcc]) + +AC_LANG_PUSH([C]) + +CAMERAMANAGER_CFLAGS='' +CAMERAMANAGER_CPPFLAGS='-I../include/' +CAMERAMANAGER_LIBS='' + +SAVE_CPPFLAGS=$CPPFLAGS +CPPFLAGS="$CPPFLAGS -I/usr/include/gstreamer-1.0/ -I/usr/lib/gstreamer-1.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/" +AC_CHECK_HEADERS([gst/gst.h], + [ + CAMERAMANAGER_LIBS="$CAMERAMANAGER_LIBS -lgstreamer-1.0 -lgobject-2.0 -lglib-2.0" + CAMERAMANAGER_CFLAGS="$CAMERAMANAGER_CFLAGS -pthread" + CAMERAMANAGER_CPPFLAGS="$CAMERAMANAGER_CPPFLAGS -I/usr/include/gstreamer-1.0/ -I/usr/lib/gstreamer-1.0/include/ -I/usr/include/glib-2.0/ -I/usr/lib/glib-2.0/include/" + ], + AC_MSG_ERROR([This program need gstreamer >= 1.0]) +) +CPPFLAGS=$SAVE_CPPFLAGS + +AC_LANG_POP([C]) + +AC_SUBST([CAMERAMANAGER_CFLAGS], [$CAMERAMANAGER_CFLAGS]) +AC_SUBST([CAMERAMANAGER_CPPFLAGS], [$CAMERAMANAGER_CPPFLAGS]) +AC_SUBST([CAMERAMANAGER_LIBS], [$CAMERAMANAGER_LIBS]) + +AC_OUTPUT([Makefile cameramanager/Makefile]) diff --git a/camera/depcomp b/camera/depcomp new file mode 100755 index 0000000..fc98710 --- /dev/null +++ b/camera/depcomp @@ -0,0 +1,791 @@ +#! /bin/sh +# depcomp - compile a program generating dependencies as side-effects + +scriptversion=2013-05-30.07; # UTC + +# Copyright (C) 1999-2014 Free Software Foundation, Inc. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +# Originally written by Alexandre Oliva . + +case $1 in + '') + echo "$0: No command. Try '$0 --help' for more information." 1>&2 + exit 1; + ;; + -h | --h*) + cat <<\EOF +Usage: depcomp [--help] [--version] PROGRAM [ARGS] + +Run PROGRAMS ARGS to compile a file, generating dependencies +as side-effects. + +Environment variables: + depmode Dependency tracking mode. + source Source file read by 'PROGRAMS ARGS'. + object Object file output by 'PROGRAMS ARGS'. + DEPDIR directory where to store dependencies. + depfile Dependency file to output. + tmpdepfile Temporary file to use when outputting dependencies. + libtool Whether libtool is used (yes/no). + +Report bugs to . +EOF + exit $? + ;; + -v | --v*) + echo "depcomp $scriptversion" + exit $? + ;; +esac + +# Get the directory component of the given path, and save it in the +# global variables '$dir'. Note that this directory component will +# be either empty or ending with a '/' character. This is deliberate. +set_dir_from () +{ + case $1 in + */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;; + *) dir=;; + esac +} + +# Get the suffix-stripped basename of the given path, and save it the +# global variable '$base'. +set_base_from () +{ + base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'` +} + +# If no dependency file was actually created by the compiler invocation, +# we still have to create a dummy depfile, to avoid errors with the +# Makefile "include basename.Plo" scheme. +make_dummy_depfile () +{ + echo "#dummy" > "$depfile" +} + +# Factor out some common post-processing of the generated depfile. +# Requires the auxiliary global variable '$tmpdepfile' to be set. +aix_post_process_depfile () +{ + # If the compiler actually managed to produce a dependency file, + # post-process it. + if test -f "$tmpdepfile"; then + # Each line is of the form 'foo.o: dependency.h'. + # Do two passes, one to just change these to + # $object: dependency.h + # and one to simply output + # dependency.h: + # which is needed to avoid the deleted-header problem. + { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile" + sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile" + } > "$depfile" + rm -f "$tmpdepfile" + else + make_dummy_depfile + fi +} + +# A tabulation character. +tab=' ' +# A newline character. +nl=' +' +# Character ranges might be problematic outside the C locale. +# These definitions help. +upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ +lower=abcdefghijklmnopqrstuvwxyz +digits=0123456789 +alpha=${upper}${lower} + +if test -z "$depmode" || test -z "$source" || test -z "$object"; then + echo "depcomp: Variables source, object and depmode must be set" 1>&2 + exit 1 +fi + +# Dependencies for sub/bar.o or sub/bar.obj go into sub/.deps/bar.Po. +depfile=${depfile-`echo "$object" | + sed 's|[^\\/]*$|'${DEPDIR-.deps}'/&|;s|\.\([^.]*\)$|.P\1|;s|Pobj$|Po|'`} +tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`} + +rm -f "$tmpdepfile" + +# Avoid interferences from the environment. +gccflag= dashmflag= + +# Some modes work just like other modes, but use different flags. We +# parameterize here, but still list the modes in the big case below, +# to make depend.m4 easier to write. Note that we *cannot* use a case +# here, because this file can only contain one case statement. +if test "$depmode" = hp; then + # HP compiler uses -M and no extra arg. + gccflag=-M + depmode=gcc +fi + +if test "$depmode" = dashXmstdout; then + # This is just like dashmstdout with a different argument. + dashmflag=-xM + depmode=dashmstdout +fi + +cygpath_u="cygpath -u -f -" +if test "$depmode" = msvcmsys; then + # This is just like msvisualcpp but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvisualcpp +fi + +if test "$depmode" = msvc7msys; then + # This is just like msvc7 but w/o cygpath translation. + # Just convert the backslash-escaped backslashes to single forward + # slashes to satisfy depend.m4 + cygpath_u='sed s,\\\\,/,g' + depmode=msvc7 +fi + +if test "$depmode" = xlc; then + # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information. + gccflag=-qmakedep=gcc,-MF + depmode=gcc +fi + +case "$depmode" in +gcc3) +## gcc 3 implements dependency tracking that does exactly what +## we want. Yay! Note: for some reason libtool 1.4 doesn't like +## it if -MD -MP comes after the -MF stuff. Hmm. +## Unfortunately, FreeBSD c89 acceptance of flags depends upon +## the command line argument order; so add the flags where they +## appear in depend2.am. Note that the slowdown incurred here +## affects only configure: in makefiles, %FASTDEP% shortcuts this. + for arg + do + case $arg in + -c) set fnord "$@" -MT "$object" -MD -MP -MF "$tmpdepfile" "$arg" ;; + *) set fnord "$@" "$arg" ;; + esac + shift # fnord + shift # $arg + done + "$@" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + mv "$tmpdepfile" "$depfile" + ;; + +gcc) +## Note that this doesn't just cater to obsosete pre-3.x GCC compilers. +## but also to in-use compilers like IMB xlc/xlC and the HP C compiler. +## (see the conditional assignment to $gccflag above). +## There are various ways to get dependency output from gcc. Here's +## why we pick this rather obscure method: +## - Don't want to use -MD because we'd like the dependencies to end +## up in a subdir. Having to rename by hand is ugly. +## (We might end up doing this anyway to support other compilers.) +## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like +## -MM, not -M (despite what the docs say). Also, it might not be +## supported by the other compilers which use the 'gcc' depmode. +## - Using -M directly means running the compiler twice (even worse +## than renaming). + if test -z "$gccflag"; then + gccflag=-MD, + fi + "$@" -Wp,"$gccflag$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The second -e expression handles DOS-style file names with drive + # letters. + sed -e 's/^[^:]*: / /' \ + -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile" +## This next piece of magic avoids the "deleted header file" problem. +## The problem is that when a header file which appears in a .P file +## is deleted, the dependency causes make to die (because there is +## typically no way to rebuild the header). We avoid this by adding +## dummy dependencies for each header file. Too bad gcc doesn't do +## this for us directly. +## Some versions of gcc put a space before the ':'. On the theory +## that the space means something, we add a space to the output as +## well. hp depmode also adds that space, but also prefixes the VPATH +## to the object. Take care to not repeat it in the output. +## Some versions of the HPUX 10.20 sed can't process this invocation +## correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +sgi) + if test "$libtool" = yes; then + "$@" "-Wp,-MDupdate,$tmpdepfile" + else + "$@" -MDupdate "$tmpdepfile" + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + + if test -f "$tmpdepfile"; then # yes, the sourcefile depend on other files + echo "$object : \\" > "$depfile" + # Clip off the initial element (the dependent). Don't try to be + # clever and replace this with sed code, as IRIX sed won't handle + # lines with more than a fixed number of characters (4096 in + # IRIX 6.2 sed, 8192 in IRIX 6.5). We also remove comment lines; + # the IRIX cc adds comments like '#:fec' to the end of the + # dependency line. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' \ + | tr "$nl" ' ' >> "$depfile" + echo >> "$depfile" + # The second pass generates a dummy entry for each header file. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \ + >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" + ;; + +xlc) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +aix) + # The C for AIX Compiler uses -M and outputs the dependencies + # in a .u file. In older versions, this file always lives in the + # current directory. Also, the AIX compiler puts '$object:' at the + # start of each line; $object doesn't have directory information. + # Version 6 uses the directory in both cases. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.u + tmpdepfile2=$base.u + tmpdepfile3=$dir.libs/$base.u + "$@" -Wc,-M + else + tmpdepfile1=$dir$base.u + tmpdepfile2=$dir$base.u + tmpdepfile3=$dir$base.u + "$@" -M + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + aix_post_process_depfile + ;; + +tcc) + # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26 + # FIXME: That version still under development at the moment of writing. + # Make that this statement remains true also for stable, released + # versions. + # It will wrap lines (doesn't matter whether long or short) with a + # trailing '\', as in: + # + # foo.o : \ + # foo.c \ + # foo.h \ + # + # It will put a trailing '\' even on the last line, and will use leading + # spaces rather than leading tabs (at least since its commit 0394caf7 + # "Emit spaces for -MD"). + "$@" -MD -MF "$tmpdepfile" + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'. + # We have to change lines of the first kind to '$object: \'. + sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile" + # And for each line of the second kind, we have to emit a 'dep.h:' + # dummy dependency, to avoid the deleted-header problem. + sed -n -e 's|^ *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile" + rm -f "$tmpdepfile" + ;; + +## The order of this option in the case statement is important, since the +## shell code in configure will try each of these formats in the order +## listed in this file. A plain '-MD' option would be understood by many +## compilers, so we must ensure this comes after the gcc and icc options. +pgcc) + # Portland's C compiler understands '-MD'. + # Will always output deps to 'file.d' where file is the root name of the + # source file under compilation, even if file resides in a subdirectory. + # The object file name does not affect the name of the '.d' file. + # pgcc 10.2 will output + # foo.o: sub/foo.c sub/foo.h + # and will wrap long lines using '\' : + # foo.o: sub/foo.c ... \ + # sub/foo.h ... \ + # ... + set_dir_from "$object" + # Use the source, not the object, to determine the base name, since + # that's sadly what pgcc will do too. + set_base_from "$source" + tmpdepfile=$base.d + + # For projects that build the same source file twice into different object + # files, the pgcc approach of using the *source* file root name can cause + # problems in parallel builds. Use a locking strategy to avoid stomping on + # the same $tmpdepfile. + lockdir=$base.d-lock + trap " + echo '$0: caught signal, cleaning up...' >&2 + rmdir '$lockdir' + exit 1 + " 1 2 13 15 + numtries=100 + i=$numtries + while test $i -gt 0; do + # mkdir is a portable test-and-set. + if mkdir "$lockdir" 2>/dev/null; then + # This process acquired the lock. + "$@" -MD + stat=$? + # Release the lock. + rmdir "$lockdir" + break + else + # If the lock is being held by a different process, wait + # until the winning process is done or we timeout. + while test -d "$lockdir" && test $i -gt 0; do + sleep 1 + i=`expr $i - 1` + done + fi + i=`expr $i - 1` + done + trap - 1 2 13 15 + if test $i -le 0; then + echo "$0: failed to acquire lock after $numtries attempts" >&2 + echo "$0: check lockdir '$lockdir'" >&2 + exit 1 + fi + + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + # Each line is of the form `foo.o: dependent.h', + # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'. + # Do two passes, one to just change these to + # `$object: dependent.h' and one to simply `dependent.h:'. + sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +hp2) + # The "hp" stanza above does not work with aCC (C++) and HP's ia64 + # compilers, which have integrated preprocessors. The correct option + # to use with these is +Maked; it writes dependencies to a file named + # 'foo.d', which lands next to the object file, wherever that + # happens to be. + # Much of this is similar to the tru64 case; see comments there. + set_dir_from "$object" + set_base_from "$object" + if test "$libtool" = yes; then + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir.libs/$base.d + "$@" -Wc,+Maked + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + "$@" +Maked + fi + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" + do + test -f "$tmpdepfile" && break + done + if test -f "$tmpdepfile"; then + sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile" + # Add 'dependent.h:' lines. + sed -ne '2,${ + s/^ *// + s/ \\*$// + s/$/:/ + p + }' "$tmpdepfile" >> "$depfile" + else + make_dummy_depfile + fi + rm -f "$tmpdepfile" "$tmpdepfile2" + ;; + +tru64) + # The Tru64 compiler uses -MD to generate dependencies as a side + # effect. 'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'. + # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put + # dependencies in 'foo.d' instead, so we check for that too. + # Subdirectories are respected. + set_dir_from "$object" + set_base_from "$object" + + if test "$libtool" = yes; then + # Libtool generates 2 separate objects for the 2 libraries. These + # two compilations output dependencies in $dir.libs/$base.o.d and + # in $dir$base.o.d. We have to check for both files, because + # one of the two compilations can be disabled. We should prefer + # $dir$base.o.d over $dir.libs/$base.o.d because the latter is + # automatically cleaned when .libs/ is deleted, while ignoring + # the former would cause a distcleancheck panic. + tmpdepfile1=$dir$base.o.d # libtool 1.5 + tmpdepfile2=$dir.libs/$base.o.d # Likewise. + tmpdepfile3=$dir.libs/$base.d # Compaq CCC V6.2-504 + "$@" -Wc,-MD + else + tmpdepfile1=$dir$base.d + tmpdepfile2=$dir$base.d + tmpdepfile3=$dir$base.d + "$@" -MD + fi + + stat=$? + if test $stat -ne 0; then + rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + exit $stat + fi + + for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" + do + test -f "$tmpdepfile" && break + done + # Same post-processing that is required for AIX mode. + aix_post_process_depfile + ;; + +msvc7) + if test "$libtool" = yes; then + showIncludes=-Wc,-showIncludes + else + showIncludes=-showIncludes + fi + "$@" $showIncludes > "$tmpdepfile" + stat=$? + grep -v '^Note: including file: ' "$tmpdepfile" + if test $stat -ne 0; then + rm -f "$tmpdepfile" + exit $stat + fi + rm -f "$depfile" + echo "$object : \\" > "$depfile" + # The first sed program below extracts the file names and escapes + # backslashes for cygpath. The second sed program outputs the file + # name when reading, but also accumulates all include files in the + # hold buffer in order to output them again at the end. This only + # works with sed implementations that can handle large buffers. + sed < "$tmpdepfile" -n ' +/^Note: including file: *\(.*\)/ { + s//\1/ + s/\\/\\\\/g + p +}' | $cygpath_u | sort -u | sed -n ' +s/ /\\ /g +s/\(.*\)/'"$tab"'\1 \\/p +s/.\(.*\) \\/\1:/ +H +$ { + s/.*/'"$tab"'/ + G + p +}' >> "$depfile" + echo >> "$depfile" # make sure the fragment doesn't end with a backslash + rm -f "$tmpdepfile" + ;; + +msvc7msys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +#nosideeffect) + # This comment above is used by automake to tell side-effect + # dependency tracking mechanisms from slower ones. + +dashmstdout) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout, regardless of -o. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + test -z "$dashmflag" && dashmflag=-M + # Require at least two characters before searching for ':' + # in the target name. This is to cope with DOS-style filenames: + # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise. + "$@" $dashmflag | + sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile" + rm -f "$depfile" + cat < "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process this sed invocation + # correctly. Breaking it into two sed invocations is a workaround. + tr ' ' "$nl" < "$tmpdepfile" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +dashXmstdout) + # This case only exists to satisfy depend.m4. It is never actually + # run, as this mode is specially recognized in the preamble. + exit 1 + ;; + +makedepend) + "$@" || exit $? + # Remove any Libtool call + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + # X makedepend + shift + cleared=no eat=no + for arg + do + case $cleared in + no) + set ""; shift + cleared=yes ;; + esac + if test $eat = yes; then + eat=no + continue + fi + case "$arg" in + -D*|-I*) + set fnord "$@" "$arg"; shift ;; + # Strip any option that makedepend may not understand. Remove + # the object too, otherwise makedepend will parse it as a source file. + -arch) + eat=yes ;; + -*|$object) + ;; + *) + set fnord "$@" "$arg"; shift ;; + esac + done + obj_suffix=`echo "$object" | sed 's/^.*\././'` + touch "$tmpdepfile" + ${MAKEDEPEND-makedepend} -o"$obj_suffix" -f"$tmpdepfile" "$@" + rm -f "$depfile" + # makedepend may prepend the VPATH from the source file name to the object. + # No need to regex-escape $object, excess matching of '.' is harmless. + sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile" + # Some versions of the HPUX 10.20 sed can't process the last invocation + # correctly. Breaking it into two sed invocations is a workaround. + sed '1,2d' "$tmpdepfile" \ + | tr ' ' "$nl" \ + | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \ + | sed -e 's/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" "$tmpdepfile".bak + ;; + +cpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + # Remove '-o $object'. + IFS=" " + for arg + do + case $arg in + -o) + shift + ;; + $object) + shift + ;; + *) + set fnord "$@" "$arg" + shift # fnord + shift # $arg + ;; + esac + done + + "$@" -E \ + | sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \ + | sed '$ s: \\$::' > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + cat < "$tmpdepfile" >> "$depfile" + sed < "$tmpdepfile" '/^$/d;s/^ //;s/ \\$//;s/$/ :/' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvisualcpp) + # Important note: in order to support this mode, a compiler *must* + # always write the preprocessed file to stdout. + "$@" || exit $? + + # Remove the call to Libtool. + if test "$libtool" = yes; then + while test "X$1" != 'X--mode=compile'; do + shift + done + shift + fi + + IFS=" " + for arg + do + case "$arg" in + -o) + shift + ;; + $object) + shift + ;; + "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI") + set fnord "$@" + shift + shift + ;; + *) + set fnord "$@" "$arg" + shift + shift + ;; + esac + done + "$@" -E 2>/dev/null | + sed -n '/^#line [0-9][0-9]* "\([^"]*\)"/ s::\1:p' | $cygpath_u | sort -u > "$tmpdepfile" + rm -f "$depfile" + echo "$object : \\" > "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::'"$tab"'\1 \\:p' >> "$depfile" + echo "$tab" >> "$depfile" + sed < "$tmpdepfile" -n -e 's% %\\ %g' -e '/^\(.*\)$/ s::\1\::p' >> "$depfile" + rm -f "$tmpdepfile" + ;; + +msvcmsys) + # This case exists only to let depend.m4 do its work. It works by + # looking at the text of this script. This case will never be run, + # since it is checked for above. + exit 1 + ;; + +none) + exec "$@" + ;; + +*) + echo "Unknown depmode $depmode" 1>&2 + exit 1 + ;; +esac + +exit 0 + +# Local Variables: +# mode: shell-script +# sh-indentation: 2 +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/camera/include/config.h.in b/camera/include/config.h.in new file mode 100644 index 0000000..cdf4cb4 --- /dev/null +++ b/camera/include/config.h.in @@ -0,0 +1,61 @@ +/* include/config.h.in. Generated from configure.ac by autoheader. */ + +/* 'Debug mode is enabled' */ +#undef HAVE_DEBUG + +/* Define to 1 if you have the header file. */ +#undef HAVE_GST_GST_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_INTTYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_MEMORY_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDINT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STDLIB_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRINGS_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_STRING_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_STAT_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_SYS_TYPES_H + +/* Define to 1 if you have the header file. */ +#undef HAVE_UNISTD_H + +/* Name of package */ +#undef PACKAGE + +/* Define to the address where bug reports for this package should be sent. */ +#undef PACKAGE_BUGREPORT + +/* Define to the full name of this package. */ +#undef PACKAGE_NAME + +/* Define to the full name and version of this package. */ +#undef PACKAGE_STRING + +/* Define to the one symbol short name of this package. */ +#undef PACKAGE_TARNAME + +/* Define to the home page for this package. */ +#undef PACKAGE_URL + +/* Define to the version of this package. */ +#undef PACKAGE_VERSION + +/* Define to 1 if you have the ANSI C header files. */ +#undef STDC_HEADERS + +/* Version number of package */ +#undef VERSION diff --git a/camera/install-sh b/camera/install-sh new file mode 100755 index 0000000..0b0fdcb --- /dev/null +++ b/camera/install-sh @@ -0,0 +1,501 @@ +#!/bin/sh +# install - install a program, script, or datafile + +scriptversion=2013-12-25.23; # UTC + +# This originates from X11R5 (mit/util/scripts/install.sh), which was +# later released in X11R6 (xc/config/util/install.sh) with the +# following copyright and license. +# +# Copyright (C) 1994 X Consortium +# +# Permission is hereby granted, free of charge, to any person obtaining a copy +# of this software and associated documentation files (the "Software"), to +# deal in the Software without restriction, including without limitation the +# rights to use, copy, modify, merge, publish, distribute, sublicense, and/or +# sell copies of the Software, and to permit persons to whom the Software is +# furnished to do so, subject to the following conditions: +# +# The above copyright notice and this permission notice shall be included in +# all copies or substantial portions of the Software. +# +# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +# IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +# FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +# X CONSORTIUM BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN +# AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNEC- +# TION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. +# +# Except as contained in this notice, the name of the X Consortium shall not +# be used in advertising or otherwise to promote the sale, use or other deal- +# ings in this Software without prior written authorization from the X Consor- +# tium. +# +# +# FSF changes to this file are in the public domain. +# +# Calling this script install-sh is preferred over install.sh, to prevent +# 'make' implicit rules from creating a file called install from it +# when there is no Makefile. +# +# This script is compatible with the BSD install script, but was written +# from scratch. + +tab=' ' +nl=' +' +IFS=" $tab$nl" + +# Set DOITPROG to "echo" to test this script. + +doit=${DOITPROG-} +doit_exec=${doit:-exec} + +# Put in absolute file names if you don't have them in your path; +# or use environment vars. + +chgrpprog=${CHGRPPROG-chgrp} +chmodprog=${CHMODPROG-chmod} +chownprog=${CHOWNPROG-chown} +cmpprog=${CMPPROG-cmp} +cpprog=${CPPROG-cp} +mkdirprog=${MKDIRPROG-mkdir} +mvprog=${MVPROG-mv} +rmprog=${RMPROG-rm} +stripprog=${STRIPPROG-strip} + +posix_mkdir= + +# Desired mode of installed file. +mode=0755 + +chgrpcmd= +chmodcmd=$chmodprog +chowncmd= +mvcmd=$mvprog +rmcmd="$rmprog -f" +stripcmd= + +src= +dst= +dir_arg= +dst_arg= + +copy_on_change=false +is_target_a_directory=possibly + +usage="\ +Usage: $0 [OPTION]... [-T] SRCFILE DSTFILE + or: $0 [OPTION]... SRCFILES... DIRECTORY + or: $0 [OPTION]... -t DIRECTORY SRCFILES... + or: $0 [OPTION]... -d DIRECTORIES... + +In the 1st form, copy SRCFILE to DSTFILE. +In the 2nd and 3rd, copy all SRCFILES to DIRECTORY. +In the 4th, create DIRECTORIES. + +Options: + --help display this help and exit. + --version display version info and exit. + + -c (ignored) + -C install only if different (preserve the last data modification time) + -d create directories instead of installing files. + -g GROUP $chgrpprog installed files to GROUP. + -m MODE $chmodprog installed files to MODE. + -o USER $chownprog installed files to USER. + -s $stripprog installed files. + -t DIRECTORY install into DIRECTORY. + -T report an error if DSTFILE is a directory. + +Environment variables override the default commands: + CHGRPPROG CHMODPROG CHOWNPROG CMPPROG CPPROG MKDIRPROG MVPROG + RMPROG STRIPPROG +" + +while test $# -ne 0; do + case $1 in + -c) ;; + + -C) copy_on_change=true;; + + -d) dir_arg=true;; + + -g) chgrpcmd="$chgrpprog $2" + shift;; + + --help) echo "$usage"; exit $?;; + + -m) mode=$2 + case $mode in + *' '* | *"$tab"* | *"$nl"* | *'*'* | *'?'* | *'['*) + echo "$0: invalid mode: $mode" >&2 + exit 1;; + esac + shift;; + + -o) chowncmd="$chownprog $2" + shift;; + + -s) stripcmd=$stripprog;; + + -t) + is_target_a_directory=always + dst_arg=$2 + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + shift;; + + -T) is_target_a_directory=never;; + + --version) echo "$0 $scriptversion"; exit $?;; + + --) shift + break;; + + -*) echo "$0: invalid option: $1" >&2 + exit 1;; + + *) break;; + esac + shift +done + +# We allow the use of options -d and -T together, by making -d +# take the precedence; this is for compatibility with GNU install. + +if test -n "$dir_arg"; then + if test -n "$dst_arg"; then + echo "$0: target directory not allowed when installing a directory." >&2 + exit 1 + fi +fi + +if test $# -ne 0 && test -z "$dir_arg$dst_arg"; then + # When -d is used, all remaining arguments are directories to create. + # When -t is used, the destination is already specified. + # Otherwise, the last argument is the destination. Remove it from $@. + for arg + do + if test -n "$dst_arg"; then + # $@ is not empty: it contains at least $arg. + set fnord "$@" "$dst_arg" + shift # fnord + fi + shift # arg + dst_arg=$arg + # Protect names problematic for 'test' and other utilities. + case $dst_arg in + -* | [=\(\)!]) dst_arg=./$dst_arg;; + esac + done +fi + +if test $# -eq 0; then + if test -z "$dir_arg"; then + echo "$0: no input file specified." >&2 + exit 1 + fi + # It's OK to call 'install-sh -d' without argument. + # This can happen when creating conditional directories. + exit 0 +fi + +if test -z "$dir_arg"; then + if test $# -gt 1 || test "$is_target_a_directory" = always; then + if test ! -d "$dst_arg"; then + echo "$0: $dst_arg: Is not a directory." >&2 + exit 1 + fi + fi +fi + +if test -z "$dir_arg"; then + do_exit='(exit $ret); exit $ret' + trap "ret=129; $do_exit" 1 + trap "ret=130; $do_exit" 2 + trap "ret=141; $do_exit" 13 + trap "ret=143; $do_exit" 15 + + # Set umask so as not to create temps with too-generous modes. + # However, 'strip' requires both read and write access to temps. + case $mode in + # Optimize common cases. + *644) cp_umask=133;; + *755) cp_umask=22;; + + *[0-7]) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw='% 200' + fi + cp_umask=`expr '(' 777 - $mode % 1000 ')' $u_plus_rw`;; + *) + if test -z "$stripcmd"; then + u_plus_rw= + else + u_plus_rw=,u+rw + fi + cp_umask=$mode$u_plus_rw;; + esac +fi + +for src +do + # Protect names problematic for 'test' and other utilities. + case $src in + -* | [=\(\)!]) src=./$src;; + esac + + if test -n "$dir_arg"; then + dst=$src + dstdir=$dst + test -d "$dstdir" + dstdir_status=$? + else + + # Waiting for this to be detected by the "$cpprog $src $dsttmp" command + # might cause directories to be created, which would be especially bad + # if $src (and thus $dsttmp) contains '*'. + if test ! -f "$src" && test ! -d "$src"; then + echo "$0: $src does not exist." >&2 + exit 1 + fi + + if test -z "$dst_arg"; then + echo "$0: no destination specified." >&2 + exit 1 + fi + dst=$dst_arg + + # If destination is a directory, append the input filename; won't work + # if double slashes aren't ignored. + if test -d "$dst"; then + if test "$is_target_a_directory" = never; then + echo "$0: $dst_arg: Is a directory" >&2 + exit 1 + fi + dstdir=$dst + dst=$dstdir/`basename "$src"` + dstdir_status=0 + else + dstdir=`dirname "$dst"` + test -d "$dstdir" + dstdir_status=$? + fi + fi + + obsolete_mkdir_used=false + + if test $dstdir_status != 0; then + case $posix_mkdir in + '') + # Create intermediate dirs using mode 755 as modified by the umask. + # This is like FreeBSD 'install' as of 1997-10-28. + umask=`umask` + case $stripcmd.$umask in + # Optimize common cases. + *[2367][2367]) mkdir_umask=$umask;; + .*0[02][02] | .[02][02] | .[02]) mkdir_umask=22;; + + *[0-7]) + mkdir_umask=`expr $umask + 22 \ + - $umask % 100 % 40 + $umask % 20 \ + - $umask % 10 % 4 + $umask % 2 + `;; + *) mkdir_umask=$umask,go-w;; + esac + + # With -d, create the new directory with the user-specified mode. + # Otherwise, rely on $mkdir_umask. + if test -n "$dir_arg"; then + mkdir_mode=-m$mode + else + mkdir_mode= + fi + + posix_mkdir=false + case $umask in + *[123567][0-7][0-7]) + # POSIX mkdir -p sets u+wx bits regardless of umask, which + # is incompatible with FreeBSD 'install' when (umask & 300) != 0. + ;; + *) + tmpdir=${TMPDIR-/tmp}/ins$RANDOM-$$ + trap 'ret=$?; rmdir "$tmpdir/d" "$tmpdir" 2>/dev/null; exit $ret' 0 + + if (umask $mkdir_umask && + exec $mkdirprog $mkdir_mode -p -- "$tmpdir/d") >/dev/null 2>&1 + then + if test -z "$dir_arg" || { + # Check for POSIX incompatibilities with -m. + # HP-UX 11.23 and IRIX 6.5 mkdir -m -p sets group- or + # other-writable bit of parent directory when it shouldn't. + # FreeBSD 6.1 mkdir -m -p sets mode of existing directory. + ls_ld_tmpdir=`ls -ld "$tmpdir"` + case $ls_ld_tmpdir in + d????-?r-*) different_mode=700;; + d????-?--*) different_mode=755;; + *) false;; + esac && + $mkdirprog -m$different_mode -p -- "$tmpdir" && { + ls_ld_tmpdir_1=`ls -ld "$tmpdir"` + test "$ls_ld_tmpdir" = "$ls_ld_tmpdir_1" + } + } + then posix_mkdir=: + fi + rmdir "$tmpdir/d" "$tmpdir" + else + # Remove any dirs left behind by ancient mkdir implementations. + rmdir ./$mkdir_mode ./-p ./-- 2>/dev/null + fi + trap '' 0;; + esac;; + esac + + if + $posix_mkdir && ( + umask $mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir" + ) + then : + else + + # The umask is ridiculous, or mkdir does not conform to POSIX, + # or it failed possibly due to a race condition. Create the + # directory the slow way, step by step, checking for races as we go. + + case $dstdir in + /*) prefix='/';; + [-=\(\)!]*) prefix='./';; + *) prefix='';; + esac + + oIFS=$IFS + IFS=/ + set -f + set fnord $dstdir + shift + set +f + IFS=$oIFS + + prefixes= + + for d + do + test X"$d" = X && continue + + prefix=$prefix$d + if test -d "$prefix"; then + prefixes= + else + if $posix_mkdir; then + (umask=$mkdir_umask && + $doit_exec $mkdirprog $mkdir_mode -p -- "$dstdir") && break + # Don't fail if two instances are running concurrently. + test -d "$prefix" || exit 1 + else + case $prefix in + *\'*) qprefix=`echo "$prefix" | sed "s/'/'\\\\\\\\''/g"`;; + *) qprefix=$prefix;; + esac + prefixes="$prefixes '$qprefix'" + fi + fi + prefix=$prefix/ + done + + if test -n "$prefixes"; then + # Don't fail if two instances are running concurrently. + (umask $mkdir_umask && + eval "\$doit_exec \$mkdirprog $prefixes") || + test -d "$dstdir" || exit 1 + obsolete_mkdir_used=true + fi + fi + fi + + if test -n "$dir_arg"; then + { test -z "$chowncmd" || $doit $chowncmd "$dst"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dst"; } && + { test "$obsolete_mkdir_used$chowncmd$chgrpcmd" = false || + test -z "$chmodcmd" || $doit $chmodcmd $mode "$dst"; } || exit 1 + else + + # Make a couple of temp file names in the proper directory. + dsttmp=$dstdir/_inst.$$_ + rmtmp=$dstdir/_rm.$$_ + + # Trap to clean up those temp files at exit. + trap 'ret=$?; rm -f "$dsttmp" "$rmtmp" && exit $ret' 0 + + # Copy the file name to the temp name. + (umask $cp_umask && $doit_exec $cpprog "$src" "$dsttmp") && + + # and set any options; do chmod last to preserve setuid bits. + # + # If any of these fail, we abort the whole thing. If we want to + # ignore errors from any of these, just make sure not to ignore + # errors from the above "$doit $cpprog $src $dsttmp" command. + # + { test -z "$chowncmd" || $doit $chowncmd "$dsttmp"; } && + { test -z "$chgrpcmd" || $doit $chgrpcmd "$dsttmp"; } && + { test -z "$stripcmd" || $doit $stripcmd "$dsttmp"; } && + { test -z "$chmodcmd" || $doit $chmodcmd $mode "$dsttmp"; } && + + # If -C, don't bother to copy if it wouldn't change the file. + if $copy_on_change && + old=`LC_ALL=C ls -dlL "$dst" 2>/dev/null` && + new=`LC_ALL=C ls -dlL "$dsttmp" 2>/dev/null` && + set -f && + set X $old && old=:$2:$4:$5:$6 && + set X $new && new=:$2:$4:$5:$6 && + set +f && + test "$old" = "$new" && + $cmpprog "$dst" "$dsttmp" >/dev/null 2>&1 + then + rm -f "$dsttmp" + else + # Rename the file to the real destination. + $doit $mvcmd -f "$dsttmp" "$dst" 2>/dev/null || + + # The rename failed, perhaps because mv can't rename something else + # to itself, or perhaps because mv is so ancient that it does not + # support -f. + { + # Now remove or move aside any old file at destination location. + # We try this two ways since rm can't unlink itself on some + # systems and the destination file might be busy for other + # reasons. In this case, the final cleanup might fail but the new + # file should still install successfully. + { + test ! -f "$dst" || + $doit $rmcmd -f "$dst" 2>/dev/null || + { $doit $mvcmd -f "$dst" "$rmtmp" 2>/dev/null && + { $doit $rmcmd -f "$rmtmp" 2>/dev/null; :; } + } || + { echo "$0: cannot unlink or rename $dst" >&2 + (exit 1); exit 1 + } + } && + + # Now rename the file to the real destination. + $doit $mvcmd "$dsttmp" "$dst" + } + fi || exit 1 + + trap '' 0 + fi +done + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/camera/missing b/camera/missing new file mode 100755 index 0000000..f62bbae --- /dev/null +++ b/camera/missing @@ -0,0 +1,215 @@ +#! /bin/sh +# Common wrapper for a few potentially missing GNU programs. + +scriptversion=2013-10-28.13; # UTC + +# Copyright (C) 1996-2014 Free Software Foundation, Inc. +# Originally written by Fran,cois Pinard , 1996. + +# This program is free software; you can redistribute it and/or modify +# it under the terms of the GNU General Public License as published by +# the Free Software Foundation; either version 2, or (at your option) +# any later version. + +# This program is distributed in the hope that it will be useful, +# but WITHOUT ANY WARRANTY; without even the implied warranty of +# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the +# GNU General Public License for more details. + +# You should have received a copy of the GNU General Public License +# along with this program. If not, see . + +# As a special exception to the GNU General Public License, if you +# distribute this file as part of a program that contains a +# configuration script generated by Autoconf, you may include it under +# the same distribution terms that you use for the rest of that program. + +if test $# -eq 0; then + echo 1>&2 "Try '$0 --help' for more information" + exit 1 +fi + +case $1 in + + --is-lightweight) + # Used by our autoconf macros to check whether the available missing + # script is modern enough. + exit 0 + ;; + + --run) + # Back-compat with the calling convention used by older automake. + shift + ;; + + -h|--h|--he|--hel|--help) + echo "\ +$0 [OPTION]... PROGRAM [ARGUMENT]... + +Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due +to PROGRAM being missing or too old. + +Options: + -h, --help display this help and exit + -v, --version output version information and exit + +Supported PROGRAM values: + aclocal autoconf autoheader autom4te automake makeinfo + bison yacc flex lex help2man + +Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and +'g' are ignored when checking the name. + +Send bug reports to ." + exit $? + ;; + + -v|--v|--ve|--ver|--vers|--versi|--versio|--version) + echo "missing $scriptversion (GNU Automake)" + exit $? + ;; + + -*) + echo 1>&2 "$0: unknown '$1' option" + echo 1>&2 "Try '$0 --help' for more information" + exit 1 + ;; + +esac + +# Run the given program, remember its exit status. +"$@"; st=$? + +# If it succeeded, we are done. +test $st -eq 0 && exit 0 + +# Also exit now if we it failed (or wasn't found), and '--version' was +# passed; such an option is passed most likely to detect whether the +# program is present and works. +case $2 in --version|--help) exit $st;; esac + +# Exit code 63 means version mismatch. This often happens when the user +# tries to use an ancient version of a tool on a file that requires a +# minimum version. +if test $st -eq 63; then + msg="probably too old" +elif test $st -eq 127; then + # Program was missing. + msg="missing on your system" +else + # Program was found and executed, but failed. Give up. + exit $st +fi + +perl_URL=http://www.perl.org/ +flex_URL=http://flex.sourceforge.net/ +gnu_software_URL=http://www.gnu.org/software + +program_details () +{ + case $1 in + aclocal|automake) + echo "The '$1' program is part of the GNU Automake package:" + echo "<$gnu_software_URL/automake>" + echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/autoconf>" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + autoconf|autom4te|autoheader) + echo "The '$1' program is part of the GNU Autoconf package:" + echo "<$gnu_software_URL/autoconf/>" + echo "It also requires GNU m4 and Perl in order to run:" + echo "<$gnu_software_URL/m4/>" + echo "<$perl_URL>" + ;; + esac +} + +give_advice () +{ + # Normalize program name to check for. + normalized_program=`echo "$1" | sed ' + s/^gnu-//; t + s/^gnu//; t + s/^g//; t'` + + printf '%s\n' "'$1' is $msg." + + configure_deps="'configure.ac' or m4 files included by 'configure.ac'" + case $normalized_program in + autoconf*) + echo "You should only need it if you modified 'configure.ac'," + echo "or m4 files included by it." + program_details 'autoconf' + ;; + autoheader*) + echo "You should only need it if you modified 'acconfig.h' or" + echo "$configure_deps." + program_details 'autoheader' + ;; + automake*) + echo "You should only need it if you modified 'Makefile.am' or" + echo "$configure_deps." + program_details 'automake' + ;; + aclocal*) + echo "You should only need it if you modified 'acinclude.m4' or" + echo "$configure_deps." + program_details 'aclocal' + ;; + autom4te*) + echo "You might have modified some maintainer files that require" + echo "the 'autom4te' program to be rebuilt." + program_details 'autom4te' + ;; + bison*|yacc*) + echo "You should only need it if you modified a '.y' file." + echo "You may want to install the GNU Bison package:" + echo "<$gnu_software_URL/bison/>" + ;; + lex*|flex*) + echo "You should only need it if you modified a '.l' file." + echo "You may want to install the Fast Lexical Analyzer package:" + echo "<$flex_URL>" + ;; + help2man*) + echo "You should only need it if you modified a dependency" \ + "of a man page." + echo "You may want to install the GNU Help2man package:" + echo "<$gnu_software_URL/help2man/>" + ;; + makeinfo*) + echo "You should only need it if you modified a '.texi' file, or" + echo "any other file indirectly affecting the aspect of the manual." + echo "You might want to install the Texinfo package:" + echo "<$gnu_software_URL/texinfo/>" + echo "The spurious makeinfo call might also be the consequence of" + echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might" + echo "want to install GNU make:" + echo "<$gnu_software_URL/make/>" + ;; + *) + echo "You might have modified some files without having the proper" + echo "tools for further handling them. Check the 'README' file, it" + echo "often tells you about the needed prerequisites for installing" + echo "this package. You may also peek at any GNU archive site, in" + echo "case some other package contains this missing '$1' program." + ;; + esac +} + +give_advice "$1" | sed -e '1s/^/WARNING: /' \ + -e '2,$s/^/ /' >&2 + +# Propagate the correct exit status (expected to be 127 for a program +# not found, 63 for a program that failed due to version mismatch). +exit $st + +# Local variables: +# eval: (add-hook 'write-file-hooks 'time-stamp) +# time-stamp-start: "scriptversion=" +# time-stamp-format: "%:y-%02m-%02d.%02H" +# time-stamp-time-zone: "UTC" +# time-stamp-end: "; # UTC" +# End: diff --git a/server/conf/nginx/nginx.conf b/server/conf/nginx/nginx.conf new file mode 100644 index 0000000..0cae227 --- /dev/null +++ b/server/conf/nginx/nginx.conf @@ -0,0 +1,21 @@ +user nobody; +worker_processes 1; + +events { + worker_connections 1024; +} + +rtmp { + server { + listen 1935; + + application livecam { + live on; + record off; + on_play http://localhost/client-auth/; + on_publish http://localhost/camera-auth/; + exec_kill_signal int; + exec_push /usr/bin/python /srv/http/projet-l3-info/lib/recorder.py rtmp://localhost/$app/$name $name; + } + } +} diff --git a/server/conf/sql/startBDD.sql b/server/conf/sql/startBDD.sql new file mode 100644 index 0000000..fa837ad --- /dev/null +++ b/server/conf/sql/startBDD.sql @@ -0,0 +1,79 @@ +-- phpMyAdmin SQL Dump +-- version 4.1.14 +-- http://www.phpmyadmin.net +-- +-- Client : 127.0.0.1 +-- Généré le : Ven 06 Mai 2016 à 16:11 +-- Version du serveur : 5.6.17 +-- Version de PHP : 5.5.12 + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET time_zone = "+00:00"; + + +/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */; +/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */; +/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */; +/*!40101 SET NAMES utf8 */; + +-- +-- Base de données : `projetl3` +-- + +-- -------------------------------------------------------- + +-- +-- Structure de la table `camera` +-- + +CREATE TABLE IF NOT EXISTS `camera` ( + `id` varchar(20) NOT NULL, + `product_key` varchar(32) CHARACTER SET utf8 NOT NULL, + `available` int(1) NOT NULL, + `enabled` int(1) NOT NULL, + `rtmp_handle` varchar(256) CHARACTER SET utf8 NOT NULL, + PRIMARY KEY (`id`), + UNIQUE KEY `id` (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `user` +-- + +CREATE TABLE IF NOT EXISTS `user` ( + `id` int(11) NOT NULL AUTO_INCREMENT, + `login` varchar(255) NOT NULL, + `password` varchar(100) NOT NULL, + PRIMARY KEY (`id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=7 ; + +-- -------------------------------------------------------- + +-- +-- Structure de la table `user_camera` +-- + +CREATE TABLE IF NOT EXISTS `user_camera` ( + `user_id` int(17) NOT NULL, + `camera_id` varchar(20) NOT NULL, + `name` varchar(20) NOT NULL, + PRIMARY KEY (`user_id`,`camera_id`), + KEY `camera_id` (`camera_id`) +) ENGINE=InnoDB DEFAULT CHARSET=latin1; + +-- +-- Contraintes pour les tables exportées +-- + +-- +-- Contraintes pour la table `user_camera` +-- +ALTER TABLE `user_camera` + ADD CONSTRAINT `user_camera_ibfk_1` FOREIGN KEY (`user_id`) REFERENCES `user` (`id`), + ADD CONSTRAINT `user_camera_ibfk_2` FOREIGN KEY (`camera_id`) REFERENCES `camera` (`id`); + +/*!40101 SET CHARACTER_SET_CLIENT=@OLD_CHARACTER_SET_CLIENT */; +/*!40101 SET CHARACTER_SET_RESULTS=@OLD_CHARACTER_SET_RESULTS */; +/*!40101 SET COLLATION_CONNECTION=@OLD_COLLATION_CONNECTION */; diff --git a/server/lib/CameraCommander/Camera.py b/server/lib/CameraCommander/Camera.py new file mode 100644 index 0000000..dd94325 --- /dev/null +++ b/server/lib/CameraCommander/Camera.py @@ -0,0 +1,7 @@ +class Camera: + def __init__(self, id, product_key, available, enabled, rtmp_handle): + self.id = id + self.product_key = product_key + self.available = available + self.enabled = enabled + self.rtmp_handle = rtmp_handle diff --git a/server/lib/CameraCommander/CameraCommander.py b/server/lib/CameraCommander/CameraCommander.py new file mode 100644 index 0000000..d7084c9 --- /dev/null +++ b/server/lib/CameraCommander/CameraCommander.py @@ -0,0 +1,33 @@ + + +class CameraCommander: + class InvalidStateException(Exception): + pass + + + Cameras = [] + + + def Register(context, camera): + for c in CameraCommander.Cameras: + if c.camera.id == camera.id: + print("[CameraCommander] : Camera ({}) already registered".format(camera.id)) + raise CameraCommander.InvalidStateException() + CameraCommander.Cameras.append(context) + print("[CameraCommander] : Camera ({}) registered".format(camera.id)) + + + def GetContext(camera): + for c in CameraCommander.Cameras: + if c.camera.id == camera.id: + return c + return None + + + def IsRegistered(context): + return context in CameraCommander.Cameras + + + def Remove(context): + CameraCommander.Cameras.remove(context) + print("[CameraCommander] : Camera ({}) unregistered".format(context.camera.id)) diff --git a/server/lib/CameraCommander/CameraConnection.py b/server/lib/CameraCommander/CameraConnection.py new file mode 100644 index 0000000..dc8083f --- /dev/null +++ b/server/lib/CameraCommander/CameraConnection.py @@ -0,0 +1,32 @@ +import socket + + +class CameraConnection: + def __init__(self, sock, addr): + self.sock = sock + self.addr = addr[0] + self.port = addr[1] + self.sock.setsockopt(socket.SOL_SOCKET, socket.SO_KEEPALIVE, 1) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPIDLE, 300) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPINTVL, 30) + self.sock.setsockopt(socket.IPPROTO_TCP, socket.TCP_KEEPCNT, 4) + + + def receive(self): + data = b"" + ret = self.sock.recv(1) + while ret and ret != b"\x00": + data = data + ret + ret = self.sock.recv(1) + if not data: + return None + return data.decode() + + + def send(self, msg): + data = (msg + "\0").encode() + return self.sock.send(data) == len(data) + + + def close(self): + self.sock.close() diff --git a/server/lib/CameraCommander/CameraContext.py b/server/lib/CameraCommander/CameraContext.py new file mode 100644 index 0000000..af53627 --- /dev/null +++ b/server/lib/CameraCommander/CameraContext.py @@ -0,0 +1,86 @@ +from CameraModel import CameraModel +from CameraCommander import CameraCommander +from WaitAuthentication import WaitAuthentication +from WaitEnabledModeReply import WaitEnabledModeReply +from WaitDisabledModeReply import WaitDisabledModeReply +from WaitDisconnectedReply import WaitDisconnectedReply +from DeadState import DeadState + + +class CameraContext: + class InvalidStateException(Exception): + pass + + + def __init__(self, connection): + self.camera = None + self.connection = connection + self.state = WaitAuthentication() + + + def handle(self): + return self.state.handle(self) + + + def tic(self): + self.state.tic(self) + + + def enable(self, userCommand = None): + if not self.camera or not self.connection: + raise CameraContext.InvalidStateException() + if not self.connection.send("enable"): + print("[CameraContext] : Connection lost with camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.close() + if userCommand: + userCommand.callback(False, "connection_lost") + return False + print("[CameraContext] : Ask for enabling RTMP streaming on camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.state = WaitEnabledModeReply(userCommand) + return True + + + def disable(self, userCommand = None): + if not self.camera or not self.connection: + raise CameraContext.InvalidStateException() + if not self.connection.send("disable"): + print("[CameraContext] : Connection lost with camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.close() + if userCommand: + userCommand.callback(False, "connection_lost") + return False + print("[CameraContext] : Ask for disabling RTMP streaming on camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.state = WaitDisabledModeReply(userCommand) + return True + + + def disconnect(self, userCommand = None): + if not self.camera or not self.connection: + raise CameraContext.InvalidStateException() + if not self.connection.send("disconnect"): + print("[CameraContext] : Connection lost with camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.close() + if userCommand: + userCommand.callback(False, "connection_lost") + return False + print("[CameraContext] : Ask for disconnecting camera ({}) at {}:{}".format(self.camera.id, self.connection.addr, self.connection.port)) + self.state = WaitDisconnectedReply(userCommand) + return True + + + def close(self): + if not self.connection: + raise CameraContext.InvalidStateException() + if CameraCommander.IsRegistered(self): + CameraCommander.Remove(self) + if not self.camera: + raise CameraContext.InvalidStateException() + mdl = CameraModel() + self.camera.available = False + self.camera.rtmp_handle = "" + mdl.update(self.camera) + self.camera = None + print("[CameraContext] : Close connection with {}:{}".format(self.connection.addr, self.connection.port)) + self.connection.close() + self.connection = None + self.state = DeadState() diff --git a/server/lib/CameraCommander/CameraModel.py b/server/lib/CameraCommander/CameraModel.py new file mode 100644 index 0000000..abffdbc --- /dev/null +++ b/server/lib/CameraCommander/CameraModel.py @@ -0,0 +1,24 @@ +import DataBase +from Camera import Camera + + +class CameraModel: + def getById(self, id): + db = DataBase.GetConnection() + cursor = db.cursor() + cursor.execute("""SELECT * FROM camera WHERE id=%s""", (id,)) + row = cursor.fetchone() + cursor.close() + db.close() + if row: + return Camera(row[0], row[1], bool(row[2]), bool(row[3]), row[4]) + return None + + + def update(self, camera): + db = DataBase.GetConnection() + cursor = db.cursor() + cursor.execute("""UPDATE camera SET available=%s, enabled=%s, rtmp_handle=%s WHERE id=%s""", (int(camera.available), int(camera.enabled), camera.rtmp_handle, camera.id)) + cursor.close() + db.commit() + db.close() diff --git a/server/lib/CameraCommander/DataBase.py b/server/lib/CameraCommander/DataBase.py new file mode 100644 index 0000000..08bb5a3 --- /dev/null +++ b/server/lib/CameraCommander/DataBase.py @@ -0,0 +1,8 @@ +import mysql.connector + + +def GetConnection(): + try: + return mysql.connector.connect(user = "camplatform_user", password = "lLZwfSLuwye3qW4r", host = "public.lan", database = "camplatform_db") + except mysql.connector.Error: + return None diff --git a/server/lib/CameraCommander/DeadState.py b/server/lib/CameraCommander/DeadState.py new file mode 100644 index 0000000..86278ec --- /dev/null +++ b/server/lib/CameraCommander/DeadState.py @@ -0,0 +1,10 @@ +from WaitState import WaitState + + +class DeadState(WaitState): + def handle(self, context): + pass + + + def tic(self, context): + pass diff --git a/server/lib/CameraCommander/User.py b/server/lib/CameraCommander/User.py new file mode 100644 index 0000000..dca99b3 --- /dev/null +++ b/server/lib/CameraCommander/User.py @@ -0,0 +1,5 @@ +class User: + def __init__(self, id, login, password): + self.id = id + self.login = login + self.password = password diff --git a/server/lib/CameraCommander/UserCommand.py b/server/lib/CameraCommander/UserCommand.py new file mode 100644 index 0000000..ce2de48 --- /dev/null +++ b/server/lib/CameraCommander/UserCommand.py @@ -0,0 +1,120 @@ +from UserModel import UserModel +from CameraModel import CameraModel +import CameraCommander +from WaitActivity import WaitActivity + + +class UserCommand: + class InvalidStateException(Exception): + pass + + + def __init__(self, sock, addr): + self.sock = sock + self.addr = addr[0] + self.port = addr[1] + + + def receive(self): + data = b"" + ret = self.sock.recv(1) + while ret and ret != b"\x00": + data = data + ret + ret = self.sock.recv(1) + if not data: + return None + return data.decode() + + + def send(self, msg): + data = (msg + "\0").encode() + return self.sock.send(data) == len(data) + + + def close(self): + print("[UserCommand] : Closing connection with {}:{}".format(self.addr, self.port)) + self.sock.close() + self.sock = None + self.addr = None + self.port = None + + + def callback(self, result, error_msg = None): + print("[UserCommand] : Send reply to {}:{}".format(self.addr, self.port)) + if result: + self.send("ok") + elif error_msg: + self.send("error:" + error_msg) + else: + self.send("error") + self.close() + + + def execute(self): + if not self.sock: + raise UserCommand.InvalidStateException() + data = self.receive() + if not data: + print("[UserCommand] : Connection lost with {}:{}".format(self.addr, self.port)) + self.close() + return + + words = data.split(":") + if len(words) != 4: + print("[UserCommand] : Error from {}:{}, invalid data".format(self.addr, self.port)) + self.send("error:invalid_data") + self.close() + return + + userMdl = UserModel() + user = userMdl.getByLogin(words[0]) + if not user: + print("[UserCommand] : Error from {}:{}, invalid username".format(self.addr, self.port)) + self.send("error:invalid_username") + self.close() + return + + if user.password != words[1]: + print("[UserCommand] : Error from {}:{}, invalid password for user ({})".format(self.addr, self.port, user.login)) + self.send("error:invalid_password") + self.close() + return + + camMdl = CameraModel() + camera = camMdl.getById(words[3]) + if not camera: + print("[UserCommand] : Error from user ({}) at {}:{}, invalid camera's serial number".format(user.login, self.addr, self.port)) + self.send("error:invalid_camera_id") + self.close() + return + + if not userMdl.haveCamera(user, camera): + print("[UserCommand] : User ({}) at {}:{} is not allowed to command camera ({})".format(user.login, self.addr, self.port, camera.id)) + self.send("error:not_authorized") + self.close() + return + + context = CameraCommander.CameraCommander.GetContext(camera) + if not context: + print("[UserCommand] : Error from user ({}) at {}:{}, camera ({}) is not registered".format(user.login, self.addr, self.port, camera.id)) + self.send("error:camera_not_registered") + self.close() + return + + if not isinstance(context.state, WaitActivity): + print("[UserCommand] : Error from user ({}) at {}:{}, camera ({}) is busy".format(user.login, self.addr, self.port, camera.id)) + self.send("error:camera_busy") + self.close() + return + + if words[2] == "enable": + context.enable(self) + elif words[2] == "disable": + context.disable(self) + elif words[2] == "disconnect": + context.disconnect(self) + else: + print("[UserCommand] : Error from user ({}) at {}:{}, invalid command".format(user.login, self.addr, self.port)) + self.send("error:invalid_command") + self.close() + return diff --git a/server/lib/CameraCommander/UserModel.py b/server/lib/CameraCommander/UserModel.py new file mode 100644 index 0000000..692d72a --- /dev/null +++ b/server/lib/CameraCommander/UserModel.py @@ -0,0 +1,28 @@ +import DataBase +from User import User + + +class UserModel: + def getByLogin(self, login): + db = DataBase.GetConnection() + cursor = db.cursor() + cursor.execute("""SELECT * FROM user WHERE login=%s""", (login,)) + row = cursor.fetchone() + cursor.close() + db.close() + if row: + return User(row[0], row[1], row[2]) + return None + + + def haveCamera(self, user, camera): + db = DataBase.GetConnection() + cursor = db.cursor() + cursor.execute("""SELECT * FROM user_camera WHERE user_id=%s AND camera_id=%s""", (user.id, camera.id)) + row = cursor.fetchone() + cursor.close() + db.close() + if row: + return True + return False + diff --git a/server/lib/CameraCommander/WaitActivity.py b/server/lib/CameraCommander/WaitActivity.py new file mode 100644 index 0000000..25a5e0d --- /dev/null +++ b/server/lib/CameraCommander/WaitActivity.py @@ -0,0 +1,14 @@ +from WaitState import WaitState +from CameraCommander import CameraCommander + + +class WaitActivity(WaitState): + def handle(self, context): + data = self.waitMsg(context) + if data: + print("[WaitActivity] : Error({}) from camera ({}) at {}:{}".format(data, context.camera.id, context.connection.addr, context.connection.port)) + context.close() + + + def tic(self, context): + pass diff --git a/server/lib/CameraCommander/WaitAuthentication.py b/server/lib/CameraCommander/WaitAuthentication.py new file mode 100644 index 0000000..a1a31b9 --- /dev/null +++ b/server/lib/CameraCommander/WaitAuthentication.py @@ -0,0 +1,55 @@ +import random + +from CameraCommander import CameraCommander +from CameraModel import CameraModel +from WaitState import WaitState +from WaitActivity import WaitActivity +import CameraContext + + +class WaitAuthentication(WaitState): + def handle(self, context): + data = self.waitMsg(context) + if not data: + return + words = data.split(":") + if len(words) != 2: + print("[WaitAuthentication] : Invalid data from camera at {}:{}".format(context.connection.addr, context.connection.port)) + context.connection.send("invalid_data") + context.close() + return + + mdl = CameraModel() + camera = mdl.getById(words[0]) + if not camera or camera.product_key != words[1]: + print("[WaitAuthentication] : Authentication failed for camera at {}:{}".format(context.connection.addr, context.connection.port)) + context.connection.send("refused") + context.close() + return + + try: + CameraCommander.Register(context, camera) + except CameraCommander.InvalidStateException: + context.connection.send("refused") + context.close() + return + + context.camera = camera + print("[WaitAuthentication] : Camera at {}:{} successfully authenticated as ({})".format(context.connection.addr, context.connection.port, context.camera.id)) + + context.camera.available = True + context.camera.rtmp_handle = hex(hash(random.random()))[2:] + mdl.update(context.camera) + if not context.connection.send("accepted:{}".format(context.camera.rtmp_handle)): + print("[WaitAuthentication] : Connection lost with camera ({}) at {}:{}".format(context.camera.id, context.connection.addr, context.connection.port)) + context.close() + return + + if context.camera.enabled: + context.enable() + return + context.state = WaitActivity() + + + def tic(self, context): + pass diff --git a/server/lib/CameraCommander/WaitDisabledModeReply.py b/server/lib/CameraCommander/WaitDisabledModeReply.py new file mode 100644 index 0000000..6cf43a3 --- /dev/null +++ b/server/lib/CameraCommander/WaitDisabledModeReply.py @@ -0,0 +1,40 @@ +import time + +from CameraModel import CameraModel +from WaitState import WaitState +from WaitActivity import WaitActivity + + +class WaitDisabledModeReply(WaitState): + def __init__(self, userCommand): + self.userCommand = userCommand + self.initTime = time.time() + + + def handle(self, context): + data = self.waitMsg(context) + if not data: + if self.userCommand: + self.userCommand.callback(False, "connection_lost") + return + if data == "disabled": + print("[WaitDisabledModeReply] : Camera ({}) at {}:{} successfully disabled".format(context.camera.id, context.connection.addr, context.connection.port)) + context.camera.enabled = False + mdl = CameraModel() + mdl.update(context.camera) + context.state = WaitActivity() + if self.userCommand: + self.userCommand.callback(True) + else: + print("[WaitDisabledModeReply] : Error({}) from camera ({}) at {}:{}".format(data, context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, data) + + + def tic(self, context): + if time.time() - self.initTime > 10: + print("[WaitDisabledModeReply] : Timeout exeeded for camera ({}) at {}:{}".format(context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, "timeout") diff --git a/server/lib/CameraCommander/WaitDisconnectedReply.py b/server/lib/CameraCommander/WaitDisconnectedReply.py new file mode 100644 index 0000000..a586fc0 --- /dev/null +++ b/server/lib/CameraCommander/WaitDisconnectedReply.py @@ -0,0 +1,35 @@ +import time + +from WaitState import WaitState + + +class WaitDisconnectedReply(WaitState): + def __init__(self, userCommand): + self.userCommand = userCommand + self.initTime = time.time() + + + def handle(self, context): + data = self.waitMsg(context) + if not data: + if self.userCommand: + self.userCommand.callback(False, "connection_lost") + return + if data == "disconnected": + print("[CameraContext] : Camera ({}) at {}:{} successfully disconnected".format(context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(True) + else: + print("[WaitDisconnectedReply] : Error({}) from camera ({}) at {}:{}".format(data, context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, data) + + + def tic(self, context): + if time.time() - self.initTime > 10: + print("[WaitEnabledModeReply] : Timeout exeeded for camera ({}) at {}:{}".format(context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, "timeout") diff --git a/server/lib/CameraCommander/WaitEnabledModeReply.py b/server/lib/CameraCommander/WaitEnabledModeReply.py new file mode 100644 index 0000000..6f16306 --- /dev/null +++ b/server/lib/CameraCommander/WaitEnabledModeReply.py @@ -0,0 +1,40 @@ +import time + +from CameraModel import CameraModel +from WaitState import WaitState +from WaitActivity import WaitActivity + + +class WaitEnabledModeReply(WaitState): + def __init__(self, userCommand): + self.userCommand = userCommand + self.initTime = time.time() + + + def handle(self, context): + data = self.waitMsg(context) + if not data: + if self.userCommand: + self.userCommand.callback(False, "connection_lost") + return + if data == "enabled": + print("[WaitEnabledModeReply] : Camera ({}) at {}:{} successfully enabled".format(context.camera.id, context.connection.addr, context.connection.port)) + context.camera.enabled = True + mdl = CameraModel() + mdl.update(context.camera) + context.state = WaitActivity() + if self.userCommand: + self.userCommand.callback(True) + else: + print("[WaitEnabledModeReply] : Error({}) from camera ({}) at {}:{}".format(data, context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, data) + + + def tic(self, context): + if time.time() - self.initTime > 10: + print("[WaitEnabledModeReply] : Timeout exeeded for camera ({}) at {}:{}".format(context.camera.id, context.connection.addr, context.connection.port)) + context.close() + if self.userCommand: + self.userCommand.callback(False, "timeout") diff --git a/server/lib/CameraCommander/WaitState.py b/server/lib/CameraCommander/WaitState.py new file mode 100644 index 0000000..07226d0 --- /dev/null +++ b/server/lib/CameraCommander/WaitState.py @@ -0,0 +1,17 @@ +class WaitState: + def waitMsg(self, context): + data = context.connection.receive() + if not data: + print("[WaitState] : Connection lost with camera at {}:{}".format(context.connection.addr, context.connection.port)) + context.close() + return None + else: + return data + + + def handle(self, context): + raise NotImplementedError() + + + def tic(self, context): + raise NotImplementedError() diff --git a/server/lib/CameraCommander/main.py b/server/lib/CameraCommander/main.py new file mode 100644 index 0000000..c62906b --- /dev/null +++ b/server/lib/CameraCommander/main.py @@ -0,0 +1,102 @@ +import socket +import select +import signal + +from CameraContext import CameraContext +from UserCommand import UserCommand +from CameraConnection import CameraConnection +from CameraCommander import CameraCommander +from WaitActivity import WaitActivity + + +def on_sigint(signal, frame): + global server_enabled + server_enabled = False + + +# +# Main +# + +server_enabled = True +signal.signal(signal.SIGINT, on_sigint) +connected_cameras = [] +connected_users = [] + +cam_listener_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +cam_listener_sock.bind(("", 41551)) +cam_listener_sock.listen(5) + +cmd_listener_sock = socket.socket(socket.AF_INET, socket.SOCK_STREAM) +cmd_listener_sock.bind(("", 40550)) +cmd_listener_sock.listen(5) + + +print("[Main] : Ready") + +while server_enabled or len(CameraCommander.Cameras) > 0: + if server_enabled: + conn_list, wlist, xlist = select.select([cam_listener_sock, cmd_listener_sock], [], [], 0.05) + if cam_listener_sock in conn_list: + cam_sock, cam_addr = cam_listener_sock.accept() + connected_cameras.append(CameraContext(CameraConnection(cam_sock, cam_addr))) + elif cmd_listener_sock in conn_list: + user_sock, user_addr = cmd_listener_sock.accept() + connected_users.append(UserCommand(user_sock, user_addr)) + + new_connected_users = [] + for userCommand in connected_users: + if userCommand.sock: + new_connected_users.append(userCommand) + connected_users = new_connected_users + + user_sock_list = [userCommand.sock for userCommand in connected_users] + + if server_enabled: + sock_read_list, wlist, xlist = select.select(user_sock_list, [], [], 0.05) + for user_sock in sock_read_list: + for userCommand in connected_users: + if user_sock == userCommand.sock: + userCommand.execute() + + new_connected_cameras = [] + for context in connected_cameras: + if context.connection: + new_connected_cameras.append(context) + connected_cameras = new_connected_cameras + + if not server_enabled: + for context in CameraCommander.Cameras: + if isinstance(context.state, WaitActivity): + try: + context.disconnect() + except CameraContext.TransmissionErrorException: + context.close() + + cam_sock_list = [context.connection.sock for context in connected_cameras] + + sock_read_list, wlist, xlist = select.select(cam_sock_list, [], [], 0.05) + for cam_sock in sock_read_list: + for context in connected_cameras: + if cam_sock == context.connection.sock: + context.handle() + + for context in connected_cameras: + context.tic() + + +for context in connected_cameras: + if context.connection: + context.close() + +for userCommand in connected_users: + if userCommand.sock: + userCommand.close() + +cmd_listener_sock.shutdown(socket.SHUT_RDWR) +cmd_listener_sock.close() + +cam_listener_sock.shutdown(socket.SHUT_RDWR) +cam_listener_sock.close() + +print("[Main] : Bye !!") diff --git a/server/lib/recorder.py b/server/lib/recorder.py new file mode 100755 index 0000000..4cd7d30 --- /dev/null +++ b/server/lib/recorder.py @@ -0,0 +1,73 @@ +#!/usr/bin/python + +import sys +import os +import signal +import subprocess +import shutil +import re +import time + + +def on_term(signum, frame): + global ffmpeg + global record_enabled + record_enabled = False + if ffmpeg != None and ffmpeg.poll() == None: + ffmpeg.terminate() + try: + os.remove(os.path.join(record_path, "current.mp4")) + except: + pass + sys.exit(0) + elif ffmpeg == None: + sys.exit(0) + + +if len(sys.argv) != 3: + sys.stderr.write("Error : Bad arguments count\n") + sys.exit(1) + +ffmpeg = None +record_enabled = True +rtmp_link = sys.argv[1] + "?login=root&password=99c9bef14824f6a9b7e6ee4229660827a4a4c751" +stream_name = sys.argv[2] + +fragment_time = 3600 +fragment_max_count = 48 + +record_path = os.path.join(os.path.abspath(os.path.join(os.path.abspath(os.path.dirname(sys.argv[0])), "../webplatform/www/Content/records")), stream_name) + +if not os.path.exists(record_path): + try: + os.mkdir(record_path) + except OSError: + sys.stderr.write("Error : Unable to create the record directory\n") + sys.exit(2) + +signal.signal(signal.SIGINT, on_term) + +while record_enabled: + files = os.listdir(record_path) + + for filename in files: + filepath = os.path.join(record_path, filename) + if os.path.isfile(filepath): + match = re.search("^([0-9]|[1-9][0-9]*)_([0-9]|[1-9][0-9]*)\.mp4$", filename) + if match: + if (int(time.time()) - int(match.group(1))) / fragment_time > fragment_max_count: + try: + os.remove(filepath) + except OSError: + sys.stderr.write("Error : Unable to delete video backup file\n") + sys.exit(3) + + start_time = str(int(time.time())) + ffmpeg = subprocess.Popen(["/usr/bin/ffmpeg", "-re", "-y", "-i", rtmp_link, "-an", "-vcodec", "copy", "-movflags", "faststart", "-f", "mp4", "-t", str(fragment_time), os.path.join(record_path, "current.mp4")]) + ffmpeg.wait() + try: + os.rename(os.path.join(record_path, "current.mp4"), os.path.join(record_path, "{}_{}.mp4".format(start_time, str(int(time.time()))))) + except OSError: + sys.stderr.write("Error : Unable to rename the current video backup file\n") + sys.exit(4) + ffmpeg = None diff --git a/server/webplatform/apps/CameraMonitor/Config/config.ini b/server/webplatform/apps/CameraMonitor/Config/config.ini new file mode 100644 index 0000000..d6fb9dd --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Config/config.ini @@ -0,0 +1,10 @@ +;Configuration + +[Installation] +root = / +host = 'cam.wildsparksoftware.com' + +[BD] +dsn = 'mysql:host=localhost;dbname=projetl3;charset=utf8' +login = root +mdp = \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Controller/ControllerCamera.php b/server/webplatform/apps/CameraMonitor/Controller/ControllerCamera.php new file mode 100644 index 0000000..65f49aa --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Controller/ControllerCamera.php @@ -0,0 +1,137 @@ +getUserById($this->request->getSession()->getAttribute('user_id')); + $modelCamera = new ModelCamera(); + $camera = $modelCamera->getCamera($this->request->getParameter('id'),$this->request->getSession()->getAttribute('user_id')); + $headScript = ''; + $this->generateView(array('camera' => $camera, 'headScript' => $headScript, 'user'=> $user)); + } + + public function swapState() + { + $whereController = "default"; + $whereAction = null; + if($this->request->existParameter('whereController')) + $whereController = $this->request->getParameter('whereController'); + if($this->request->existParameter('whereAction')) + $whereAction = $this->request->getParameter('whereAction'); + + if($this->request->existParameter('swap')) + { + $command = null; + $modelUser = new ModelUser(); + $modelCamera = new ModelCamera(); + $camera = $modelCamera->getCamera($this->request->getParameter('id'),$this->request->getSession()->getAttribute('user_id')); + $login = $this->request->getSession()->getAttribute('login'); + $password = $modelUser->getUserById($this->request->getSession()->getAttribute('user_id'))->getPassword(); + $swap = $this->request->getParameter('swap'); + + if($swap == 'enable' && $camera->getEnabled() == false) + $command = "enable"; + else + if($swap == 'disable' && $camera->getEnabled() == true) + $command = 'disable'; + if($command != null) + $this->sendCommand($login,$password,$camera->getId(),$command); + } + $this->redirect($whereController,$whereAction); + } + + public function delete() + { + $modelUser = new ModelUser(); + $modelUser->deleteCam($this->request->getSession()->getAttribute('user_id'),$this->request->getParameter('id')); + $this->redirect('default','settings'); + } + + private function sendCommand($login,$password,$camera_id,$command) + { + $s = socket_create(AF_INET,SOCK_STREAM,0); + if($s == false) + throw new Exception("Creation de socket echoue"); + $addr = gethostbyname(Configuration::get('host')); + if($addr == Configuration::get('host')) + { + socket_close($s); + throw new Exception("Recuperation IP impossible "); + } + $result = socket_connect($s,$addr,40550); + if($result == false) + { + socket_close($s); + throw new Exception("Connection socket échoue"); + } + $str = $login.":".$password.":".$command.":".$camera_id; //Command = enable|disable|disconnect + $buf = $str."\0"; + $size = socket_write($s,$buf,strlen($str)+1); + if($size != strlen($buf)) + { + socket_close($s); + throw new Exception("Ecriture dans la socket impossible"); + } + $data = ""; + $ret = socket_recv($s, $data, 1, MSG_WAITALL); + while($ret == 1 && $data != "\0") + { + $buf .= $data; + $data = ""; + $ret = socket_recv($s, $data, 1, MSG_WAITALL); + } + + if($ret != 1 && strlen($buf) == 0) + { + socket_close($s); + throw new Exception('Erreur rien à lire dans la socket'); + } + + socket_close($s); + } + + public function delayed() + { + $videos = array(); + $records_path = "Content/records/".$this->request->getParameter("id"); + if(file_exists($records_path)) + { + $files = scandir($records_path); + if($files != false) + { + $i = 0; + foreach($files as $file) + { + $path = $records_path."/".$file; + + if(is_file($path)) + { + $regex_results = array(); + if(preg_match("/^([0-9]|[1-9][0-9]*)_([0-9]|[1-9][0-9]*)\.mp4$/",$file,$regex_results) == 1) + { + $videos[$i]["path"] = $path; + $videos[$i]["begin"] = date('j/n/Y H:i:s',$regex_results[1]); + $videos[$i]["end"] = date('j/n/Y H:i:s',$regex_results[2]); + $i++; + } + } + } + $headScript = ''; + $this->generateView(array('videos' => $videos, 'headScript' => $headScript)); + } + else + throw new Exception("Fichier '".$records_path."' inconnue"); + } + else + throw new Exception("Dossier '".$records_path."' inconnue"); + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Controller/ControllerConnexion.php b/server/webplatform/apps/CameraMonitor/Controller/ControllerConnexion.php new file mode 100644 index 0000000..ca01f28 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Controller/ControllerConnexion.php @@ -0,0 +1,76 @@ +modelUser = new ModelUser(); + } + public function index() + { + $this->generateView(); + } + public function logOn() + { + if ($this->request->existParameter("login") && $this->request->existParameter("password")) { + $login = $this->request->getParameter("login"); + $password = sha1($this->request->getParameter("password")); + if ($this->modelUser->exist($login, $password)) + { + $user = $this->modelUser->getUser($login, $password); + $this->request->getSession()->setAttribute("user_id", + $user->getId()); + $this->request->getSession()->setAttribute("login", + $user->getLogin()); + + if($login == "root") + $this->redirect('default','admin'); + else + $this->redirect("default"); + } + else + $this->generateView(array('msgError' => 'Login ou mot de passe incorrects'), + "index"); + } + else + throw new Exception("Action impossible : login ou mot de passe non défini"); + } + + public function registration() + { + $this->generateView(); + } + + public function register() + { + if ($this->request->existParameter("login") && $this->request->existParameter("password") && $this->request->existParameter("passwordBis")) { + $login = $this->request->getParameter("login"); + $password = sha1($this->request->getParameter("password")); + $passwordBis = sha1($this->request->getParameter("passwordBis")); + if ($password == $passwordBis) { + if(!$this->modelUser->exist($login,$password)) + { + $this->modelUser->addUser($login, $password); + $this->redirect("default"); + } + else + $this->generateView(array('msgError' => 'Utilisateur déja existant'), + "registration"); + } + else + $this->generateView(array('msgError' => 'Les mots de passes doivent être identiques'), + "registration"); + } + else + throw new Exception("Action impossible : login ou mot de passe non défini"); + } + + public function disconnect() + { + $this->request->getSession()->destruct(); + $this->redirect("connexion"); + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Controller/ControllerDefault.php b/server/webplatform/apps/CameraMonitor/Controller/ControllerDefault.php new file mode 100644 index 0000000..770521e --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Controller/ControllerDefault.php @@ -0,0 +1,150 @@ +getAllCameraByUser($this->request->getSession()->getAttribute('user_id')); + $this->generateView(array('cameras' => $cameras)); + } + + public function settings() + { + $modelCamera = new ModelCamera(); + $modelUser = new ModelUser(); + $user_id = $this->request->getSession()->getAttribute('user_id'); + $user = $modelUser->getUserById($user_id); + $cameras = $modelCamera->getAllCameraByUser($user_id); + $this->generateView(array('cameras' => $cameras, 'user' => $user)); + } + + public function updateLogin() + { + $messageInfo = ""; + $modelUser = new ModelUser(); + $modelCamera = new ModelCamera(); + $user_id = $this->request->getSession()->getAttribute('user_id'); + $user = $modelUser->getUserById($user_id); + $cameras = $modelCamera->getAllCameraByUser($user_id); + + if($this->request->existParameter('login')) + { + $login = $this->request->getParameter('login'); + if($user->getLogin() != $login) + { + if(!$modelUser->exist($login, $user->getPassword())) + { + $modelUser->update($user->getId(),$login,$user->getPassword()); + $messageInfo = "Modification effectué"; + } + else + $messageInfo = "Ce login existe déja"; + } + else + $messageInfo = "Ce Login est déja le vôtre"; + } + else + $messageInfo = "Login manquant"; + + $this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings'); + } + + public function updatePassword() + { + $messageInfo = ""; + $modelUser = new ModelUser(); + $modelCamera = new ModelCamera(); + $user_id = $this->request->getSession()->getAttribute('user_id'); + $user = $modelUser->getUserById($user_id); + $cameras = $modelCamera->getAllCameraByUser($user_id); + + if($this->request->existParameter('password') && $this->request->existParameter('passwordBis')) + { + $password = $this->request->getParameter('password'); + $passwordBis = $this->request->getParameter('passwordBis'); + if($password == $passwordBis) + { + if ($user->getPassword() != $password) + { + $modelUser->update($user->getId(), $user->getLogin(), $password); + $messageInfo = "Modification effectué"; + } + else + $messageInfo = "Ce mot de passe est déja le vôtre"; + } + else + $messageInfo = "Les deux mot de passe doivent être les mêmes"; + } + else + $messageInfo = "Les deux champs mot de passe doivent être remplies"; + + $this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings'); + } + + public function addCam() + { + $messageInfo = ""; + $modelUser = new ModelUser(); + $modelCamera = new ModelCamera(); + $user_id = $this->request->getSession()->getAttribute('user_id'); + $user = $modelUser->getUserById($user_id); + + if($this->request->existParameter('name') && $this->request->existParameter('camera_id')) + { + $name = $this->request->getParameter('name'); + $camera_id = $this->request->getParameter('camera_id'); + if($modelCamera->exist($camera_id)) + { + if (!$modelUser->haveCam($user->getId(), $camera_id)) + { + $modelUser->addCam($user->getId(), $camera_id, $name); + $messageInfo = "Modification effectué"; + } + else + $messageInfo = "Vous avez déja accès à cette caméra"; + } + else + $messageInfo = "Le numéro de série ne correspond à aucune caméra"; + } + else + $messageInfo = "Les champs name et numéro de série doivent être remplies"; + + $cameras = $modelCamera->getAllCameraByUser($user_id); + + $this->generateView(array('cameras' => $cameras, 'user' => $user, 'messageInfo' => $messageInfo ),'settings'); + } + + public function admin() + { + if($this->request->getSession()->getAttribute('login') == "root") + { + $this->generateView(); + } + else + throw new Exception('Vous n\'avez pas accès à cette page'); + } + + public function addCamAdmin() + { + if($this->request->getSession()->getAttribute('login') == "root") + { + $modelCamera = new ModelCamera(); + $id = uniqid("",false).rand(0,9).rand(0,9).rand(0,9).rand(0,9).rand(0,9); + $product_key = sha1(strval(rand())); + $modelCamera->addCamera($id,$product_key,0,0,""); + $this->generateView(array("id"=>$id, "product_key"=>$product_key),"admin"); + } + else + throw new Exception('Vous n\'avez pas accès à cette page'); + } + +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Controller/ControllerSecure.php b/server/webplatform/apps/CameraMonitor/Controller/ControllerSecure.php new file mode 100644 index 0000000..7b086c9 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Controller/ControllerSecure.php @@ -0,0 +1,15 @@ +request->getSession()->existAttribute("user_id")) { + parent::executeAction($action); + } + else { + $this->redirect("connexion"); + } + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Controller/ControllerSecureUserCam.php b/server/webplatform/apps/CameraMonitor/Controller/ControllerSecureUserCam.php new file mode 100644 index 0000000..de92298 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Controller/ControllerSecureUserCam.php @@ -0,0 +1,27 @@ +request->getSession()->existAttribute("user_id")) + { + $user_id = $this->request->getSession()->getAttribute("user_id"); + if($this->request->existParameter('id')) + { + $camera_id = $this->request->getParameter('id'); + $modelCamera = new ModelCamera(); + if($modelCamera->userCanAccessCam($user_id,$camera_id)) + parent::executeAction($action); + else + throw new Exception('Vous n\'avez pas accès à cette caméra'); + } + else + throw new Exception('Id caméra non spécifié'); + } + else { + $this->redirect("connexion"); + } + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Framework/Configuration.php b/server/webplatform/apps/CameraMonitor/Framework/Configuration.php new file mode 100644 index 0000000..5da5269 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/Configuration.php @@ -0,0 +1,30 @@ +request = $request; + } + + public function executeAction($action) { + if (method_exists($this, $action)) { + $this->action = $action; + $this->{$this->action}(); + } + else { + $classController = get_class($this); + throw new Exception("Action '$action' non définie dans la classe $classController"); + } + } + + public abstract function index(); + + protected function generateView($dataView = array(), $action = null) { + + $actionView = $this->action; + if ($action != null) + $actionView = $action; + + $classController = get_class($this); + $controller = str_replace("Controller", "", $classController); + $vue = new View($actionView, $controller); + $vue->generate($dataView); + } + + protected function redirect($controller, $action = null) + { + $root = Configuration::get("root", "/"); + header("Location:" . $root . $controller . "/" . $action); + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Framework/Model.php b/server/webplatform/apps/CameraMonitor/Framework/Model.php new file mode 100644 index 0000000..35f7b8f --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/Model.php @@ -0,0 +1,32 @@ +query($sql); + } + else { + $result = self::getBdd()->prepare($sql); + $result->execute($params); + } + return $result; + } + + private static function getBdd() + { + if (self::$bdd === null) { + $dsn = Configuration::get("dsn"); + $login = Configuration::get("login"); + $mdp = Configuration::get("mdp"); + self::$bdd = new PDO($dsn, $login, $mdp, + array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION)); + } + return self::$bdd; + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Framework/Request.php b/server/webplatform/apps/CameraMonitor/Framework/Request.php new file mode 100644 index 0000000..1dfcdc0 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/Request.php @@ -0,0 +1,31 @@ +parameters = $parameters; + $this->session = new Session(); + } + + public function existParameter($nom) { + return (isset($this->parameters[$nom]) && $this->parameters[$nom] != ""); + } + + public function getParameter($nom) { + if ($this->existParameter($nom)) { + return $this->parameters[$nom]; + } + else + throw new Exception("Paramètre '$nom' absent de la requête"); + } + + public function getSession(){ + return $this->session; + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Framework/Router.php b/server/webplatform/apps/CameraMonitor/Framework/Router.php new file mode 100644 index 0000000..7955d7d --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/Router.php @@ -0,0 +1,58 @@ +createController($request); + $action = $this->createAction($request); + + $controller->executeAction($action); + } + catch (Exception $e) { + $this->error($e); + } + } + + private function createController($request) { + $controller = "Default"; + if ($request->existParameter('controller')) { + $controller = $request->getParameter('controller'); + $controller = ucfirst(strtolower($controller)); + } + + $classController = "Controller" . $controller; + $fileController = $GLOBALS['app_path']."Controller/" . $classController . ".php"; + if (file_exists($fileController)) { + + require($fileController); + $controller = new $classController(); + $controller->setRequest($request); + return $controller; + } + else + { + throw new Exception("Fichier '$fileController' introuvable"); + return null; + } + } + + private function createAction(Request $request) { + $action = "index"; + if ($request->existParameter('action')) { + $action = $request->getParameter('action'); + } + return $action; + } + + private function error($exception) { + $view = new View('error'); + $view->generate(array('msgError' => $exception->getMessage())); + } + +} diff --git a/server/webplatform/apps/CameraMonitor/Framework/Session.php b/server/webplatform/apps/CameraMonitor/Framework/Session.php new file mode 100644 index 0000000..ddd52bb --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/Session.php @@ -0,0 +1,35 @@ +existAttribute($name)) { + return $_SESSION[$name]; + } + else { + throw new Exception("Attribut '$name' absent de la session"); + } + } +} diff --git a/server/webplatform/apps/CameraMonitor/Framework/View.php b/server/webplatform/apps/CameraMonitor/Framework/View.php new file mode 100644 index 0000000..0277655 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Framework/View.php @@ -0,0 +1,49 @@ +file = $file . $action . ".php"; + } + + public function generate($data) { + $content = $this->generateFile($this->file, $data); + + $title = ""; + $headScript = ""; + if(isset($data['title'])) + $title = $data['title']; + if(isset($data['headScript'])) + $headScript = $data['headScript']; + + $root = Configuration::get("root", "/"); + $vue = $this->generateFile($GLOBALS['app_path'].'View/template.php', + array('headScript'=> $headScript, 'title' => $title, 'content' => $content, + 'root' => $root)); + echo $vue; + } + + private function generateFile($file, $data) { + if (file_exists($file)) { + extract($data); + ob_start(); + require $file; + return ob_get_clean(); + } + else { + throw new Exception("Fichier '$file' introuvable"); + return null; + } + } + + private function clean($value) { + return htmlspecialchars($value, ENT_QUOTES, 'UTF-8', false); + } +} \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Model/Entity/Camera.php b/server/webplatform/apps/CameraMonitor/Model/Entity/Camera.php new file mode 100644 index 0000000..a27cdcc --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Model/Entity/Camera.php @@ -0,0 +1,122 @@ +name = $name; + $this->available = $available; + $this->enabled = $enabled; + $this->id = $id; + $this->product_key = $product_key; + $this->rtmp_handle = $rtmp_handle; + } + + /** + * @return mixed + */ + public function getRtmpHandle() + { + return $this->rtmp_handle; + } + + /** + * @param mixed $rtmp_handle + */ + public function setRtmpHandle($rtmp_handle) + { + $this->rtmp_handle = $rtmp_handle; + } + + /** + * @return mixed + */ + public function getProductKey() + { + return $this->product_key; + } + + /** + * @param mixed $product_key + */ + public function setProductKey($product_key) + { + $this->product_key = $product_key; + } + + /** + * @return mixed + */ + public function getName() + { + return $this->name; + } + + /** + * @param mixed $name + */ + public function setName($name) + { + $this->name = $name; + } + + /** + * @return mixed + */ + public function getAvailable() + { + return $this->available; + } + + /** + * @param mixed $available + */ + public function setAvailable($available) + { + $this->available = $available; + } + + /** + * @return mixed + */ + public function getEnabled() + { + return $this->enabled; + } + + /** + * @param mixed $enabled + */ + public function setEnabled($enabled) + { + $this->enabled = $enabled; + } + + /** + * @return mixed + */ + public function getId() + { + return $this->id; + } + + /** + * @param mixed $id + */ + public function setId($id) + { + $this->id = $id; + } + + + +} +?> \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/Model/Entity/User.php b/server/webplatform/apps/CameraMonitor/Model/Entity/User.php new file mode 100644 index 0000000..94f8559 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Model/Entity/User.php @@ -0,0 +1,64 @@ +id = $id; + $this->login = $login; + $this->password = $password; + } + + /** + * @return mixed + */ + public function getLogin() + { + return $this->login; + } + + /** + * @param mixed $login + */ + public function setLogin($login) + { + $this->login = $login; + } + + /** + * @return mixed + */ + public function getPassword() + { + return $this->password; + } + + /** + * @param mixed $password + */ + public function setPassword($password) + { + $this->password = $password; + } + + /** + * @return mixed + */ + public function getId() + { + return $this->id; + } + + /** + * @param mixed $id + */ + public function setId($id) + { + $this->id = $id; + } + + +} diff --git a/server/webplatform/apps/CameraMonitor/Model/ModelCamera.php b/server/webplatform/apps/CameraMonitor/Model/ModelCamera.php new file mode 100644 index 0000000..c8f7b80 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Model/ModelCamera.php @@ -0,0 +1,85 @@ +executeRequest($sql, array($camera_id)); + if ( $result->rowCount() == 1) + { + $result = $result->fetch(); + $name = $this->getNameCameraByUser($user_id, $camera_id); + return new Camera($result['id'], $name, $result['product_key'],$result['available'],$result['enabled'],$result['rtmp_handle']); + } + else + throw new Exception("Aucune caméra ne correspond à cet identifiant"); + } + + public function getNameCameraByUser($user_id, $camera_id) + { + $sql = "select name from user_camera where user_id=? and camera_id=?"; + $result = $this->executeRequest($sql, array($user_id, $camera_id)); + if($result->rowCount() == 1) + return $result->fetch()['name']; + else + throw new Exception("Cet utilisateur n'as pas accès à cet caméra"); + } + + public function addCamera($id, $product_key, $available, $enabled, $rtmp_handle) + { + $sql = "insert into camera values(?,?,?,?,?)"; + $this->executeRequest($sql, array($id, $product_key, $available, $enabled, $rtmp_handle)); + } + + public function getAllCameraByUser($user_id) + { + $sql = "select * from user_camera where user_id=?"; + $result = $this->executeRequest($sql, array($user_id)); + $result = $result->fetchAll(); + $cameras = null; + foreach($result as $cam) + { + $cameras[] = $this->getCamera($cam['camera_id'], $user_id); + } + + return $cameras; + } + + public function userCanAccessCam($user_id, $camera_id) + { + $sql = "select name from user_camera where user_id=? and camera_id=?"; + $result = $this->executeRequest($sql, array($user_id, $camera_id)); + return $result->rowCount() == 1; + } + + public function delete($id) + { + $sql = "delete from camera where id=?"; + $this->executeRequest($sql,array($id)); + } + + public function exist($camera_id) + { + $sql = "select * from camera where id=? "; + $result = $this->executeRequest($sql, array($camera_id)); + return ($result->rowCount() == 1); + } + + public function getCameraOnly($camera_id) + { + $sql = "select * from camera where id=?"; + $result = $this->executeRequest($sql, array($camera_id)); + if ( $result->rowCount() == 1) + { + $result = $result->fetch(); + return new Camera($result['id'], "", $result['product_key'],$result['available'],$result['enabled'],$result['rtmp_handle']); + } + else + throw new Exception("Aucune caméra ne correspond à cet identifiant"); + } + +} diff --git a/server/webplatform/apps/CameraMonitor/Model/ModelUser.php b/server/webplatform/apps/CameraMonitor/Model/ModelUser.php new file mode 100644 index 0000000..41892fb --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/Model/ModelUser.php @@ -0,0 +1,75 @@ +executeRequest($sql, array($login, $password)); + return ($user->rowCount() == 1); + } + + public function getUser($login, $password) + { + $sql = "select * from user where login=? and password=?"; + $result = $this->executeRequest($sql, array($login, $password)); + if ( $result->rowCount() == 1) + { + $result = $result->fetch(); + return new User($result['id'],$result['login'],$result['password']); + } + else + throw new Exception("Aucun utilisateur ne correspond aux identifiants fournis"); + } + + public function addUser($login, $password) + { + $sql = "insert into user values('',?,?)"; + $this->executeRequest($sql, array($login, $password)); + } + + public function getUserById($id) + { + $sql = "select * from user where id=?"; + $result = $this->executeRequest($sql, array($id)); + if ( $result->rowCount() == 1) + { + $result = $result->fetch(); + return new User($result['id'],$result['login'],$result['password']); + } + else + throw new Exception("Aucun utilisateur ne correspond à l'id fournis"); + } + + public function update($id,$login,$password) + { + $sql = "update user Set login=?, password=? where id=?"; + $this->executeRequest($sql, array($login,$password,$id)); + } + + public function deleteCam($user_id, $camera_id) + { + $sql = "delete from user_camera where user_id=? and camera_id=?"; + $this->executeRequest($sql,array($user_id,$camera_id)); + } + + public function addCam($user_id, $camera_id, $name) + { + $sql = "insert into user_camera values(?,?,?)"; + $this->executeRequest($sql, array($user_id, $camera_id, $name)); + } + + public function haveCam($user_id, $camera_id) + { + $sql = "select * from user_camera where user_id=? and camera_id=?"; + $result = $this->executeRequest($sql,array($user_id, $camera_id)); + + if($result->rowCount() == 1) + return true; + + return false; + } +} diff --git a/server/webplatform/apps/CameraMonitor/View/Camera/delayed.php b/server/webplatform/apps/CameraMonitor/View/Camera/delayed.php new file mode 100644 index 0000000..1d141d0 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Camera/delayed.php @@ -0,0 +1,24 @@ +

Site web Projet L3

+ +
+ +
+ +
+ +
+ + $video): ?> +
Du au
+
+ + + + + + diff --git a/server/webplatform/apps/CameraMonitor/View/Camera/index.php b/server/webplatform/apps/CameraMonitor/View/Camera/index.php new file mode 100644 index 0000000..d98b633 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Camera/index.php @@ -0,0 +1,37 @@ +

Site web Projet L3

+ +
+ +
+ +
+ +
+ +
+

Caméra : clean($camera->getName())?>

+ + clean($camera->getAvailable()) == true):?> Joignable - + Non joignable - + + + clean($camera->getEnabled()) == true):?> Activée + + Désactivée + + + + + + +
+
+
+ diff --git a/server/webplatform/apps/CameraMonitor/View/Connexion/index.php b/server/webplatform/apps/CameraMonitor/View/Connexion/index.php new file mode 100644 index 0000000..c99cf44 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Connexion/index.php @@ -0,0 +1,17 @@ +title = " Connexion" ?> + +

Vous devez être connecté pour accéder au site.

+ +
+ + + +
+ +
+ +
+ + +

+ \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/View/Connexion/registration.php b/server/webplatform/apps/CameraMonitor/View/Connexion/registration.php new file mode 100644 index 0000000..62b4413 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Connexion/registration.php @@ -0,0 +1,23 @@ +title = "Inscription" ?> + +

Enregistrez vous pour avoir accès au site

+ +
+ +
+ + +
+ + +
+ +
+ +
+ +
+ + +

+ \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/View/Default/admin.php b/server/webplatform/apps/CameraMonitor/View/Default/admin.php new file mode 100644 index 0000000..f1863d2 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Default/admin.php @@ -0,0 +1,10 @@ +

Site web Projet L3

+ + + + + + +

Numéro de série de la caméra : clean($id) ?>

+

Clé produit de la caméra : clean($product_key) ?>

+ diff --git a/server/webplatform/apps/CameraMonitor/View/Default/index.php b/server/webplatform/apps/CameraMonitor/View/Default/index.php new file mode 100644 index 0000000..eb98b4d --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Default/index.php @@ -0,0 +1,34 @@ +

Site web Projet L3

+ + + + +

Mes caméras

+ + + + +

Vous n'avez accès à aucune caméra

+ \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/View/Default/live.php b/server/webplatform/apps/CameraMonitor/View/Default/live.php new file mode 100644 index 0000000..d68dbda --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Default/live.php @@ -0,0 +1,18 @@ +

Site web Projet L3

+ +
+ +
+ +
+ +
+ +

Caméra : clean($camera->getName())?>

+ +
+ \ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/View/Default/settings.php b/server/webplatform/apps/CameraMonitor/View/Default/settings.php new file mode 100644 index 0000000..8dd76da --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/Default/settings.php @@ -0,0 +1,61 @@ +

Site web Projet L3

+ + + + +

Mes informations

+ + +

+ +

Mes identifiants :

+
+ + + +
+ +
+ + + + + +
+ +

Mes caméras :

+ + + +

Vous n'avez accès à aucune caméra

+ +
+ + + + + +
\ No newline at end of file diff --git a/server/webplatform/apps/CameraMonitor/View/error.php b/server/webplatform/apps/CameraMonitor/View/error.php new file mode 100644 index 0000000..740663f --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/error.php @@ -0,0 +1,18 @@ + + + + + + Erreur + + + + +

ERREUR !!!!!

+ + + + diff --git a/server/webplatform/apps/CameraMonitor/View/template.php b/server/webplatform/apps/CameraMonitor/View/template.php new file mode 100644 index 0000000..8f5dc33 --- /dev/null +++ b/server/webplatform/apps/CameraMonitor/View/template.php @@ -0,0 +1,15 @@ + + + + + + + <?= $title ?> + + + +
+ +
+ + \ No newline at end of file diff --git a/server/webplatform/www/.htaccess b/server/webplatform/www/.htaccess new file mode 100644 index 0000000..cb58bec --- /dev/null +++ b/server/webplatform/www/.htaccess @@ -0,0 +1,2 @@ +RewriteEngine on +RewriteRule ^([a-zA-Z]*)/?([a-zA-Z]*)?/?([a-zA-Z0-9]*)?/?$ index.php?controller=$1&action=$2&id=$3 [NC,L] \ No newline at end of file diff --git a/server/webplatform/www/Content/myStyle.css b/server/webplatform/www/Content/myStyle.css new file mode 100644 index 0000000..8b13789 --- /dev/null +++ b/server/webplatform/www/Content/myStyle.css @@ -0,0 +1 @@ + diff --git a/server/webplatform/www/camera-auth/index.php b/server/webplatform/www/camera-auth/index.php new file mode 100644 index 0000000..730298c --- /dev/null +++ b/server/webplatform/www/camera-auth/index.php @@ -0,0 +1,25 @@ +exist($idCam) && $rtmp_handle != "") + { + $camera = $modelCamera->getCameraOnly($idCam); + if($camera->getRtmpHandle() == $rtmp_handle) + http_response_code(200); + else + http_response_code(403); + } + else + http_response_code(403); +} +else + http_response_code(403); +?> \ No newline at end of file diff --git a/server/webplatform/www/client-auth/index.php b/server/webplatform/www/client-auth/index.php new file mode 100644 index 0000000..73cdbda --- /dev/null +++ b/server/webplatform/www/client-auth/index.php @@ -0,0 +1,25 @@ +exist($login, $password)) + { + if($modelUser->haveCam($modelUser->getUser($login,$password)->getId(),$idCam) || $login == "root") + http_response_code(200); + else + http_response_code(403); + } + else + http_response_code(403); +} +else + http_response_code(403); +?> \ No newline at end of file diff --git a/server/webplatform/www/index.php b/server/webplatform/www/index.php new file mode 100644 index 0000000..a5c6c9a --- /dev/null +++ b/server/webplatform/www/index.php @@ -0,0 +1,10 @@ +routingRequest() + +?> \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/jwplayer.flash.swf b/server/webplatform/www/jwplayer/jwplayer.flash.swf new file mode 100644 index 0000000000000000000000000000000000000000..2d3ef10d29be7a87d57f3a6d4cc770e9833f684e GIT binary patch literal 95730 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.call(d,b[e],e,b)===a)return}else for(var g=s.keys(b),e=0,f=g.length;f>e;e++)if(c.call(d,b[g[e]],g[e],b)===a)return;return b};s.map=s.collect=function(a,b,c){var d=[];return null==a?d:i&&a.map===i?a.map(b,c):(t(a,function(a,e,f){d.push(b.call(c,a,e,f))}),d)};var u="Reduce of empty array with no initial value";s.reduce=s.foldl=s.inject=function(a,b,c,d){var e=arguments.length>2;if(null==a&&(a=[]),j&&a.reduce===j)return d&&(b=s.bind(b,d)),e?a.reduce(b,c):a.reduce(b);if(t(a,function(a,f,g){e?c=b.call(d,c,a,f,g):(c=a,e=!0)}),!e)throw new TypeError(u);return c},s.find=s.detect=function(a,b,c){var d;return v(a,function(a,e,f){return b.call(c,a,e,f)?(d=a,!0):void 0}),d},s.filter=s.select=function(a,b,c){var d=[];return null==a?d:l&&a.filter===l?a.filter(b,c):(t(a,function(a,e,f){b.call(c,a,e,f)&&d.push(a)}),d)},s.reject=function(a,b,c){return s.filter(a,function(a,d,e){return!b.call(c,a,d,e)},c)},s.compact=function(a){return s.filter(a,s.identity)},s.every=s.all=function(b,c,d){c||(c=s.identity);var e=!0;return null==b?e:m&&b.every===m?b.every(c,d):(t(b,function(b,f,g){return(e=e&&c.call(d,b,f,g))?void 0:a}),!!e)};var v=s.some=s.any=function(b,c,d){c||(c=s.identity);var e=!1;return null==b?e:n&&b.some===n?b.some(c,d):(t(b,function(b,f,g){return e||(e=c.call(d,b,f,g))?a:void 0}),!!e)};s.size=function(a){return null==a?0:a.length===+a.length?a.length:s.keys(a).length},s.after=function(a,b){return function(){return--a<1?b.apply(this,arguments):void 0}},s.before=function(a,b){var c;return function(){return--a>0&&(c=b.apply(this,arguments)),1>=a&&(b=null),c}};var w=function(a){return null==a?s.identity:s.isFunction(a)?a:s.property(a)};s.sortedIndex=function(a,b,c,d){c=w(c);for(var e=c.call(d,b),f=0,g=a.length;g>f;){var h=f+g>>>1;c.call(d,a[h])=0)},s.where=function(a,b){return s.filter(a,s.matches(b))},s.findWhere=function(a,b){return s.find(a,s.matches(b))},s.max=function(a,b,c){if(!b&&s.isArray(a)&&a[0]===+a[0]&&a.length<65535)return Math.max.apply(Math,a);var d=-(1/0),e=-(1/0);return t(a,function(a,f,g){var h=b?b.call(c,a,f,g):a;h>e&&(d=a,e=h)}),d},s.difference=function(a){var c=f.apply(b,e.call(arguments,1));return s.filter(a,function(a){return!s.contains(c,a)})},s.without=function(a){return s.difference(a,e.call(arguments,1))},s.indexOf=function(a,b,c){if(null==a)return-1;var d=0,e=a.length;if(c){if("number"!=typeof c)return d=s.sortedIndex(a,b),a[d]===b?d:-1;d=0>c?Math.max(0,e+c):c}if(o&&a.indexOf===o)return a.indexOf(b,c);for(;e>d;d++)if(a[d]===b)return d;return-1};var x=function(){};s.bind=function(a,b){var c,d;if(r&&a.bind===r)return r.apply(a,e.call(arguments,1));if(!s.isFunction(a))throw new TypeError;return c=e.call(arguments,2),d=function(){if(!(this instanceof d))return a.apply(b,c.concat(e.call(arguments)));x.prototype=a.prototype;var f=new x;x.prototype=null;var g=a.apply(f,c.concat(e.call(arguments)));return Object(g)===g?g:f}},s.partial=function(a){var b=e.call(arguments,1);return function(){for(var c=0,d=b.slice(),e=0,f=d.length;f>e;e++)d[e]===s&&(d[e]=arguments[c++]);for(;c=k?(clearTimeout(g),g=null,h=j,f=a.apply(d,e),d=e=null):g||c.trailing===!1||(g=setTimeout(i,k)),f}},s.keys=function(a){if(!s.isObject(a))return[];if(q)return q(a);var b=[];for(var c in a)s.has(a,c)&&b.push(c);return b},s.invert=function(a){for(var b={},c=s.keys(a),d=0,e=c.length;e>d;d++)b[a[c[d]]]=c[d];return b},s.defaults=function(a){return t(e.call(arguments,1),function(b){if(b)for(var c in b)void 0===a[c]&&(a[c]=b[c])}),a},s.extend=function(a){return t(e.call(arguments,1),function(b){if(b)for(var c in b)a[c]=b[c]}),a},s.pick=function(a){var c={},d=f.apply(b,e.call(arguments,1));return t(d,function(b){b in a&&(c[b]=a[b])}),c},s.omit=function(a){var c={},d=f.apply(b,e.call(arguments,1));for(var g in a)s.contains(d,g)||(c[g]=a[g]);return c},s.clone=function(a){return s.isObject(a)?s.isArray(a)?a.slice():s.extend({},a):a},s.isArray=p||function(a){return"[object Array]"==g.call(a)},s.isObject=function(a){return a===Object(a)},t(["Arguments","Function","String","Number","Date","RegExp"],function(a){s["is"+a]=function(b){return g.call(b)=="[object "+a+"]"}}),s.isArguments(arguments)||(s.isArguments=function(a){return!(!a||!s.has(a,"callee"))}),s.isFunction=function(a){return"function"==typeof a},s.isFinite=function(a){return isFinite(a)&&!isNaN(parseFloat(a))},s.isNaN=function(a){return s.isNumber(a)&&a!=+a},s.isBoolean=function(a){return a===!0||a===!1||"[object Boolean]"==g.call(a)},s.isNull=function(a){return null===a},s.isUndefined=function(a){return void 0===a},s.has=function(a,b){return h.call(a,b)},s.identity=function(a){return a},s.constant=function(a){return function(){return a}},s.property=function(a){return function(b){return b[a]}},s.propertyOf=function(a){return null==a?function(){}:function(b){return a[b]}},s.matches=function(a){return function(b){if(b===a)return!0;for(var c in a)if(a[c]!==b[c])return!1;return!0}},s.now=Date.now||function(){return(new Date).getTime()},s.result=function(a,b){if(null!=a){var c=a[b];return s.isFunction(c)?c.call(a):c}};var y=0;return s.uniqueId=function(a){var b=++y+"";return a?a+b:b},s}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){var a={DRAG:"drag",DRAG_START:"dragStart",DRAG_END:"dragEnd",CLICK:"click",DOUBLE_CLICK:"doubleClick",TAP:"tap",DOUBLE_TAP:"doubleTap",OVER:"over",MOVE:"move",OUT:"out"},b={COMPLETE:"complete",ERROR:"error",JWPLAYER_AD_CLICK:"adClick",JWPLAYER_AD_COMPANIONS:"adCompanions",JWPLAYER_AD_COMPLETE:"adComplete",JWPLAYER_AD_ERROR:"adError",JWPLAYER_AD_IMPRESSION:"adImpression",JWPLAYER_AD_META:"adMeta",JWPLAYER_AD_PAUSE:"adPause",JWPLAYER_AD_PLAY:"adPlay",JWPLAYER_AD_SKIPPED:"adSkipped",JWPLAYER_AD_TIME:"adTime",JWPLAYER_CAST_AD_CHANGED:"castAdChanged",JWPLAYER_MEDIA_COMPLETE:"complete",JWPLAYER_READY:"ready",JWPLAYER_MEDIA_SEEK:"seek",JWPLAYER_MEDIA_BEFOREPLAY:"beforePlay",JWPLAYER_MEDIA_BEFORECOMPLETE:"beforeComplete",JWPLAYER_MEDIA_BUFFER_FULL:"bufferFull",JWPLAYER_DISPLAY_CLICK:"displayClick",JWPLAYER_PLAYLIST_COMPLETE:"playlistComplete",JWPLAYER_CAST_SESSION:"cast",JWPLAYER_MEDIA_ERROR:"mediaError",JWPLAYER_MEDIA_FIRST_FRAME:"firstFrame",JWPLAYER_MEDIA_PLAY_ATTEMPT:"playAttempt",JWPLAYER_MEDIA_LOADED:"loaded",JWPLAYER_MEDIA_SEEKED:"seeked",JWPLAYER_SETUP_ERROR:"setupError",JWPLAYER_ERROR:"error",JWPLAYER_PLAYER_STATE:"state",JWPLAYER_CAST_AVAILABLE:"castAvailable",JWPLAYER_MEDIA_BUFFER:"bufferChange",JWPLAYER_MEDIA_TIME:"time",JWPLAYER_MEDIA_TYPE:"mediaType",JWPLAYER_MEDIA_VOLUME:"volume",JWPLAYER_MEDIA_MUTE:"mute",JWPLAYER_MEDIA_META:"meta",JWPLAYER_MEDIA_LEVELS:"levels",JWPLAYER_MEDIA_LEVEL_CHANGED:"levelsChanged",JWPLAYER_CONTROLS:"controls",JWPLAYER_FULLSCREEN:"fullscreen",JWPLAYER_RESIZE:"resize",JWPLAYER_PLAYLIST_ITEM:"playlistItem",JWPLAYER_PLAYLIST_LOADED:"playlist",JWPLAYER_AUDIO_TRACKS:"audioTracks",JWPLAYER_AUDIO_TRACK_CHANGED:"audioTrackChanged",JWPLAYER_LOGO_CLICK:"logoClick",JWPLAYER_CAPTIONS_LIST:"captionsList",JWPLAYER_CAPTIONS_CHANGED:"captionsChanged",JWPLAYER_PROVIDER_CHANGED:"providerChanged",JWPLAYER_PROVIDER_FIRST_FRAME:"providerFirstFrame",JWPLAYER_USER_ACTION:"userAction",JWPLAYER_PROVIDER_CLICK:"providerClick",JWPLAYER_VIEW_TAB_FOCUS:"tabFocus",JWPLAYER_CONTROLBAR_DRAGGING:"scrubbing",JWPLAYER_INSTREAM_CLICK:"instreamClick"};return b.touchEvents=a,b}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){var b=[],c=b.slice,d={on:function(a,b,c){if(!f(this,"on",a,[b,c])||!b)return this;this._events||(this._events={});var d=this._events[a]||(this._events[a]=[]);return d.push({callback:b,context:c}),this},once:function(b,c,d){if(!f(this,"once",b,[c,d])||!c)return this;var e=this,g=a.once(function(){e.off(b,g),c.apply(this,arguments)});return g._callback=c,this.on(b,g,d)},off:function(b,c,d){var e,g,h,i,j,k,l,m;if(!this._events||!f(this,"off",b,[c,d]))return this;if(!b&&!c&&!d)return this._events=void 0,this;for(i=b?[b]:a.keys(this._events),j=0,k=i.length;k>j;j++)if(b=i[j],h=this._events[b]){if(this._events[b]=e=[],c||d)for(l=0,m=h.length;m>l;l++)g=h[l],(c&&c!==g.callback&&c!==g.callback._callback||d&&d!==g.context)&&e.push(g);e.length||delete this._events[b]}return this},trigger:function(a){if(!this._events)return this;var b=c.call(arguments,1);if(!f(this,"trigger",a,b))return this;var d=this._events[a],e=this._events.all;return d&&g(d,b,this),e&&g(e,arguments,this),this},triggerSafe:function(a){if(!this._events)return this;var b=c.call(arguments,1);if(!f(this,"trigger",a,b))return this;var d=this._events[a],e=this._events.all;return d&&h(d,b,this),e&&h(e,arguments,this),this}},e=/\s+/,f=function(a,b,c,d){if(!c)return!0;if("object"==typeof c){for(var f in c)a[b].apply(a,[f,c[f]].concat(d));return!1}if(e.test(c)){for(var g=c.split(e),h=0,i=g.length;i>h;h++)a[b].apply(a,[g[h]].concat(d));return!1}return!0},g=function(a,b,c){var d,e=-1,f=a.length,g=b[0],h=b[1],i=b[2];switch(b.length){case 0:for(;++e=0)return d.substr(0,d.indexOf(a))}return""}),e.parseXML=function(a){var b=null;try{"DOMParser"in window?(b=(new window.DOMParser).parseFromString(a,"text/xml"),(d(b.childNodes)||b.childNodes&&d(b.childNodes[0].childNodes))&&(b=null)):(b=new window.ActiveXObject("Microsoft.XMLDOM"),b.async="false",b.loadXML(a))}catch(c){}return b},e.serialize=function(a){if(void 0===a)return null;if("string"==typeof a&&a.length<6){var b=a.toLowerCase();if("true"===b)return!0;if("false"===b)return!1;if(!isNaN(Number(a))&&!isNaN(parseFloat(a)))return Number(a)}return a},e.parseDimension=function(a){return"string"==typeof a?""===a?0:a.lastIndexOf("%")>-1?a:parseInt(a.replace("px",""),10):a},e.timeFormat=function(a,b){if(0>=a&&!b)return"00:00";var c=0>a?"-":"";a=Math.abs(a);var d=Math.floor(a/3600),e=Math.floor((a-3600*d)/60),f=Math.floor(a%60);return c+(d?d+":":"")+(10>e?"0":"")+e+":"+(10>f?"0":"")+f},e.adaptiveType=function(a){if(0!==a){var b=-120;if(b>=a)return"DVR";if(0>a||a===1/0)return"LIVE"}return"VOD"},e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){var b={};return b.exists=function(a){switch(typeof a){case"string":return a.length>0;case"object":return null!==a;case"undefined":return!1}return!0},b.isHTTPS=function(){return 0===window.location.href.indexOf("https")},b.isRtmp=function(a,b){return 0===a.indexOf("rtmp")||"rtmp"===b},b.isYouTube=function(a,b){return"youtube"===b||/^(http|\/\/).*(youtube\.com|youtu\.be)\/.+/.test(a)},b.youTubeID=function(a){var b=/v[=\/]([^?&]*)|youtu\.be\/([^?]*)|^([\w-]*)$/i.exec(a);return b?b.slice(1).join("").replace("?",""):""},b.typeOf=function(b){if(null===b)return"null";var c=typeof b;return"object"===c&&a.isArray(b)?"array":c},b}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){function b(a){return a.indexOf("(format=m3u8-")>-1?"m3u8":!1}var c=function(a){return a.replace(/^\s+|\s+$/g,"")},d=function(a,b,c){for(a=""+a,c=c||"0";a.length-1?a.substr(a.lastIndexOf(".")+1,a.length).toLowerCase():void 0)},g=function(a){var b=parseInt(a/3600),c=parseInt(a/60)%60,e=a%60;return d(b,2)+":"+d(c,2)+":"+d(e.toFixed(3),6)},h=function(b){if(a.isNumber(b))return b;b=b.replace(",",".");var c=b.split(":"),d=0;return"s"===b.slice(-1)?d=parseFloat(b):"m"===b.slice(-1)?d=60*parseFloat(b):"h"===b.slice(-1)?d=3600*parseFloat(b):c.length>1?(d=parseFloat(c[c.length-1]),d+=60*parseFloat(c[c.length-2]),3===c.length&&(d+=3600*parseFloat(c[c.length-3]))):d=parseFloat(b),d},i=function(b,c){return a.map(b,function(a){return c+a})},j=function(b,c){return a.map(b,function(a){return a+c})};return{trim:c,pad:d,xmlAttribute:e,extension:f,hms:g,seconds:h,suffix:j,prefix:i}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){function b(a){return function(){return d(a)}}var c={},d=a.memoize(function(a){var b=navigator.userAgent.toLowerCase();return null!==b.match(a)}),e=c.isInt=function(a){return parseFloat(a)%1===0};c.isFlashSupported=function(){var a=c.flashVersion();return a&&a>=11.2},c.isFF=b(/firefox/i),c.isIPod=b(/iP(hone|od)/i),c.isIPad=b(/iPad/i),c.isSafari602=b(/Macintosh.*Mac OS X 10_8.*6\.0\.\d* Safari/i),c.isOSX=b(/Mac OS X/i),c.isEdge=b(/\sedge\/\d+/i);var f=c.isIETrident=function(a){return c.isEdge()?!0:a?(a=parseFloat(a).toFixed(1),d(new RegExp("trident/.+rv:\\s*"+a,"i"))):d(/trident/i)},g=c.isMSIE=function(a){return a?(a=parseFloat(a).toFixed(1),d(new RegExp("msie\\s*"+a,"i"))):d(/msie/i)},h=b(/chrome/i);c.isChrome=function(){return h()&&!c.isEdge()},c.isIE=function(a){return a?(a=parseFloat(a).toFixed(1),a>=11?f(a):g(a)):g()||f()},c.isSafari=function(){return d(/safari/i)&&!d(/chrome/i)&&!d(/chromium/i)&&!d(/android/i)};var i=c.isIOS=function(a){return d(a?new RegExp("iP(hone|ad|od).+\\s(OS\\s"+a+"|.*\\sVersion/"+a+")","i"):/iP(hone|ad|od)/i)};c.isAndroidNative=function(a){return j(a,!0)};var j=c.isAndroid=function(a,b){return b&&d(/chrome\/[123456789]/i)&&!d(/chrome\/18/)?!1:a?(e(a)&&!/\./.test(a)&&(a=""+a+"."),d(new RegExp("Android\\s*"+a,"i"))):d(/Android/i)};return c.isMobile=function(){return i()||j()},c.isIframe=function(){return window.frameElement&&"IFRAME"===window.frameElement.nodeName},c.flashVersion=function(){if(c.isAndroid())return 0;var a,b=navigator.plugins;if(b&&(a=b["Shockwave Flash"],a&&a.description))return parseFloat(a.description.replace(/\D+(\d+\.?\d*).*/,"$1"));if("undefined"!=typeof window.ActiveXObject){try{if(a=new window.ActiveXObject("ShockwaveFlash.ShockwaveFlash"))return parseFloat(a.GetVariable("$version").split(" ")[1].replace(/\s*,\s*/,"."))}catch(d){return 0}return a}return 0},c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(51),c(45),c(54)],e=function(a,b,c){var d={};d.createElement=function(a){var b=document.createElement("div");return b.innerHTML=a,b.firstChild},d.styleDimension=function(a){return a+(a.toString().indexOf("%")>0?"":"px")};var e=function(a){return b.isString(a.className)?a.className.split(" "):[]},f=function(b,c){c=a.trim(c),b.className!==c&&(b.className=c)};return d.classList=function(a){return a.classList?a.classList:e(a)},d.hasClass=c.hasClass,d.addClass=function(a,c){var d=e(a),g=b.isArray(c)?c:c.split(" ");b.each(g,function(a){b.contains(d,a)||d.push(a)}),f(a,d.join(" "))},d.removeClass=function(a,c){var d=e(a),g=b.isArray(c)?c:c.split(" ");f(a,b.difference(d,g).join(" "))},d.replaceClass=function(a,b,c){var d=a.className||"";b.test(d)?d=d.replace(b,c):c&&(d+=" "+c),f(a,d)},d.toggleClass=function(a,c,e){var f=d.hasClass(a,c);e=b.isBoolean(e)?e:!f,e!==f&&(e?d.addClass(a,c):d.removeClass(a,c))},d.emptyElement=function(a){for(;a.firstChild;)a.removeChild(a.firstChild)},d.addStyleSheet=function(a){var b=document.createElement("link");b.rel="stylesheet",b.href=a,document.getElementsByTagName("head")[0].appendChild(b)},d.empty=function(a){if(a)for(;a.childElementCount>0;)a.removeChild(a.children[0])},d.bounds=function(a){var b={left:0,right:0,width:0,height:0,top:0,bottom:0};if(!a||!document.body.contains(a))return b;var c=a.getBoundingClientRect(a),d=window.pageYOffset,e=window.pageXOffset;return c.width||c.height||c.left||c.top?(b.left=c.left+e,b.right=c.right+e,b.top=c.top+d,b.bottom=c.bottom+d,b.width=c.right-c.left,b.height=c.bottom-c.top,b):b},d}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){return{hasClass:function(a,b){var c=" "+b+" ";return 1===a.nodeType&&(" "+a.className+" ").replace(/[\t\r\n\f]/g," ").indexOf(c)>=0}}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(51)],e=function(a){function b(a){a=a.split("-");for(var b=1;b=0&&(d.removeChild(e[b]),delete e[b])},i=function(a,b){g(a,{transform:b,webkitTransform:b,msTransform:b,mozTransform:b,oTransform:b})},j=function(a,b){var c="rgb";a?(a=String(a).replace("#",""),3===a.length&&(a=a[0]+a[0]+a[1]+a[1]+a[2]+a[2])):a="000000";var d=[parseInt(a.substr(0,2),16),parseInt(a.substr(2,2),16),parseInt(a.substr(4,2),16)];return void 0!==b&&100!==b&&(c+="a",d.push(b/100)),c+"("+d.join(",")+")"};return{css:f,style:g,clearCss:h,transform:i,hexToRgba:j}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(49)],e=function(a,b){function c(a){a.onload=null,a.onprogress=null,a.onreadystatechange=null,a.onerror=null,"abort"in a&&a.abort()}function d(b,d){return function(e){var f=e.currentTarget||d.xhr;if(clearTimeout(d.timeoutId),d.retryWithoutCredentials&&d.xhr.withCredentials){c(f);var g=a.extend({},d,{xhr:null,withCredentials:!1,retryWithoutCredentials:!1});return void l(g)}d.onerror(b,d.url,f)}}function e(a){return function(b){var c=b.currentTarget||a.xhr;if(4===c.readyState){if(clearTimeout(a.timeoutId),c.status>=400){var d;return d=404===c.status?"File not found":""+c.status+"("+c.statusText+")",a.onerror(d,a.url,c)}if(200===c.status)return f(a)(b)}}}function f(a){return function(c){var d=c.currentTarget||a.xhr;if(clearTimeout(a.timeoutId),a.responseType){if("json"===a.responseType)return g(d,a)}else{var e,f=d.responseXML;if(f)try{e=f.firstChild}catch(i){}if(f&&e)return h(d,f,a);if(j&&d.responseText&&!f&&(f=b.parseXML(d.responseText),f&&f.firstChild))return h(d,f,a);if(a.requireValidXML)return void a.onerror("Invalid XML",a.url,d)}a.oncomplete(d)}}function g(b,c){if(!b.response||a.isString(b.response)&&'"'!==b.responseText.substr(1))try{b=a.extend({},b,{response:JSON.parse(b.responseText)})}catch(d){return void c.onerror("Invalid JSON",c.url,b)}return c.oncomplete(b)}function h(b,c,d){var e=c.documentElement;return d.requireValidXML&&("parsererror"===e.nodeName||e.getElementsByTagName("parsererror").length)?void d.onerror("Invalid XML",d.url,b):(b.responseXML||(b=a.extend({},b,{responseXML:c})),d.oncomplete(b))}var i=function(){},j=!1,k=function(a){var b=document.createElement("a"),c=document.createElement("a");b.href=location.href;try{return c.href=a,c.href=c.href,b.protocol+"//"+b.host!=c.protocol+"//"+c.host}catch(d){}return!0},l=function(b,g,h,l){a.isObject(b)&&(l=b,b=l.url);var m,n=a.extend({xhr:null,url:b,withCredentials:!1,retryWithoutCredentials:!1,timeout:6e4,timeoutId:-1,oncomplete:g||i,onerror:h||i,mimeType:l&&!l.responseType?"text/xml":"",requireValidXML:!1,responseType:l&&l.plainText?"text":""},l);if("XDomainRequest"in window&&k(b))m=n.xhr=new window.XDomainRequest,m.onload=f(n),m.ontimeout=m.onprogress=i,j=!0;else{if(!("XMLHttpRequest"in window))return void n.onerror("",b);m=n.xhr=new window.XMLHttpRequest,m.onreadystatechange=e(n)}var o=d("Error loading file",n);m.onerror=o,"overrideMimeType"in m?n.mimeType&&m.overrideMimeType(n.mimeType):j=!0;try{b=b.replace(/#.*$/,""),m.open("GET",b,!0)}catch(p){return o(p),m}if(n.responseType)try{m.responseType=n.responseType}catch(p){}n.timeout&&(n.timeoutId=setTimeout(function(){c(m),n.onerror("Timeout",b,m)},n.timeout));try{n.withCredentials&&"withCredentials"in m&&(m.withCredentials=!0),m.send()}catch(p){o(p)}return m};return{ajax:l,crossdomain:k}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(58),c(45),c(50),c(49),c(59)],e=function(a,b,c,d,e){var f={};return f.repo=b.memoize(function(){var b=e.split("+")[0],d=a.repo+b+"/";return c.isHTTPS()?d.replace(/^http:/,"https:"):d}),f.versionCheck=function(a){var b=("0"+a).split(/\W/),c=e.split(/\W/),d=parseFloat(b[0]),f=parseFloat(c[0]);return d>f?!1:!(d===f&&parseFloat("0"+b[1])>parseFloat(c[1]))},f.isSDK=function(a){return!(!a.analytics||!a.analytics.sdkplatform)},f.loadFrom=function(){return f.repo()},f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){return{repo:"http://ssl.p.jwpcdn.com/player/v/",SkinsIncluded:["seven"],SkinsLoadable:["beelden","bekle","five","glow","roundster","six","stormtrooper","vapor"],dvrSeekLimit:-25}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){return"7.3.6+commercial_v7-3-6.81.commercial.f002db.jwplayer.ad873d.analytics.c31916.vast.0300bb.googima.e8ba93.plugin-sharing.08a279.plugin-related.909f55.plugin-gapro.0374cd"}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){var a=function(a,c,d){if(c=c||this,d=d||[],window.jwplayer&&window.jwplayer.debug)return a.apply(c,d);try{return a.apply(c,d)}catch(e){return new b(a.name,e)}},b=function(a,b){this.name=a,this.message=b.message||b.toString(),this.error=b};return{tryCatch:a,Error:b}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){var b=function(){var b={},c={},d={},e={};return{start:function(c){b[c]=a.now(),d[c]=d[c]+1||1},end:function(d){if(b[d]){var e=a.now()-b[d];c[d]=c[d]+e||e}},dump:function(){return{counts:d,sums:c,events:e}},tick:function(b,c){e[b]=c||a.now()},between:function(a,b){return e[b]&&e[a]?e[b]-e[a]:-1}}};return b}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){return{BUFFERING:"buffering",IDLE:"idle",COMPLETE:"complete",PAUSED:"paused",PLAYING:"playing",ERROR:"error",LOADING:"loading",STALLED:"stalled"}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(64),c(81),c(158)],e=function(a,b,d){var e=a.prototype.setup;return a.prototype.setup=function(a,f){e.apply(this,arguments);var g=this._model.get("edition"),h=b(g),i=this._model.get("cast"),j=this;h("casting")&&i&&i.appid&&c.e(6,function(a){var b=c(159);j._castController=new b(j,j._model),j.castToggle=j._castController.castToggle.bind(j._castController)});var k=d.setup();this.once("ready",k.onReady,this),f.getAdBlock=k.checkAdBlock},a}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(73),c(115),c(74),c(45),c(93),c(111),c(77),c(114),c(65),c(48),c(116),c(47),c(76),c(62),c(46),c(156)],e=function(a,b,c,d,e,f,g,h,i,j,k,l,m,n,o,p){function q(a){return function(){var b=Array.prototype.slice.call(arguments,0);this.eventsQueue.push([a,b])}}function r(a){return a===n.LOADING||a===n.STALLED?n.BUFFERING:a}var s=function(a){this.originalContainer=this.currentContainer=a,this.eventsQueue=[],d.extend(this,l),this._model=new g};return s.prototype={play:q("play"),pause:q("pause"),setVolume:q("setVolume"),setMute:q("setMute"),seek:q("seek"),stop:q("stop"),load:q("load"),playlistNext:q("playlistNext"),playlistPrev:q("playlistPrev"),playlistItem:q("playlistItem"),setFullscreen:q("setFullscreen"), +setCurrentCaptions:q("setCurrentCaptions"),setCurrentQuality:q("setCurrentQuality"),setup:function(g,l){function p(){U.mediaModel.on("change:state",function(a,b){var c=r(b);U.set("state",c)})}function q(){X=null,D(U.get("item")),U.on("change:state",m,this),U.on("change:castState",function(a,b){aa.trigger(o.JWPLAYER_CAST_SESSION,b)}),U.on("change:fullscreen",function(a,b){aa.trigger(o.JWPLAYER_FULLSCREEN,{fullscreen:b})}),U.on("itemReady",function(){aa.trigger(o.JWPLAYER_PLAYLIST_ITEM,{index:U.get("item"),item:U.get("playlistItem")})}),U.on("change:playlist",function(a,b){b.length&&aa.trigger(o.JWPLAYER_PLAYLIST_LOADED,{playlist:b})}),U.on("change:volume",function(a,b){aa.trigger(o.JWPLAYER_MEDIA_VOLUME,{volume:b})}),U.on("change:mute",function(a,b){aa.trigger(o.JWPLAYER_MEDIA_MUTE,{mute:b})}),U.on("change:controls",function(a,b){aa.trigger(o.JWPLAYER_CONTROLS,{controls:b})}),U.on("change:scrubbing",function(a,b){b?y():w()}),U.on("change:captionsList",function(a,b){aa.trigger(o.JWPLAYER_CAPTIONS_LIST,{tracks:b,track:Q()})}),U.mediaController.on("all",aa.trigger.bind(aa)),V.on("all",aa.trigger.bind(aa)),this.showView(V.element()),window.addEventListener("beforeunload",function(){X&&X.destroy(),U&&U.destroy()}),d.defer(s)}function s(){for(aa.trigger(o.JWPLAYER_READY,{setupTime:0}),aa.trigger(o.JWPLAYER_PLAYLIST_LOADED,{playlist:U.get("playlist")}),aa.trigger(o.JWPLAYER_PLAYLIST_ITEM,{index:U.get("item"),item:U.get("playlistItem")}),aa.trigger(o.JWPLAYER_CAPTIONS_LIST,{tracks:U.get("captionsList"),track:U.get("captionsIndex")}),U.get("autostart")&&w({reason:"autostart"});aa.eventsQueue.length>0;){var a=aa.eventsQueue.shift(),b=a[0],c=a[1]||[];aa[b].apply(aa,c)}}function t(a){switch(U.get("state")===n.ERROR&&U.set("state",n.IDLE),x(!0),U.get("autostart")&&U.once("itemReady",w),typeof a){case"string":u(a);break;case"object":var b=C(a);b&&D(0);break;case"number":D(a)}}function u(a){var b=new i;b.on(o.JWPLAYER_PLAYLIST_LOADED,function(a){t(a.playlist)}),b.on(o.JWPLAYER_ERROR,function(a){a.message="Error loading playlist: "+a.message,this.triggerError(a)},this),b.load(a)}function v(){var a=aa._instreamAdapter&&aa._instreamAdapter.getState();return d.isString(a)?a:U.get("state")}function w(a){var b;if(a&&U.set("playReason",a.reason),U.get("state")!==n.ERROR){var c=aa._instreamAdapter&&aa._instreamAdapter.getState();if(d.isString(c))return l.pauseAd(!1);if(U.get("state")===n.COMPLETE&&(x(!0),D(0)),!$&&($=!0,aa.trigger(o.JWPLAYER_MEDIA_BEFOREPLAY,{playReason:U.get("playReason")}),$=!1,Z))return Z=!1,void(Y=null);if(z()){if(0===U.get("playlist").length)return!1;b=j.tryCatch(function(){U.loadVideo()})}else U.get("state")===n.PAUSED&&(b=j.tryCatch(function(){U.playVideo()}));return b instanceof j.Error?(aa.triggerError(b),Y=null,!1):!0}}function x(a){U.off("itemReady",w);var b=!a;Y=null;var c=j.tryCatch(function(){U.stopVideo()},aa);return c instanceof j.Error?(aa.triggerError(c),!1):(b&&(_=!0),$&&(Z=!0),!0)}function y(){Y=null;var a=aa._instreamAdapter&&aa._instreamAdapter.getState();if(d.isString(a))return l.pauseAd(!0);switch(U.get("state")){case n.ERROR:return!1;case n.PLAYING:case n.BUFFERING:var b=j.tryCatch(function(){ba().pause()},this);if(b instanceof j.Error)return aa.triggerError(b),!1;break;default:$&&(Z=!0)}return!0}function z(){var a=U.get("state");return a===n.IDLE||a===n.COMPLETE||a===n.ERROR}function A(a){U.get("state")!==n.ERROR&&(U.get("scrubbing")||U.get("state")===n.PLAYING||w(!0),ba().seek(a))}function B(a,b){x(!0),D(a),w(b)}function C(a){var b=h(a);return b=h.filterPlaylist(b,U.getProviders(),U.get("androidhls"),U.get("drm"),U.get("preload")),U.set("playlist",b),d.isArray(b)&&0!==b.length?!0:(aa.triggerError({message:"Error loading playlist: No playable sources found"}),!1)}function D(a){var b=U.get("playlist");a=(a+b.length)%b.length,U.set("item",a),U.set("playlistItem",b[a]),U.setActiveItem(b[a])}function E(a){B(U.get("item")-1,a||{reason:"external"})}function F(a){B(U.get("item")+1,a||{reason:"external"})}function G(){if(z()){if(_)return void(_=!1);Y=G;var a=U.get("item");return a===U.get("playlist").length-1?void(U.get("repeat")?F({reason:"repeat"}):(U.set("state",n.COMPLETE),aa.trigger(o.JWPLAYER_PLAYLIST_COMPLETE,{}))):void F({reason:"playlist"})}}function H(a){ba().setCurrentQuality(a)}function I(){return ba()?ba().getCurrentQuality():-1}function J(){return this._model?this._model.getConfiguration():void 0}function K(){if(this._model.mediaModel)return this._model.mediaModel.get("visualQuality");var a=L();if(a){var b=I(),c=a[b];if(c)return{level:d.extend({index:b},c),mode:"",reason:""}}return null}function L(){return ba()?ba().getQualityLevels():null}function M(a){ba()&&ba().setCurrentAudioTrack(a)}function N(){return ba()?ba().getCurrentAudioTrack():-1}function O(){return ba()?ba().getAudioTracks():null}function P(a){U.persistVideoSubtitleTrack(a),aa.trigger(o.JWPLAYER_CAPTIONS_CHANGED,{tracks:R(),track:a})}function Q(){return W.getCurrentIndex()}function R(){return W.getCaptionsList()}function S(){var a=U.getVideo();if(a){var b=a.detachMedia();if(b instanceof HTMLVideoElement)return b}return null}function T(){var a=j.tryCatch(function(){U.getVideo().attachMedia()});return a instanceof j.Error?void j.log("Error calling _attachMedia",a):void("function"==typeof Y&&Y())}var U,V,W,X,Y,Z,$=!1,_=!1,aa=this,ba=function(){return U.getVideo()},ca=new a(g);U=this._model.setup(ca),V=this._view=new k(l,U),W=new f(l,U),X=new e(l,U,V,C),X.on(o.JWPLAYER_READY,q,this),X.on(o.JWPLAYER_SETUP_ERROR,this.setupError,this),U.mediaController.on(o.JWPLAYER_MEDIA_COMPLETE,function(){d.defer(G)}),U.mediaController.on(o.JWPLAYER_MEDIA_ERROR,this.triggerError,this),U.on("change:flashBlocked",function(a,b){if(!b)return void this._model.set("errorEvent",void 0);var c=!!a.get("flashThrottle"),d={message:c?"Click to run Flash":"Flash plugin failed to load"};c||this.trigger(o.JWPLAYER_ERROR,d),this._model.set("errorEvent",d)},this),p(),U.on("change:mediaModel",p),this.play=w,this.pause=y,this.seek=A,this.stop=x,this.load=t,this.playlistNext=F,this.playlistPrev=E,this.playlistItem=B,this.setCurrentCaptions=P,this.setCurrentQuality=H,this.detachMedia=S,this.attachMedia=T,this.getCurrentQuality=I,this.getQualityLevels=L,this.setCurrentAudioTrack=M,this.getCurrentAudioTrack=N,this.getAudioTracks=O,this.getCurrentCaptions=Q,this.getCaptionsList=R,this.getVisualQuality=K,this.getConfig=J,this.getState=v,this.setVolume=U.setVolume,this.setMute=U.setMute,this.getProvider=function(){return U.get("provider")},this.getWidth=function(){return U.get("containerWidth")},this.getHeight=function(){return U.get("containerHeight")},this.getContainer=function(){return this.currentContainer},this.resize=V.resize,this.getSafeRegion=V.getSafeRegion,this.setCues=V.addCues,this.setFullscreen=function(a){d.isBoolean(a)||(a=!U.get("fullscreen")),U.set("fullscreen",a),this._instreamAdapter&&this._instreamAdapter._adModel&&this._instreamAdapter._adModel.set("fullscreen",a)},this.addButton=function(a,b,c,e,f){var g={img:a,tooltip:b,callback:c,id:e,btnClass:f},h=U.get("dock");h=h?h.slice(0):[],h=d.reject(h,d.matches({id:g.id})),h.push(g),U.set("dock",h)},this.removeButton=function(a){var b=U.get("dock")||[];b=d.reject(b,d.matches({id:a})),U.set("dock",b)},this.checkBeforePlay=function(){return $},this.getItemQoe=function(){return U._qoeItem},this.setControls=function(a){d.isBoolean(a)||(a=!U.get("controls")),U.set("controls",a);var b=U.getVideo();b&&b.setControls(a)},this.playerDestroy=function(){this.stop(),this.showView(this.originalContainer),V&&V.destroy(),U&&U.destroy(),X&&(X.destroy(),X=null)},this.isBeforePlay=this.checkBeforePlay,this.isBeforeComplete=function(){return U.getVideo().checkComplete()},this.createInstream=function(){return this.instreamDestroy(),this._instreamAdapter=new c(this,U,V),this._instreamAdapter},this.skipAd=function(){this._instreamAdapter&&this._instreamAdapter.skipAd()},this.instreamDestroy=function(){aa._instreamAdapter&&aa._instreamAdapter.destroy()},b(l,this),X.start()},showView:function(a){(document.documentElement.contains(this.currentContainer)||(this.currentContainer=document.getElementById(this._model.get("id")),this.currentContainer))&&(this.currentContainer.parentElement&&this.currentContainer.parentElement.replaceChild(a,this.currentContainer),this.currentContainer=a)},triggerError:function(a){this._model.set("errorEvent",a),this._model.set("state",n.ERROR),this._model.once("change:state",function(){this._model.set("errorEvent",void 0)},this),this.trigger(o.JWPLAYER_ERROR,a)},setupError:function(a){var b=a.message,c=j.createElement(p(this._model.get("id"),this._model.get("skin"),b)),e=this._model.get("width"),f=this._model.get("height");j.style(c,{width:e.toString().indexOf("%")>0?e:e+"px",height:f.toString().indexOf("%")>0?f:f+"px"}),this.showView(c);var g=this;d.defer(function(){g.trigger(o.JWPLAYER_SETUP_ERROR,{message:b})})}},s}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(66),c(67),c(48),c(46),c(47),c(45)],e=function(a,b,c,d,e,f){var g=function(){function g(e){var g=c.tryCatch(function(){var c,g=e.responseXML?e.responseXML.childNodes:null,h="";if(g){for(var k=0;k0&&(g[n][j]="true"===g[n][j],g[n].label.length||delete g[n].label,f.sources.push(g[n]));if(h.length)for(f.tracks=[],n=0;n0&&(h[n][j]="true"===h[n][j],h[n].kind=h[n].kind.length?h[n].kind:"captions",h[n].label.length||delete h[n].label,f.tracks.push(h[n]));return f};return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(66),c(51),c(48)],e=function(a,b,c){var d=b.xmlAttribute,e=a.localName,f=a.textContent,g=a.numChildren,h="media",i=function(a,b){function j(a){var b={zh:"Chinese",nl:"Dutch",en:"English",fr:"French",de:"German",it:"Italian",ja:"Japanese",pt:"Portuguese",ru:"Russian",es:"Spanish"};return b[a]?b[a]:a}var k,l,m="tracks",n=[];for(l=0;l0&&(b=i(k,b)),d(k,"url")&&(b.sources||(b.sources=[]),b.sources.push({file:d(k,"url"),type:d(k,"type"),width:d(k,"width"),label:d(k,"label")}));break;case"title":b.title=f(k);break;case"description":b.description=f(k);break;case"guid":b.mediaid=f(k);break;case"thumbnail":b.image||(b.image=d(k,"url"));break;case"player":break;case"group":i(k,b);break;case"subtitle":var o={};o.file=d(k,"url"),o.kind="captions",d(k,"lang").length>0&&(o.label=j(d(k,"lang"))),n.push(o)}}for(b.hasOwnProperty(m)||(b[m]=[]),l=0;l=e||0>=f?0:f/e*100+"%"}var g={autostart:!1,controls:!0,displaytitle:!0,displaydescription:!0,mobilecontrols:!1,repeat:!1,castAvailable:!1,skin:"seven",stretching:"uniform",mute:!1,volume:90,width:480,height:270},h=function(h){var i=b.extend({},(window.jwplayer||{}).defaults,h);d(i);var j=b.extend({},g,i);if("."===j.base&&(j.base=a.getScriptPath("jwplayer.js")),j.base=(j.base||a.loadFrom()).replace(/\/?$/,"/"),c.p=j.base,j.width=e(j.width),j.height=e(j.height),j.flashplayer=j.flashplayer||a.getScriptPath("jwplayer.js")+"jwplayer.flash.swf","http:"===window.location.protocol&&(j.flashplayer=j.flashplayer.replace("https","http")),j.aspectratio=f(j.aspectratio,j.width),b.isObject(j.skin)&&(j.skinUrl=j.skin.url,j.skinColorInactive=j.skin.inactive,j.skinColorActive=j.skin.active,j.skinColorBackground=j.skin.background,j.skin=b.isString(j.skin.name)?j.skin.name:g.skin),b.isString(j.skin)&&j.skin.indexOf(".xml")>0&&(console.log("JW Player does not support XML skins, please update your config"),j.skin=j.skin.replace(".xml","")),j.aspectratio||delete j.aspectratio,!j.playlist){var k=b.pick(j,["title","description","type","mediaid","image","file","sources","tracks","preload"]);j.playlist=[k]}return j};return h}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(75),c(92),c(46),c(62),c(48),c(47),c(45)],e=function(a,b,c,d,e,f,g){function h(c){var d=c.get("provider").name||"";return d.indexOf("flash")>=0?b:a}var i={skipoffset:null,tag:null},j=function(a,b,f){function j(a,b){b=b||{},u.tag&&!b.tag&&(b.tag=u.tag),this.trigger(a,b)}function k(a){s._adModel.set("duration",a.duration),s._adModel.set("position",a.position)}function l(a){if(m&&t+1-1&&b.length>1&&"youtube"!==m.getName().name&&this.mediaModel.set("currentLevel",parseInt(a))},this.persistQualityLevel=function(a,b){var c=b[a]||{},d=c.label;this.set("qualityLabel",d)},this.setCurrentAudioTrack=function(a,b){a>-1&&b.length>0&&ae;e++){var f=this.providers[e];if(this.providerSupports(f,a)){var g=d-e-1;return{priority:g,name:f.name,type:a.type,provider:b[f.name]}}}return null}}),d}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(81),c(45),c(82)],e=function(a,b,c,d){function e(c,d){var e=b(d);if(!e("dash"))return!1;if(c.drm&&!e("drm"))return!1;if(!window.MediaSource)return!1;if(!a.isChrome()&&!a.isIETrident(11))return!1;var f=c.file||"";return"dash"===c.type||"mpd"===c.type||f.indexOf(".mpd")>-1||f.indexOf("mpd-time-csf")>-1}var f=c.find(d,c.matches({name:"flash"})),g=f.supports;return f.supports=function(c,d){if(!a.isFlashSupported())return!1;var e=c&&c.type;if("hls"===e||"m3u8"===e){var f=b(d);return f("hls")}return g.apply(this,arguments)},d.push({name:"dashjs",supports:c.constant(!1)}),d.push({name:"shaka",supports:e}),d}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){var b="free",c="premium",d="enterprise",e="ads",f="unlimited",g="trial",h={setup:[b,c,d,e,f,g],dash:[c,d,e,f,g],drm:[d,e,f,g],hls:[c,e,d,f,g],ads:[e,f,g],casting:[c,d,e,f,g],jwpsrv:[b,c,d,e,g]},i=function(b){return function(c){return a.contains(h[c],b)}};return i}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(45),c(83)],e=function(a,b,c){function d(b){if("hls"===b.type)if(b.androidhls!==!1){var c=a.isAndroidNative;if(c(2)||c(3)||c("4.0"))return!1;if(a.isAndroid())return!0}else if(a.isAndroid())return!1;return null}var e=[{name:"youtube",supports:function(b){return a.isYouTube(b.file,b.type)}},{name:"html5",supports:function(b){var e={aac:"audio/mp4",mp4:"video/mp4",f4v:"video/mp4",m4v:"video/mp4",mov:"video/mp4",mp3:"audio/mpeg",mpeg:"audio/mpeg",ogv:"video/ogg",ogg:"video/ogg",oga:"video/ogg",vorbis:"video/ogg",webm:"video/webm",f4a:"video/aac",m3u8:"application/vnd.apple.mpegurl",m3u:"application/vnd.apple.mpegurl",hls:"application/vnd.apple.mpegurl"},f=b.file,g=b.type,h=d(b);if(null!==h)return h;if(a.isRtmp(f,g))return!1;if(!e[g])return!1;if(c.canPlayType){var i=c.canPlayType(e[g]);return!!i}return!1}},{name:"flash",supports:function(c){var d={flv:"video",f4v:"video",mov:"video",m4a:"video",m4v:"video",mp4:"video",aac:"video",f4a:"video",mp3:"sound",mpeg:"sound",smil:"rtmp"},e=b.keys(d);if(!a.isFlashSupported())return!1;var f=c.file,g=c.type;return a.isRtmp(f,g)?!0:b.contains(e,g)}}];return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){return document.createElement("video")}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(85),c(87)],e=function(a,b){var c={html5:a,flash:b};return c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(55),c(48),c(45),c(46),c(62),c(86),c(47)],e=function(a,b,c,d,e,f,g){function h(a,c){b.foreach(a,function(a,b){c.addEventListener(a,b,!1)})}function i(a,c){b.foreach(a,function(a,b){c.removeEventListener(a,b,!1)})}function j(a,b,c){"addEventListener"in a?a.addEventListener(b,c):a["on"+b]=c}function k(a,b,c){a&&("removeEventListener"in a?a.removeEventListener(b,c):a["on"+b]=null)}function l(a){if("hls"===a.type)if(a.androidhls!==!1){var c=b.isAndroidNative;if(c(2)||c(3)||c("4.0"))return!1;if(b.isAndroid())return!0}else if(b.isAndroid())return!1;return null}function m(m,y){function z(){na(Ua.audioTracks),ra(Ua.textTracks)}function A(a){Ca.trigger("click",a)}function B(){Ia&&!Ka&&(I(H()),F(da(),za,ya))}function C(){Ia&&F(da(),za,ya)}function D(){n(Ga),Ea=!0,Ia&&(Ca.state===e.STALLED?Ca.setState(e.PLAYING):Ca.state===e.PLAYING&&(Ga=setTimeout(ca,o)),Ka&&Ua.duration===1/0&&0===Ua.currentTime||(I(H()),G(Ua.currentTime),F(da(),za,ya),Ca.state===e.PLAYING&&(Ca.trigger(d.JWPLAYER_MEDIA_TIME,{position:za,duration:ya}),E())))}function E(){var a=Sa.level;if(a.width!==Ua.videoWidth||a.height!==Ua.videoHeight){if(a.width=Ua.videoWidth,a.height=Ua.videoHeight,ua(),!a.width||!a.height)return;Sa.reason=Sa.reason||"auto",Sa.mode="hls"===Ba[Ja].type?"auto":"manual",Sa.bitrate=0,a.index=Ja,a.label=Ba[Ja].label,Ca.trigger("visualQuality",Sa), +Sa.reason=""}}function F(a,b,c){a===Ha&&c===ya||(Ha=a,Ca.trigger(d.JWPLAYER_MEDIA_BUFFER,{bufferPercent:100*a,position:b,duration:c}))}function G(a){0>ya&&(a=-(_()-a)),za=a}function H(){var a=Ua.duration,b=_();if(a===1/0&&b){var c=b-Ua.seekable.start(0);c!==1/0&&c>120&&(a=-c)}return a}function I(a){ya=a,Fa&&a&&a!==1/0&&Ca.seek(Fa)}function J(){var a=H();Ka&&a===1/0&&(a=0),Ca.trigger(d.JWPLAYER_MEDIA_META,{duration:a,height:Ua.videoHeight,width:Ua.videoWidth}),I(a)}function K(){Ia&&(Ea=!0,M())}function L(){Ia&&(Ua.muted&&(Ua.muted=!1,Ua.muted=!0),ua(),J())}function M(){Aa||(Aa=!0,Ca.trigger(d.JWPLAYER_MEDIA_BUFFER_FULL))}function N(){Ca.setState(e.PLAYING),Ua.hasAttribute("hasplayed")||Ua.setAttribute("hasplayed",""),Ca.trigger(d.JWPLAYER_PROVIDER_FIRST_FRAME,{})}function O(){Ca.state!==e.COMPLETE&&Ua.currentTime!==Ua.duration&&Ca.setState(e.PAUSED)}function P(){Ka||Ua.paused||Ua.ended||Ca.state!==e.LOADING&&Ca.state!==e.ERROR&&(Ca.seeking||Ca.setState(e.STALLED))}function Q(){Ia&&(b.log("Error playing media: %o %s",Ua.error,Ua.src||xa.file),Ca.trigger(d.JWPLAYER_MEDIA_ERROR,{message:"Error loading media: File could not be played"}))}function R(a){var d;return"array"===b.typeOf(a)&&a.length>0&&(d=c.map(a,function(a,b){return{label:a.label||b}})),d}function S(a){Ba=a,Ja=T(a);var b=R(a);b&&Ca.trigger(d.JWPLAYER_MEDIA_LEVELS,{levels:b,currentQuality:Ja})}function T(a){var b=Math.max(0,Ja),c=y.qualityLabel;if(a)for(var d=0;d0&&Ca.seek(a)}function W(a){if(Na=null,Oa=null,Qa=-1,Pa=-1,Ra=-1,Sa.reason||(Sa.reason="initial choice",Sa.level={width:0,height:0}),Ea=!1,Aa=!1,Ka=l(xa),Ua.src=xa.file,xa.preload&&Ua.setAttribute("preload",xa.preload),a&&a.tracks){var c=b.isIOS()&&!b.isSDK(y);c&&Y(a.tracks)}}function X(){Ua&&(Ua.removeAttribute("src"),!q&&Ua.load&&Ua.load())}function Y(a){for(;Ua.firstChild;)Ua.removeChild(Ua.firstChild);Z(a)}function Z(a){if(a){Ua.setAttribute("crossorigin","anonymous");for(var b=0;b=c||c===1/0?0:b.between(a.end(a.length-1)/c,0,1)}function ea(){if(Ia&&Ca.state!==e.IDLE&&Ca.state!==e.COMPLETE){if(n(Ga),Ja=-1,La=!0,Ca.trigger(d.JWPLAYER_MEDIA_BEFORECOMPLETE),!Ia)return;fa()}}function fa(){n(Ga),Ca.setState(e.COMPLETE),La=!1,Ca.trigger(d.JWPLAYER_MEDIA_COMPLETE)}function ga(a){Ma=!0,ma(a),b.isIOS()&&(Ua.controls=!1)}function ha(){var a=-1,b=0;if(Na)for(b;bd;)switch(f=a[d++],f>>4){case 0:case 1:case 2:case 3:case 4:case 5:case 6:case 7:c+=String.fromCharCode(f);break;case 12:case 13:g=a[d++],c+=String.fromCharCode((31&f)<<6|63&g);break;case 14:g=a[d++],h=a[d++],c+=String.fromCharCode((15&f)<<12|(63&g)<<6|(63&h)<<0)}return c},e=function(a,b){var c,d,e;for(c="",e=a.length,d=b||0;e>d;)254===a[d]&&255===a[d+1]||(c+=String.fromCharCode((a[d]<<8)+a[d+1])),d+=2;return c},f=c.reduce(a,function(a,f){if(!("value"in f)&&"data"in f&&f.data instanceof ArrayBuffer){var g=f,h=new Uint8Array(g.data);f={value:{key:"",data:""}};for(var i=10;14>i&&i-1&&ab;b++)"metadata"===a[b].kind?(a[b].oncuechange=ja,a[b].mode="showing"):"subtitles"!==a[b].kind&&"captions"!==a[b].kind||(a[b].mode="disabled",Na||(Na=[]),Na.push(a[b]))}j(a,"change",ha),Na&&Na.length&&Ca.trigger("subtitlesTracks",{tracks:Na})}}function sa(a){Na&&Pa!==a-1&&(Pa>-1&&Pa0&&a<=Na.length?(Pa=a-1,Na[Pa].mode="showing"):Pa=-1,Ca.trigger("subtitlesTrackChanged",{currentTrack:Pa+1,tracks:Na}))}function ta(){return Pa}function ua(){if("hls"===Ba[0].type){var a="video";0===Ua.videoWidth&&(a="audio"),Ca.trigger("mediaType",{mediaType:a})}}function va(){Na&&Na[Pa]&&(Na[Pa].mode="disabled")}this.state=e.IDLE,this.seeking=!1,c.extend(this,g),this.trigger=function(a,b){return Ia?g.trigger.call(this,a,b):void 0},this.setState=function(a){return Ia?f.setState.call(this,a):void 0};var wa,xa,ya,za,Aa,Ba,Ca=this,Da={click:A,durationchange:B,ended:ea,error:Q,loadeddata:z,loadedmetadata:L,canplay:K,playing:N,progress:C,pause:O,seeked:aa,timeupdate:D,volumechange:ba,webkitbeginfullscreen:ga,webkitendfullscreen:la},Ea=!1,Fa=0,Ga=-1,Ha=-1,Ia=!0,Ja=-1,Ka=null,La=!1,Ma=!1,Na=null,Oa=null,Pa=-1,Qa=-1,Ra=-1,Sa={level:{}},Ta=document.getElementById(m),Ua=Ta?Ta.querySelector("video"):void 0;Ua=Ua||document.createElement("video"),Ua.className="jw-video jw-reset",h(Da,Ua),v||(Ua.controls=!0,Ua.controls=!1),Ua.setAttribute("x-webkit-airplay","allow"),Ua.setAttribute("webkit-playsinline",""),this.stop=function(){n(Ga),Ia&&(X(),b.isIETrident()&&Ua.pause(),Ja=-1,this.setState(e.IDLE))},this.destroy=function(){i(Da,Ua),k(Ua.audioTracks,"change",ia),k(Ua.textTracks,"change",ha),this.remove(),this.off()},this.init=function(a){Ia&&(Ba=a.sources,Ja=T(a.sources),a.sources.length&&"hls"!==a.sources[0].type&&this.sendMediaType(a.sources),xa=Ba[Ja],za=a.starttime||0,ya=a.duration||0,Sa.reason="",W(a))},this.load=function(a){Ia&&(S(a.sources),a.sources.length&&"hls"!==a.sources[0].type&&this.sendMediaType(a.sources),r&&!Ua.hasAttribute("hasplayed")||Ca.setState(e.LOADING),V(a.starttime||0,a.duration||0,a))},this.play=function(){return Ca.seeking?(Ca.setState(e.LOADING),void Ca.once(d.JWPLAYER_MEDIA_SEEKED,Ca.play)):void Ua.play()},this.pause=function(){n(Ga),Ua.pause(),this.setState(e.PAUSED)},this.seek=function(a){if(Ia)if(0>a&&(a+=$()+_()),0===Fa&&this.trigger(d.JWPLAYER_MEDIA_SEEK,{position:Ua.currentTime,offset:a}),Ea||(Ea=!!_()),Ea){Fa=0;try{Ca.seeking=!0,Ua.currentTime=a}catch(b){Ca.seeking=!1,Fa=a}}else Fa=a,t&&Ua.paused&&Ua.play()},this.volume=function(a){a=b.between(a/100,0,1),Ua.volume=a},this.mute=function(a){Ua.muted=!!a},this.checkComplete=function(){return La},this.detachMedia=function(){return n(Ga),va(),Ia=!1,Ua},this.attachMedia=function(){Ia=!0,Ea=!1,this.seeking=!1,Ua.loop=!1,La&&fa()},this.setContainer=function(a){wa=a,a.appendChild(Ua)},this.getContainer=function(){return wa},this.remove=function(){X(),n(Ga),Ja=-1,wa===Ua.parentNode&&wa.removeChild(Ua)},this.setVisibility=function(b){b=!!b,b||u?a.style(wa,{visibility:"visible",opacity:1}):a.style(wa,{visibility:"",opacity:0})},this.resize=function(b,c,d){if(!(b&&c&&Ua.videoWidth&&Ua.videoHeight))return!1;var e={objectFit:""};if("uniform"===d){var f=b/c,g=Ua.videoWidth/Ua.videoHeight;Math.abs(f-g)<.09&&(e.objectFit="fill",d="exactfit")}var h=p||u||v||w;if(h){var i=-Math.floor(Ua.videoWidth/2+1),j=-Math.floor(Ua.videoHeight/2+1),k=Math.ceil(100*b/Ua.videoWidth)/100,l=Math.ceil(100*c/Ua.videoHeight)/100;"none"===d?k=l=1:"fill"===d?k=l=Math.max(k,l):"uniform"===d&&(k=l=Math.min(k,l)),e.width=Ua.videoWidth,e.height=Ua.videoHeight,e.top=e.left="50%",e.margin=0,a.transform(Ua,"translate("+i+"px, "+j+"px) scale("+k.toFixed(2)+", "+l.toFixed(2)+")")}return a.style(Ua,e),!1},this.setFullscreen=function(a){if(a=!!a){var c=b.tryCatch(function(){var a=Ua.webkitEnterFullscreen||Ua.webkitEnterFullScreen;a&&a.apply(Ua)});return c instanceof b.Error?!1:Ca.getFullScreen()}var d=Ua.webkitExitFullscreen||Ua.webkitExitFullScreen;return d&&d.apply(Ua),a},Ca.getFullScreen=function(){return Ma||!!Ua.webkitDisplayingFullscreen},this.setCurrentQuality=function(a){if(Ja!==a&&(a=parseInt(a,10),a>=0&&Ba&&Ba.length>a)){Ja=a,Sa.reason="api",Sa.level={width:0,height:0},this.trigger(d.JWPLAYER_MEDIA_LEVEL_CHANGED,{currentQuality:a,levels:R(Ba)}),y.qualityLabel=Ba[a].label;var b=Ua.currentTime||0,c=Ua.duration||0;0>=c&&(c=ya),Ca.setState(e.LOADING),V(b,c)}},this.getCurrentQuality=function(){return Ja},this.getQualityLevels=function(){return R(Ba)},this.getName=function(){return{name:x}},this.setCurrentAudioTrack=oa,this.getAudioTracks=pa,this.getCurrentAudioTrack=qa,this.setSubtitlesTrack=sa,this.getSubtitlesTrack=ta}var n=window.clearTimeout,o=256,p=b.isIE(),q=b.isMSIE(),r=b.isMobile(),s=b.isSafari(),t=b.isFF(),u=b.isAndroidNative(),v=b.isIOS(7),w=b.isIOS(8),x="html5",y=function(){};return y.prototype=f,m.prototype=new y,m}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(46),c(62),c(45)],e=function(a,b,c,d){var e=a.noop,f=d.constant(!1),g={supports:f,play:e,load:e,stop:e,volume:e,mute:e,seek:e,resize:e,remove:e,destroy:e,setVisibility:e,setFullscreen:f,getFullscreen:e,getContainer:e,setContainer:f,getName:e,getQualityLevels:e,getCurrentQuality:e,setCurrentQuality:e,getAudioTracks:e,getCurrentAudioTrack:e,setCurrentAudioTrack:e,checkComplete:e,setControls:e,attachMedia:e,detachMedia:e,setState:function(a){var d=this.state||c.IDLE;this.state=a,a!==d&&this.trigger(b.JWPLAYER_PLAYER_STATE,{newstate:a})},sendMediaType:function(a){var c=a[0].type,d="oga"===c||"aac"===c||"mp3"===c||"mpeg"===c||"vorbis"===c;this.trigger(b.JWPLAYER_MEDIA_TYPE,{mediaType:d?"audio":"video"})}};return g}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(45),c(46),c(62),c(88),c(86),c(47)],e=function(a,b,c,d,e,f,g){function h(a){return a+"_swf_"+k++}function i(b){var c=document.createElement("a");c.href=b.flashplayer;var d=c.hostname===window.location.host;return a.isChrome()&&!d}function j(j,k){function l(a){if(G)for(var b=0;bc)break;c=e}b=G.labels[G.bitrates[d+1]],G[a]=b}return b}function n(){var a=k.hlslabels;if(!a)return null;var b={},c=[];for(var d in a){var e=parseFloat(d);if(!isNaN(e)){var f=Math.round(e);b[f]=a[d],c.push(f)}}return 0===c.length?null:(c.sort(function(a,b){return a-b}),{labels:b,bitrates:c})}function o(){v=setTimeout(function(){g.trigger.call(D,"flashBlocked")},4e3),s.once("embedded",function(){q(),g.trigger.call(D,"flashUnblocked")},D)}function p(){q(),o()}function q(){clearTimeout(v),window.removeEventListener("focus",p)}var r,s,t,u=null,v=-1,w=!1,x=-1,y=null,z=-1,A=null,B=!0,C=!1,D=this,E=function(){return s&&s.__ready},F=function(){s&&s.triggerFlash.apply(s,arguments)},G=n();b.extend(this,g,{init:function(a){a.preload&&"none"!==a.preload&&!k.autostart&&(u=a)},load:function(a){u=a,w=!1,this.setState(d.LOADING),F("load",a),a.sources.length&&"hls"!==a.sources[0].type&&this.sendMediaType(a.sources)},play:function(){F("play")},pause:function(){F("pause"),this.setState(d.PAUSED)},stop:function(){F("stop"),x=-1,u=null,this.setState(d.IDLE)},seek:function(a){F("seek",a)},volume:function(a){if(b.isNumber(a)){var c=Math.min(Math.max(0,a),100);E()&&F("volume",c)}},mute:function(a){E()&&F("mute",a)},setState:function(){return f.setState.apply(this,arguments)},checkComplete:function(){return w},attachMedia:function(){B=!0,w&&(this.setState(d.COMPLETE),this.trigger(c.JWPLAYER_MEDIA_COMPLETE),w=!1)},detachMedia:function(){return B=!1,null},getSwfObject:function(a){var b=a.getElementsByTagName("object")[0];return b?(b.off(null,null,this),b):e.embed(k.flashplayer,a,h(j),k.wmode)},getContainer:function(){return r},setContainer:function(e){if(r!==e){r=e,s=this.getSwfObject(e),document.hasFocus()?o():window.addEventListener("focus",p),s.once("ready",function(){q(),s.once("pluginsLoaded",function(){s.queueCommands=!1,F("setupCommandQueue",s.__commandQueue),s.__commandQueue=[]});var a=b.extend({},k),d=s.triggerFlash("setup",a);d===s?s.__ready=!0:this.trigger(c.JWPLAYER_MEDIA_ERROR,d),u&&F("init",u)},this);var f=[c.JWPLAYER_MEDIA_META,c.JWPLAYER_MEDIA_ERROR,c.JWPLAYER_MEDIA_SEEK,c.JWPLAYER_MEDIA_SEEKED,"subtitlesTracks","subtitlesTrackChanged","subtitlesTrackData","mediaType"],h=[c.JWPLAYER_MEDIA_BUFFER,c.JWPLAYER_MEDIA_TIME],j=[c.JWPLAYER_MEDIA_BUFFER_FULL];s.on(c.JWPLAYER_MEDIA_LEVELS,function(a){l(a.levels),x=a.currentQuality,y=a.levels,this.trigger(a.type,a)},this),s.on(c.JWPLAYER_MEDIA_LEVEL_CHANGED,function(a){l(a.levels),x=a.currentQuality,y=a.levels,this.trigger(a.type,a)},this),s.on(c.JWPLAYER_AUDIO_TRACKS,function(a){z=a.currentTrack,A=a.tracks,this.trigger(a.type,a)},this),s.on(c.JWPLAYER_AUDIO_TRACK_CHANGED,function(a){z=a.currentTrack,A=a.tracks,this.trigger(a.type,a)},this),s.on(c.JWPLAYER_PLAYER_STATE,function(a){var b=a.newstate;b!==d.IDLE&&this.setState(b)},this),s.on(h.join(" "),function(a){"Infinity"===a.duration&&(a.duration=1/0),this.trigger(a.type,a)},this),s.on(f.join(" "),function(a){this.trigger(a.type,a)},this),s.on(j.join(" "),function(a){this.trigger(a.type)},this),s.on(c.JWPLAYER_MEDIA_BEFORECOMPLETE,function(a){w=!0,this.trigger(a.type),B===!0&&(w=!1)},this),s.on(c.JWPLAYER_MEDIA_COMPLETE,function(a){w||(this.setState(d.COMPLETE),this.trigger(a.type))},this),s.on("visualQuality",function(a){a.reason=a.reason||"api",this.trigger("visualQuality",a),this.trigger(c.JWPLAYER_PROVIDER_FIRST_FRAME,{})},this),s.on(c.JWPLAYER_PROVIDER_CHANGED,function(a){t=a.message,this.trigger(c.JWPLAYER_PROVIDER_CHANGED,a)},this),s.on(c.JWPLAYER_ERROR,function(b){a.log("Error playing media: %o %s",b.code,b.message,b),this.trigger(c.JWPLAYER_MEDIA_ERROR,b)},this),i(k)&&s.on("throttle",function(a){q(),"resume"===a.state?g.trigger.call(D,"flashThrottle",a):v=setTimeout(function(){g.trigger.call(D,"flashThrottle",a)},250)},this)}},remove:function(){x=-1,y=null,e.remove(s)},setVisibility:function(a){a=!!a,r.style.opacity=a?1:0},resize:function(a,b,c){c&&F("stretch",c)},setControls:function(a){F("setControls",a)},setFullscreen:function(a){C=a,F("fullscreen",a)},getFullScreen:function(){return C},setCurrentQuality:function(a){F("setCurrentQuality",a)},getCurrentQuality:function(){return x},setSubtitlesTrack:function(a){F("setSubtitlesTrack",a)},getName:function(){return t?{name:"flash_"+t}:{name:"flash"}},getQualityLevels:function(){return y||u.sources},getAudioTracks:function(){return A},getCurrentAudioTrack:function(){return z},setCurrentAudioTrack:function(a){F("setCurrentAudioTrack",a)},destroy:function(){q(),this.remove(),s&&(s.off(),s=null),r=null,u=null,this.off()}}),this.trigger=function(a,b){return B?g.trigger.call(this,a,b):void 0}}var k=0,l=function(){};return l.prototype=f,j.prototype=new l,j}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(47),c(45)],e=function(a,b,c){function d(a,b,c){var d=document.createElement("param");d.setAttribute("name",b),d.setAttribute("value",c),a.appendChild(d)}function e(e,f,i,j){var k;if(j=j||"opaque",a.isMSIE()){var l=document.createElement("div");f.appendChild(l),l.outerHTML='';for(var m=f.getElementsByTagName("object"),n=m.length;n--;)m[n].id===i&&(k=m[n])}else k=document.createElement("object"),k.setAttribute("type","application/x-shockwave-flash"),k.setAttribute("data",e),k.setAttribute("width","100%"),k.setAttribute("height","100%"),k.setAttribute("bgcolor",h),k.setAttribute("id",i),k.setAttribute("name",i),d(k,"allowfullscreen","true"),d(k,"allowscriptaccess","always"),d(k,"wmode",j),d(k,"menu","false"),f.appendChild(k,f);return k.className="jw-swf jw-reset",k.style.display="block",k.style.position="absolute",k.style.left=0,k.style.right=0,k.style.top=0,k.style.bottom=0,c.extend(k,b),k.queueCommands=!0,k.triggerFlash=function(b){var d=this;if("setup"!==b&&d.queueCommands||!d.__externalCall){for(var e=d.__commandQueue,f=e.length;f--;)e[f][0]===b&&e.splice(f,1);return e.push(Array.prototype.slice.call(arguments)),d}var h=Array.prototype.slice.call(arguments,1),i=a.tryCatch(function(){if(h.length){for(var a=h.length;a--;)"object"==typeof h[a]&&c.each(h[a],g);var e=JSON.stringify(h);d.__externalCall(b,e)}else d.__externalCall(b)});return i instanceof a.Error&&(console.error(b,i),"setup"===b)?(i.name="Failed to setup flash",i):d},k.__commandQueue=[],k}function f(a){a&&a.parentNode&&(a.style.display="none",a.parentNode.removeChild(a))}function g(a,b,c){a instanceof window.HTMLElement&&delete c[b]}var h="#000000";return{embed:e,remove:f}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(48)],e=function(a,b){function c(a){return"jwplayer."+a}function d(){return a.reduce(this.persistItems,function(a,d){var e=j[c(d)];return e&&(a[d]=b.serialize(e)),a},{})}function e(a,b){try{j[c(a)]=b}catch(d){i&&i.debug&&console.error(d)}}function f(){a.each(this.persistItems,function(a){j.removeItem(c(a))})}function g(){}function h(b,c){this.persistItems=b,a.each(this.persistItems,function(a){c.on("change:"+a,function(b,c){e(a,c)})})}var i=window.jwplayer,j={removeItem:b.noop};try{j=window.localStorage}catch(k){}return a.extend(g.prototype,{getAllItems:d,track:h,clear:f}),g}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(61),c(46),c(45)],e=function(a,b,c){function d(a){a.mediaController.off(b.JWPLAYER_MEDIA_PLAY_ATTEMPT,a._onPlayAttempt),a.mediaController.off(b.JWPLAYER_PROVIDER_FIRST_FRAME,a._triggerFirstFrame),a.mediaController.off(b.JWPLAYER_MEDIA_TIME,a._onTime)}function e(a){d(a),a._triggerFirstFrame=c.once(function(){var c=a._qoeItem;c.tick(b.JWPLAYER_MEDIA_FIRST_FRAME);var e=c.between(b.JWPLAYER_MEDIA_PLAY_ATTEMPT,b.JWPLAYER_MEDIA_FIRST_FRAME);a.mediaController.trigger(b.JWPLAYER_MEDIA_FIRST_FRAME,{loadTime:e}),d(a)}),a._onTime=g(a._triggerFirstFrame),a._onPlayAttempt=function(){a._qoeItem.tick(b.JWPLAYER_MEDIA_PLAY_ATTEMPT)},a.mediaController.on(b.JWPLAYER_MEDIA_PLAY_ATTEMPT,a._onPlayAttempt),a.mediaController.once(b.JWPLAYER_PROVIDER_FIRST_FRAME,a._triggerFirstFrame),a.mediaController.on(b.JWPLAYER_MEDIA_TIME,a._onTime)}function f(c){function d(c,d,f){c._qoeItem&&f&&c._qoeItem.end(f.get("state")),c._qoeItem=new a,c._qoeItem.tick(b.JWPLAYER_PLAYLIST_ITEM),c._qoeItem.start(d.get("state")),e(c),d.on("change:state",function(a,b,d){c._qoeItem.end(d),c._qoeItem.start(b)})}c.on("change:mediaModel",d)}var g=function(a){var b=Number.MIN_VALUE;return function(c){c.position>b&&a(),b=c.position}};return{model:f}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(47)],e=function(a,b){var c=a.extend({get:function(a){return this.attributes=this.attributes||{},this.attributes[a]},set:function(a,b){if(this.attributes=this.attributes||{},this.attributes[a]!==b){var c=this.attributes[a];this.attributes[a]=b,this.trigger("change:"+a,this,b,c)}},clone:function(){return a.clone(this.attributes)}},b);return c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(47),c(77),c(76),c(46),c(62),c(48),c(45)],e=function(a,b,c,d,e,f,g){var h=function(a,d){this.model=d,this._adModel=(new b).setup({id:d.get("id"),volume:d.get("volume"),fullscreen:d.get("fullscreen"),mute:d.get("mute")}),this._adModel.on("change:state",c,this);var e=a.getContainer();this.swf=e.querySelector("object")};return h.prototype=g.extend({init:function(){if(f.isChrome()){var a=-1,b=!1;this.swf.on("throttle",function(c){if(clearTimeout(a),"resume"===c.state)b&&(b=!1,this.instreamPlay());else{var d=this;a=setTimeout(function(){d._adModel.get("state")===e.PLAYING&&(b=!0,d.instreamPause())},250)}},this)}this.swf.on("instream:state",function(a){switch(a.newstate){case e.PLAYING:this._adModel.set("state",a.newstate);break;case e.PAUSED:this._adModel.set("state",a.newstate)}},this).on("instream:time",function(a){this._adModel.set("position",a.position),this._adModel.set("duration",a.duration),this.trigger(d.JWPLAYER_MEDIA_TIME,a)},this).on("instream:complete",function(a){this.trigger(d.JWPLAYER_MEDIA_COMPLETE,a)},this).on("instream:error",function(a){this.trigger(d.JWPLAYER_MEDIA_ERROR,a)},this),this.swf.triggerFlash("instream:init"),this.applyProviderListeners=function(a){this.model.on("change:volume",function(b,c){a.volume(c)},this),this.model.on("change:mute",function(b,c){a.mute(c)},this)}},instreamDestroy:function(){this._adModel&&(this.off(),this.swf.off(null,null,this),this.swf.triggerFlash("instream:destroy"),this.swf=null,this._adModel.off(),this._adModel=null,this.model=null)},load:function(a){this.swf.triggerFlash("instream:load",a)},instreamPlay:function(){this.swf.triggerFlash("instream:play")},instreamPause:function(){this.swf.triggerFlash("instream:pause")}},a),h}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(94),c(47),c(45),c(46)],e=function(a,b,c,d){var e=function(b,e,f,g){function h(){m("Setup Timeout Error","Setup took longer than "+q+" seconds to complete.")}function i(){c.each(p,function(a){a.complete!==!0&&a.running!==!0&&null!==b&&k(a.depends)&&(a.running=!0,j(a))})}function j(a){var c=function(b){b=b||{},l(a,b)};a.method(c,e,b,f,g)}function k(a){return c.all(a,function(a){return p[a].complete})}function l(a,b){"error"===b.type?m(b.msg,b.reason):"complete"===b.type?(clearTimeout(n),o.trigger(d.JWPLAYER_READY)):(a.complete=!0,i())}function m(a,b){clearTimeout(n),o.trigger(d.JWPLAYER_SETUP_ERROR,{message:a+": "+b}),o.destroy()}var n,o=this,p=a.getQueue(),q=30;this.start=function(){n=setTimeout(h,1e3*q),i()},this.destroy=function(){clearTimeout(n),this.off(),p.length=0,b=null,e=null,f=null}};return e.prototype=b,e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(95),c(81),c(80),c(45),c(48),c(57),c(97)],e=function(a,b,d,e,f,g,h){function i(a,b,c){if(b){var d=b.client;delete b.client,/\.(js|swf)$/.test(d||"")||(d=g.repo()+c),a[d]=b}}function j(a,c){var d=e.clone(c.get("plugins"))||{},f=c.get("edition"),h=b(f),j=/^(vast|googima)$/,k=/\.(js|swf)$/,l=g.repo(),m=c.get("advertising");if(h("ads")&&m&&(k.test(m.client)?d[m.client]=m:j.test(m.client)&&(d[l+m.client+".js"]=m),delete m.client),h("jwpsrv")){var n=c.get("analytics");e.isObject(n)||(n={}),i(d,n,"jwpsrv.js")}i(d,c.get("ga"),"gapro.js"),i(d,c.get("sharing"),"sharing.js"),i(d,c.get("related"),"related.js"),c.set("plugins",d),a()}function k(b,d){var e=d.get("key")||window.jwplayer&&window.jwplayer.key,i=new a(e),j=i.edition();if(d.set("key",e),d.set("edition",j),"unlimited"===j){var k=f.getScriptPath("jwplayer.js");if(!k)return void h.error(b,"Error setting up player","Could not locate jwplayer.js script tag");c.p=k,f.repo=g.repo=g.loadFrom=function(){return k}}d.updateProviders(),"invalid"===j?h.error(b,"Error setting up player",(void 0===e?"Missing":"Invalid")+" license key"):b()}function l(a,b,d){"dashjs"===a?c.e(4,function(a){var e=c(107);e.register(window.jwplayer),d.updateProviders(),b()}):c.e(5,function(a){var e=c(109);e.register(window.jwplayer),d.updateProviders(),b()})}function m(a,b){var c=b.get("playlist"),f=b.get("edition"),g=b.get("dash");e.contains(["shaka","dashjs"],g)||(g="shaka");var h=e.where(d,{name:g})[0].supports,i=e.some(c,function(a){return h(a,f)});i?l(g,a,b):a()}function n(){var a=h.getQueue();return a.LOAD_DASH={method:m,depends:["CHECK_KEY","FILTER_PLAYLIST"]},a.CHECK_KEY={method:k,depends:["LOADED_POLYFILLS"]},a.FILTER_PLUGINS={method:j,depends:["CHECK_KEY"]},a.FILTER_PLAYLIST.depends.push("CHECK_KEY"),a.LOAD_PLUGINS.depends.push("FILTER_PLUGINS"),a.SETUP_VIEW.depends.push("CHECK_KEY"),a.SEND_READY.depends.push("LOAD_DASH"),a}return{getQueue:n}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(96),c(81)],e=function(a,b,c){var d="invalid",e="RnXcsftYjWRDA^Uy",f=function(f){function g(f){a.exists(f)||(f="");try{f=b.decrypt(f,e);var g=f.split("/");h=g[0],"pro"===h&&(h="premium");var k=c(h);if(g.length>2&&k("setup")){i=g[1];var l=parseInt(g[2]);l>0&&(j=new Date,j.setTime(l))}else h=d}catch(m){h=d}}var h,i,j;this.edition=function(){return j&&j.getTime()<(new Date).getTime()?d:h},this.token=function(){return i},this.expiration=function(){return j},g(f)};return f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[],e=function(){var a=function(a){return window.atob(a)},b=function(a){return unescape(encodeURIComponent(a))},c=function(a){try{return decodeURIComponent(escape(a))}catch(b){return a}},d=function(a){for(var b=new Array(Math.ceil(a.length/4)),c=0;c>>8&255,a[c]>>>16&255,a[c]>>>24&255);return b.join("")};return{decrypt:function(f,g){if(f=String(f),g=String(g),0==f.length)return"";for(var h,i,j=d(a(f)),k=d(b(g).slice(0,16)),l=j.length,m=j[l-1],n=j[0],o=2654435769,p=Math.floor(6+52/l),q=p*o;0!=q;){i=q>>>2&3;for(var r=l-1;r>=0;r--)m=j[r>0?r-1:l-1],h=(m>>>5^n<<2)+(n>>>3^m<<4)^(q^n)+(k[3&r^i]^m),n=j[r]-=h;q-=o}var s=e(j);return s=s.replace(/\0+$/,""),c(s)}}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(98),c(65),c(101),c(58),c(45),c(48),c(46)],e=function(a,b,d,e,f,g,h){function i(){var a={LOAD_PROMISE_POLYFILL:{method:j,depends:[]},LOAD_BASE64_POLYFILL:{method:k,depends:[]},LOADED_POLYFILLS:{method:l,depends:["LOAD_PROMISE_POLYFILL","LOAD_BASE64_POLYFILL"]},LOAD_PLUGINS:{method:m,depends:["LOADED_POLYFILLS"]},INIT_PLUGINS:{method:n,depends:["LOAD_PLUGINS","SETUP_VIEW"]},LOAD_YOUTUBE:{method:v,depends:["FILTER_PLAYLIST"]},LOAD_SKIN:{method:u,depends:["LOADED_POLYFILLS"]},LOAD_PLAYLIST:{method:p,depends:["LOADED_POLYFILLS"]},FILTER_PLAYLIST:{method:q,depends:["LOAD_PLAYLIST"]},SETUP_VIEW:{method:w,depends:["LOAD_SKIN"]},SEND_READY:{method:x,depends:["INIT_PLUGINS","LOAD_YOUTUBE","SETUP_VIEW"]}};return a}function j(a){window.Promise?a():c.e(1,function(b){c(104),a()})}function k(a){window.btoa&&window.atob?a():c.e(2,function(b){c(105),a()})}function l(a){a()}function m(b,c){z=a.loadPlugins(c.get("id"),c.get("plugins")),z.on(h.COMPLETE,b),z.on(h.ERROR,f.partial(o,b)),z.load()}function n(a,b,c){z.setupPlugins(c,b),a()}function o(a,b){y(a,"Could not load plugin",b.message)}function p(a,c){var d=c.get("playlist");f.isString(d)?(A=new b,A.on(h.JWPLAYER_PLAYLIST_LOADED,function(b){c.set("playlist",b.playlist),a()}),A.on(h.JWPLAYER_ERROR,f.partial(r,a)),A.load(d)):a()}function q(a,b,c,d,e){var f=b.get("playlist"),g=e(f);g?a():r(a)}function r(a,b){b&&b.message?y(a,"Error loading playlist",b.message):y(a,"Error loading player","No playable sources found")}function s(a,b){return f.contains(e.SkinsLoadable,a)?b+"skins/"+a+".css":void 0}function t(a){for(var b=document.styleSheets,c=0,d=b.length;d>c;c++)if(b[c].href===a)return!0;return!1}function u(a,b){var c=b.get("skin"),g=b.get("skinUrl");if(f.contains(e.SkinsIncluded,c))return void a();if(g||(g=s(c,b.get("base"))),f.isString(g)&&!t(g)){b.set("skin-loading",!0);var i=!0,j=new d(g,i);j.addEventListener(h.COMPLETE,function(){b.set("skin-loading",!1)}),j.addEventListener(h.ERROR,function(){b.set("skin","seven"),b.set("skin-loading",!1)}),j.load()}f.defer(function(){a()})}function v(a,b){var d=b.get("playlist"),e=f.some(d,function(a){var b=g.isYouTube(a.file,a.type);if(b&&!a.image){var c=a.file,d=g.youTubeID(c);a.image="//i.ytimg.com/vi/"+d+"/0.jpg"}return b});e?c.e(3,function(b){var d=c(106);d.register(window.jwplayer),a()}):a()}function w(a,b,c,d){d.setup(),a()}function x(a){a({type:"complete"})}function y(a,b,c){a({type:"error",msg:b,reason:c})}var z,A;return{getQueue:i,error:y}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(99),c(102),c(103),c(100)],e=function(a,b,c,d){var e={},f={},g=function(c,d){return f[c]=new a(new b(e),d),f[c]},h=function(a,b,f,g){var h=d.getPluginName(a);e[h]||(e[h]=new c(a)),e[h].registerPlugin(a,b,f,g)};return{loadPlugins:g,registerPlugin:h}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(100),c(48),c(46),c(47),c(45),c(101)],e=function(a,b,c,d,e,f){function g(a,b,c){return function(){var d=a.getContainer().getElementsByClassName("jw-overlays")[0];d&&(d.appendChild(c),c.left=d.style.left,c.top=d.style.top,b.displayArea=d)}}function h(a){function b(){var b=a.displayArea;b&&a.resize(b.clientWidth,b.clientHeight)}return function(){b(),setTimeout(b,400)}}var i=function(i,j){function k(){q||(q=!0,p=f.loaderstatus.COMPLETE,o.trigger(c.COMPLETE))}function l(){if(!s&&(j&&0!==e.keys(j).length||k(),!q)){var d=i.getPlugins();n=e.after(r,k),e.each(j,function(e,g){var h=a.getPluginName(g),i=d[h],j=i.getJS(),k=i.getTarget(),l=i.getStatus();l!==f.loaderstatus.LOADING&&l!==f.loaderstatus.NEW&&(j&&!b.versionCheck(k)&&o.trigger(c.ERROR,{message:"Incompatible player version"}),n())})}}function m(a){if(!s){var d="File not found";a.url&&b.log(d,a.url),this.off(),this.trigger(c.ERROR,{message:d}),l()}}var n,o=e.extend(this,d),p=f.loaderstatus.NEW,q=!1,r=e.size(j),s=!1;this.setupPlugins=function(c,d){var f=[],j=i.getPlugins(),k=d.get("plugins");e.each(k,function(d,i){var l=a.getPluginName(i),m=j[l],n=m.getFlashPath(),o=m.getJS(),p=m.getURL();if(n){var q=e.extend({name:l,swf:n,pluginmode:m.getPluginmode()},d);f.push(q)}var r=b.tryCatch(function(){if(o&&k[p]){var a=document.createElement("div");a.id=c.id+"_"+l,a.className="jw-plugin jw-reset";var b=e.extend({},k[p]),d=m.getNewInstance(c,b,a);d.addToPlayer=g(c,d,a),d.resizeHandler=h(d),c.addPlugin(l,d,a)}});r instanceof b.Error&&b.log("ERROR: Failed to load "+l+".")}),d.set("flashPlugins",f)},this.load=function(){if(b.exists(j)&&"object"!==b.typeOf(j))return void l();p=f.loaderstatus.LOADING,e.each(j,function(a,d){if(b.exists(d)){var e=i.addPlugin(d);e.on(c.COMPLETE,l),e.on(c.ERROR,m)}});var a=i.getPlugins();e.each(a,function(a){a.load()}),l()},this.destroy=function(){ +s=!0,this.off()},this.getStatus=function(){return p}};return i}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(51)],e=function(a){var b={},c=b.pluginPathType={ABSOLUTE:0,RELATIVE:1,CDN:2};return b.getPluginPathType=function(b){if("string"==typeof b){b=b.split("?")[0];var d=b.indexOf("://");if(d>0)return c.ABSOLUTE;var e=b.indexOf("/"),f=a.extension(b);return!(0>d&&0>e)||f&&isNaN(f)?c.RELATIVE:c.CDN}},b.getPluginName=function(a){return a.replace(/^(.*\/)?([^-]*)-?.*\.(swf|js)$/,"$2")},b.getPluginVersion=function(a){return a.replace(/[^-]*-?([^\.]*).*$/,"$1")},b}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(46),c(47),c(45)],e=function(a,b,c){var d={},e={NEW:0,LOADING:1,ERROR:2,COMPLETE:3},f=function(f,g){function h(b){k=e.ERROR,j.trigger(a.ERROR,b)}function i(b){k=e.COMPLETE,j.trigger(a.COMPLETE,b)}var j=c.extend(this,b),k=e.NEW;this.addEventListener=this.on,this.removeEventListener=this.off,this.makeStyleLink=function(a){var b=document.createElement("link");return b.type="text/css",b.rel="stylesheet",b.href=a,b},this.makeScriptTag=function(a){var b=document.createElement("script");return b.src=a,b},this.makeTag=g?this.makeStyleLink:this.makeScriptTag,this.load=function(){if(k===e.NEW){var b=d[f];if(b&&(k=b.getStatus(),2>k))return b.on(a.ERROR,h),void b.on(a.COMPLETE,i);var c=document.getElementsByTagName("head")[0]||document.documentElement,j=this.makeTag(f),l=!1;j.onload=j.onreadystatechange=function(a){l||this.readyState&&"loaded"!==this.readyState&&"complete"!==this.readyState||(l=!0,i(a),j.onload=j.onreadystatechange=null,c&&j.parentNode&&!g&&c.removeChild(j))},j.onerror=h,c.insertBefore(j,c.firstChild),k=e.LOADING,d[f]=this}},this.getStatus=function(){return k}};return f.loaderstatus=e,f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(100),c(103)],e=function(a,b){var c=function(c){this.addPlugin=function(d){var e=a.getPluginName(d);return c[e]||(c[e]=new b(d)),c[e]},this.getPlugins=function(){return c}};return c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(100),c(46),c(47),c(101),c(45)],e=function(a,b,c,d,e,f){var g={FLASH:0,JAVASCRIPT:1,HYBRID:2},h=function(h){function i(){switch(b.getPluginPathType(h)){case b.pluginPathType.ABSOLUTE:return h;case b.pluginPathType.RELATIVE:return a.getAbsolutePath(h,window.location.href)}}function j(){f.defer(function(){q=e.loaderstatus.COMPLETE,p.trigger(c.COMPLETE)})}function k(){q=e.loaderstatus.ERROR,p.trigger(c.ERROR,{url:h})}var l,m,n,o,p=f.extend(this,d),q=e.loaderstatus.NEW;this.load=function(){if(q===e.loaderstatus.NEW){if(h.lastIndexOf(".swf")>0)return l=h,q=e.loaderstatus.COMPLETE,void p.trigger(c.COMPLETE);if(b.getPluginPathType(h)===b.pluginPathType.CDN)return q=e.loaderstatus.COMPLETE,void p.trigger(c.COMPLETE);q=e.loaderstatus.LOADING;var a=new e(i());a.on(c.COMPLETE,j),a.on(c.ERROR,k),a.load()}},this.registerPlugin=function(a,b,d,f){o&&(clearTimeout(o),o=void 0),n=b,d&&f?(l=f,m=d):"string"==typeof d?l=d:"function"==typeof d?m=d:d||f||(l=a),q=e.loaderstatus.COMPLETE,p.trigger(c.COMPLETE)},this.getStatus=function(){return q},this.getPluginName=function(){return b.getPluginName(h)},this.getFlashPath=function(){if(l)switch(b.getPluginPathType(l)){case b.pluginPathType.ABSOLUTE:return l;case b.pluginPathType.RELATIVE:return h.lastIndexOf(".swf")>0?a.getAbsolutePath(l,window.location.href):a.getAbsolutePath(l,i())}return null},this.getJS=function(){return m},this.getTarget=function(){return n},this.getPluginmode=function(){return void 0!==typeof l&&void 0!==typeof m?g.HYBRID:void 0!==typeof l?g.FLASH:void 0!==typeof m?g.JAVASCRIPT:void 0},this.getNewInstance=function(a,b,c){return new m(a,b,c)},this.getURL=function(){return h}};return h}.apply(b,d),!(void 0!==e&&(a.exports=e))},,,,,,,,function(a,b,c){var d,e;d=[c(66),c(112),c(113),c(48)],e=function(a,b,c,d){var e=function(e,f){function g(a){if(a.tracks.length){f.mediaController.off("meta",h),s=[],t={},u={},v=0;for(var b=a.tracks||[],c=0;c1&&(a.label+=" ("+v+")")),s.push(a),t[a.id]=a}function m(a){d.ajax(a.file,function(b){n(b,a)},i)}function n(e,f){var g,h=e.responseXML?e.responseXML.firstChild:null;if(h)for("xml"===a.localName(h)&&(h=h.nextSibling);h.nodeType===h.COMMENT_NODE;)h=h.nextSibling;g=h&&"tt"===a.localName(h)?d.tryCatch(function(){f.data=c(e.responseXML)}):d.tryCatch(function(){f.data=b(e.responseText)}),g instanceof d.Error&&i(g.message+": "+f.file)}function o(){for(var a=[{id:"off",label:"Off"}],b=0;b ")>0&&(e=0),c.length>e+1&&c[e+1]){var f=c[e],g=f.indexOf(" --> ");g>0&&(b.begin=d(f.substr(0,g)),b.end=d(f.substr(g+5)),b.text=c.slice(e+1).join("
"))}return b}var d=a.seconds;return function(a){var d=[];a=b.trim(a);var e=a.split("\r\n\r\n");1===e.length&&(e=a.split("\n\n"));for(var f=0;f\s+<").replace(/tts?:/g,"");if(k){var l=i.getAttribute("begin"),m=i.getAttribute("dur"),n=i.getAttribute("end"),o={begin:d(l),text:k};n?o.end=d(n):m&&(o.end=o.begin+d(m)),f.push(o)}}return f.length||c(),f}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(70),c(71),c(45),c(78)],e=function(a,b,c,d){function e(a,b){for(var c=0;c=48&&a.keyCode<=59){var b=a.keyCode-48,c=b/10*v.get("duration");u.seek(c)}}return/13|32|37|38|39|40/.test(a.keyCode)?(a.preventDefault(),!1):void 0}function A(){La=!1,a.removeClass(ja,"jw-no-focus")}function B(){La=!0,a.addClass(ja,"jw-no-focus")}function C(){La||A(),Ga||aa()}function D(){var a=r(ja),c=Math.round(a.width),d=Math.round(a.height);return document.body.contains(ja)?c&&d&&(c===ma&&d===na||(ma=c,na=d,clearTimeout(Ia),Ia=setTimeout(X,50),v.set("containerWidth",c),v.set("containerHeight",d),Ma.trigger(b.JWPLAYER_RESIZE,{width:c,height:d}))):(window.removeEventListener("resize",D),s&&window.removeEventListener("orientationchange",D)),a}function E(b,c){c=c||!1,a.toggleClass(ja,"jw-flag-casting",c)}function F(b,c){a.toggleClass(ja,"jw-flag-cast-available",c),a.toggleClass(ka,"jw-flag-cast-available",c)}function G(b,c){a.replaceClass(ja,/jw-stretch-\S+/,"jw-stretch-"+c)}function H(b,c){a.toggleClass(ja,"jw-flag-compact-player",c)}function I(a){a&&!s&&(a.element().addEventListener("mousemove",L,!1),a.element().addEventListener("mouseout",M,!1))}function J(){v.get("state")!==e.IDLE&&v.get("state")!==e.COMPLETE&&v.get("state")!==e.PAUSED||!v.get("controls")||u.play({reason:"interaction"}),Ha?_():aa()}function K(a){a.link?(u.pause(!0),u.setFullscreen(!1),window.open(a.link,a.linktarget)):v.get("controls")&&u.play({reason:"interaction"})}function L(){clearTimeout(Da)}function M(){aa()}function N(a){Ma.trigger(a.type,a)}function O(b,c){c?(ya&&ya.destroy(),a.addClass(ja,"jw-flag-flash-blocked")):(ya&&ya.setup(v,ja,ja),a.removeClass(ja,"jw-flag-flash-blocked"))}function P(){v.get("controls")&&u.setFullscreen()}function Q(){var c=ja.getElementsByClassName("jw-overlays")[0];c.addEventListener("mousemove",aa),ra=new g(v,la,{useHover:!0}),ra.on("click",function(){N({type:b.JWPLAYER_DISPLAY_CLICK}),v.get("controls")&&u.play({reason:"interaction"})}),ra.on("tap",function(){N({type:b.JWPLAYER_DISPLAY_CLICK}),J()}),ra.on("doubleClick",P),ra.on("move",aa),ra.on("over",aa);var d=new h(v);d.on("click",function(){N({type:b.JWPLAYER_DISPLAY_CLICK}),u.play({reason:"interaction"})}),d.on("tap",function(){N({type:b.JWPLAYER_DISPLAY_CLICK}),J()}),a.isChrome()&&d.el.addEventListener("mousedown",function(){var a=v.getVideo(),b=a&&0===a.getName().name.indexOf("flash");if(b){var c=function(){document.removeEventListener("mouseup",c),d.el.style.pointerEvents="auto"};this.style.pointerEvents="none",document.addEventListener("mouseup",c)}}),ka.appendChild(d.element()),ta=new i(v),ua=new j(v),ua.on(b.JWPLAYER_LOGO_CLICK,K);var e=document.createElement("div");e.className="jw-controls-right jw-reset",ua.setup(e),e.appendChild(ta.element()),ka.appendChild(e),wa=new f(v),wa.setup(v.get("captions")),ka.parentNode.insertBefore(wa.element(),va.element());var l=v.get("height");s&&("string"==typeof l||l>=1.5*Fa)?a.addClass(ja,"jw-flag-touch"):(ya=new m,ya.setup(v,ja,ja)),pa=new k(u,v),pa.on(b.JWPLAYER_USER_ACTION,aa),v.on("change:scrubbing",S),v.on("change:compactUI",H),ka.appendChild(pa.element()),ja.addEventListener("focus",C),ja.addEventListener("blur",A),ja.addEventListener("keydown",z),ja.onmousedown=B}function R(b){return b.get("state")===e.PAUSED?void b.once("change:state",R):void(b.get("scrubbing")===!1&&a.removeClass(ja,"jw-flag-dragging"))}function S(b,c){b.off("change:state",R),c?a.addClass(ja,"jw-flag-dragging"):R(b)}function T(b,c,d){var e,f=ja.className;d=!!d,d&&(f=f.replace(/\s*aspectMode/,""),ja.className!==f&&(ja.className=f),q(ja,{display:"block"},d)),a.exists(b)&&a.exists(c)&&(v.set("width",b),v.set("height",c)),e={width:b},a.hasClass(ja,"jw-flag-aspect-mode")||(e.height=c),q(ja,e,!0),U(c),X(b,c)}function U(b){if(xa=V(b),pa&&!xa){var c=Ga?oa:v;ia(c,c.get("state"))}a.toggleClass(ja,"jw-flag-audio-player",xa)}function V(a){if(v.get("aspectratio"))return!1;if(o.isString(a)&&a.indexOf("%")>-1)return!1;var b=o.isNumber(a)?a:v.get("containerHeight");return W(b)}function W(a){return a&&Fa*(s?1.75:1)>=a}function X(b,c){if(!b||isNaN(Number(b))){if(!la)return;b=la.clientWidth}if(!c||isNaN(Number(c))){if(!la)return;c=la.clientHeight}a.isMSIE(9)&&document.all&&!window.atob&&(b=c="100%");var d=v.getVideo();if(d){var e=d.resize(b,c,v.get("stretching"));e&&(clearTimeout(Ia),Ia=setTimeout(X,250)),wa.resize(),pa.checkCompactMode(b)}}function Y(){if(Ka){var a=document.fullscreenElement||document.webkitCurrentFullScreenElement||document.mozFullScreenElement||document.msFullscreenElement;return!(!a||a.id!==v.get("id"))}return Ga?oa.getVideo().getFullScreen():v.getVideo().getFullScreen()}function Z(a){var b=v.get("fullscreen"),c=void 0!==a.jwstate?a.jwstate:Y();b!==c&&v.set("fullscreen",c),clearTimeout(Ia),Ia=setTimeout(X,200)}function $(b,c){c?(a.addClass(b,"jw-flag-fullscreen"),q(document.body,{"overflow-y":"hidden"}),aa()):(a.removeClass(b,"jw-flag-fullscreen"),q(document.body,{"overflow-y":""})),X()}function _(){Ha=!1,clearTimeout(Da),pa.hideComponents(),a.addClass(ja,"jw-flag-user-inactive")}function aa(){Ha||(a.removeClass(ja,"jw-flag-user-inactive"),pa.checkCompactMode(la.clientWidth)),Ha=!0,clearTimeout(Da),Da=setTimeout(_,Ea)}function ba(){u.setFullscreen(!1)}function ca(){sa&&sa.setState(v.get("state")),da(v,v.mediaModel.get("mediaType")),v.mediaModel.on("change:mediaType",da,this)}function da(b,c){var d="audio"===c;a.toggleClass(ja,"jw-flag-media-audio",d)}function ea(b,c){var d="LIVE"===a.adaptiveType(c);a.toggleClass(ja,"jw-flag-live",d),Ma.setAltText(d?"Live Broadcast":"")}function fa(a,b){return b?void(b.name?va.updateText(b.name,b.message):va.updateText(b.message,"")):void va.playlistItem(a,a.get("playlistItem"))}function ga(){var a=v.getVideo();return a?a.isCaster:!1}function ha(){a.replaceClass(ja,/jw-state-\S+/,"jw-state-"+za)}function ia(b,c){if(za=c,clearTimeout(Ja),c===e.COMPLETE||c===e.IDLE?Ja=setTimeout(ha,100):ha(),ga())return void a.addClass(la,"jw-media-show");switch(c){case e.PLAYING:X();break;case e.PAUSED:aa()}}var ja,ka,la,ma,na,oa,pa,qa,ra,sa,ta,ua,va,wa,xa,ya,za,Aa,Ba,Ca,Da=-1,Ea=s?4e3:2e3,Fa=40,Ga=!1,Ha=!1,Ia=-1,Ja=-1,Ka=!1,La=!1,Ma=o.extend(this,c);this.model=v,this.api=u,ja=a.createElement(p({id:v.get("id")})),a.isIE()&&a.addClass(ja,"jw-ie");var Na=v.get("width"),Oa=v.get("height");q(ja,{width:Na.toString().indexOf("%")>0?Na:Na+"px",height:Oa.toString().indexOf("%")>0?Oa:Oa+"px"}),Ba=ja.requestFullscreen||ja.webkitRequestFullscreen||ja.webkitRequestFullScreen||ja.mozRequestFullScreen||ja.msRequestFullscreen,Ca=document.exitFullscreen||document.webkitExitFullscreen||document.webkitCancelFullScreen||document.mozCancelFullScreen||document.msExitFullscreen,Ka=Ba&&Ca,this.onChangeSkin=function(b,c){a.replaceClass(ja,/jw-skin-\S+/,c?"jw-skin-"+c:"")},this.handleColorOverrides=function(){function b(b,d,e){if(e){b=a.prefix(b,"#"+c+" ");var f={};f[d]=e,a.css(b.join(", "),f)}}var c=v.get("id"),d=v.get("skinColorActive"),e=v.get("skinColorInactive"),f=v.get("skinColorBackground");b([".jw-toggle",".jw-button-color:hover"],"color",d),b([".jw-active-option",".jw-progress",".jw-playlist-container .jw-option.jw-active-option",".jw-playlist-container .jw-option:hover"],"background",d),b([".jw-text",".jw-option",".jw-button-color",".jw-toggle.jw-off",".jw-tooltip-title",".jw-skip .jw-skip-icon",".jw-playlist-container .jw-icon"],"color",e),b([".jw-cue",".jw-knob"],"background",e),b([".jw-playlist-container .jw-option"],"border-bottom-color",e),b([".jw-background-color",".jw-tooltip-title",".jw-playlist",".jw-playlist-container .jw-option"],"background",f),b([".jw-playlist-container ::-webkit-scrollbar"],"border-color",f)},this.setup=function(){this.handleColorOverrides(),v.get("skin-loading")===!0&&(a.addClass(ja,"jw-flag-skin-loading"),v.once("change:skin-loading",function(){a.removeClass(ja,"jw-flag-skin-loading")})),this.onChangeSkin(v,v.get("skin"),""),v.on("change:skin",this.onChangeSkin,this),la=ja.getElementsByClassName("jw-media")[0],ka=ja.getElementsByClassName("jw-controls")[0];var c=ja.getElementsByClassName("jw-preview")[0];qa=new l(v),qa.setup(c);var d=ja.getElementsByClassName("jw-title")[0];va=new n(v),va.setup(d),Q(),aa(),v.set("mediaContainer",la),v.mediaController.on("fullscreenchange",Z);for(var f=t.length;f--;)document.addEventListener(t[f],Z,!1);window.removeEventListener("resize",D),window.addEventListener("resize",D,!1),s&&(window.removeEventListener("orientationchange",D),window.addEventListener("orientationchange",D,!1)),v.on("change:errorEvent",fa),v.on("change:controls",Pa),Pa(v,v.get("controls")),v.on("change:state",ia),v.on("change:duration",ea,this),v.on("change:flashBlocked",O),O(v,v.get("flashBlocked")),u.onPlaylistComplete(ba),u.onPlaylistItem(ca),v.on("change:castAvailable",F),F(v,v.get("castAvailable")),v.on("change:castActive",E),E(v,v.get("castActive")),v.get("stretching")&&G(v,v.get("stretching")),v.on("change:stretching",G),ia(v,e.IDLE),v.on("change:fullscreen",Qa),I(pa),I(ua);var g=v.get("aspectratio");if(g){a.addClass(ja,"jw-flag-aspect-mode");var h=ja.getElementsByClassName("jw-aspect")[0];q(h,{paddingTop:g})}u.on(b.JWPLAYER_READY,function(){D(),T(v.get("width"),v.get("height"))})};var Pa=function(b,c){if(c){var d=Ga?oa.get("state"):v.get("state");ia(b,d)}a.toggleClass(ja,"jw-flag-controls-disabled",!c)},Qa=function(b,c){var d=v.getVideo();Ka?(c?Ba.apply(ja):Ca.apply(document),$(ja,c)):a.isIE()?$(ja,c):(oa&&oa.getVideo()&&oa.getVideo().setFullscreen(c),d.setFullscreen(c)),d&&0===d.getName().name.indexOf("flash")&&d.setFullscreen(c)};this.resize=function(a,b){var c=!0;T(a,b,c),D()},this.resizeMedia=X,this.reset=function(){document.contains(ja)&&ja.parentNode.replaceChild(Aa,ja),a.emptyElement(ja)},this.setupInstream=function(b){this.instreamModel=oa=b,oa.on("change:controls",Pa,this),oa.on("change:state",ia,this),Ga=!0,a.addClass(ja,"jw-flag-ads"),aa()},this.setAltText=function(a){pa.setAltText(a)},this.useExternalControls=function(){a.addClass(ja,"jw-flag-ads-hide-controls")},this.destroyInstream=function(){if(Ga=!1,oa&&(oa.off(null,null,this),oa=null),this.setAltText(""),a.removeClass(ja,"jw-flag-ads"),a.removeClass(ja,"jw-flag-ads-hide-controls"),v.getVideo){var b=v.getVideo();b.setContainer(la)}ea(v,v.get("duration")),ra.revertAlternateClickHandlers()},this.addCues=function(a){pa&&pa.addCues(a)},this.clickHandler=function(){return ra},this.controlsContainer=function(){return ka},this.getContainer=this.element=function(){return ja},this.getSafeRegion=function(b){var c={x:0,y:0,width:v.get("containerWidth")||0,height:v.get("containerHeight")||0},d=v.get("dock");return d&&d.length&&v.get("controls")&&(c.y=ta.element().clientHeight,c.height-=c.y),b=b||!a.exists(b),b&&v.get("controls")&&(c.height-=pa.element().clientHeight),c},this.destroy=function(){window.removeEventListener("resize",D),window.removeEventListener("orientationchange",D);for(var b=t.length;b--;)document.removeEventListener(t[b],Z,!1);v.mediaController&&v.mediaController.off("fullscreenchange",Z),ja.removeEventListener("keydown",z,!1),ya&&ya.destroy(),sa&&(v.off("change:state",sa.statusDelegate),sa.destroy(),sa=null),Ga&&this.destroyInstream(),ua&&ua.destroy(),a.clearCss("#"+v.get("id"))}};return u}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(119),c(48),c(45),c(127)],e=function(a,b,c,d){var e=function(a){this.model=a,this.setup(),this.model.on("change:dock",this.render,this)};return c.extend(e.prototype,{setup:function(){var c=this.model.get("dock"),e=this.click.bind(this),f=a(c);this.el=b.createElement(f),new d(this.el).on("click tap",e)},getDockButton:function(a){return b.hasClass(a.target,"jw-dock-button")?a.target:b.hasClass(a.target,"jw-dock-text")?a.target.parentElement.parentElement:a.target.parentElement},click:function(a){var b=this.getDockButton(a),d=b.getAttribute("button"),e=this.model.get("dock"),f=c.findWhere(e,{id:d});f&&f.callback&&f.callback(a)},render:function(){var c=this.model.get("dock"),d=a(c),e=b.createElement(d);this.el.innerHTML=e.innerHTML},element:function(){return this.el}}),e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({1:function(a,b,c,d){var e,f,g="function",h=b.helperMissing,i=this.escapeExpression,j='

\n
\n
\n',e=b["if"].call(a,null!=a?a.tooltip:a,{name:"if",hash:{},fn:this.program(6,d),inverse:this.noop,data:d}),null!=e&&(j+=e),j+"
\n"},2:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return" "+h((e=null!=(e=b.btnClass||(null!=a?a.btnClass:a))?e:g,typeof e===f?e.call(a,{name:"btnClass",hash:{},data:d}):e))},4:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return"style='background-image: url(\""+h((e=null!=(e=b.img||(null!=a?a.img:a))?e:g,typeof e===f?e.call(a,{name:"img",hash:{},data:d}):e))+"\")'"},6:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'
\n '+h((e=null!=(e=b.tooltip||(null!=a?a.tooltip:a))?e:g,typeof e===f?e.call(a,{name:"tooltip",hash:{},data:d}):e))+"\n
\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f='
\n';return e=b.each.call(a,a,{name:"each",hash:{},fn:this.program(1,d),inverse:this.noop,data:d}),null!=e&&(f+=e),f+"
"},useData:!0})},function(a,b,c){a.exports=c(121)},function(a,b,c){"use strict";var d=c(122),e=c(124)["default"],f=c(125)["default"],g=c(123),h=c(126),i=function(){var a=new d.HandlebarsEnvironment;return g.extend(a,d),a.SafeString=e,a.Exception=f,a.Utils=g,a.escapeExpression=g.escapeExpression,a.VM=h,a.template=function(b){return h.template(b,a)},a},j=i();j.create=i,j["default"]=j,b["default"]=j},function(a,b,c){"use strict";function d(a,b){this.helpers=a||{},this.partials=b||{},e(this)}function e(a){a.registerHelper("helperMissing",function(){if(1!==arguments.length)throw new g("Missing helper: '"+arguments[arguments.length-1].name+"'")}),a.registerHelper("blockHelperMissing",function(b,c){var d=c.inverse,e=c.fn;if(b===!0)return e(this);if(b===!1||null==b)return d(this);if(k(b))return b.length>0?(c.ids&&(c.ids=[c.name]),a.helpers.each(b,c)):d(this);if(c.data&&c.ids){var g=q(c.data);g.contextPath=f.appendContextPath(c.data.contextPath,c.name),c={data:g}}return e(b,c)}),a.registerHelper("each",function(a,b){if(!b)throw new g("Must pass iterator to #each");var c,d,e=b.fn,h=b.inverse,i=0,j="";if(b.data&&b.ids&&(d=f.appendContextPath(b.data.contextPath,b.ids[0])+"."),l(a)&&(a=a.call(this)),b.data&&(c=q(b.data)),a&&"object"==typeof a)if(k(a))for(var m=a.length;m>i;i++)c&&(c.index=i,c.first=0===i,c.last=i===a.length-1,d&&(c.contextPath=d+i)),j+=e(a[i],{data:c});else for(var n in a)a.hasOwnProperty(n)&&(c&&(c.key=n,c.index=i,c.first=0===i,d&&(c.contextPath=d+n)),j+=e(a[n],{data:c}),i++);return 0===i&&(j=h(this)),j}),a.registerHelper("if",function(a,b){return l(a)&&(a=a.call(this)),!b.hash.includeZero&&!a||f.isEmpty(a)?b.inverse(this):b.fn(this)}),a.registerHelper("unless",function(b,c){return a.helpers["if"].call(this,b,{fn:c.inverse,inverse:c.fn,hash:c.hash})}),a.registerHelper("with",function(a,b){l(a)&&(a=a.call(this));var c=b.fn;if(f.isEmpty(a))return b.inverse(this);if(b.data&&b.ids){var d=q(b.data);d.contextPath=f.appendContextPath(b.data.contextPath,b.ids[0]),b={data:d}}return c(a,b)}),a.registerHelper("log",function(b,c){var d=c.data&&null!=c.data.level?parseInt(c.data.level,10):1;a.log(d,b)}),a.registerHelper("lookup",function(a,b){return a&&a[b]})}var f=c(123),g=c(125)["default"],h="2.0.0";b.VERSION=h;var i=6;b.COMPILER_REVISION=i;var j={1:"<= 1.0.rc.2",2:"== 1.0.0-rc.3",3:"== 1.0.0-rc.4",4:"== 1.x.x",5:"== 2.0.0-alpha.x",6:">= 2.0.0-beta.1"};b.REVISION_CHANGES=j;var k=f.isArray,l=f.isFunction,m=f.toString,n="[object Object]";b.HandlebarsEnvironment=d,d.prototype={constructor:d,logger:o,log:p,registerHelper:function(a,b){if(m.call(a)===n){if(b)throw new g("Arg not supported with multiple helpers");f.extend(this.helpers,a)}else this.helpers[a]=b},unregisterHelper:function(a){delete this.helpers[a]},registerPartial:function(a,b){m.call(a)===n?f.extend(this.partials,a):this.partials[a]=b},unregisterPartial:function(a){delete this.partials[a]}};var o={methodMap:{0:"debug",1:"info",2:"warn",3:"error"},DEBUG:0,INFO:1,WARN:2,ERROR:3,level:3,log:function(a,b){if(o.level<=a){var c=o.methodMap[a];"undefined"!=typeof console&&console[c]&&console[c].call(console,b)}}};b.logger=o;var p=o.log;b.log=p;var q=function(a){var b=f.extend({},a);return b._parent=a,b};b.createFrame=q},function(a,b,c){"use strict";function d(a){return j[a]}function e(a){for(var b=1;b":">",'"':""","'":"'","`":"`"},k=/[&<>"'`]/g,l=/[&<>"'`]/;b.extend=e;var m=Object.prototype.toString;b.toString=m;var n=function(a){return"function"==typeof a};n(/x/)&&(n=function(a){return"function"==typeof a&&"[object Function]"===m.call(a)});var n;b.isFunction=n;var o=Array.isArray||function(a){return a&&"object"==typeof a?"[object Array]"===m.call(a):!1};b.isArray=o,b.escapeExpression=f,b.isEmpty=g,b.appendContextPath=h},function(a,b){"use strict";function c(a){this.string=a}c.prototype.toString=function(){return""+this.string},b["default"]=c},function(a,b){"use strict";function c(a,b){var c;b&&b.firstLine&&(c=b.firstLine,a+=" - "+c+":"+b.firstColumn);for(var e=Error.prototype.constructor.call(this,a),f=0;fb){var d=m[c],e=m[b];throw new k("Template was precompiled with an older version of Handlebars than the current runtime. Please update your precompiler to a newer version ("+d+") or downgrade your runtime to an older version ("+e+").")}throw new k("Template was precompiled with a newer version of Handlebars than the current runtime. Please update your runtime to a newer version ("+a[1]+").")}}function e(a,b){if(!b)throw new k("No environment passed to template");if(!a||!a.main)throw new k("Unknown template object: "+typeof a);b.VM.checkRevision(a.compiler);var c=function(c,d,e,f,g,h,i,l,m){g&&(f=j.extend({},f,g));var n=b.VM.invokePartial.call(this,c,e,f,h,i,l,m);if(null==n&&b.compile){var o={helpers:h,partials:i,data:l,depths:m};i[e]=b.compile(c,{data:void 0!==l,compat:a.compat},b),n=i[e](f,o)}if(null!=n){if(d){for(var p=n.split("\n"),q=0,r=p.length;r>q&&(p[q]||q+1!==r);q++)p[q]=d+p[q];n=p.join("\n")}return n}throw new k("The partial "+e+" could not be compiled when running in runtime-only mode")},d={lookup:function(a,b){for(var c=a.length,d=0;c>d;d++)if(a[d]&&null!=a[d][b])return a[d][b]},lambda:function(a,b){return"function"==typeof a?a.call(b):a},escapeExpression:j.escapeExpression,invokePartial:c,fn:function(b){return a[b]},programs:[],program:function(a,b,c){var d=this.programs[a],e=this.fn(a);return b||c?d=f(this,a,e,b,c):d||(d=this.programs[a]=f(this,a,e)),d},data:function(a,b){for(;a&&b--;)a=a._parent;return a},merge:function(a,b){ +var c=a||b;return a&&b&&a!==b&&(c=j.extend({},b,a)),c},noop:b.VM.noop,compilerInfo:a.compiler},e=function(b,c){c=c||{};var f=c.data;e._setup(c),!c.partial&&a.useData&&(f=i(b,f));var g;return a.useDepths&&(g=c.depths?[b].concat(c.depths):[b]),a.main.call(d,b,d.helpers,d.partials,f,g)};return e.isTop=!0,e._setup=function(c){c.partial?(d.helpers=c.helpers,d.partials=c.partials):(d.helpers=d.merge(c.helpers,b.helpers),a.usePartial&&(d.partials=d.merge(c.partials,b.partials)))},e._child=function(b,c,e){if(a.useDepths&&!e)throw new k("must pass parent depths");return f(d,b,a[b],c,e)},e}function f(a,b,c,d,e){var f=function(b,f){return f=f||{},c.call(a,b,a.helpers,a.partials,f.data||d,e&&[b].concat(e))};return f.program=b,f.depth=e?e.length:0,f}function g(a,b,c,d,e,f,g){var h={partial:!0,helpers:d,partials:e,data:f,depths:g};if(void 0===a)throw new k("The partial "+b+" could not be found");return a instanceof Function?a(c,h):void 0}function h(){return""}function i(a,b){return b&&"root"in b||(b=b?n(b):{},b.root=a),b}var j=c(123),k=c(125)["default"],l=c(122).COMPILER_REVISION,m=c(122).REVISION_CHANGES,n=c(122).createFrame;b.checkRevision=d,b.template=e,b.program=f,b.invokePartial=g,b.noop=h},function(a,b,c){var d,e;d=[c(47),c(46),c(45),c(48)],e=function(a,b,c,d){function e(a,b){return/touch/.test(a.type)?(a.originalEvent||a).changedTouches[0]["page"+b]:a["page"+b]}function f(a){var b=a||window.event;return a instanceof MouseEvent?"which"in b?3===b.which:"button"in b?2===b.button:!1:!1}function g(a,b,c){var d;return d=b instanceof MouseEvent||!b.touches&&!b.changedTouches?b:b.touches&&b.touches.length?b.touches[0]:b.changedTouches[0],{type:a,target:b.target,currentTarget:c,pageX:d.pageX,pageY:d.pageY}}function h(a){(a instanceof MouseEvent||a instanceof window.TouchEvent)&&(a.preventManipulation&&a.preventManipulation(),a.cancelable&&a.preventDefault&&a.preventDefault())}var i=!c.isUndefined(window.PointerEvent),j=!i&&d.isMobile(),k=!i&&!j,l=d.isFF()&&d.isOSX(),m=function(a,d){function j(a){(k||i&&"touch"!==a.pointerType)&&r(b.touchEvents.OVER,a)}function m(a){(k||i&&"touch"!==a.pointerType)&&r(b.touchEvents.MOVE,a)}function n(c){(k||i&&"touch"!==c.pointerType&&!a.contains(document.elementFromPoint(c.x,c.y)))&&r(b.touchEvents.OUT,c)}function o(b){s=b.target,w=e(b,"X"),x=e(b,"Y"),f(b)||(i?b.isPrimary&&(d.preventScrolling&&(t=b.pointerId,a.setPointerCapture(t)),a.addEventListener("pointermove",p),a.addEventListener("pointercancel",q),a.addEventListener("pointerup",q)):k&&(document.addEventListener("mousemove",p),l&&"object"===b.target.nodeName.toLowerCase()?a.addEventListener("click",q):document.addEventListener("mouseup",q)),s.addEventListener("touchmove",p),s.addEventListener("touchcancel",q),s.addEventListener("touchend",q))}function p(a){var c=b.touchEvents,f=6;if(v)r(c.DRAG,a);else{var g=e(a,"X"),i=e(a,"Y"),j=g-w,k=i-x;j*j+k*k>f*f&&(r(c.DRAG_START,a),v=!0,r(c.DRAG,a))}d.preventScrolling&&h(a)}function q(c){var e=b.touchEvents;i?(d.preventScrolling&&a.releasePointerCapture(t),a.removeEventListener("pointermove",p),a.removeEventListener("pointercancel",q),a.removeEventListener("pointerup",q)):k&&(document.removeEventListener("mousemove",p),document.removeEventListener("mouseup",q)),s.removeEventListener("touchmove",p),s.removeEventListener("touchcancel",q),s.removeEventListener("touchend",q),v?r(e.DRAG_END,c):d.directSelect&&c.target!==a||-1!==c.type.indexOf("cancel")||(i&&c instanceof window.PointerEvent?"touch"===c.pointerType?r(e.TAP,c):r(e.CLICK,c):k?r(e.CLICK,c):(r(e.TAP,c),h(c))),s=null,v=!1}function r(a,e){var f;if(d.enableDoubleTap&&(a===b.touchEvents.CLICK||a===b.touchEvents.TAP))if(c.now()-y=0&&l(d,o,c))){for(var e=-1,f=0;f=c)&&(b===a.length-1||a[b+1].begin>=c)}function m(a,c,d){var e=b.hexToRgba("#000000",d);"dropshadow"===a?c.textShadow="0 2px 1px "+e:"raised"===a?c.textShadow="0 0 5px "+e+", 0 1px 5px "+e+", 0 2px 5px "+e:"depressed"===a?c.textShadow="0 -2px 1px "+e:"uniform"===a&&(c.textShadow="-2px 0 1px "+e+",2px 0 1px "+e+",0 -2px 1px "+e+",0 2px 1px "+e+",-1px 1px 1px "+e+",1px 1px 1px "+e+",1px -1px 1px "+e+",1px 1px 1px "+e)}var n,o,p,q,r,s,t={};q=document.createElement("div"),q.className="jw-captions jw-reset",this.show=function(){q.className="jw-captions jw-captions-enabled jw-reset"},this.hide=function(){q.className="jw-captions jw-reset"},this.populate=function(a){return o=-1,n=a,a?void k(a,p):void h("")},this.resize=function(){var a=q.clientWidth,b=Math.pow(a/400,.6);if(b){var c=t.fontSize*b;e(q,{fontSize:Math.round(c)+"px"})}},this.setup=function(a){if(r=document.createElement("div"),s=document.createElement("span"),r.className="jw-captions-window jw-reset",s.className="jw-captions-text jw-reset",t=d.extend({},f,a),a){var c=t.fontOpacity,h=t.windowOpacity,i=t.edgeStyle,j=t.backgroundColor,k={},l={color:b.hexToRgba(t.color,c),fontFamily:t.fontFamily,fontStyle:t.fontStyle,fontWeight:t.fontWeight,textDecoration:t.textDecoration};h&&(k.backgroundColor=b.hexToRgba(t.windowColor,h)),m(i,l,c),t.back?l.backgroundColor=b.hexToRgba(j,t.backgroundOpacity):null===i&&m("uniform",l),e(r,k),e(s,l)}r.appendChild(s),q.appendChild(r),this.populate(g.get("captionsTrack"))},this.element=function(){return q},g.on("change:playlistItem",function(){p=null,o=-1,h("")},this),g.on("change:captionsTrack",function(a,b){this.populate(b)},this),g.mediaController.on("seek",function(){o=-1},this),g.mediaController.on("time seek",i,this),g.mediaController.on("subtitlesTrackData",function(){k(n,p)},this),g.on("change:state",function(a,b){switch(b){case c.IDLE:case c.ERROR:case c.COMPLETE:this.hide();break;default:this.show()}},this)};return g}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(127),c(46),c(47),c(45)],e=function(a,b,c,d){var e=function(e,f,g){function h(a){return e.get("flashBlocked")?void 0:k?void k(a):void o.trigger(a.type===b.touchEvents.CLICK?"click":"tap")}function i(){return l?void l():void o.trigger("doubleClick")}var j,k,l,m={enableDoubleTap:!0,useMove:!0};d.extend(this,c),j=f,this.element=function(){return j};var n=new a(j,d.extend(m,g));n.on("click tap",h),n.on("doubleClick doubleTap",i),n.on("move",function(){o.trigger("move")}),n.on("over",function(){o.trigger("over")}),n.on("out",function(){o.trigger("out")}),this.clickHandler=h;var o=this;this.setAlternateClickHandlers=function(a,b){k=a,l=b||null},this.revertAlternateClickHandlers=function(){k=null,l=null}};return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(47),c(127),c(131),c(45)],e=function(a,b,c,d,e){var f=function(f){e.extend(this,b),this.model=f,this.el=a.createElement(d({}));var g=this;this.iconUI=new c(this.el).on("click tap",function(a){g.trigger(a.type)})};return e.extend(f.prototype,{element:function(){return this.el}}),f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){return'
\n
\n
\n'},useData:!0})},function(a,b,c){var d,e;d=[c(127),c(48),c(46),c(45),c(47),c(133)],e=function(a,b,c,d,e,f){var g=b.style,h={linktarget:"_blank",margin:8,hide:!1,position:"top-right"},i=function(i){var j,k,l=new Image,m=d.extend({},i.get("logo"));return d.extend(this,e),this.setup=function(e){if(k=d.extend({},h,m),k.hide="true"===k.hide.toString(),j=b.createElement(f()),k.file){k.hide&&b.addClass(j,"jw-hide"),b.addClass(j,"jw-logo-"+(k.position||h.position)),"top-right"===k.position&&(i.on("change:dock",this.topRight,this),i.on("change:controls",this.topRight,this),this.topRight(i)),i.set("logo",k),l.onload=function(){var a={backgroundImage:'url("'+this.src+'")',width:this.width,height:this.height};if(k.margin!==h.margin){var b=/(\w+)-(\w+)/.exec(k.position);3===b.length&&(a["margin-"+b[1]]=k.margin,a["margin-"+b[2]]=k.margin)}g(j,a),i.set("logoWidth",a.width)},l.src=k.file;var n=new a(j);n.on("click tap",function(a){b.exists(a)&&a.stopPropagation&&a.stopPropagation(),this.trigger(c.JWPLAYER_LOGO_CLICK,{link:k.link,linktarget:k.linktarget})},this),e.appendChild(j)}},this.topRight=function(a){var b=a.get("controls"),c=a.get("dock"),d=b&&(c&&c.length||a.get("sharing")||a.get("related"));g(j,{top:d?"3.5em":0})},this.element=function(){return j},this.position=function(){return k.position},this.destroy=function(){l.onload=null},this};return i}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){return''},useData:!0})},function(a,b,c){var d,e;d=[c(48),c(45),c(47),c(58),c(127),c(136),c(135),c(142),c(144),c(146),c(147)],e=function(a,b,c,d,e,f,g,h,i,j,k){function l(a,b){var c=document.createElement("div");return c.className="jw-icon jw-icon-inline jw-button-color jw-reset "+a,c.style.display="none",b&&new e(c).on("click tap",function(){b()}),{element:function(){return c},toggle:function(a){a?this.show():this.hide()},show:function(){c.style.display=""},hide:function(){c.style.display="none"}}}function m(a){var b=document.createElement("span");return b.className="jw-text jw-reset "+a,b}function n(a){var b=new h(a);return b}function o(a,c){var d=document.createElement("div");return d.className="jw-group jw-controlbar-"+a+"-group jw-reset",b.each(c,function(a){a.element&&(a=a.element()),d.appendChild(a)}),d}function p(b,c){this._api=b,this._model=c,this._isMobile=a.isMobile(),this._compactModeMaxSize=400,this._maxCompactWidth=-1,this.setup()}return b.extend(p.prototype,c,{setup:function(){this.build(),this.initialize()},build:function(){var a,c,d,e,h=new g(this._model,this._api),p=new k("jw-icon-more");this._model.get("visualplaylist")!==!1&&(a=new i("jw-icon-playlist")),this._isMobile||(e=l("jw-icon-volume",this._api.setMute),c=new f("jw-slider-volume","horizontal"),d=new j(this._model,"jw-icon-volume")),this.elements={alt:m("jw-text-alt"),play:l("jw-icon-playback",this._api.play.bind(this,{reason:"interaction"})),prev:l("jw-icon-prev",this._api.playlistPrev.bind(this,{reason:"interaction"})),next:l("jw-icon-next",this._api.playlistNext.bind(this,{reason:"interaction"})),playlist:a,elapsed:m("jw-text-elapsed"),time:h,duration:m("jw-text-duration"),drawer:p,hd:n("jw-icon-hd"),cc:n("jw-icon-cc"),audiotracks:n("jw-icon-audio-tracks"),mute:e,volume:c,volumetooltip:d,cast:l("jw-icon-cast jw-off",this._api.castToggle),fullscreen:l("jw-icon-fullscreen",this._api.setFullscreen)},this.layout={left:[this.elements.play,this.elements.prev,this.elements.playlist,this.elements.next,this.elements.elapsed],center:[this.elements.time,this.elements.alt],right:[this.elements.duration,this.elements.hd,this.elements.cc,this.elements.audiotracks,this.elements.drawer,this.elements.mute,this.elements.cast,this.elements.volume,this.elements.volumetooltip,this.elements.fullscreen],drawer:[this.elements.hd,this.elements.cc,this.elements.audiotracks]},this.menus=b.compact([this.elements.playlist,this.elements.hd,this.elements.cc,this.elements.audiotracks,this.elements.volumetooltip]),this.layout.left=b.compact(this.layout.left),this.layout.center=b.compact(this.layout.center),this.layout.right=b.compact(this.layout.right),this.layout.drawer=b.compact(this.layout.drawer),this.el=document.createElement("div"),this.el.className="jw-controlbar jw-background-color jw-reset",this.elements.left=o("left",this.layout.left),this.elements.center=o("center",this.layout.center),this.elements.right=o("right",this.layout.right),this.el.appendChild(this.elements.left),this.el.appendChild(this.elements.center),this.el.appendChild(this.elements.right)},initialize:function(){this.elements.play.show(),this.elements.fullscreen.show(),this.elements.mute&&this.elements.mute.show(),this.onVolume(this._model,this._model.get("volume")),this.onPlaylist(this._model,this._model.get("playlist")),this.onPlaylistItem(this._model,this._model.get("playlistItem")),this.onMediaModel(this._model,this._model.get("mediaModel")),this.onCastAvailable(this._model,this._model.get("castAvailable")),this.onCastActive(this._model,this._model.get("castActive")),this.onCaptionsList(this._model,this._model.get("captionsList")),this._model.on("change:volume",this.onVolume,this),this._model.on("change:mute",this.onMute,this),this._model.on("change:playlist",this.onPlaylist,this),this._model.on("change:playlistItem",this.onPlaylistItem,this),this._model.on("change:mediaModel",this.onMediaModel,this),this._model.on("change:castAvailable",this.onCastAvailable,this),this._model.on("change:castActive",this.onCastActive,this),this._model.on("change:duration",this.onDuration,this),this._model.on("change:position",this.onElapsed,this),this._model.on("change:fullscreen",this.onFullscreen,this),this._model.on("change:captionsList",this.onCaptionsList,this),this._model.on("change:captionsIndex",this.onCaptionsIndex,this),this._model.on("change:compactUI",this.onCompactUI,this),this.elements.volume&&this.elements.volume.on("update",function(a){var b=a.percentage;this._api.setVolume(b)},this),this.elements.volumetooltip&&(this.elements.volumetooltip.on("update",function(a){var b=a.percentage;this._api.setVolume(b)},this),this.elements.volumetooltip.on("toggleValue",function(){this._api.setMute()},this)),this.elements.playlist&&this.elements.playlist.on("select",function(a){this._model.once("itemReady",function(){this._api.play({reason:"interaction"})},this),this._api.load(a)},this),this.elements.hd.on("select",function(a){this._model.getVideo().setCurrentQuality(a)},this),this.elements.hd.on("toggleValue",function(){this._model.getVideo().setCurrentQuality(0===this._model.getVideo().getCurrentQuality()?1:0)},this),this.elements.cc.on("select",function(a){this._api.setCurrentCaptions(a)},this),this.elements.cc.on("toggleValue",function(){var a=this._model.get("captionsIndex");this._api.setCurrentCaptions(a?0:1)},this),this.elements.audiotracks.on("select",function(a){this._model.getVideo().setCurrentAudioTrack(a)},this),new e(this.elements.duration).on("click tap",function(){if("DVR"===a.adaptiveType(this._model.get("duration"))){var b=this._model.get("position");this._api.seek(Math.max(d.dvrSeekLimit,b))}},this),new e(this.el).on("click tap drag",function(){this.trigger("userAction")},this),this.elements.drawer.on("open-drawer close-drawer",function(b,c){a.toggleClass(this.el,"jw-drawer-expanded",c.isOpen),c.isOpen||this.closeMenus()},this),b.each(this.menus,function(a){a.on("open-tooltip",this.closeMenus,this)},this)},onCaptionsList:function(a,b){var c=a.get("captionsIndex");this.elements.cc.setup(b,c),this.clearCompactMode()},onCaptionsIndex:function(a,b){this.elements.cc.selectItem(b)},onPlaylist:function(a,b){var c=b.length>1;this.elements.next.toggle(c),this.elements.prev.toggle(c),this.elements.playlist&&this.elements.playlist.setup(b,a.get("item"))},onPlaylistItem:function(a){this.elements.time.updateBuffer(0),this.elements.time.render(0),this.elements.duration.innerHTML="00:00",this.elements.elapsed.innerHTML="00:00",this.clearCompactMode();var b=a.get("item");this.elements.playlist&&this.elements.playlist.selectItem(b),this.elements.audiotracks.setup()},onMediaModel:function(c,d){d.on("change:levels",function(a,b){this.elements.hd.setup(b,a.get("currentLevel")),this.clearCompactMode()},this),d.on("change:currentLevel",function(a,b){this.elements.hd.selectItem(b)},this),d.on("change:audioTracks",function(a,c){var d=b.map(c,function(a){return{label:a.name}});this.elements.audiotracks.setup(d,a.get("currentAudioTrack"),{toggle:!1}),this.clearCompactMode()},this),d.on("change:currentAudioTrack",function(a,b){this.elements.audiotracks.selectItem(b)},this),d.on("change:state",function(b,c){"complete"===c&&(this.elements.drawer.closeTooltip(),a.removeClass(this.el,"jw-drawer-expanded"))},this)},onVolume:function(a,b){this.renderVolume(a.get("mute"),b)},onMute:function(a,b){this.renderVolume(b,a.get("volume"))},renderVolume:function(b,c){this.elements.mute&&a.toggleClass(this.elements.mute.element(),"jw-off",b),this.elements.volume&&this.elements.volume.render(b?0:c),this.elements.volumetooltip&&(this.elements.volumetooltip.volumeSlider.render(b?0:c),a.toggleClass(this.elements.volumetooltip.element(),"jw-off",b))},onCastAvailable:function(a,b){this.elements.cast.toggle(b),this.clearCompactMode()},onCastActive:function(b,c){a.toggleClass(this.elements.cast.element(),"jw-off",!c)},onElapsed:function(b,c){var d,e=b.get("duration");d="DVR"===a.adaptiveType(e)?"-"+a.timeFormat(-e):a.timeFormat(c),this.elements.elapsed.innerHTML=d},onDuration:function(b,c){var d;"DVR"===a.adaptiveType(c)?(d="Live",this.clearCompactMode()):d=a.timeFormat(c),this.elements.duration.innerHTML=d},onFullscreen:function(b,c){a.toggleClass(this.elements.fullscreen.element(),"jw-off",c)},element:function(){return this.el},getVisibleBounds:function(){var b,c=this.el,d=getComputedStyle?getComputedStyle(c):c.currentStyle;return"table"===d.display?a.bounds(c):(c.style.visibility="hidden",c.style.display="table",b=a.bounds(c),c.style.visibility=c.style.display="",b)},setAltText:function(a){this.elements.alt.innerHTML=a},addCues:function(a){this.elements.time&&(b.each(a,function(a){this.elements.time.addCue(a)},this),this.elements.time.drawCues())},closeMenus:function(a){b.each(this.menus,function(b){a&&a.target===b.el||b.closeTooltip(a)})},hideComponents:function(){this.closeMenus(),this.elements.drawer.closeTooltip(),a.removeClass(this.el,"jw-drawer-expanded")},clearCompactMode:function(){this._maxCompactWidth=-1,this._model.set("compactUI",!1),this._containerWidth&&this.checkCompactMode(this._containerWidth)},setCompactModeBounds:function(){if(this.element().offsetWidth>0){var b=this.elements.left.offsetWidth+this.elements.right.offsetWidth;if("LIVE"===a.adaptiveType(this._model.get("duration")))this._maxCompactWidth=b+this.elements.alt.offsetWidth;else{var c=b+(this.elements.center.offsetWidth-this.elements.time.el.offsetWidth),d=.2;this._maxCompactWidth=c/(1-d)}}},checkCompactMode:function(a){-1===this._maxCompactWidth&&this.setCompactModeBounds(),this._containerWidth=a,-1!==this._maxCompactWidth&&(a>=this._compactModeMaxSize&&a>this._maxCompactWidth?this._model.set("compactUI",!1):(ad&&(h=d-h);var i;if(this.activeCue)i=this.activeCue.text;else{var j=!0;i=b.timeFormat(h,j),0>d&&h>c.dvrSeekLimit&&(i="Live")}this.timeTip.update(i),this.showThumbnail(h),b.addClass(this.timeTip.el,"jw-open"),this.timeTip.el.style.left=100*g+"%"}},hideTimeTooltip:function(){b.removeClass(this.timeTip.el,"jw-open")},reset:function(){this.resetChapters(),this.resetThumbnails()}});return a.extend(i.prototype,f,g),i}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(137),c(127),c(138),c(48)],e=function(a,b,c,d){var e=a.extend({constructor:function(a,b){this.className=a+" jw-background-color jw-reset",this.orientation=b,this.dragStartListener=this.dragStart.bind(this),this.dragMoveListener=this.dragMove.bind(this),this.dragEndListener=this.dragEnd.bind(this),this.tapListener=this.tap.bind(this),this.setup()},setup:function(){var a={"default":this["default"],className:this.className,orientation:"jw-slider-"+this.orientation};this.el=d.createElement(c(a)),this.elementRail=this.el.getElementsByClassName("jw-slider-container")[0],this.elementBuffer=this.el.getElementsByClassName("jw-buffer")[0],this.elementProgress=this.el.getElementsByClassName("jw-progress")[0],this.elementThumb=this.el.getElementsByClassName("jw-knob")[0],this.userInteract=new b(this.element(),{preventScrolling:!0}),this.userInteract.on("dragStart",this.dragStartListener),this.userInteract.on("drag",this.dragMoveListener),this.userInteract.on("dragEnd",this.dragEndListener),this.userInteract.on("tap click",this.tapListener)},dragStart:function(){this.trigger("dragStart"),this.railBounds=d.bounds(this.elementRail)},dragEnd:function(a){this.dragMove(a),this.trigger("dragEnd")},dragMove:function(a){var b,c,e=this.railBounds=this.railBounds?this.railBounds:d.bounds(this.elementRail);"horizontal"===this.orientation?(b=a.pageX,c=be.right?100:100*d.between((b-e.left)/e.width,0,1)):(b=a.pageY,c=b>=e.bottom?0:b<=e.top?100:100*d.between((e.height-(b-e.top))/e.height,0,1));var f=this.limit(c);return this.render(f),this.update(f),!1},tap:function(a){this.railBounds=d.bounds(this.elementRail),this.dragMove(a)},limit:function(a){return a},update:function(a){this.trigger("update",{percentage:a})},render:function(a){a=Math.max(0,Math.min(a,100)),"horizontal"===this.orientation?(this.elementThumb.style.left=a+"%",this.elementProgress.style.width=a+"%"):(this.elementThumb.style.bottom=a+"%",this.elementProgress.style.height=a+"%")},updateBuffer:function(a){this.elementBuffer.style.width=a+"%"},element:function(){return this.el}});return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(47),c(45)],e=function(a,b){function c(){}var d=function(a,c){var d,e=this;d=a&&b.has(a,"constructor")?a.constructor:function(){return e.apply(this,arguments)},b.extend(d,e,c);var f=function(){this.constructor=d};return f.prototype=e.prototype,d.prototype=new f,a&&b.extend(d.prototype,a),d.__super__=e.prototype,d};return c.extend=d,b.extend(c.prototype,a),c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'
\n
\n
\n
\n
\n
\n
\n
'},useData:!0})},function(a,b,c){var d,e;d=[c(137),c(48)],e=function(a,b){var c=a.extend({constructor:function(a){this.el=document.createElement("div"),this.el.className="jw-icon jw-icon-tooltip "+a+" jw-button-color jw-reset jw-hidden",this.container=document.createElement("div"),this.container.className="jw-overlay jw-reset",this.openClass="jw-open",this.componentType="tooltip",this.el.appendChild(this.container)},addContent:function(a){this.content&&this.removeContent(),this.content=a,this.container.appendChild(a)},removeContent:function(){this.content&&(this.container.removeChild(this.content),this.content=null)},hasContent:function(){return!!this.content},element:function(){return this.el},openTooltip:function(a){this.trigger("open-"+this.componentType,a,{isOpen:!0}),this.isOpen=!0,b.toggleClass(this.el,this.openClass,this.isOpen)},closeTooltip:function(a){this.trigger("close-"+this.componentType,a,{isOpen:!1}),this.isOpen=!1,b.toggleClass(this.el,this.openClass,this.isOpen)},toggleOpenState:function(a){this.isOpen?this.closeTooltip(a):this.openTooltip(a)}});return c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(48),c(112)],e=function(a,b,c){function d(a,b){this.time=a,this.text=b,this.el=document.createElement("div"),this.el.className="jw-cue jw-reset"}a.extend(d.prototype,{align:function(a){if("%"===this.time.toString().slice(-1))this.pct=this.time;else{var b=this.time/a*100;this.pct=b+"%"}this.el.style.left=this.pct}});var e={loadChapters:function(a){b.ajax(a,this.chaptersLoaded.bind(this),this.chaptersFailed,{plainText:!0})},chaptersLoaded:function(b){var d=c(b.responseText);a.isArray(d)&&(a.each(d,this.addCue,this),this.drawCues())},chaptersFailed:function(){},addCue:function(a){this.cues.push(new d(a.begin,a.text))},drawCues:function(){var b=this._model.mediaModel.get("duration");if(!b||0>=b)return void this._model.mediaModel.once("change:duration",this.drawCues,this);var c=this;a.each(this.cues,function(a){a.align(b),a.el.addEventListener("mouseover",function(){c.activeCue=a}),a.el.addEventListener("mouseout",function(){c.activeCue=null}),c.elementRail.appendChild(a.el)})},resetChapters:function(){a.each(this.cues,function(a){a.el.parentNode&&a.el.parentNode.removeChild(a.el)},this),this.cues=[]}};return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(48),c(112)],e=function(a,b,c){function d(a){this.begin=a.begin,this.end=a.end,this.img=a.text}var e={loadThumbnails:function(a){a&&(this.vttPath=a.split("?")[0].split("/").slice(0,-1).join("/"),this.individualImage=null,b.ajax(a,this.thumbnailsLoaded.bind(this),this.thumbnailsFailed.bind(this),{plainText:!0}))},thumbnailsLoaded:function(b){var e=c(b.responseText);a.isArray(e)&&(a.each(e,function(a){this.thumbnails.push(new d(a))},this),this.drawCues())},thumbnailsFailed:function(){},chooseThumbnail:function(b){var c=a.sortedIndex(this.thumbnails,{end:b},a.property("end"));c>=this.thumbnails.length&&(c=this.thumbnails.length-1);var d=this.thumbnails[c].img;return d.indexOf("://")<0&&(d=this.vttPath?this.vttPath+"/"+d:d),d},loadThumbnail:function(b){var c=this.chooseThumbnail(b),d={display:"block",margin:"0 auto",backgroundPosition:"0 0"},e=c.indexOf("#xywh");if(e>0)try{var f=/(.+)\#xywh=(\d+),(\d+),(\d+),(\d+)/.exec(c);c=f[1],d.backgroundPosition=-1*f[2]+"px "+-1*f[3]+"px",d.width=f[4],d.height=f[5]}catch(g){return}else this.individualImage||(this.individualImage=new Image,this.individualImage.onload=a.bind(function(){this.individualImage.onload=null,this.timeTip.image({width:this.individualImage.width,height:this.individualImage.height})},this),this.individualImage.src=c);return d.backgroundImage='url("'+c+'")',d},showThumbnail:function(a){this.thumbnails.length<1||this.timeTip.image(this.loadThumbnail(a))},resetThumbnails:function(){this.timeTip.image({backgroundImage:"",width:0,height:0}),this.thumbnails=[]}};return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(139),c(48),c(45),c(127),c(143)],e=function(a,b,c,d,e){var f=a.extend({setup:function(a,f,g){this.iconUI||(this.iconUI=new d(this.el,{useHover:!0,directSelect:!0}),this.toggleValueListener=this.toggleValue.bind(this),this.toggleOpenStateListener=this.toggleOpenState.bind(this),this.openTooltipListener=this.openTooltip.bind(this),this.closeTooltipListener=this.closeTooltip.bind(this), +this.selectListener=this.select.bind(this)),this.reset(),a=c.isArray(a)?a:[],b.toggleClass(this.el,"jw-hidden",a.length<2);var h=a.length>2||2===a.length&&g&&g.toggle===!1,i=!h&&2===a.length;if(b.toggleClass(this.el,"jw-toggle",i),b.toggleClass(this.el,"jw-button-color",!i),this.isActive=h||i,h){b.removeClass(this.el,"jw-off"),this.iconUI.on("tap",this.toggleOpenStateListener).on("over",this.openTooltipListener).on("out",this.closeTooltipListener);var j=e(a),k=b.createElement(j);this.addContent(k),this.contentUI=new d(this.content).on("click tap",this.selectListener)}else i&&this.iconUI.on("click tap",this.toggleValueListener);this.selectItem(f)},toggleValue:function(){this.trigger("toggleValue")},select:function(a){if(a.target.parentElement===this.content){var d=b.classList(a.target),e=c.find(d,function(a){return 0===a.indexOf("jw-item")});e&&(this.trigger("select",parseInt(e.split("-")[2])),this.closeTooltipListener())}},selectItem:function(a){if(this.content)for(var c=0;c"+f(e(null!=a?a.label:a,a))+"\n"},compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f='
    \n';return e=b.each.call(a,a,{name:"each",hash:{},fn:this.program(1,d),inverse:this.noop,data:d}),null!=e&&(f+=e),f+"
"},useData:!0})},function(a,b,c){var d,e;d=[c(48),c(45),c(139),c(127),c(145)],e=function(a,b,c,d,e){var f=c.extend({setup:function(c,e){if(this.iconUI||(this.iconUI=new d(this.el,{useHover:!0}),this.toggleOpenStateListener=this.toggleOpenState.bind(this),this.openTooltipListener=this.openTooltip.bind(this),this.closeTooltipListener=this.closeTooltip.bind(this),this.selectListener=this.onSelect.bind(this)),this.reset(),c=b.isArray(c)?c:[],a.toggleClass(this.el,"jw-hidden",c.length<2),c.length>=2){this.iconUI=new d(this.el,{useHover:!0}).on("tap",this.toggleOpenStateListener).on("over",this.openTooltipListener).on("out",this.closeTooltipListener);var f=this.menuTemplate(c,e),g=a.createElement(f);this.addContent(g),this.contentUI=new d(this.content),this.contentUI.on("click tap",this.selectListener)}this.originalList=c},menuTemplate:function(a,c){var d=b.map(a,function(a,b){return{active:b===c,label:b+1+".",title:a.title}});return e(d)},onSelect:function(c){var d=c.target;if("UL"!==d.tagName){"LI"!==d.tagName&&(d=d.parentElement);var e=a.classList(d),f=b.find(e,function(a){return 0===a.indexOf("jw-item")});f&&(this.trigger("select",parseInt(f.split("-")[2])),this.closeTooltip())}},selectItem:function(a){this.setup(this.originalList,a)},reset:function(){this.iconUI.off(),this.contentUI&&this.contentUI.off().destroy(),this.removeContent()}});return f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({1:function(a,b,c,d){var e,f="";return e=b["if"].call(a,null!=a?a.active:a,{name:"if",hash:{},fn:this.program(2,d),inverse:this.program(4,d),data:d}),null!=e&&(f+=e),f},2:function(a,b,c,d){var e=this.lambda,f=this.escapeExpression;return"
  • \n \n '+f(e(null!=a?a.title:a,a))+"\n
  • \n"},4:function(a,b,c,d){var e=this.lambda,f=this.escapeExpression;return"
  • \n '+f(e(null!=a?a.label:a,a))+'\n '+f(e(null!=a?a.title:a,a))+"\n
  • \n"},compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f='
    \n\n
    \n \n PLAYLIST\n
    \n\n
      \n';return e=b.each.call(a,a,{name:"each",hash:{},fn:this.program(1,d),inverse:this.noop,data:d}),null!=e&&(f+=e),f+"
    \n
    "},useData:!0})},function(a,b,c){var d,e;d=[c(139),c(136),c(127),c(48)],e=function(a,b,c,d){var e=a.extend({constructor:function(e,f){this._model=e,a.call(this,f),this.volumeSlider=new b("jw-slider-volume jw-volume-tip","vertical"),this.addContent(this.volumeSlider.element()),this.volumeSlider.on("update",function(a){this.trigger("update",a)},this),d.removeClass(this.el,"jw-hidden"),new c(this.el,{useHover:!0,directSelect:!0}).on("click",this.toggleValue,this).on("tap",this.toggleOpenState,this).on("over",this.openTooltip,this).on("out",this.closeTooltip,this),this._model.on("change:volume",this.onVolume,this)},toggleValue:function(){this.trigger("toggleValue")}});return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(139),c(48),c(45),c(127)],e=function(a,b,c,d){var e=a.extend({constructor:function(b){a.call(this,b),this.container.className="jw-overlay-horizontal jw-reset",this.openClass="jw-open-drawer",this.componentType="drawer"},setup:function(a,e){this.iconUI||(this.iconUI=new d(this.el,{useHover:!0,directSelect:!0}),this.toggleOpenStateListener=this.toggleOpenState.bind(this),this.openTooltipListener=this.openTooltip.bind(this),this.closeTooltipListener=this.closeTooltip.bind(this)),this.reset(),a=c.isArray(a)?a:[],this.activeContents=c.filter(a,function(a){return a.isActive}),b.toggleClass(this.el,"jw-hidden",!e||this.activeContents.length<2),e&&this.activeContents.length>1&&(b.removeClass(this.el,"jw-off"),this.iconUI.on("tap",this.toggleOpenStateListener).on("over",this.openTooltipListener).on("out",this.closeTooltipListener),c.each(a,function(a){this.container.appendChild(a.el)},this))},reset:function(){b.addClass(this.el,"jw-off"),this.iconUI.off(),this.contentUI&&this.contentUI.off().destroy(),this.removeContent()}});return e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(48)],e=function(a,b){function c(a,b){b.off("change:mediaType",null,this),b.on("change:mediaType",function(b,c){"audio"===c&&this.setImage(a.get("playlistItem").image)},this)}function d(a,c){var d=a.get("autostart")&&!b.isMobile()||a.get("item")>0;return d?(this.setImage(null),a.off("change:state",null,this),void a.on("change:state",function(a,b){"complete"!==b&&"idle"!==b&&"error"!==b||this.setImage(c.image)},this)):void this.setImage(c.image)}var e=function(a){this.model=a,a.on("change:playlistItem",d,this),a.on("change:mediaModel",c,this)};return a.extend(e.prototype,{setup:function(a){this.el=a;var b=this.model.get("playlistItem");b&&this.setImage(b.image)},setImage:function(c){this.model.off("change:state",null,this);var d="";a.isString(c)&&(d='url("'+c+'")'),b.style(this.el,{backgroundImage:d})},element:function(){return this.el}}),e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(150),c(45),c(59)],e=function(a,b,c){var d={free:"f",premium:"r",enterprise:"e",ads:"a",unlimited:"u",trial:"t"},e=function(){};return b.extend(e.prototype,a.prototype,{buildArray:function(){var b=a.prototype.buildArray.apply(this,arguments),e=this.model.get("edition"),f="https://jwplayer.com/learn-more/?m=h&e="+(d[e]||e)+"&v="+c;if(b.items[0].link=f,this.model.get("abouttext")){b.items[0].showLogo=!1,b.items.push(b.items.shift());var g={title:this.model.get("abouttext"),link:this.model.get("aboutlink")||f};b.items.unshift(g)}return b}}),e}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(48),c(151),c(45),c(127),c(59)],e=function(a,b,c,d,e){var f=function(){};return c.extend(f.prototype,{buildArray:function(){var b=e.split("+"),c=b[0],d={items:[{title:"Powered by JW Player "+c,featured:!0,showLogo:!0,link:"https://jwplayer.com/learn-more/?m=h&e=o&v="+e}]},f=c.indexOf("-")>0,g=b[1];if(f&&g){var h=g.split(".");d.items.push({title:"build: ("+h[0]+"."+h[1]+")",link:"#"})}var i=this.model.get("provider").name;if(i.indexOf("flash")>=0){var j="Flash Version "+a.flashVersion();d.items.push({title:j,link:"http://www.adobe.com/software/flash/about/"})}return d},buildMenu:function(){var c=this.buildArray();return a.createElement(b(c))},updateHtml:function(){this.el.innerHTML=this.buildMenu().innerHTML},rightClick:function(a){return this.lazySetup(),this.mouseOverContext?!1:(this.hideMenu(),this.showMenu(a),!1)},getOffset:function(a){for(var b=a.target,c=a.offsetX||a.layerX,d=a.offsetY||a.layerY;b!==this.playerElement;)c+=b.offsetLeft,d+=b.offsetTop,b=b.parentNode;return{x:c,y:d}},showMenu:function(b){var c=this.getOffset(b);return this.el.style.left=c.x+"px",this.el.style.top=c.y+"px",a.addClass(this.playerElement,"jw-flag-rightclick-open"),a.addClass(this.el,"jw-open"),!1},hideMenu:function(){this.mouseOverContext||(a.removeClass(this.playerElement,"jw-flag-rightclick-open"),a.removeClass(this.el,"jw-open"))},lazySetup:function(){this.el||(this.el=this.buildMenu(),this.layer.appendChild(this.el),this.hideMenuHandler=this.hideMenu.bind(this),this.addOffListener(this.playerElement),this.addOffListener(document),this.model.on("change:provider",this.updateHtml,this),this.elementUI=new d(this.el,{useHover:!0}).on("over",function(){this.mouseOverContext=!0},this).on("out",function(){this.mouseOverContext=!1},this))},setup:function(a,b,c){this.playerElement=b,this.model=a,this.mouseOverContext=!1,this.layer=c,b.oncontextmenu=this.rightClick.bind(this)},addOffListener:function(a){a.addEventListener("mousedown",this.hideMenuHandler),a.addEventListener("touchstart",this.hideMenuHandler),a.addEventListener("pointerdown",this.hideMenuHandler)},removeOffListener:function(a){a.removeEventListener("mousedown",this.hideMenuHandler),a.removeEventListener("touchstart",this.hideMenuHandler),a.removeEventListener("pointerdown",this.hideMenuHandler)},destroy:function(){this.el&&(this.hideMenu(),this.elementUI.off(),this.removeOffListener(this.playerElement),this.removeOffListener(document),this.hideMenuHandler=null,this.el=null),this.playerElement&&(this.playerElement.oncontextmenu=null,this.playerElement=null),this.model&&(this.model.off("change:provider",this.updateHtml),this.model=null)}}),f}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({1:function(a,b,c,d){var e,f,g="function",h=b.helperMissing,i=this.escapeExpression,j='
  • \n \n',e=b["if"].call(a,null!=a?a.showLogo:a,{name:"if",hash:{},fn:this.program(4,d),inverse:this.noop,data:d}),null!=e&&(j+=e),j+" "+i((f=null!=(f=b.title||(null!=a?a.title:a))?f:h,typeof f===g?f.call(a,{name:"title",hash:{},data:d}):f))+"\n \n
  • \n"},2:function(a,b,c,d){return" jw-featured"},4:function(a,b,c,d){return' \n'},compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f='
    \n
      \n';return e=b.each.call(a,null!=a?a.items:a,{name:"each",hash:{},fn:this.program(1,d),inverse:this.noop,data:d}),null!=e&&(f+=e),f+"
    \n
    "},useData:!0})},function(a,b,c){var d,e;d=[c(45),c(48)],e=function(a,b){var c=function(a){this.model=a,this.model.on("change:playlistItem",this.playlistItem,this)};return a.extend(c.prototype,{hide:function(){this.el.style.display="none"},show:function(){this.el.style.display=""},setup:function(a){this.el=a;var b=this.el.getElementsByTagName("div");this.title=b[0],this.description=b[1],this.model.get("playlistItem")&&this.playlistItem(this.model,this.model.get("playlistItem")),this.model.on("change:logoWidth",this.update,this),this.model.on("change:dock",this.update,this)},update:function(a){var c={paddingLeft:0,paddingRight:0},d=a.get("controls"),e=a.get("dock"),f=a.get("logo");if(f){var g=1*(""+f.margin).replace("px",""),h=a.get("logoWidth")+(isNaN(g)?0:g);"top-left"===f.position?c.paddingLeft=h:"top-right"===f.position&&(c.paddingRight=h)}if(d&&e&&e.length){var i=56*e.length;c.paddingRight=Math.max(c.paddingRight,i)}b.style(this.el,c)},playlistItem:function(a,b){if(a.get("displaytitle")||a.get("displaydescription")){var c="",d="";b.title&&a.get("displaytitle")&&(c=b.title),b.description&&a.get("displaydescription")&&(d=b.description),this.updateText(c,d)}else this.hide()},updateText:function(a,b){this.title.innerHTML=a,this.description.innerHTML=b,this.title.firstChild||this.description.firstChild?this.show():this.hide()},element:function(){return this.el}}),c}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    \n
    '},useData:!0})},function(a,b,c){var d,e;d=[c(48),c(46),c(127),c(47),c(45),c(155)],e=function(a,b,c,d,e,f){var g=function(a){this.model=a,this.setup()};return e.extend(g.prototype,d,{setup:function(){this.destroy(),this.skipMessage=this.model.get("skipText"),this.skipMessageCountdown=this.model.get("skipMessage"),this.setWaitTime(this.model.get("skipOffset"));var b=f();this.el=a.createElement(b),this.skiptext=this.el.getElementsByClassName("jw-skiptext")[0],this.skipAdOnce=e.once(this.skipAd.bind(this)),new c(this.el).on("click tap",e.bind(function(){this.skippable&&this.skipAdOnce()},this)),this.model.on("change:duration",this.onChangeDuration,this),this.model.on("change:position",this.onChangePosition,this),this.onChangeDuration(this.model,this.model.get("duration")),this.onChangePosition(this.model,this.model.get("position"))},updateMessage:function(a){this.skiptext.innerHTML=a},updateCountdown:function(a){this.updateMessage(this.skipMessageCountdown.replace(/xx/gi,Math.ceil(this.waitTime-a)))},onChangeDuration:function(b,c){if(c){if(this.waitPercentage){if(!c)return;this.itemDuration=c,this.setWaitTime(this.waitPercentage),delete this.waitPercentage}a.removeClass(this.el,"jw-hidden")}},onChangePosition:function(b,c){this.waitTime-c>0?this.updateCountdown(c):(this.updateMessage(this.skipMessage),this.skippable=!0,a.addClass(this.el,"jw-skippable"))},element:function(){return this.el},setWaitTime:function(b){if(e.isString(b)&&"%"===b.slice(-1)){var c=parseFloat(b);return void(this.itemDuration&&!isNaN(c)?this.waitTime=this.itemDuration*c/100:this.waitPercentage=b)}e.isNumber(b)?this.waitTime=b:"string"===a.typeOf(b)?this.waitTime=a.seconds(b):isNaN(Number(b))?this.waitTime=0:this.waitTime=Number(b)},skipAd:function(){this.trigger(b.JWPLAYER_AD_SKIPPED)},destroy:function(){this.el&&(this.el.removeEventListener("click",this.skipAdOnce),this.el.parentElement&&this.el.parentElement.removeChild(this.el)),delete this.skippable,delete this.itemDuration,delete this.waitPercentage}}),g}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){return'
    \n \n \n
    '},useData:!0})},function(a,b,c){var d,e;d=[c(157)],e=function(a){function b(b,c,d,e){return a({id:b,skin:c,title:d,body:e})}return b}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e,f="function",g=b.helperMissing,h=this.escapeExpression;return'
    \n
    \n
    '+h((e=null!=(e=b.title||(null!=a?a.title:a))?e:g,typeof e===f?e.call(a,{name:"title",hash:{},data:d}):e))+'
    \n
    '+h((e=null!=(e=b.body||(null!=a?a.body:a))?e:g,typeof e===f?e.call(a,{name:"body",hash:{},data:d}):e))+'
    \n
    \n\n
    \n
    \n
    \n
    \n
    \n
    \n'},useData:!0})},function(a,b,c){var d,e;d=[],e=function(){function a(){var a=document.createElement("div");return a.className=c,a.innerHTML=" ",a.style.width="1px",a.style.height="1px",a.style.position="absolute",a.style.background="transparent",a}function b(){function b(){var a=this,b=a._view.element();b.appendChild(f),d()&&a.trigger("adBlock")}function d(){return e?!0:(""!==f.innerHTML&&f.className===c&&null!==f.offsetParent&&0!==f.clientHeight||(e=!0),e)}var e=!1,f=a();return{onReady:b,checkAdBlock:d}}var c="afs_ads";return{setup:b}}.apply(b,d),!(void 0!==e&&(a.exports=e))},,,,function(a,b,c){var d,e;d=[],e=function(){var a=window.chrome,b={};return b.NS="urn:x-cast:com.longtailvideo.jwplayer",b.debug=!1,b.availability=null,b.available=function(c){c=c||b.availability;var d="available";return a&&a.cast&&a.cast.ReceiverAvailability&&(d=a.cast.ReceiverAvailability.AVAILABLE),c===d},b.log=function(){if(b.debug){var a=Array.prototype.slice.call(arguments,0);console.log.apply(console,a)}},b.error=function(){var a=Array.prototype.slice.call(arguments,0);console.error.apply(console,a)},b}.apply(b,d),!(void 0!==e&&(a.exports=e))},,,function(a,b,c){var d,e;d=[c(98),c(45)],e=function(a,b){return function(c,d){var e=["seek","skipAd","stop","playlistNext","playlistPrev","playlistItem","resize","addButton","removeButton","registerPlugin","attachMedia"];b.each(e,function(a){c[a]=function(){return d[a].apply(d,arguments),c}}),c.registerPlugin=a.registerPlugin}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45)],e=function(a){return function(b,c){var d=["buffer","controls","position","duration","fullscreen","volume","mute","item","stretching","playlist"];a.each(d,function(a){var d=a.slice(0,1).toUpperCase()+a.slice(1);b["get"+d]=function(){return c._model.get(a)}});var e=["getAudioTracks","getCaptionsList","getWidth","getHeight","getCurrentAudioTrack","setCurrentAudioTrack","getCurrentCaptions","setCurrentCaptions","getCurrentQuality","setCurrentQuality","getQualityLevels","getVisualQuality","getConfig","getState","getSafeRegion","isBeforeComplete","isBeforePlay","getProvider","detachMedia"],f=["setControls","setFullscreen","setVolume","setMute","setCues"];a.each(e,function(a){b[a]=function(){return c[a]?c[a].apply(c,arguments):null}}),a.each(f,function(a){b[a]=function(){return c[a].apply(c,arguments),b}})}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d,e;d=[c(45),c(46)],e=function(a,b){return function(c){var d={onBufferChange:b.JWPLAYER_MEDIA_BUFFER,onBufferFull:b.JWPLAYER_MEDIA_BUFFER_FULL,onError:b.JWPLAYER_ERROR,onSetupError:b.JWPLAYER_SETUP_ERROR,onFullscreen:b.JWPLAYER_FULLSCREEN,onMeta:b.JWPLAYER_MEDIA_META,onMute:b.JWPLAYER_MEDIA_MUTE,onPlaylist:b.JWPLAYER_PLAYLIST_LOADED,onPlaylistItem:b.JWPLAYER_PLAYLIST_ITEM,onPlaylistComplete:b.JWPLAYER_PLAYLIST_COMPLETE,onReady:b.JWPLAYER_READY,onResize:b.JWPLAYER_RESIZE,onComplete:b.JWPLAYER_MEDIA_COMPLETE,onSeek:b.JWPLAYER_MEDIA_SEEK,onTime:b.JWPLAYER_MEDIA_TIME,onVolume:b.JWPLAYER_MEDIA_VOLUME,onBeforePlay:b.JWPLAYER_MEDIA_BEFOREPLAY,onBeforeComplete:b.JWPLAYER_MEDIA_BEFORECOMPLETE,onDisplayClick:b.JWPLAYER_DISPLAY_CLICK,onControls:b.JWPLAYER_CONTROLS,onQualityLevels:b.JWPLAYER_MEDIA_LEVELS,onQualityChange:b.JWPLAYER_MEDIA_LEVEL_CHANGED,onCaptionsList:b.JWPLAYER_CAPTIONS_LIST,onCaptionsChange:b.JWPLAYER_CAPTIONS_CHANGED,onAdError:b.JWPLAYER_AD_ERROR,onAdClick:b.JWPLAYER_AD_CLICK,onAdImpression:b.JWPLAYER_AD_IMPRESSION,onAdTime:b.JWPLAYER_AD_TIME,onAdComplete:b.JWPLAYER_AD_COMPLETE,onAdCompanions:b.JWPLAYER_AD_COMPANIONS,onAdSkipped:b.JWPLAYER_AD_SKIPPED,onAdPlay:b.JWPLAYER_AD_PLAY,onAdPause:b.JWPLAYER_AD_PAUSE,onAdMeta:b.JWPLAYER_AD_META,onCast:b.JWPLAYER_CAST_SESSION,onAudioTrackChange:b.JWPLAYER_AUDIO_TRACK_CHANGED,onAudioTracks:b.JWPLAYER_AUDIO_TRACKS},e={onBuffer:"buffer",onPause:"pause",onPlay:"play",onIdle:"idle"};a.each(e,function(b,d){c[d]=a.partial(c.on,b,a)}),a.each(d,function(b,d){c[d]=a.partial(c.on,b,a)})}}.apply(b,d),!(void 0!==e&&(a.exports=e))},function(a,b,c){var d=c(169);"string"==typeof d&&(d=[[a.id,d,""]]);c(173)(d,{});d.locals&&(a.exports=d.locals)},function(a,b,c){b=a.exports=c(170)(),b.push([a.id,".jw-reset{color:inherit;background-color:transparent;padding:0;margin:0;float:none;font-family:Arial,Helvetica,sans-serif;font-size:1em;line-height:1em;list-style:none;text-align:left;text-transform:none;vertical-align:baseline;border:0;direction:ltr;font-variant:inherit;font-stretch:inherit;-webkit-tap-highlight-color:rgba(255,255,255,0)}@font-face{font-family:'jw-icons';src:url("+c(171)+") format('woff'),url("+c(172)+') format(\'truetype\');font-weight:normal;font-style:normal}.jw-icon-inline,.jw-icon-tooltip,.jw-icon-display,.jw-controlbar .jw-menu .jw-option:before{font-family:\'jw-icons\';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-icon-audio-tracks:before{content:"\\E600"}.jw-icon-buffer:before{content:"\\E601"}.jw-icon-cast:before{content:"\\E603"}.jw-icon-cast.jw-off:before{content:"\\E602"}.jw-icon-cc:before{content:"\\E605"}.jw-icon-cue:before{content:"\\E606"}.jw-icon-menu-bullet:before{content:"\\E606"}.jw-icon-error:before{content:"\\E607"}.jw-icon-fullscreen:before{content:"\\E608"}.jw-icon-fullscreen.jw-off:before{content:"\\E613"}.jw-icon-hd:before{content:"\\E60A"}.jw-watermark:before,.jw-rightclick-logo:before{content:"\\E60B"}.jw-icon-next:before{content:"\\E60C"}.jw-icon-pause:before{content:"\\E60D"}.jw-icon-play:before{content:"\\E60E"}.jw-icon-prev:before{content:"\\E60F"}.jw-icon-replay:before{content:"\\E610"}.jw-icon-volume:before{content:"\\E612"}.jw-icon-volume.jw-off:before{content:"\\E611"}.jw-icon-more:before{content:"\\E614"}.jw-icon-close:before{content:"\\E615"}.jw-icon-playlist:before{content:"\\E616"}.jwplayer{width:100%;font-size:16px;position:relative;display:block;min-height:0;overflow:hidden;box-sizing:border-box;font-family:Arial,Helvetica,sans-serif;background-color:#000;-webkit-touch-callout:none;-webkit-user-select:none;-khtml-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.jwplayer *{box-sizing:inherit}.jwplayer.jw-flag-aspect-mode{height:auto !important}.jwplayer.jw-flag-aspect-mode .jw-aspect{display:block}.jwplayer .jw-aspect{display:none}.jwplayer.jw-no-focus:focus,.jwplayer .jw-swf{outline:none}.jwplayer.jw-ie:focus{outline:#585858 dotted 1px}.jwplayer:hover .jw-display-icon-container{background-color:#333;background:#333;background-size:#333}.jw-media,.jw-preview,.jw-overlays,.jw-controls{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jw-media{overflow:hidden;cursor:pointer}.jw-overlays{cursor:auto}.jw-media.jw-media-show{visibility:visible;opacity:1}.jw-controls.jw-controls-disabled{display:none}.jw-controls .jw-controls-right{position:absolute;top:0;right:0;left:0;bottom:2em}.jw-text{height:1em;font-family:Arial,Helvetica,sans-serif;font-size:.75em;font-style:normal;font-weight:normal;color:white;text-align:center;font-variant:normal;font-stretch:normal}.jw-plugin{position:absolute;bottom:2.5em}.jw-plugin .jw-banner{max-width:100%;opacity:0;cursor:pointer;position:absolute;margin:auto auto 0 auto;left:0;right:0;bottom:0;display:block}.jw-cast-screen{width:100%;height:100%}.jw-instream{position:absolute;top:0;right:0;bottom:0;left:0;display:none}.jw-icon-playback:before{content:"\\E60E"}.jw-preview,.jw-captions,.jw-title,.jw-overlays,.jw-controls{pointer-events:none}.jw-overlays>div,.jw-media,.jw-controlbar,.jw-dock,.jw-logo,.jw-skip,.jw-display-icon-container{pointer-events:all}.jwplayer video{position:absolute;top:0;right:0;bottom:0;left:0;width:100%;height:100%;margin:auto;background:transparent}.jwplayer video::-webkit-media-controls-start-playback-button{display:none}.jwplayer video::-webkit-media-text-track-display{-webkit-transform:translateY(-1.5em);transform:translateY(-1.5em)}.jwplayer.jw-flag-user-inactive.jw-state-playing video::-webkit-media-text-track-display{-webkit-transform:translateY(0);transform:translateY(0)}.jwplayer.jw-stretch-uniform video{-o-object-fit:contain;object-fit:contain}.jwplayer.jw-stretch-none video{-o-object-fit:none;object-fit:none}.jwplayer.jw-stretch-fill video{-o-object-fit:cover;object-fit:cover}.jwplayer.jw-stretch-exactfit video{-o-object-fit:fill;object-fit:fill}.jw-click{position:absolute;width:100%;height:100%}.jw-preview{position:absolute;display:none;opacity:1;visibility:visible;width:100%;height:100%;background:#000 no-repeat 50% 50%}.jwplayer .jw-preview,.jw-error .jw-preview,.jw-stretch-uniform .jw-preview{background-size:contain}.jw-stretch-none .jw-preview{background-size:auto auto}.jw-stretch-fill .jw-preview{background-size:cover}.jw-stretch-exactfit .jw-preview{background-size:100% 100%}.jw-display-icon-container{position:relative;top:50%;display:table;height:3.5em;width:3.5em;margin:-1.75em auto 0;cursor:pointer}.jw-display-icon-container .jw-icon-display{position:relative;display:table-cell;text-align:center;vertical-align:middle !important;background-position:50% 50%;background-repeat:no-repeat;font-size:2em}.jw-flag-audio-player .jw-display-icon-container,.jw-flag-dragging .jw-display-icon-container{display:none}.jw-icon{font-family:\'jw-icons\';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-controlbar{display:table;position:absolute;right:0;left:0;bottom:0;height:2em;padding:0 .25em}.jw-controlbar .jw-hidden{display:none}.jw-controlbar.jw-drawer-expanded .jw-controlbar-left-group,.jw-controlbar.jw-drawer-expanded .jw-controlbar-center-group{opacity:0}.jw-background-color{background-color:#414040}.jw-group{display:table-cell}.jw-controlbar-center-group{width:100%;padding:0 .25em}.jw-controlbar-center-group .jw-slider-time,.jw-controlbar-center-group .jw-text-alt{padding:0}.jw-controlbar-center-group .jw-text-alt{display:none}.jw-controlbar-left-group,.jw-controlbar-right-group{white-space:nowrap}.jw-knob:hover,.jw-icon-inline:hover,.jw-icon-tooltip:hover,.jw-icon-display:hover,.jw-option:before:hover{color:#eee}.jw-icon-inline,.jw-icon-tooltip,.jw-slider-horizontal,.jw-text-elapsed,.jw-text-duration{display:inline-block;height:2em;position:relative;line-height:2em;vertical-align:middle;cursor:pointer}.jw-icon-inline,.jw-icon-tooltip{min-width:1.25em;text-align:center}.jw-icon-playback{min-width:2.25em}.jw-icon-volume{min-width:1.75em;text-align:left}.jw-time-tip{line-height:1em;pointer-events:none}.jw-icon-inline:after,.jw-icon-tooltip:after{width:100%;height:100%;font-size:1em}.jw-icon-cast{display:none}.jw-slider-volume.jw-slider-horizontal,.jw-icon-inline.jw-icon-volume{display:none}.jw-dock{margin:.75em;display:block;opacity:1;clear:right}.jw-dock:after{content:\'\';clear:both;display:block}.jw-dock-button{cursor:pointer;float:right;position:relative;width:2.5em;height:2.5em;margin:.5em}.jw-dock-button .jw-arrow{display:none;position:absolute;bottom:-0.2em;width:.5em;height:.2em;left:50%;margin-left:-0.25em}.jw-dock-button .jw-overlay{display:none;position:absolute;top:2.5em;right:0;margin-top:.25em;padding:.5em;white-space:nowrap}.jw-dock-button:hover .jw-overlay,.jw-dock-button:hover .jw-arrow{display:block}.jw-dock-image{width:100%;height:100%;background-position:50% 50%;background-repeat:no-repeat;opacity:.75}.jw-title{display:none;position:absolute;top:0;width:100%;font-size:.875em;height:8em;background:-webkit-linear-gradient(top, #000 0, #000 18%, rgba(0,0,0,0) 100%);background:linear-gradient(to bottom, #000 0, #000 18%, rgba(0,0,0,0) 100%)}.jw-title-primary,.jw-title-secondary{padding:.75em 1.5em;min-height:2.5em;width:100%;color:white;white-space:nowrap;text-overflow:ellipsis;overflow-x:hidden}.jw-title-primary{font-weight:bold}.jw-title-secondary{margin-top:-0.5em}.jw-slider-container{display:inline-block;height:1em;position:relative;touch-action:none}.jw-rail,.jw-buffer,.jw-progress{position:absolute;cursor:pointer}.jw-progress{background-color:#fff}.jw-rail{background-color:#aaa}.jw-buffer{background-color:#202020}.jw-cue,.jw-knob{position:absolute;cursor:pointer}.jw-cue{background-color:#fff;width:.1em;height:.4em}.jw-knob{background-color:#aaa;width:.4em;height:.4em}.jw-slider-horizontal{width:4em;height:1em}.jw-slider-horizontal.jw-slider-volume{margin-right:5px}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-buffer,.jw-slider-horizontal .jw-progress{width:100%;height:.4em}.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-buffer{width:0}.jw-slider-horizontal .jw-rail,.jw-slider-horizontal .jw-progress,.jw-slider-horizontal .jw-slider-container{width:100%}.jw-slider-horizontal .jw-knob{left:0;margin-left:-0.325em}.jw-slider-vertical{width:.75em;height:4em;bottom:0;position:absolute;padding:1em}.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-buffer,.jw-slider-vertical .jw-progress{bottom:0;height:100%}.jw-slider-vertical .jw-progress,.jw-slider-vertical .jw-buffer{height:0}.jw-slider-vertical .jw-slider-container,.jw-slider-vertical .jw-rail,.jw-slider-vertical .jw-progress{bottom:0;width:.75em;height:100%;left:0;right:0;margin:0 auto}.jw-slider-vertical .jw-slider-container{height:4em;position:relative}.jw-slider-vertical .jw-knob{bottom:0;left:0;right:0;margin:0 auto}.jw-slider-time{right:0;left:0;width:100%}.jw-tooltip-time{position:absolute}.jw-slider-volume .jw-buffer{display:none}.jw-captions{position:absolute;display:none;margin:0 auto;width:100%;left:0;bottom:3em;right:0;max-width:90%;text-align:center}.jw-captions.jw-captions-enabled{display:block}.jw-captions-window{display:none;padding:.25em;border-radius:.25em}.jw-captions-window.jw-captions-window-active{display:inline-block}.jw-captions-text{display:inline-block;color:white;background-color:black;word-wrap:break-word;white-space:pre-line;font-style:normal;font-weight:normal;text-align:center;text-decoration:none;line-height:1.3em;padding:.1em .8em}.jw-rightclick{display:none;position:absolute;white-space:nowrap}.jw-rightclick.jw-open{display:block}.jw-rightclick ul{list-style:none;font-weight:bold;border-radius:.15em;margin:0;border:1px solid #444;padding:0}.jw-rightclick .jw-rightclick-logo{font-size:2em;color:#ff0147;vertical-align:middle;padding-right:.3em;margin-right:.3em;border-right:1px solid #444}.jw-rightclick li{background-color:#000;border-bottom:1px solid #444;margin:0}.jw-rightclick a{color:#fff;text-decoration:none;padding:1em;display:block;font-size:.6875em}.jw-rightclick li:last-child{border-bottom:none}.jw-rightclick li:hover{background-color:#1a1a1a;cursor:pointer}.jw-rightclick .jw-featured{background-color:#252525;vertical-align:middle}.jw-rightclick .jw-featured a{color:#777}.jw-logo{position:absolute;margin:.75em;cursor:pointer;pointer-events:all;background-repeat:no-repeat;background-size:contain;top:auto;right:auto;left:auto;bottom:auto}.jw-logo .jw-flag-audio-player{display:none}.jw-logo-top-right{top:0;right:0}.jw-logo-top-left{top:0;left:0}.jw-logo-bottom-left{bottom:0;left:0}.jw-logo-bottom-right{bottom:0;right:0}.jw-watermark{position:absolute;top:50%;left:0;right:0;bottom:0;text-align:center;font-size:14em;color:#eee;opacity:.33;pointer-events:none}.jw-icon-tooltip.jw-open .jw-overlay{opacity:1;visibility:visible}.jw-icon-tooltip.jw-hidden{display:none}.jw-overlay-horizontal{display:none}.jw-icon-tooltip.jw-open-drawer:before{display:none}.jw-icon-tooltip.jw-open-drawer .jw-overlay-horizontal{opacity:1;display:inline-block;vertical-align:top}.jw-overlay:before{position:absolute;top:0;bottom:0;left:-50%;width:100%;background-color:rgba(0,0,0,0);content:" "}.jw-slider-time .jw-overlay:before{height:1em;top:auto}.jw-time-tip,.jw-volume-tip,.jw-menu{position:relative;left:-50%;border:solid 1px #000;margin:0}.jw-volume-tip{width:100%;height:100%;display:block}.jw-time-tip{text-align:center;font-family:inherit;color:#aaa;bottom:1em;border:solid 4px #000}.jw-time-tip .jw-text{line-height:1em}.jw-controlbar .jw-overlay{margin:0;position:absolute;bottom:2em;left:50%;opacity:0;visibility:hidden}.jw-controlbar .jw-overlay .jw-contents{position:relative}.jw-controlbar .jw-option{position:relative;white-space:nowrap;cursor:pointer;list-style:none;height:1.5em;font-family:inherit;line-height:1.5em;color:#aaa;padding:0 .5em;font-size:.8em}.jw-controlbar .jw-option:hover,.jw-controlbar .jw-option:before:hover{color:#eee}.jw-controlbar .jw-option:before{padding-right:.125em}.jw-playlist-container ::-webkit-scrollbar-track{background-color:#333;border-radius:10px}.jw-playlist-container ::-webkit-scrollbar{width:5px;border:10px solid black;border-bottom:0;border-top:0}.jw-playlist-container ::-webkit-scrollbar-thumb{background-color:white;border-radius:5px}.jw-tooltip-title{border-bottom:1px solid #444;text-align:left;padding-left:.7em}.jw-playlist{max-height:11em;min-height:4.5em;overflow-x:hidden;overflow-y:scroll;width:calc(100% - 4px)}.jw-playlist .jw-option{height:3em;margin-right:5px;color:white;padding-left:1em;font-size:.8em}.jw-playlist .jw-label,.jw-playlist .jw-name{display:inline-block;line-height:3em;text-align:left;overflow:hidden;white-space:nowrap}.jw-playlist .jw-label{width:1em}.jw-playlist .jw-name{width:11em}.jw-skip{cursor:default;position:absolute;float:right;display:inline-block;right:.75em;bottom:3em}.jw-skip.jw-skippable{cursor:pointer}.jw-skip.jw-hidden{visibility:hidden}.jw-skip .jw-skip-icon{display:none;margin-left:-0.75em}.jw-skip .jw-skip-icon:before{content:"\\E60C"}.jw-skip .jw-text,.jw-skip .jw-skip-icon{color:#aaa;vertical-align:middle;line-height:1.5em;font-size:.7em}.jw-skip.jw-skippable:hover{cursor:pointer}.jw-skip.jw-skippable:hover .jw-text,.jw-skip.jw-skippable:hover .jw-skip-icon{color:#eee}.jw-skip.jw-skippable .jw-skip-icon{display:inline;margin:0}.jwplayer.jw-state-playing.jw-flag-casting .jw-display-icon-container,.jwplayer.jw-state-paused.jw-flag-casting .jw-display-icon-container{display:table}.jwplayer.jw-flag-casting .jw-display-icon-container{border-radius:0;border:1px solid white;position:absolute;top:auto;left:.5em;right:.5em;bottom:50%;margin-bottom:-12.5%;height:50%;width:50%;padding:0;background-repeat:no-repeat;background-position:center}.jwplayer.jw-flag-casting .jw-display-icon-container .jw-icon{font-size:3em}.jwplayer.jw-flag-casting.jw-state-complete .jw-preview{display:none}.jw-cast{position:absolute;width:100%;height:100%;background-repeat:no-repeat;background-size:auto;background-position:50% 50%}.jw-cast-label{position:absolute;left:.5em;right:.5em;bottom:75%;margin-bottom:1.5em;text-align:center}.jw-cast-name{color:#ccc}.jw-state-idle .jw-preview{display:block}.jw-state-idle .jw-icon-display:before{content:"\\E60E"}.jw-state-idle .jw-controlbar{display:none}.jw-state-idle .jw-captions{display:none}.jw-state-idle .jw-title{display:block}.jwplayer.jw-state-playing .jw-display-icon-container{display:none}.jwplayer.jw-state-playing .jw-display-icon-container .jw-icon-display:before{content:"\\E60D"}.jwplayer.jw-state-playing .jw-icon-playback:before{content:"\\E60D"}.jwplayer.jw-state-paused .jw-display-icon-container{display:none}.jwplayer.jw-state-paused .jw-display-icon-container .jw-icon-display:before{content:"\\E60E"}.jwplayer.jw-state-paused .jw-icon-playback:before{content:"\\E60E"}.jwplayer.jw-state-buffering .jw-display-icon-container .jw-icon-display{-webkit-animation:spin 2s linear infinite;animation:spin 2s linear infinite}.jwplayer.jw-state-buffering .jw-display-icon-container .jw-icon-display:before{content:"\\E601"}@-webkit-keyframes spin{100%{-webkit-transform:rotate(360deg)}}@keyframes spin{100%{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.jwplayer.jw-state-buffering .jw-display-icon-container .jw-text{display:none}.jwplayer.jw-state-buffering .jw-icon-playback:before{content:"\\E60D"}.jwplayer.jw-state-complete .jw-preview{display:block}.jwplayer.jw-state-complete .jw-display-icon-container .jw-icon-display:before{content:"\\E610"}.jwplayer.jw-state-complete .jw-display-icon-container .jw-text{display:none}.jwplayer.jw-state-complete .jw-icon-playback:before{content:"\\E60E"}.jwplayer.jw-state-complete .jw-captions{display:none}body .jw-error .jw-title,.jwplayer.jw-state-error .jw-title{display:block}body .jw-error .jw-title .jw-title-primary,.jwplayer.jw-state-error .jw-title .jw-title-primary{white-space:normal}body .jw-error .jw-preview,.jwplayer.jw-state-error .jw-preview{display:block}body .jw-error .jw-controlbar,.jwplayer.jw-state-error .jw-controlbar{display:none}body .jw-error .jw-captions,.jwplayer.jw-state-error .jw-captions{display:none}body .jw-error:hover .jw-display-icon-container,.jwplayer.jw-state-error:hover .jw-display-icon-container{cursor:default;color:#fff;background:#000}body .jw-error .jw-icon-display,.jwplayer.jw-state-error .jw-icon-display{cursor:default;font-family:\'jw-icons\';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}body .jw-error .jw-icon-display:before,.jwplayer.jw-state-error .jw-icon-display:before{content:"\\E607"}body .jw-error .jw-icon-display:hover,.jwplayer.jw-state-error .jw-icon-display:hover{color:#fff}body .jw-error{font-size:16px;background-color:#000;color:#eee;width:100%;height:100%;display:table;opacity:1;position:relative}body .jw-error .jw-icon-container{position:absolute;width:100%;height:100%;top:0;left:0;bottom:0;right:0}.jwplayer.jw-flag-cast-available .jw-controlbar{display:table}.jwplayer.jw-flag-cast-available .jw-icon-cast{display:inline-block}.jwplayer.jw-flag-skin-loading .jw-captions,.jwplayer.jw-flag-skin-loading .jw-controls,.jwplayer.jw-flag-skin-loading .jw-title{display:none}.jwplayer.jw-flag-fullscreen{width:100% !important;height:100% !important;top:0;right:0;bottom:0;left:0;z-index:1000;margin:0;position:fixed}.jwplayer.jw-flag-fullscreen.jw-flag-user-inactive{cursor:none;-webkit-cursor-visibility:auto-hide}.jwplayer.jw-flag-live .jw-controlbar .jw-text-elapsed,.jwplayer.jw-flag-live .jw-controlbar .jw-text-duration,.jwplayer.jw-flag-live .jw-controlbar .jw-slider-time{display:none}.jwplayer.jw-flag-live .jw-controlbar .jw-text-alt{display:inline}.jwplayer.jw-flag-user-inactive.jw-state-playing .jw-controlbar,.jwplayer.jw-flag-user-inactive.jw-state-playing .jw-dock{display:none}.jwplayer.jw-flag-user-inactive.jw-state-playing .jw-logo.jw-hide{display:none}.jwplayer.jw-flag-user-inactive.jw-state-playing .jw-plugin,.jwplayer.jw-flag-user-inactive.jw-state-playing .jw-captions{bottom:.5em}.jwplayer.jw-flag-user-inactive.jw-state-buffering .jw-controlbar{display:none}.jwplayer.jw-flag-media-audio .jw-controlbar{display:table}.jwplayer.jw-flag-media-audio.jw-flag-user-inactive .jw-controlbar{display:table}.jwplayer.jw-flag-media-audio.jw-flag-user-inactive.jw-state-playing .jw-plugin,.jwplayer.jw-flag-media-audio.jw-flag-user-inactive.jw-state-playing .jw-captions{bottom:3em}.jw-flag-media-audio .jw-preview{display:block}.jwplayer.jw-flag-ads .jw-preview,.jwplayer.jw-flag-ads .jw-dock{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip,.jwplayer.jw-flag-ads .jw-controlbar .jw-text,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-horizontal{display:none}.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-playback,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-volume,.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-volume,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-fullscreen{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar .jw-text-alt{display:inline}.jwplayer.jw-flag-ads .jw-controlbar .jw-slider-volume.jw-slider-horizontal,.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-inline.jw-icon-volume{display:inline-block}.jwplayer.jw-flag-ads .jw-controlbar .jw-icon-tooltip.jw-icon-volume{display:none}.jwplayer.jw-flag-ads .jw-logo,.jwplayer.jw-flag-ads .jw-captions{display:none}.jwplayer.jw-flag-ads-googleima .jw-controlbar{display:table;bottom:0}.jwplayer.jw-flag-ads-googleima.jw-flag-touch .jw-controlbar{font-size:1em}.jwplayer.jw-flag-ads-googleima.jw-flag-touch.jw-state-paused .jw-display-icon-container{display:none}.jwplayer.jw-flag-ads-googleima.jw-skin-seven .jw-controlbar{font-size:.9em}.jwplayer.jw-flag-ads-vpaid .jw-controlbar{display:none}.jwplayer.jw-flag-ads-hide-controls .jw-controls{display:none !important}.jwplayer.jw-flag-ads.jw-flag-touch .jw-controlbar{display:table}.jwplayer.jw-flag-overlay-open .jw-title{display:none}.jwplayer.jw-flag-overlay-open .jw-controls-right .jw-logo{display:none}.jwplayer.jw-flag-overlay-open-sharing .jw-controls,.jwplayer.jw-flag-overlay-open-related .jw-controls,.jwplayer.jw-flag-overlay-open-sharing .jw-title,.jwplayer.jw-flag-overlay-open-related .jw-title{display:none}.jwplayer.jw-flag-rightclick-open{overflow:visible}.jwplayer.jw-flag-rightclick-open .jw-rightclick{z-index:16777215}.jw-flag-controls-disabled .jw-controls{visibility:hidden}.jw-flag-controls-disabled .jw-logo{visibility:visible}.jw-flag-controls-disabled .jw-media{cursor:auto}body .jwplayer.jw-flag-flash-blocked .jw-title{display:block}body .jwplayer.jw-flag-flash-blocked .jw-controls,body .jwplayer.jw-flag-flash-blocked .jw-overlays,body .jwplayer.jw-flag-flash-blocked .jw-preview{display:none}.jw-flag-touch .jw-controlbar,.jw-flag-touch .jw-skip,.jw-flag-touch .jw-plugin{font-size:1.5em}.jw-flag-touch .jw-captions{bottom:4.25em}.jw-flag-touch .jw-icon-tooltip.jw-open-drawer:before{display:inline}.jw-flag-touch .jw-icon-tooltip.jw-open-drawer:before{content:"\\E615"}.jw-flag-touch .jw-display-icon-container{pointer-events:none}.jw-flag-touch.jw-state-paused .jw-display-icon-container{display:table}.jw-flag-touch.jw-state-paused.jw-flag-dragging .jw-display-icon-container{display:none}.jw-flag-compact-player .jw-icon-playlist,.jw-flag-compact-player .jw-text-elapsed,.jw-flag-compact-player .jw-text-duration{display:none}.jwplayer.jw-flag-audio-player{background-color:transparent}.jwplayer.jw-flag-audio-player .jw-media{visibility:hidden}.jwplayer.jw-flag-audio-player .jw-media object{width:1px;height:1px}.jwplayer.jw-flag-audio-player .jw-preview,.jwplayer.jw-flag-audio-player .jw-display-icon-container{display:none}.jwplayer.jw-flag-audio-player .jw-controlbar{display:table;height:auto;left:0;bottom:0;margin:0;width:100%;min-width:100%;opacity:1}.jwplayer.jw-flag-audio-player .jw-controlbar .jw-icon-fullscreen,.jwplayer.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip{display:none}.jwplayer.jw-flag-audio-player .jw-controlbar .jw-slider-volume.jw-slider-horizontal,.jwplayer.jw-flag-audio-player .jw-controlbar .jw-icon-inline.jw-icon-volume{display:inline-block}.jwplayer.jw-flag-audio-player .jw-controlbar .jw-icon-tooltip.jw-icon-volume{display:none}.jwplayer.jw-flag-audio-player.jw-flag-user-inactive .jw-controlbar{display:table}.jw-skin-seven .jw-background-color{background:#000}.jw-skin-seven .jw-controlbar{border-top:#333 1px solid;height:2.5em}.jw-skin-seven .jw-group{vertical-align:middle}.jw-skin-seven .jw-playlist{background-color:rgba(0,0,0,0.5)}.jw-skin-seven .jw-playlist-container{left:-43%;background-color:rgba(0,0,0,0.5)}.jw-skin-seven .jw-playlist-container .jw-option{border-bottom:1px solid #444}.jw-skin-seven .jw-playlist-container .jw-option:hover,.jw-skin-seven .jw-playlist-container .jw-option.jw-active-option{background-color:black}.jw-skin-seven .jw-playlist-container .jw-option:hover .jw-label{color:#FF0046}.jw-skin-seven .jw-playlist-container .jw-icon-playlist{margin-left:0}.jw-skin-seven .jw-playlist-container .jw-label .jw-icon-play{color:#FF0046}.jw-skin-seven .jw-playlist-container .jw-label .jw-icon-play:before{padding-left:0}.jw-skin-seven .jw-tooltip-title{background-color:#000;color:#fff}.jw-skin-seven .jw-text{color:#fff}.jw-skin-seven .jw-button-color{color:#fff}.jw-skin-seven .jw-button-color:hover{color:#FF0046}.jw-skin-seven .jw-toggle{color:#FF0046}.jw-skin-seven .jw-toggle.jw-off{color:#fff}.jw-skin-seven .jw-controlbar .jw-icon:before,.jw-skin-seven .jw-text-elapsed,.jw-skin-seven .jw-text-duration{padding:0 .7em}.jw-skin-seven .jw-controlbar .jw-icon-prev:before{padding-right:.25em}.jw-skin-seven .jw-controlbar .jw-icon-playlist:before{padding:0 .45em}.jw-skin-seven .jw-controlbar .jw-icon-next:before{padding-left:.25em}.jw-skin-seven .jw-icon-prev,.jw-skin-seven .jw-icon-next{font-size:.7em}.jw-skin-seven .jw-icon-prev:before{border-left:1px solid #666}.jw-skin-seven .jw-icon-next:before{border-right:1px solid #666}.jw-skin-seven .jw-icon-display{color:#fff}.jw-skin-seven .jw-icon-display:before{padding-left:0}.jw-skin-seven .jw-display-icon-container{border-radius:50%;border:1px solid #333}.jw-skin-seven .jw-rail{background-color:#384154;box-shadow:none}.jw-skin-seven .jw-buffer{background-color:#666F82}.jw-skin-seven .jw-progress{background:#FF0046}.jw-skin-seven .jw-knob{width:.6em;height:.6em;background-color:#fff;box-shadow:0 0 0 1px #000;border-radius:1em}.jw-skin-seven .jw-slider-horizontal .jw-slider-container{height:.95em}.jw-skin-seven .jw-slider-horizontal .jw-rail,.jw-skin-seven .jw-slider-horizontal .jw-buffer,.jw-skin-seven .jw-slider-horizontal .jw-progress{height:.2em;border-radius:0}.jw-skin-seven .jw-slider-horizontal .jw-knob{top:-0.2em}.jw-skin-seven .jw-slider-horizontal .jw-cue{top:-0.05em;width:.3em;height:.3em;background-color:#fff;border-radius:50%}.jw-skin-seven .jw-slider-vertical .jw-rail,.jw-skin-seven .jw-slider-vertical .jw-buffer,.jw-skin-seven .jw-slider-vertical .jw-progress{width:.2em}.jw-skin-seven .jw-slider-vertical .jw-knob{margin-bottom:-0.3em}.jw-skin-seven .jw-volume-tip{width:100%;left:-45%;padding-bottom:.7em}.jw-skin-seven .jw-text-duration{color:#666F82}.jw-skin-seven .jw-controlbar-right-group .jw-icon-tooltip:before,.jw-skin-seven .jw-controlbar-right-group .jw-icon-inline:before{border-left:1px solid #666}.jw-skin-seven .jw-controlbar-right-group .jw-icon-inline:first-child:before{border:none}.jw-skin-seven .jw-dock .jw-dock-button{border-radius:50%;border:1px solid #333}.jw-skin-seven .jw-dock .jw-overlay{border-radius:2.5em}.jw-skin-seven .jw-icon-tooltip .jw-active-option{background-color:#FF0046;color:#fff}.jw-skin-seven .jw-icon-volume{min-width:2.6em}.jw-skin-seven .jw-time-tip,.jw-skin-seven .jw-menu,.jw-skin-seven .jw-volume-tip,.jw-skin-seven .jw-skip{border:1px solid #333}.jw-skin-seven .jw-time-tip{padding:.2em;bottom:1.3em}.jw-skin-seven .jw-menu,.jw-skin-seven .jw-volume-tip{bottom:.24em}.jw-skin-seven .jw-skip{padding:.4em;border-radius:1.75em}.jw-skin-seven .jw-skip .jw-text,.jw-skin-seven .jw-skip .jw-icon-inline{color:#fff;line-height:1.75em}.jw-skin-seven .jw-skip.jw-skippable:hover .jw-text,.jw-skin-seven .jw-skip.jw-skippable:hover .jw-icon-inline{color:#FF0046}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon:before,.jw-skin-seven.jw-flag-touch .jw-text-elapsed,.jw-skin-seven.jw-flag-touch .jw-text-duration{padding:0 .35em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-prev:before{padding:0 .125em 0 .7em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-next:before{padding:0 .7em 0 .125em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-playlist:before{padding:0 .225em}',""]); +},function(a,b){a.exports=function(){var a=[];return a.toString=function(){for(var a=[],b=0;b>8-g%1*8)){if(e=f.charCodeAt(g+=.75),e>255)throw new a("'btoa' failed: The string to be encoded contains characters outside of the Latin1 range.");d=d<<8|e}return i}),window.atob||(window.atob=function(c){var d=String(c).replace(/=+$/,"");if(d.length%4==1)throw new a("'atob' failed: The string to be decoded is not correctly encoded.");for(var e,f,g=0,h=0,i="";f=d.charAt(h++);~f&&(e=g%4?64*e+f:f,g++%4)?i+=String.fromCharCode(255&e>>(-2*g&6)):0)f=b.indexOf(f);return i})}.apply(b,d),!(void 0!==e&&(a.exports=e))}}); \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/polyfills.promise.js b/server/webplatform/www/jwplayer/polyfills.promise.js new file mode 100644 index 0000000..bfc00b4 --- /dev/null +++ b/server/webplatform/www/jwplayer/polyfills.promise.js @@ -0,0 +1 @@ +webpackJsonpjwplayer([1],{104:function(a,b,c){var d,e;d=[c(45)],e=function(a){function b(a,b){return function(){a.apply(b,arguments)}}function c(a){if("object"!=typeof this)throw new TypeError("Promises must be constructed via new");if("function"!=typeof a)throw new TypeError("not a function");this._state=null,this._value=null,this._deferreds=[],i(a,b(e,this),b(f,this))}function d(a){var b=this;return null===this._state?void this._deferreds.push(a):void j(function(){var c=b._state?a.onFulfilled:a.onRejected;if(null===c)return void(b._state?a.resolve:a.reject)(b._value);var d;try{d=c(b._value)}catch(e){return void a.reject(e)}a.resolve(d)})}function e(a){try{if(a===this)throw new TypeError("A promise cannot be resolved with itself.");if(a&&("object"==typeof a||"function"==typeof a)){var c=a.then;if("function"==typeof c)return void i(b(c,a),b(e,this),b(f,this))}this._state=!0,this._value=a,g.call(this)}catch(d){f.call(this,d)}}function f(a){this._state=!1,this._value=a,g.call(this)}function g(){for(var a=0,b=this._deferreds.length;b>a;a++)d.call(this,this._deferreds[a]);this._deferreds=null}function h(a,b,c,d){this.onFulfilled="function"==typeof a?a:null,this.onRejected="function"==typeof b?b:null,this.resolve=c,this.reject=d}function i(a,b,c){var d=!1;try{a(function(a){d||(d=!0,b(a))},function(a){d||(d=!0,c(a))})}catch(e){if(d)return;d=!0,c(e)}}var j=a.defer,k=Array.isArray||function(a){return"[object Array]"===Object.prototype.toString.call(a)};c.prototype["catch"]=function(a){return this.then(null,a)},c.prototype.then=function(a,b){var e=this;return new c(function(c,f){d.call(e,new h(a,b,c,f))})},c.all=function(){var a=Array.prototype.slice.call(1===arguments.length&&k(arguments[0])?arguments[0]:arguments);return new c(function(b,c){function d(f,g){try{if(g&&("object"==typeof g||"function"==typeof g)){var h=g.then;if("function"==typeof h)return void h.call(g,function(a){d(f,a)},c)}a[f]=g,0===--e&&b(a)}catch(i){c(i)}}if(0===a.length)return b([]);for(var e=a.length,f=0;fd;d++)a[d].then(b,c)})},c._setImmediateFn=function(a){j=a},window.Promise||(window.Promise=c)}.apply(b,d),!(void 0!==e&&(a.exports=e))}}); \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/provider.cast.js b/server/webplatform/www/jwplayer/provider.cast.js new file mode 100644 index 0000000..b2b8a24 --- /dev/null +++ b/server/webplatform/www/jwplayer/provider.cast.js @@ -0,0 +1 @@ +webpackJsonpjwplayer([6],{159:function(a,b,c){var d,e;d=[c(116),c(77),c(73),c(161),c(163),c(160),c(162),c(48),c(62),c(45)],e=function(a,b,c,d,e,f,g,h,i,j){var k=h.noop,l={},m=function(m,n){function o(){return!j.isUndefined(m._instreamAdapter)}function p(a,b){g.log("send command",a,b);var c={command:a};void 0!==b&&(c.args=b),A.sendMessage(g.NS,c,k,function(a){g.log("error message",a),"Invalid namespace"===a.description&&G.stopCasting()})}function q(a){var b=g.available(a.availability);s(b)}function r(a,b){var c=JSON.parse(b);if(!c)throw"Message not proper JSON";if(c.reconcile){E.removeMessageListener(g.NS,this.listenForHandshakeHandler);var d=c.diff,e=E;d.id&&c.appid&&c.pageUrl||(d.id=window.jwplayer().id,c.appid=z.appid,c.pageUrl=C,E=A=null),d.id===n.get("id")&&c.appid===z.appid&&c.pageUrl===C&&(A||(o()&&m.instreamDestroy(),this.sessionStarted(e),this.castModel.set("state",i.IDLE)),this.handleMessage(c)),E=null}}function s(a){var b=!!a;B.available!==b&&(B.available=b,n.set("castAvailable",b))}function t(){return A&&A.receiver?A.receiver.friendlyName:""}function u(a){g.log("Cast Session Error:",a,A);var b=window.chrome;a.code!==b.cast.ErrorCode.CANCEL&&(g.log("Cast Session Error:",a,A),a.code===b.cast.ErrorCode.SESSION_ERROR&&this.stopCasting())}function v(a){var b=window.chrome;a.code!==b.cast.ErrorCode.CANCEL&&(g.log("Cast Session Error:",a,A),a.code===b.cast.ErrorCode.SESSION_ERROR&&this.stopCasting())}function w(a){a/=100,a=Math.max(0,Math.min(a,1)),A.setReceiverVolumeLevel(a,G.mirrorVolume.bind(G),function(a){g.error("set volume error",a)})}function x(a){A.setReceiverMuted(a,G.mirrorVolume.bind(G),function(a){g.error("set muted error",a)})}function y(a,b){function c(a){return function(){b.sendCommand(a)}}return{getContainer:function(){return document.createElement("div")},on:k,onAdPlay:k,onAdSkipped:k,onAdComplete:k,onAdError:k,onCaptionsList:k,onCaptionsChange:k,onPlaylistItem:k,onPlaylistComplete:k,onError:k,onResize:k,onReady:k,onFullscreen:k,getState:k,castToggle:k,setFullscreen:k,setVolume:w,setMute:function(){x(!a.get("mute"))},play:b.play.bind(b),pause:b.pause.bind(b),seek:b.seek.bind(b),playlistNext:c("next"),playlistPrev:c("prev"),load:b.load.bind(b)}}var z,A=null,B={available:!1,active:!1,deviceName:""},C=h.getAbsolutePath(window.location.href),D=null,E=null,F=null;z=j.extend({},l,n.get("cast"));var G=this;this.onExistingSession=function(a){g.log("existing session",a),A||E||(E=a.session,E.addMessageListener(g.NS,this.listenForHandshakeHandler))},this.setActive=function(a){B.active=!!a,B.deviceName=t(),this.castModel.set("castActive",!!a),this.castModel.set("deviceName",t()),this.castModel.set("castState",B)},this.startCasting=function(){if(!A&&!o()){var a=window.chrome;a.cast.requestSession(this.sessionStarted.bind(this),u)}},this.openExtension=function(){if(!o()){var a=window.chrome;a.cast.requestSession(this.sessionStarted.bind(this),v)}},this.stopCasting=function(){return A?(this.removeSessionListeners(),void A.stop(this.sessionStopped.bind(this),this.sessionStopError.bind(this))):void this.sessionStopped()},this.resumePlayback=function(){m.showView(m._view.element()),m.getProvider().name.indexOf("flash")>=0&&n.resetProvider(),m.load(this.castModel.get("item")),m.play()},this.sessionStopError=function(a){g.error("Cast Session Stop error:",a,A),this.sessionStopped()},this.sessionStarted=function(a){if(g.log("Session started:",a),A)this.stopCasting(),F=a;else if(A=a,A.addMessageListener(g.NS,this.onMessageHandler),A.addUpdateListener(this.sessionStatusHandler),this.setupControllerForCasting(),a!==E){var b=f.setupCastConfig(this.castModel,z);D.setup(b),d.sendDummyMedia(a)}},this.sessionStatus=function(a){g.log("Cast Session status",a),a?this.mirrorVolume():(this.castModel.set("state",i.BUFFERING),this.sessionStopped())},this.sessionStopped=function(){g.log("_sessionStopped"),A&&(this.removeSessionListeners(),A=null),D&&(D.destroy(),D=null),this.setActive(!1),null!==F&&(this.sessionStarted(F),F=null),this.resumePlayback()},this.removeSessionListeners=function(){A.removeUpdateListener(this.sessionStatusHandler),A.removeMessageListener(g.NS,this.onMessageHandler)},this.onMessage=function(a,b){var c=JSON.parse(b);if(!c)throw"Message not proper JSON";this.handleMessage(c)},this.handleMessage=function(a){switch(a.type){case"state":this.handleMessageState(a);break;case"ad":this.handleMessageAd(a);break;case"connection":this.handleMessageConnection(a);break;default:g.error("received unhandled message",a.type,a)}},this.handleMessageState=function(a){this.castModel.get("castAdPlaying")&&(a.diff.newstate||a.diff.position)&&this.castModel.set("castAdPlaying",!1),D.updateState(a.diff)},this.handleMessageAd=function(a){this.castModel.set("castAdPlaying",!0),D.updateState(a.diff)},this.handleMessageConnection=function(a){a.closed===!0&&this.stopCasting()},this.mirrorVolume=function(){if(A&&A.receiver){var a=A.receiver.volume;if(a){var b=100*a.level|0,c=!!a.muted;this.castModel.set("mute",c),this.castModel.set("volume",b)}}},this.castToggle=function(){B.active?this.openExtension():this.startCasting()},this.setupControllerForCasting=function(){m.pause(),m.setFullscreen(!1);var d=j.extend(j.pick(n.getConfiguration(),["id","key","edition","playlist","playlistItem","containerWidth","containerHeight","width","height","aspectratio","stretching","compactUI","skin"]),{castAvailable:!0,item:0,state:"playing"}),f=new c(d);f.playlist=j.filter(j.map(f.playlist,function(a){return h=j.extend({},a),h.sources=j.filter(a.allSources,function(a){return"dash"!==a.type}),h}),function(a){return 0!==a.sources.length});var g=new b;this.castModel=g,g.setup(f);var h=g.get("playlist")[0];g.set("playlistItem",h),g.trigger("itemReady",h),g.changeVideoProvider(e),D=g.getVideo(),D.init(p,this.castModel);var i=y(g,D);i.castToggle=function(){this.openExtension()}.bind(this);var k=new a(i,g);k.setup(),m.showView(k.element()),this.mirrorVolume(),this.setActive(!0)},this.onExistingSessionHandler=this.onExistingSession.bind(this),this.sessionStatusHandler=this.sessionStatus.bind(this),this.onMessageHandler=this.onMessage.bind(this),this.listenForHandshakeHandler=r.bind(this),!z.appid||window.cast&&window.cast.receiver||(d.on("availability",q),d.on("session",this.onExistingSessionHandler),d.initialize(z.appid))};return m}.apply(b,d),!(void 0!==e&&(a.exports=e))},160:function(a,b,c){var d,e;d=[c(48),c(45),c(59)],e=function(a,b,c){function d(d,f){var g=b.pick(d.getConfiguration(),["displaytitle","id","item","key","mute","playlist","position","repeat","volume"]);return g.cast=b.extend({pageUrl:h},f),e(g),g.edition=d.get("edition"),g.playerVersion=c,"LIVE"===a.adaptiveType(d.get("duration"))&&"shaka"===d.getVideo().getName().name&&(g.position=0),g}function e(a){var b=a.plugins;delete a.plugins;for(var c in b)if(b.hasOwnProperty(c)){var d=b[c];d.client&&(/[\.\/]/.test(d.client)&&g(d,"client"),d.client.indexOf("vast")>-1&&(a.advertising=f(d)))}}function f(a){var c=b.extend({},a);if(c.client="vast",delete c.companiondiv,c.schedule)for(var d in c.schedule)if(c.schedule.hasOwnProperty(d)){var e=c.schedule[d].ad||c.schedule[d];g(e,"tag")}return g(c,"tag"),c}function g(b,c){b[c]&&(b[c]=a.getAbsolutePath(b[c]))}var h=window.location.href;return{setupCastConfig:d}}.apply(b,d),!(void 0!==e&&(a.exports=e))},161:function(a,b,c){var d,e;d=[c(162),c(46),c(101),c(47),c(45)],e=function(a,b,c,d,e){function f(d){t=d,null!==a.availability?u.trigger("availability",{availability:a.availability}):p&&p.cast?h():n||(n=new c(q),n.addEventListener(b.ERROR,i),n.addEventListener(b.COMPLETE,h),n.load())}function g(a){var b=new p.cast.media.MediaInfo("");b.contentType="video/mp4";var c=new p.cast.media.LoadRequest(b);c.autoplay=!1,a.loadMedia(c)}function h(){p&&p.cast&&p.cast.isAvailable&&!o?(o=new p.cast.ApiConfig(new p.cast.SessionRequest(t),l,m,p.cast.AutoJoinPolicy.ORIGIN_SCOPED),p.cast.initialize(o,k,j)):s++<15&&(r=setTimeout(h,1e3))}function i(){n&&(n.resetEventListeners(),n=null)}function j(){o=null}function k(){}function l(b){u.trigger("session",{session:b}),b.sendMessage(a.NS,{whoami:1}),0===b.media.length&&g(b)}function m(b){a.availability=b,u.trigger("availability",{availability:b})}var n,o,p=window.chrome,q="https://www.gstatic.com/cv/js/sender/v1/cast_sender.js",r=-1,s=0,t=null,u=e.extend({initialize:f,sendDummyMedia:g},d);return u}.apply(b,d),!(void 0!==e&&(a.exports=e))},163:function(a,b,c){var d,e;d=[c(48),c(164),c(46),c(47),c(62),c(45),c(162)],e=function(a,b,c,d,e,f,g){function h(c){var d,e=c.get("castLoading"),f=c.get("playlistItem"),g=f?f.title:"";d=e?g?"Loading "+g+" on ":"Loading on ":g?"Casting "+g+" to ":"Casting to";var h={message:d,deviceName:c.get("deviceName")||"Google Cast"};return a.createElement(b(h))}var i=function(){var b,i=-1,j=a.noop;f.extend(this,d,{lastPosition:0,lastDuration:null}),this.setState=function(a){this.trigger(c.JWPLAYER_PLAYER_STATE,{newstate:a}),this.model.set("state",a)},this.destroy=function(){clearTimeout(i)},this.updateState=function(a){if(a.item){this.setState(e.BUFFERING);var b=this.model.get("playlist"),d=b[a.item];this.model.set("item",a.item),this.model.set("playlistItem",d),this.model.trigger("itemReady",d)}if(void 0!==a.position&&(this.lastPosition=a.position),void 0!==a.duration&&(this.lastDuration=a.duration),a.newstate){var g=a.newstate.toLowerCase();g===e.IDLE&&this.lastPosition&&this.lastPosition===this.lastDuration&&(g=e.COMPLETE),this.setState(g)}if(void 0===a.position&&void 0===a.duration||(this.model.get("state")===e.BUFFERING&&this.setState(e.PLAYING),null!==this.lastDuration&&this.trigger(c.JWPLAYER_MEDIA_TIME,{position:this.lastPosition,duration:this.lastDuration})),void 0!==a.buffer&&this.trigger(c.JWPLAYER_MEDIA_BUFFER,{bufferPercent:a.buffer}),a.tag){this.model.set("adMode",a.complete);var h=["clickthrough","companions","message","podMessage","podCount","sequence","skipMessage","skipText","skipOffset","tag"];f.each(h,function(b){f.isUndefined(a[b])||this.model.set(b,a[b])},this)}},this.supportsFullscreen=function(){return!1},this.init=function(a,b){j=a,this.model=b,this.model.on("itemReady",this.updateScreen,this),this.model.on("change:deviceName",this.updateScreen,this),this._castingScreen=h(this.model)},this.setup=function(a){this.setState(e.BUFFERING),this.sendCommand("setup",a)},this.playlistItem=function(a){this.setState(e.BUFFERING),this.sendCommand("item",a)},this.load=function(a){this.setState(e.BUFFERING),this.sendCommand("load",a)},this.stop=function(){clearTimeout(i),i=setTimeout(function(){this.setState(e.IDLE),this.sendCommand("stop")}.bind(this),0)},this.play=function(){this.sendCommand("play")},this.pause=function(){this.setState(e.PAUSED),this.sendCommand("pause")},this.seek=function(a){this.setState(e.BUFFERING),this.trigger(c.JWPLAYER_MEDIA_SEEK,{position:this.model.get("position"),offset:a}),this.sendCommand("seek",a)},this.skipAd=function(a){this.sendCommand("skipAd",{tag:a.tag})},this.clickAd=function(a){this.sendCommand("clickAd",{tag:a.tag})},this.audioMode=function(){return this.model.get("audioMode")},this.sendCommand=function(a,b){j(a,b)},this.detachMedia=function(){return g.error("detachMedia called while casting"),document.createElement("video")},this.attachMedia=function(){g.error("attachMedia called while casting")},this.updateScreen=function(){b.innerHTML=h(this.model).innerHTML},this.setContainer=function(a){b=a,a.appendChild(this._castingScreen)},this.getContainer=function(){return b},this.remove=function(){b===this._castingScreen.parentNode&&b.removeChild(this._castingScreen)},this.volume=this.mute=this.setControls=this.setCurrentQuality=this.resize=this.seekDrag=this.addCaptions=this.resetCaptions=this.setVisibility=this.fsCaptions=a.noop,this.setFullScreen=this.getFullScreen=this.checkComplete=f.constant(!1),this.getWidth=this.getHeight=this.getCurrentQuality=f.constant(0),this.getQualityLevels=f.constant(["Auto"])};return i.prototype={getName:function(){return{name:"chromecast"}}},i}.apply(b,d),!(void 0!==e&&(a.exports=e))},164:function(a,b,c){var d=c(120);a.exports=(d["default"]||d).template({compiler:[6,">= 2.0.0-beta.1"],main:function(a,b,c,d){var e=this.lambda,f=this.escapeExpression;return'
    \n
    \n '+f(e(null!=a?a.message:a,a))+'\n '+f(e(null!=a?a.deviceName:a,a))+"\n
    \n
    "},useData:!0})}}); \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/provider.shaka.js b/server/webplatform/www/jwplayer/provider.shaka.js new file mode 100644 index 0000000..173f760 --- /dev/null +++ b/server/webplatform/www/jwplayer/provider.shaka.js @@ -0,0 +1,4 @@ +webpackJsonpjwplayer([5],{109:function(a,b,c){var d,e;d=[c(81),c(45),c(55),c(48),c(62),c(46),c(47),c(110)],e=function(a,b,c,d,e,f,g,h){function i(a){function i(){W&&this.state===e.LOADING&&this.setState(e.PLAYING)}function j(a,b){var c,e,f;switch(a){case"urn:uuid:edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":case"edef8ba9-79d6-4ace-a3c8-27dcd51d21ed":return d.isIE()?null:(T="widevine",c="com.widevine.alpha",e=S.widevine,f=e?e.url:"",f||(console.log("No licensing server specified for widevine. Defaulting to proxy."),f="http://widevine-proxy.appspot.com/proxy"),[{keySystem:c,licenseServerUrl:f,licensePreProcessor:function(a){e&&e.customData&&(a.headers.customData=e.customData)}}]);case"urn:mpeg:dash:mp4protection:2011":c="org.w3.clearkey",e=S.clearkey;var g=h.util.Uint8ArrayUtils,i=e?e.key:null,j=b.getAttribute("cenc:default_KID");if(j=j?j.replace(/-/g,""):null,!i||!j)break;j=g.fromHex(j),i=g.fromHex(i);var k={kty:"oct",kid:g.toBase64(j,!1),k:g.toBase64(i,!1)},l={keys:[k]},m=JSON.stringify(l),n={initData:j,initDataType:"webm"};return f="data:application/json;base64,"+window.btoa(m),[{keySystem:c,licenseServerUrl:f,initData:n}];case"urn:uuid:9a04f079-9840-4286-ab92-e65be0885f95":case"9a04f079-9840-4286-ab92-e65be0885f95":return d.isIE()?(T="playready",c="com.microsoft.playready",e=S.playready,f=e?e.url:"",f||(console.log("No licensing server specified for microsoft. Defaulting to proxy."),f="http://microsoft-proxy.appspot.com/proxy"),[{keySystem:c,licenseServerUrl:f,licensePreProcessor:function(a){e&&e.customData&&(a.headers.customData=e.customData)}}]):null;default:return console.log("Unrecognized scheme: "+a,b),null}}function k(a){console.error(a);var b="Unknown playback error";V.trigger(f.JWPLAYER_MEDIA_ERROR,{message:"Error playing file:"+b})}function l(a){switch(a.contentType){case"video":var b={level:{index:V.currentQuality,label:V.currentQuality?a.size.height+"p":"Auto",bitrate:a.bandwidth,width:a.size.width,height:a.size.height},type:"visualQuality"};Y?(b.reason="initial choice",b.mode="auto",Y=!1):a.currentTarget.c.enableAdaptation?b.reason=b.mode="auto":(b.reason="api",b.mode="manual"),V.trigger("visualQuality",b)}}function m(){return this.levels}function n(){return this.currentQuality}function o(a){var b=new h.player.Player(a);return b.addEventListener("error",k),b.addEventListener("adaptation",l),b}function p(a){W&&(d.isAndroid()||a.preload&&"none"!==a.preload)&&r(a)}function q(a){W&&(this.setState(e.LOADING),R!==a?(T=null,Y=!0,r(a)):(Q.currentTime=0,Q.play()))}function r(a){R=a;var b=a.sources[0].file,c=a.starttime;S=a.sources[0].drm||{};var d=new h.util.EWMABandwidthEstimator,e=new h.player.DashVideoSource(b,j,d),f=U.load(e);f.then(s.bind(V)),c&&f.then(function(){this.seek(c)}.bind(V))}function s(){if(W){var a=U.getVideoTracks(),b=U.getAudioTracks();a.length>0?t(a,"video"):t(b,"audio"),V.trigger(f.JWPLAYER_MEDIA_BUFFER_FULL)}}function t(a,c){V.currentQuality=0,V.levels=b.map(a,function(a){var b={contentType:c,label:null,level_id:a.id};return a.height?b.label=a.height+"p":b.label=Math.round(a.bandwidth/1e3)+"kbps",b}),a.length>1&&V.levels.unshift({label:"Auto",level_id:"auto"}),V.trigger(f.JWPLAYER_MEDIA_LEVELS,{levels:V.levels,currentQuality:V.currentQuality})}function u(){return U.isLive()?1/0:Q.duration}function v(){W&&V.trigger(f.JWPLAYER_MEDIA_META,{duration:u(),height:Q.videoHeight,width:Q.videoWidth,drm:T})}function w(){V.setState(e.COMPLETE),X=!1,V.trigger(f.JWPLAYER_MEDIA_COMPLETE)}function x(a,b){return W?g.trigger.call(this,a,b):void 0}function y(){var a=Q;W=!1,U.destroy(),Q=a}function z(){W=!0,U=o(Q),X&&w()}function A(){return X}function B(a){Q.muted=a}function C(){this.setState(e.PAUSED),Q.pause()}function D(){this.setState(e.BUFFERING),Q.play(),this.setVisibility(!0)}function E(a){Q.currentTime=a,this.trigger(f.JWPLAYER_MEDIA_SEEK,{position:Q.currentTime,offset:a})}function F(a){a=!!a,a?c.style(O,{visibility:"visible",opacity:1}):c.style(O,{visibility:"",opacity:0})}function G(){U.unload(),O===Q.parentNode&&O.removeChild(Q)}function H(){Q.pause(),this.setState(e.IDLE)}function I(a){O=a,O.appendChild(Q)}function J(){return O}function K(a){if(a=parseInt(a,10),!(this.currentQuality===a||0>a||a>=this.levels.length)){if(this.currentQuality=a,this.trigger(f.JWPLAYER_MEDIA_LEVEL_CHANGED,{currentQuality:this.currentQuality,levels:this.levels}),0===a)U.configure({enableAdaptation:!0});else{var b=this.levels[a].level_id;U.configure({enableAdaptation:!1});var c;"audio"===this.levels[a].contentType?(c=L(U.getAudioTracks()),c&&c.id===b||(this.setState(e.LOADING),U.selectAudioTrack(b))):(c=L(U.getVideoTracks()),c&&c.id===b||(this.setState(e.LOADING),U.selectVideoTrack(b)))}Q.play()}}function L(a){return b.find(a,function(a){return a.active})}function M(){if(W){var a=Q.currentTime;if(Math.abs(a-this.position)<1&&V.state===e.BUFFERING&&V.setState(e.PLAYING),this.position=a,V.trigger(f.JWPLAYER_MEDIA_TIME,{position:a,duration:u(),quality:1}),a>Q.duration-.1&&Q.duration>1){if(X=!0,V.trigger(f.JWPLAYER_MEDIA_BEFORECOMPLETE),!W)return;w()}}}function N(a){Q.volume=a/100}var O,P=document.getElementById(a),Q=P?P.querySelector("video"):void 0;Q=Q||document.createElement("video");var R,S,T,U=o(Q),V=this,W=!0,X=!1,Y=!0;this.position=0,this.levels=[],this.currentQuality=-1,b.extend(this,g,{init:p,load:q,mute:B,pause:C,getQualityLevels:m.bind(this),getCurrentQuality:n.bind(this),play:D,seek:E,remove:G,setContainer:I,getContainer:J,setCurrentQuality:K.bind(this),setVisibility:F,stop:H,volume:N,trigger:x,attachMedia:z,detachMedia:y,checkComplete:A,supportsFullscreen:b.constant(!0),getName:b.constant({name:"shaka"})}),Q.addEventListener("loadedmetadata",v.bind(this)),Q.addEventListener("timeupdate",M.bind(this)),Q.addEventListener("playing",i.bind(this))}return h.polyfill.installAll(),i.getName=b.constant({name:"shaka"}),{register:function(a){a.api.registerProvider(i)}}}.apply(b,d),!(void 0!==e&&(a.exports=e))},110:function(a,b,c){var d;!function(){var e={};(function(a){function b(a,b){var c=a.split("."),d=Te;c[0]in d||!d.execScript||d.execScript("var "+c[0]);for(var e;c.length&&(e=c.shift());)c.length||void 0===b?d=d[e]?d[e]:d[e]={}:d[e]=b}function c(a,b){function c(){}c.prototype=b.prototype,a.cc=b.prototype,a.prototype=new c,a.prototype.constructor=a,a.bc=function(a,c,d){return b.prototype[c].apply(a,Array.prototype.slice.call(arguments,2))}}function d(){}function e(a){var b=console[a];b?b.bind||(console[a]=function(){b.apply(console,arguments)}):console[a]=function(){}}function f(a){Ve[a]={na:Ue(),end:NaN}}function g(a){(a=Ve[a])&&(a.end=Ue())}function h(a){return(a=Ve[a])&&a.end?a.end-a.na:NaN}function i(a,b,c){this.id=a,this.bandwidth=b||0,this.lang=c||"unknown",this.active=!1}function j(){this.minBandwidth=this.maxBandwidth=this.maxWidth=this.minHeight=this.maxHeight=null}function k(){this.fontSize="100%",this.fontColor=We,this.fontOpacity=Ye,this.backgroundColor=Xe,this.backgroundOpacity=Ye,this.fontEdge=Ze}function l(a){var b=[];b.push("font-size: "+a.fontSize),b.push("color: "+m(a.fontColor,a.fontOpacity)),b.push("background-color: "+m(a.backgroundColor,a.backgroundOpacity));for(var c=[],d=0;dc?-1:c>d?1:a.bandwidthb.bandwidth?1:0}function q(){var b="CustomEvent"in a;if(b)try{new CustomEvent("")}catch(c){b=!1}b||(a.CustomEvent=r)}function r(a,b){var c=document.createEvent("CustomEvent"),d=b||{bubbles:!1,cancelable:!1,detail:null};return c.initCustomEvent(a,!!d.bubbles,!!d.cancelable,d.detail),c}function s(){var a=Element.prototype;a.requestFullscreen=a.requestFullscreen||a.mozRequestFullScreen||a.msRequestFullscreen||a.webkitRequestFullscreen,a=Document.prototype,a.exitFullscreen=a.exitFullscreen||a.mozCancelFullScreen||a.msExitFullscreen||a.webkitExitFullscreen,"fullscreenElement"in document||Object.defineProperty(document,"fullscreenElement",{get:function(){return document.mozFullScreenElement||document.msFullscreenElement||document.webkitFullscreenElement}}),document.addEventListener("webkitfullscreenchange",t),document.addEventListener("webkitfullscreenerror",t),document.addEventListener("mozfullscreenchange",t),document.addEventListener("mozfullscreenerror",t),document.addEventListener("MSFullscreenChange",t),document.addEventListener("MSFullscreenError",t)}function t(a){var b=a.type.replace(/^(webkit|moz|MS)/,"").toLowerCase(),b=new Event(b,a);a.target.dispatchEvent(b)}function u(){return Promise.reject(Error("The key system specified is not supported."))}function v(a){return null==a?Promise.resolve():Promise.reject(Error("MediaKeys not supported."))}function w(){throw new TypeError("Illegal constructor.")}function x(){throw new TypeError("Illegal constructor.")}function y(a){if(this.c=[],this.b=[],this.ba=$e,a)try{a(this.W.bind(this),this.a.bind(this))}catch(b){this.a(b)}}function z(){a.Promise||(a.Promise=y,a.Promise.resolve=A,a.Promise.reject=B,a.Promise.all=C,a.Promise.race=D,F=a.setImmediate?function(b){a.setImmediate(b)}:function(b){a.setTimeout(b,0)})}function A(a){var b=new y;return b.W(a),b}function B(a){var b=new y;return b.a(a),b}function C(a){function b(a,b,c){a.ba==$e&&(e[b]=c,d++,d==e.length&&a.W(e))}var c=new y;if(!a.length)return c.W([]),c;for(var d=0,e=Array(a.length),f=c.a.bind(c),g=0;g2097151)throw new RangeError("DataViewReader: Overflow reading 64-bit value.");return a.a+=8,c*Math.pow(2,32)+b}function P(a){if(a.a+16>a.b.byteLength)throw new RangeError("DataViewReader: Read past end of DataView.");var b=new Uint8Array(a.b.buffer,a.a,16);return a.a+=16,b}function Q(a,b){if(a.a+b>a.b.byteLength)throw new RangeError("DataViewReader: Skip past end of DataView.");a.a+=b}function R(a){this.b=a,this.a=new K(a),_e||(_e=[new Uint8Array([255]),new Uint8Array([127,255]),new Uint8Array([63,255,255]),new Uint8Array([31,255,255,255]),new Uint8Array([15,255,255,255,255]),new Uint8Array([7,255,255,255,255,255]),new Uint8Array([3,255,255,255,255,255,255]),new Uint8Array([1,255,255,255,255,255,255,255])])}function S(a){var b;if(b=T(a),7=b&&!(c&1<<8-b);b++);if(b>8)throw new RangeError("EbmlParser: Variable sized integer must fit within 8 bytes.");var d=new Uint8Array(b);for(d[0]=c,c=1;b>c;c++)d[c]=M(a.a);return d}function U(a,b){this.id=a,this.a=b}function V(a){if(8=df&&c==b.split("-")[0]||a>=ef&&c.split("-")[0]==b.split("-")[0]}function _(a){a=a.toLowerCase().split("-");var b=ff[a[0]];return b&&(a[0]=b),a.join("-")}function aa(a){return Object.keys(a).map(function(b){return a[b]})}function ba(a,b){return ea(a,b,"boolean")}function ca(a,b){var c=ea(a,b,"number");if(null==c)return null;if(isNaN(c)||c==Number.NEGATIVE_INFINITY||c==Number.POSITIVE_INFINITY)throw new RangeError("'"+b+"' must be finite.");if(0>c)throw new RangeError("'"+b+"' must be >= 0");return c}function da(a,b){return ea(a,b,"string")}function ea(a,b,c){if(a=a[b],null==a)return null;if(typeof a!=c)throw new TypeError("'"+b+"' must be a "+c+".");return a}function fa(a,b,c){if(a=a[b],null==a)return null;if(!(a instanceof c))throw new TypeError("'"+b+"' must be an instance of "+c.name+".");return a}function ga(){this.a={}}function ha(a){var b,c=[];for(b in a.a)c.push.apply(c,a.a[b]);return c}function ia(a,b,c){if(a=a.a[b])for(b=0;b=e&&f>=b)return c.end(d)-b}return 0}function Oa(a,b,c,d){if(a.a)return a=Error("Cannot fetch ("+a.j+"): previous operation not complete."),a.type="stream",Promise.reject(a);a.a=new ta,c!=a.c.timestampOffset&&(a.c.timestampOffset=c),"idb"!=b.url.b[0].P||a.g||(a.g=new Ha,ua(a.a,function(){return[za(this.g)]}.bind(a))),d&&ua(a.a,function(){return[Ta(this,d),this.h.bind(this)]}.bind(a)),ua(a.a,function(){var a=b.a?b.a-b.b:1,c=new tc;return c.a=3,c.h=1e3*a,c.c=1e3*this.u,c.i=this.g,[Bc(b.url,c,this.l),zc.prototype.g.bind(b.url)]}.bind(a)),ua(a.a,xa(a,function(a){return this.l.getBandwidth(),[Ta(this,a),this.h.bind(this)]}));var e=0==a.c.buffered.length&&0==a.b.length,f=null;return ua(a.a,function(){if(0==this.c.buffered.length){var a=Error("Failed to buffer segment ("+this.j+").");return a.type="stream",[Promise.reject(a)]}e&&(a=b.b,f=this.c.buffered.start(0)-a),a=Mc(this.b,b.b),a>=0?this.b.splice(a+1,0,b):this.b.push(b)}.bind(a)),Sa(a).then(function(){return Promise.resolve(f)}.bind(a))}function Pa(a){return a.a?(a=Error("Cannot clear ("+a.j+"): previous operation not complete."),a.type="stream",Promise.reject(a)):(a.a=new ta,ua(a.a,function(){var a;a:if(0==this.c.buffered.length)a=Promise.resolve();else{try{this.c.remove(0,Number.POSITIVE_INFINITY)}catch(b){a=Promise.reject(b);break a}this.b=[],a=this.f=new ra}return[a,this.h.bind(this)]}.bind(a)),Sa(a))}function Qa(a,b){if(a.a){var c=Error("Cannot clearAfter ("+a.j+"): previous operation not complete.");return c.type="stream",Promise.reject(c)}return a.a=new ta,ua(a.a,function(){return[Ua(this,b),this.h.bind(this)]}.bind(a)),Sa(a)}function Ra(a){return a.a?(a=a.a,a.a?a=a.a:a.f?(a.c&&a.c(),a.a=new ra,a=a.a):(a.f=!0,a=Promise.resolve())):a=Promise.resolve(),a}function Sa(a){return a.a.start(),a.a.g.then(xa(a,function(){this.a=null}))["catch"](xa(a,function(a){return this.a=null,Promise.reject(a)}))}function Ta(a,b){try{a.c.appendBuffer(b)}catch(c){return Promise.reject(c)}return a.f=new ra,a.f}function Ua(a,b){if(0==a.c.buffered.length)return Promise.resolve();var c=Mc(a.b,b);if(-1==c||c==a.b.length-1)return Promise.resolve();try{a.c.remove(a.b[c+1].b,Number.POSITIVE_INFINITY)}catch(d){return Promise.reject(d)}return a.b=a.b.slice(0,c+1),a.f=new ra,a.f}function Va(a){return String.fromCharCode.apply(null,a)}function Wa(a){for(var b=new Uint8Array(a.length),c=0;c1)Q(a,c-(a.a-b));else{Q(a,3);var f=Ya(P(a)),g=[];if(e>0)for(var h=N(a),i=0;h>i;++i){var j=Ya(P(a));g.push(j)}var k=N(a);Q(a,k),this.cencKeyIds.push.apply(this.cencKeyIds,g),this.systemIds.push(f),this.a.push({start:b,end:a.a-1}),a.a!=b+c&&Q(a,c-(a.a-b))}}}}catch(l){}}function ob(a,b){try{var c=new pb(a,b);return Promise.resolve(c)}catch(d){return Promise.reject(d)}}function pb(a,b){this.keySystem=a;for(var c=!1,d=0;d=c.a.length)a=b;else{var d=[];for(a=0;ab)throw Error("Bad port number "+b);a.ia=b}else a.ia=null}function Db(a,b,c){b instanceof Hb?a.a=b:(c||(b=Fb(b,of)),a.a=new Hb(b))}function Eb(a,b){return a?b?decodeURI(a):decodeURIComponent(a):""}function Fb(a,b,c){return"string"==typeof a?(a=encodeURI(a).replace(b,Gb),c&&(a=a.replace(/%25([0-9a-fA-F]{2})/g,"%$1")),a):null}function Gb(a){return a=a.charCodeAt(0),"%"+(a>>4&15).toString(16)+(15&a).toString(16)}function Hb(a){this.b=a||null}function Ib(a,b,c){if(!a.a&&(a.a={},a.c=0,a.b))for(var d=a.b.split("&"),e=0;e=0?(g=d[e].substring(0,f),h=d[e].substring(f+1)):g=d[e],g=decodeURIComponent(g.replace(/\+/g," ")),h=h||"",Ib(a,g,decodeURIComponent(h.replace(/\+/g," ")))}a.b=null,(d=a.a.hasOwnProperty(b)&&a.a[b])||(a.a[b]=d=[]),d.push(c),a.c++}function Jb(){this.id=this.url=null,this.type="static",this.b=this.j=this.s=null,this.h=5,this.f=this.c=this.g=null,this.i=1,this.a=[]}function Kb(){this.g=this.f=this.c=this.s=this.a=this.start=this.id=null,this.b=[]}function Lb(){this.i=this.b=this.height=this.width=this.contentType=this.lang=this.group=this.id=null,this.c=!1,this.h=this.g=this.f=this.s=null,this.j=[],this.a=[]}function Mb(){this.value=null}function Nb(){this.contentType=this.lang=this.id=null}function Ob(){this.a=this.b=this.g=this.s=this.h=this.f=this.height=this.width=this.bandwidth=this.lang=this.id=null,this.c=[]}function Pb(){this.b=this.a=this.c=this.f=null}function Qb(){this.parsedPssh=this.psshBox=null}function Rb(){this.url=null}function Sb(){this.url=null}function Tb(){this.s=null,this.g=1,this.c=this.b=this.a=this.f=null}function Ub(){this.a=this.url=null}function Vb(){this.a=this.url=null}function Wb(){this.s=null,this.f=1,this.b=this.g=null,this.i=1,this.h=null,this.a=[],this.c=null}function Xb(){this.a=this.b=null}function Yb(){this.a=1,this.b=this.i=null,this.j=1,this.c=this.g=this.f=this.h=null}function Zb(){this.a=[]}function $b(){this.c=this.a=this.b=null}function _b(a,b){this.na=a,this.end=b}function ac(a){for(var b=[],c=0;c0?b:null}function qc(b){return b=a.parseInt(b,10),b>=0?b:null}function rc(a){return a}function sc(a,b){this.url=a,this.b=b||new tc,this.g=this.i=this.h=0,this.a=null,this.c=new ra,this.f=null}function tc(){this.body=null,this.a=1,this.h=1e3,this.c=0,this.method="GET",this.f="arraybuffer",this.b={},this.g=this.j=!1,this.i=null}function uc(a){vc(a),a.b.body=null,a.c.destroy(),a.c=null,a.f=null}function vc(a){a.a&&(a.a.onload=null,a.a.onreadystatechange=null,a.a.onerror=null,a.a.ontimeout=null),a.a=null}function wc(a){var b=a.url.split("/");return La(a.b.i,parseInt(b[2],10),parseInt(b[3],10)).then(xa(a,function(a){var b=JSON.parse(JSON.stringify(new XMLHttpRequest));return b.response=a,a=this.c,a.resolve(b),uc(this),a}))["catch"](xa(a,function(a){return uc(this),Promise.reject(a)}))}function xc(a,b,c){return b=Error(b),b.type=c,b.status=a.a.status,b.url=a.url,b.method=a.b.method,b.body=a.b.body,b.ac=a.a,b}function yc(b){vc(b),a.setTimeout(b.rb.bind(b),b.g*(1+.5*(2*Math.random()-1))),b.g*=2}function zc(a,b,c,d){this.b=b,this.f=c||0,this.h=null!=d?d:null,this.c=this.a=null,this.i=a}function Ac(a,b){return a&&0!==a.length?a.map(function(a){return a.resolve(b)}):[b]}function Bc(a,b,c){return a.a?a.a:(b=b||new tc,(a.f||a.h)&&(b.b.Range="bytes="+(a.f+"-"+(null!=a.h?a.h:""))),a.a=Cc(a,0,b,c),a.a)}function Cc(a,b,c,d){var e=a.b[b].toString();return a.i&&(e=a.i(e,c.b)||e),a.c=new sc(e,c),d&&(a.c.f=d),e=a.c.rb().then(xa(a,function(a){return this.c=this.a=null,Promise.resolve(a.response)})),e=e["catch"](xa(a,function(a){return this.a&&b+1g;++g){var h=g+c,i=(h-1)*e.b,j=i/e.a,k=(i+e.b)/e.a,h=Gc(a,b,e.j+h-1,i);if(!h)return null;f.push(new Kc(j,k,h))}return f}function Gc(a,b,c,d){if(!b.a)return null;var e=b.a.h;return e?(c=Hc(e,b.id,c,b.bandwidth,d))?(b=Ac(b.s,c),new zc(a,b,0,null)):null:b.s?new zc(a,b.s,0,null):null}function Hc(b,c,d,e,f){var g={RepresentationID:c,Number:d,Bandwidth:e,Time:f};b=b.replace(/\$(RepresentationID|Number|Bandwidth|Time)?(?:%0([0-9]+)d)?\$/g,function(b,c,d){if("$$"==b)return"$";var e=g[c];return null==e?b:("RepresentationID"==c&&d&&(d=void 0),b=e.toString(),d=a.parseInt(d,10)||1,d=Math.max(0,d-b.length),Array(d+1).join("0")+b)});try{return new Ab(b)}catch(h){if(h instanceof URIError)return null;throw h}}function Ic(a,b,c){var d=0;b*=c,a=a.a,c=[];for(var e=0;eg&&(g=a[e].a,g=e+1===a.length?Math.ceil((a[0].b+b-f)/g)-1:Math.ceil((a[e+1].b-f)/g)-1),0=h;++h)d=f+a[e].a,c.push({start:f,end:d}),f=d}return c}function Jc(a,b){this.a=a,this.b=b||null}function Kc(a,b,c){this.b=a,this.a=b,this.url=c}function Lc(a,b,c){return new Kc(b,c,a.url)}function Mc(a,b){for(var c=a.length-1;c>=0;--c){var d=a[c];if(b>=d.b&&(null==d.a||b=Qc(b).b);++d);a.o[d].bQc(b).b||Qc(b),c=a.o.slice(0,d))}a.o=c.concat(b.o)}}function Sc(a,b,c,d){Pc.call(this,a),this.g=b,this.w=c,this.f=d,this.h=this.g.b||this.g.a.reduce(function(a,b){return null==b.a?NaN:a+b.a},0)||0,this.a=this.l=this.c=null,Tc(this)}function Tc(a){if(Wc(a),0!=a.length()){a.length();var b=null!=a.A().a?a.A().a:a.A().b;if(a.g.c>a.f)a.c=b;else{var c=a.f-(a.g.c+a.w.start);0>c?a.c=b:c0&&(a.a+=e)),a.a=Math.min(a.a,c),d=a.l+d,d0&&a.o.splice(0,d)}}function Wc(a){if(a.h){for(var b=0,c=a.o.length-1;c>=0&&a.o[c].b>a.h;--c)++b;b>0&&a.o.splice(-b)}}function Xc(a,b,c,d,e){var f,g=1,h=0;if(a.c>d)f=null;else{var i=a.i||0,j=a.f||0;f=c.a,f=f.b/f.a;var k=d-(a.c+b.start);0>k?f=null:(j=k-2*f-j,0>j&&(j=0),j=Math.ceil(j/f)*f,k-=f,0>k?f=null:(i=Math.floor(k/f)*f-i,0>i&&(i=0),i=Math.floor(i/f)*f,f={Za:j/f+1,current:(i>=j?i:j)/f+1}))}if(f&&(g=f.Za,h=f.current-f.Za+1),g=Fc(e,c,g,h),null==g)throw a=Error("Failed to generate SegmentReferences."),a.type="stream",a;Sc.call(this,g,a,b,d),this.u=c,this.v=this.b=00?a.b[d-1]:null,null!=a?null!=a.a?c.la(a.a):null:c.la(b)||(c.length()?c.A():null)}function ld(a){if(!a.u&&null!=a.i){a.u=!0;var b=a.a,c=a.i,d=c-b.w;0!=d&&(b.b=Nc(b.b,d),b.w=c),a.h.resolve(a.i)}}function md(a,b){var c;c=b.a.split("/")[0],c=Y({type:"adaptation",bubbles:!0,contentType:c,size:"video"!=c?null:{width:b.width,height:b.height},bandwidth:b.bandwidth}),a.dispatchEvent(c)}function nd(a){var b=Y({type:"ended"});a.dispatchEvent(b)}function od(b,c){b.g=a.setTimeout(b.Nb.bind(b),c)}function pd(b){null!=b.g&&(a.clearTimeout(b.g),b.g=null)}function qd(a){this.b=a,this.a=null}function rd(a,b){oa.call(this,a),this.b=b,this.g=!0,this.h=this.f=null,this.c=new ra,this.a=null}function sd(){}function td(a,b,c,d,e,f,g){this.g=a,this.i=b,this.f=c,this.a=d,this.c=e,this.j=f,this.b=null,this.h=g}function ud(a){this.a=a}function vd(a,b,c){for(var d=J()/1e3,e=0;eg)&&(b=g,c=e)}return c}function Ad(a,b){if(0==b.length)Array.prototype.push.apply(b,a);else for(var c=0;c=this.f.length&&this.g.resolve()}))["catch"](xa(a,function(a){a=Z(a),this.dispatchEvent(a)}))}}function Zd(a){var b=null;if(a.b.ha())try{b=a.i.createSession("persistent-license")}catch(c){throw Error("Persistent licenses are not supported by this key system or platform.")}else b=a.i.createSession();return la(a.l,b,"message",a.Jb.bind(a)),la(a.l,b,"keystatuseschange",a.yb.bind(a)),b}function $d(a,b,c,d){d=_d(c,d),Sd(new Rd(d.url,d.body,d.method,c.i,d.headers,a.w)).then(xa(a,function(a){return c.l&&(a=c.l(a)),b.update(a)})).then(xa(a,function(){var a=Y({type:"sessionReady",detail:b});this.dispatchEvent(a),this.u++,this.u>=this.f.length&&this.g.resolve()}))["catch"](xa(a,function(a){a.La=b,a=Z(a),this.dispatchEvent(a)}))}function _d(b,c){var d={url:b.h,body:c.slice(0),method:"POST",headers:{}};if("com.microsoft.playready"===b.a){for(var e=String.fromCharCode.apply(null,new Uint16Array(d.body)),e=(new DOMParser).parseFromString(e,"application/xml"),f=e.getElementsByTagName("name"),g=e.getElementsByTagName("value"),h=0;hc?-1:c>d?1:0}function ke(a){this.a=a}function le(a){function b(a,b){return a.concat(b)}var c=a.a.map(function(a){return a.a}).reduce(b,[]).map(function(a){return a.m}).reduce(b,[]);return a=c.map(function(a){return a.H.create()}),Promise.all(a).then(function(a){for(var b={},d=0;d=(f.bandwidth+c)/.95&&g>=a&&(d=f,d.active)))break}return d}function se(a,b,c){oa.call(this,null),this.f=a,this.c=b,this.b=_a(c),this.a=null}function te(a,b,c){oa.call(this,null),this.a=a,this.Z=b,this.i=new ka,this.g=new MediaSource,this.f=null,this.da=0,this.b=new ga,this.I=c,this.I.initialize(b,this),this.L=!1,this.K="en",this.fa=!1,this.U=null,this.B=new ra,this.h=new j,this.F=null,this.Va=1,this.c={},this.ea=new ra,this.Ta=0,this.Ua=15,this.w=null,this.Ra=this.Sa=!1,this.u={},this.$=this.Y=this.V=null,this.G={}}function ue(b,c){if(null!=b.a.f){var d=Math.max(b.a.f,3),d=Math.max(d-c,0);b.V=a.setTimeout(b.ib.bind(b,!1),1e3*d)}}function ve(a,b){var c=b.a.split("/")[0],d=a.c[c];if(d&&d.oa()==b){var e=a.b.get(b.a.split("/")[0]).map(function(a){return a.m}).reduce(function(a,b){return a.concat(b)},[]).filter(function(a){return a.N&&a.J});if(0==e.length)return c=Error("All usable streams have been removed from the manifest."),c.type="app",c=Z(c),void a.dispatchEvent(c);a.u[c].Pa==b&&delete a.u[c],d.ra(e[0],!0),b.destroy()}b.destroy()}function we(a){if(a.h){for(var b=!1,c=0;ca.h.maxWidth&&(h.J=!1),a.h.maxHeight&&h.height>a.h.maxHeight&&(h.J=!1),a.h.minHeight&&h.heighta.h.maxBandwidth&&(h.J=!1),a.h.minBandwidth&&h.bandwidth=c;++c)for(var d=0;d=c.start?d=a.$:a.a.b?(d=c.end,a.Sa=!0):d=c.start,la(a.i,a.f,"seeking",a.Ib.bind(a)),a.f.currentTime!=d&&(a.f.currentTime=d,a.F=d),He(a,c.start,c.end),c=[];for(var e in a.c){d=a.c[e],c.push(d.sb(a.ea)),la(a.i,d,"ended",a.Kb.bind(a));var f=b[e];Hd(a.U,f),d.ra(f,!1)}Promise.all(c).then(a.ub.bind(a))["catch"](xa(a,function(a){"destroy"!=a.type&&(a=Z(a),this.dispatchEvent(a))})),a.Na(a.fa)}function Fe(a,b,c){(b=Ke(a,b))&&(Ge(a,b),He(a,b.start,b.end)),0!=c&&(c=a.f.currentTime+c,a.f.currentTime=c,a.F=c),a.Sa&&b&&(a.f.currentTime=b.end),a.f.playbackRate=a.Va,a.a.b&&null!=a.a.f&&ue(a,0),Le(a),a.ea.resolve()}function Ge(a,b){if(a.a.b)isNaN(a.g.duration)&&(a.g.duration=b.end+2592e3);else if(isNaN(a.g.duration)||b.end>a.g.duration){a.g.duration=b.end;for(var c=0;c=c-.01)return!1;if(b=0,a.a.b){b=.5;for(var e in a.c)if(!a.c[e].lb(c+b)){b=a.a.c;break}}return a.f.currentTime=Math.min(c+b,d),!0}function Je(a){return aa(a.c).map(function(a){return a.cb()}).filter(function(a){return null!=a})}function Ke(a,b){for(var c=0,d=Number.POSITIVE_INFINITY,e=Number.POSITIVE_INFINITY,f=0;fd?null:{start:c,end:d,A:e}}function Le(b){b.a.b&&(b.Y=a.setTimeout(b.Mb.bind(b),1e3))}function Me(a){for(var b in a.c)a.c[b].G(a.G)}function Ne(a,b,c,d){c||(c=new qa),d||(d=new qe),te.call(this,null,c,d),this.za=a,this.l=null,this.M=b,this.R=[],this.ga=[],this.ta=[],this.j=null}function Oe(a,b,c){b||(b=new qa),c||(c=new qe),te.call(this,null,b,c),this.R=a,this.M=[],this.timeoutMs=3e4,this.l={},this.j=this.ga=null}function Pe(a,b,c,d){var e=new Kd(a.Z,a);return null!=a.l.segmentRequestTimeout&&(e.b=Number(a.l.segmentRequestTimeout)),za(e).then(xa(a,function(){return Ld(e,b,this.M,d,c)})).then(function(a){return Aa(e),Promise.resolve(a)})["catch"](function(a){return Aa(e),Promise.reject(a)})}function Qe(a){var b=new Kd(null,null);return za(b).then(xa(a,function(){return Md(b,this.R)})).then(function(){return Aa(b),Promise.resolve()})["catch"](function(a){return Aa(b),Promise.reject(a)})}function Re(b){var c=document.createElement("video");c.src=a.URL.createObjectURL(b.g);var d=new Td(null,c,b);return null!=b.l.licenseRequestTimeout&&(d.w=Number(b.l.licenseRequestTimeout)),b.X().then(function(){return d.initialize()}).then(xa(b,function(){return Ud(d,this.timeoutMs)})).then(function(){return Vd(d)}).then(xa(b,function(){return d.destroy(),this.destroy(),Promise.resolve()}))["catch"](xa(b,function(a){return d.destroy(),this.destroy(),Promise.reject(a)}))}var Se,Te=this;e("error"),e("warn"),e("info"),e("log"),e("debug");var Ue=a.performance&&a.performance.now?a.performance.now.bind(a.performance):Date.now,Ve={};b("shaka.player.AudioTrack.compare",function(a,b){return a.langb.lang?1:a.bandwidthb.bandwidth?1:0}),j.prototype.clone=function(){var a=new j;return a.maxHeight=this.maxHeight,a.minHeight=this.minHeight,a.maxWidth=this.maxWidth,a.maxBandwidth=this.maxBandwidth,a.minBandwidth=this.minBandwidth,a},b("shaka.player.TextStyle",k),k.prototype.a=function(){var b=a.localStorage.getItem("ShakaPlayerTextStyle");if(b){var c;try{c=JSON.parse(b)}catch(d){return}if(c&&"object"==typeof c){var e,b=c;for(e in b)e in this&&(this[e]=b[e])}}},k.prototype.load=k.prototype.a,k.prototype.b=function(){a.localStorage.setItem("ShakaPlayerTextStyle",JSON.stringify(this))},k.prototype.store=k.prototype.b;var We=[255,255,255],Xe=[0,0,0];k.StandardColors={WHITE:We,BLACK:Xe,RED:[255,0,0],GREEN:[0,255,0],BLUE:[0,0,255],YELLOW:[255,255,0],MAGENTA:[255,0,255],CYAN:[0,255,255]};var Ye=1;k.StandardOpacities={OPAQUE:Ye,SEMI_HIGH:.75,SEMI_LOW:.25,TRANSPARENT:0};var Ze=[];k.EdgeStyles={NONE:Ze,RAISED:[[34,34,34,1,1,0],[34,34,34,2,2,0],[34,34,34,3,3,0]],DEPRESSED:[[204,204,204,1,1,0],[204,204,204,0,1,0],[34,34,34,-1,-1,0],[34,34,34,0,-1,0]],UNIFORM:[[34,34,34,0,0,4],[34,34,34,0,0,4],[34,34,34,0,0,4],[34,34,34,0,0,4]],DROP:[[34,34,34,2,2,3],[34,34,34,2,2,4],[34,34,34,2,2,5]]},b("shaka.player.TextTrack.compare",function(a,b){return a.langb.lang?1:0}),b("shaka.player.VideoTrack.compare",p),b("shaka.polyfill.CustomEvent.install",q),b("shaka.polyfill.Fullscreen.install",s),w.prototype.createSession=function(){},w.prototype.setServerCertificate=function(){},x.prototype.getConfiguration=function(){},x.prototype.createMediaKeys=function(){};var $e=0;b("shaka.polyfill.Promise.install",z),y.prototype.then=function(a,b){var c=new y;switch(this.ba){case 1:E(this,c,a);break;case 2:E(this,c,b);break;case $e:this.c.push({Ia:c,Ba:a}),this.b.push({Ia:c,Ba:b})}return c},y.prototype.then=y.prototype.then,y.prototype["catch"]=function(a){return this.then(void 0,a)},y.prototype["catch"]=y.prototype["catch"],y.prototype.W=function(a){if(this.ba==$e){for(this.wa=a,this.ba=1,a=0;ab)){a=Math.max(a,50);var c=8e3*b/a,d=a/1e3;this.a.sample(d,c),this.c.sample(d,c),this.dispatchEvent(Y({type:"bandwidth"})),this.b=Date.now()}},qa.prototype.getBandwidth=function(){return.5>this.a.a?5e5:Math.min(X(this.a),X(this.c))},qa.prototype.getDataAge=function(){return(Date.now()-this.b)/1e3},qa.prototype.supportsCaching=function(){return!1},ra.prototype.destroy=function(){this["catch"](function(){});var a=Error("Destroyed!");a.type="destroy",this.reject(a)},ta.prototype.start=function(){if(this.f)throw Error("Task already started!");this.f=!0,this.b.unshift(function(){}),va(this,void 0)},ta.prototype.end=function(){this.b.splice(1)},c(ya,oa),c(Ha,ya);var gf=1/60;Ma.prototype.destroy=function(){Ra(this)["catch"](function(){}),this.f&&this.f.destroy(),this.a=this.f=null,this.g&&(Aa(this.g),this.g=null),this.b=null,this.i.destroy(),this.v=this.c=this.i=null},Ma.prototype.h=function(){"open"==this.v.readyState&&this.c.abort()},Ma.prototype.B=function(){this.f.resolve(),this.f=null},b("shaka.util.Uint8ArrayUtils.toString",Va),b("shaka.util.Uint8ArrayUtils.fromString",Wa),b("shaka.util.Uint8ArrayUtils.toBase64",function(b,c){var d=void 0==c?!0:c,e=a.btoa(Va(b)).replace(/\+/g,"-").replace(/\//g,"_");return d?e:e.replace(/=*$/,"")}),b("shaka.util.Uint8ArrayUtils.fromBase64",Xa),b("shaka.util.Uint8ArrayUtils.fromHex",function(b){for(var c=new Uint8Array(b.length/2),d=0;d=this.b.length?{value:void 0,done:!0}:{value:this.b[this.a++],done:!1}};var hf;Se=mb.prototype,Se.Ma=function(a){this.size=void 0==a?0:1,this.a=a},Se.Fa=function(){return this.a},Se.entries=function(){var a=hf,b=[];return this.a&&b.push([a,this.a]),new lb(b)},Se.forEach=function(a){this.a&&a(this.a,hf)},Se.get=function(a){return this.has(a)?this.a:void 0},Se.has=function(a){var b=hf;return!(!this.a||!Za(new Uint8Array(a),b))},Se.keys=function(){var a=hf,b=[];return this.a&&b.push(a),new lb(b)},Se.values=function(){var a=[];return this.a&&a.push(this.a),new lb(a)},pb.prototype.createMediaKeys=function(){var a=new rb(this.keySystem);return Promise.resolve(a)},pb.prototype.getConfiguration=function(){return this.a},rb.prototype.createSession=function(a){if("temporary"!=(a||"temporary"))throw new TypeError("Session type "+a+" is unsupported on this platform.");return new tb(this.a)},rb.prototype.setServerCertificate=function(){return Promise.reject(Error("setServerCertificate not supported on this platform."))},c(tb,oa),Se=tb.prototype,Se.generateRequest=function(a,b){this.a=new ra;try{this.c=this.g.createSession("video/mp4",b),la(this.f,this.c,"mskeymessage",this.Db.bind(this)),la(this.f,this.c,"mskeyadded",this.Bb.bind(this)),la(this.f,this.c,"mskeyerror",this.Cb.bind(this)),wb(this,"status-pending")}catch(c){this.a.reject(c)}return this.a},Se.load=function(){return Promise.reject(Error("MediaKeySession.load not yet supported"))},Se.update=function(a){this.b=new ra;try{this.c.update(a)}catch(b){this.b.reject(b)}return this.b},Se.close=function(){try{this.c.close(),this.closed.resolve(),ma(this.f)}catch(a){this.closed.reject(a)}return this.closed},Se.remove=function(){return Promise.reject(Error("MediaKeySession.remove is only applicable for persistent licenses, which are not supported on this platform"))},Se.Db=function(a){this.a&&(this.a.resolve(),this.a=null),a=Y({type:"message",messageType:void 0==this.keyStatuses.Fa()?"licenserequest":"licenserenewal",message:a.message.buffer}),this.dispatchEvent(a)},Se.Bb=function(){this.a?(this.a.resolve(),this.a=null):this.b&&(wb(this,"usable"),this.b.resolve(),this.b=null)},Se.Cb=function(){var a=Error("EME v20140218 key error");if(a.errorCode=this.c.error,null!=this.a)this.a.reject(a),this.a=null;else if(null!=this.b)this.b.reject(a),this.b=null;else switch(this.c.error.code){case MSMediaKeyError.MS_MEDIA_KEYERR_OUTPUT:case MSMediaKeyError.MS_MEDIA_KEYERR_HARDWARECHANGE:wb(this,"output-not-allowed");default:wb(this,"internal-error")}},xb.prototype.next=function(){return this.a>=this.b.length?{value:void 0,done:!0}:{value:this.b[this.a++],done:!1}};var jf;Se=yb.prototype,Se.Ma=function(a){this.size=void 0==a?0:1,this.a=a},Se.Fa=function(){return this.a},Se.entries=function(){var a=jf,b=[];return this.a&&b.push([a,this.a]),new xb(b)},Se.forEach=function(a){this.a&&a(this.a,jf)},Se.get=function(a){return this.has(a)?this.a:void 0},Se.has=function(a){var b=jf;return!(!this.a||!Za(new Uint8Array(a),b))},Se.keys=function(){var a=jf,b=[];return this.a&&b.push(a),new xb(b)},Se.values=function(){var a=[];return this.a&&a.push(this.a),new xb(a)},b("shaka.polyfill.MediaKeys.install",zb),b("shaka.polyfill.installAll",function(){q(),s(),G(),z(),zb()});var kf=/^(?:([^:\/?#.]+):)?(?:\/\/(?:([^\/?#]*)@)?([^\/#?]*?)(?::([0-9]+))?(?=[\/#?]|$))?([^?#]+)?(?:\?([^#]*))?(?:#(.*))?$/;Se=Ab.prototype,Se.P="",Se.ca="",Se.S="",Se.ia=null,Se.O="",Se.aa="",Se.toString=function(){var a=[],b=this.P;if(b&&a.push(Fb(b,lf,!0),":"),b=this.S){a.push("//");var c=this.ca;c&&a.push(Fb(c,lf,!0),"@"),a.push(encodeURIComponent(b).replace(/%25([0-9a-fA-F]{2})/g,"%$1")),b=this.ia,null!=b&&a.push(":",String(b))}return(b=this.O)&&(this.S&&"/"!=b.charAt(0)&&a.push("/"),a.push(Fb(b,"/"==b.charAt(0)?nf:mf,!0))),(b=this.a.toString())&&a.push("?",b),(b=this.aa)&&a.push("#",Fb(b,pf)),a.join("")},Se.resolve=function(a){var b=this.clone();"data"===b.P&&(b=new Ab);var c=!!a.P;c?Bb(b,a.P):c=!!a.ca,c?b.ca=a.ca:c=!!a.S,c?b.S=a.S:c=null!=a.ia;var d=a.O;if(c)Cb(b,a.ia);else if(c=!!a.O){if("/"!=d.charAt(0))if(this.S&&!this.O)d="/"+d;else{var e=b.O.lastIndexOf("/");-1!=e&&(d=b.O.substr(0,e+1)+d)}if(".."==d||"."==d)d="";else if(-1!=d.indexOf("./")||-1!=d.indexOf("/.")){for(var e=0==d.lastIndexOf("/",0),d=d.split("/"),f=[],g=0;g=this.a.status?(this.c.resolve(this.a),uc(this)):this.hh;h++){var n=N(g);l=(2147483648&n)>>>31;var i=2147483647&n,o=N(g);if(N(g),1==l){e=null;break a}var p=new zc(d,c,b,b+i-1);f.push(new Kc(a/j,(a+o)/j,p)),a+=o,b+=i}e=f}}}}catch(q){if(!(q instanceof RangeError))throw q}return e},Pc.prototype.destroy=function(){this.o=null},Se=Pc.prototype,Se.length=function(){return this.o.length},Se.A=function(){if(0==this.o.length)throw new RangeError("SegmentIndex: There is no last SegmentReference.");return this.o[this.o.length-1]},Se.get=function(a){if(0>a||a>=this.o.length)throw new RangeError("SegmentIndex: The specified index is out of range.");return this.o[a]},Se.la=function(a){return a=Mc(this.o,a),a>=0?this.o[a]:null},Se.Ha=function(a){return Rc(this,a),!0},Se.ka=function(a){var b=a-this.i;return 0==b?0:(this.o=Nc(this.o,b),this.i=a,b)},Se.Ea=function(){return 0f;++f){var g=a.a[f],h=c/a.f,i=null,j=null;a.b?(i=c+a.b,j=i/a.f):0=(this.u?Math.max(this.B,this.L):this.B)?(ld(this),od(this,1e3/(Math.abs(this.c.playbackRate)||1))):(b=kd(this,c,b))?(b=Oa(this.a,b,a.c,this.w),this.w=null,this.K&&(this.K=!1,md(this,a)),this.j=!1,b.then(xa(this,function(a){null==this.i&&(this.i=a),this.F&&0=0){var C=new zc(d,c,f,B-1);a.push(new Kc(o,A,C))}o=A,f=B}}}o>=0&&(C=new zc(d,c,f,null),a.push(new Kc(o,null,C))),e=a}}else e=null}catch(D){if(!(D instanceof RangeError))throw D}return e},td.prototype.destroy=function(){this.h=this.i=this.g=null,this.a.g(),this.a=null,this.c&&(this.c.g(),this.c=null),this.b=null},td.prototype.create=function(){if(this.b)return this.b;var a=[Bc(this.a)];return"webm"==this.f&&a.push(Bc(this.c)),this.b=Promise.all(a).then(xa(this,function(a){var b=a[0];a=a[1]||null;var c=null;if("mp4"==this.f?(c=new Oc,c=c.parse(new DataView(b),this.a.f,this.a.b,this.h)):"webm"==this.f&&(c=new sd,c=c.parse(new DataView(b),new DataView(a),this.a.b,this.h)),!c)return b=Error("Failed to parse SegmentReferences from "+this.a.toString()+" (or one of its fallbacks)."),b.type="stream",Promise.reject(b);var d;return d="dynamic"==this.g.type?new Sc(c,this.g,this.i,this.j):new Pc(c),Promise.resolve(d)}))},c(Kd,ya),Kd.prototype.g=function(a,b,c){var d=new ra;a={stream_id:c.qa,mime_type:a.a,codecs:a.b,init_segment:b,references:c.o};var e=Da(this).put(a);return e.onsuccess=function(){d.resolve(c.qa)},e.onerror=function(){d.reject(e.error)},d},Kd.prototype.f=function(a,b){for(var c=Promise.resolve(),d=0;dthis.l&&(this.a.playbackRate=0,this.B(this.a.currentTime,Date.now(),this.l)),this.h&&ge(this)},Se.Eb=function(){g("playing");var a=h("playing");if(!isNaN(a)){var b=this.g;b.playTime+=a/1e3}de(this)},Se.Hb=function(a){this.F=a.start},Se.qb=function(){if(!this.a.paused){g("playing");var a=h("playing");if(!isNaN(a)){var b=this.g;b.playTime+=a/1e3,f("playing")}}return a=this.g,b=this.a,b.getVideoPlaybackQuality&&(b=b.getVideoPlaybackQuality(),a.decodedFrames=b.totalVideoFrames,a.droppedFrames=b.droppedVideoFrames),this.g},ae.prototype.getStats=ae.prototype.qb,ae.prototype.da=function(){return this.b?this.b.ma():[]},ae.prototype.getVideoTracks=ae.prototype.da,ae.prototype.Y=function(){return this.b?this.b.pa():[]},ae.prototype.getAudioTracks=ae.prototype.Y,ae.prototype.$=function(){return this.b?this.b.Oa():[]},ae.prototype.getTextTracks=ae.prototype.$,ae.prototype.selectVideoTrack=function(a,b){return this.b?this.b.selectVideoTrack(a,void 0==b?!0:b):!1},ae.prototype.selectVideoTrack=ae.prototype.selectVideoTrack,ae.prototype.M=function(a,b){return this.b?this.b.nb(a,void 0==b?!0:b):!1},ae.prototype.selectAudioTrack=ae.prototype.M,ae.prototype.fa=function(a){return this.b?this.b.ob(a,!1):!1},ae.prototype.selectTextTrack=ae.prototype.fa,ae.prototype.V=function(a){this.b&&this.b.Na(a)},ae.prototype.enableTextTrack=ae.prototype.V,ae.prototype.T=function(a){de(this),a>=0?this.a.playbackRate=a:this.a.paused||(this.a.playbackRate=0,this.B(this.a.currentTime,Date.now(),a)),this.l=a},ae.prototype.setPlaybackRate=ae.prototype.T,ae.prototype.K=function(){return this.l},ae.prototype.getPlaybackRate=ae.prototype.K,ae.prototype.R=function(a){this.G=a},ae.prototype.setPlaybackStartTime=ae.prototype.R,ae.prototype.I=function(){return this.b?this.b.mb():!1},ae.prototype.isLive=ae.prototype.I,ae.prototype.U=function(a){if(a){var b=ba(a,"enableAdaptation");null!=b&&(this.c.enableAdaptation=b),b=ca(a,"streamBufferSize"),null!=b&&(this.c.streamBufferSize=b),b=ca(a,"liveStreamEndTimeout"),null!=b&&(this.c.liveStreamEndTimeout=b),b=ca(a,"licenseRequestTimeout"),null!=b&&(this.c.licenseRequestTimeout=b),b=ca(a,"mpdRequestTimeout"),null!=b&&(this.c.mpdRequestTimeout=b),b=ca(a,"segmentRequestTimeout"),null!=b&&(this.c.segmentRequestTimeout=b),b=da(a,"preferredLanguage"),null!=b&&(this.c.preferredLanguage=b),b=fa(a,"restrictions",j),null!=b&&(this.c.restrictions=b.clone()),a=ba(a,"disableCacheBustingEvenThoughItMayAffectBandwidthEstimation"),null!=a&&(qf=!a),this.b&&this.b.T(this.c)}},ae.prototype.configure=ae.prototype.U,ae.prototype.Z=function(){return this.c},ae.prototype.getConfiguration=ae.prototype.Z,ae.prototype.B=function(b,c,d){this.i=null;var e=(Date.now()-c)/1e3*d;this.a.currentTime=c||this.a.currentTime>=c;this.h?(c=this.b.ab(),(b||a>c)&&(ge(this),this.a.play())):!this.a.paused&&!b&&.5>a&&(this.h=!0,this.a.pause(),this.g.bufferingHistory.push(J()/1e3),f("buffering"),this.dispatchEvent(Y({type:"bufferingStart"})))}};var tf={2:"A network failure occured while loading media content.",3:"The browser failed to decode the media content.",4:"The browser does not support the media content."};ke.prototype.destroy=function(){this.a.destroy(),this.a=null},ke.prototype.update=function(a){var b=le(a),c=le(this.a);return Promise.all([b,c]).then(xa(this,function(b){var c=b[0];b=b[1];var d=this.a.a;return he(d),ie(d),a.f=this.a.f,a.g=this.a.g?this.a.g.clone():null,a.c=this.a.c,d=[],me(a,this.a,c,b,d),c=a.a,he(c),ie(c),Promise.resolve(d)}))},b("shaka.media.SimpleAbrManager",qe),qe.prototype.destroy=function(){this.f.destroy(),this.a=this.b=this.f=null},qe.prototype.initialize=function(a,b){this.b||this.a||(this.b=a,this.a=b)},qe.prototype.start=function(){this.b&&this.a&&!this.g&&(this.c=Date.now()+4e3,la(this.f,this.b,"bandwidth",this.v.bind(this)),la(this.f,this.a,"adaptation",this.j.bind(this)),la(this.f,this.a,"trackschanged",this.h.bind(this)),this.g=!0)},qe.prototype.enable=function(a){this.i=a},qe.prototype.getInitialVideoTrackId=function(){if(!this.b||!this.a)return null;var a=re(this);return a?a.id:null},qe.prototype.selectVideoTrack=function(a,b,c){this.g&&this.a.selectVideoTrack(a.id,b,c)},qe.prototype.v=function(){Date.now()=this.F-.01&&a<=this.F+.01)return void(this.F=null);this.F=null}var b=Ke(this,Je(this));if(b){var c=b.end;if((b=Ie(this,a,b.start,c))||(c+.01>=a?b=!1:(this.f.currentTime=c,b=!0)),!b)for(var d in this.c)this.c[d].kb()}},Se.Kb=function(){if(!this.a.b){for(var a in this.c)if(!this.c[a].Ga())return;this.$a()}},Se.wb=function(){aa(this.c).every(function(a){return a.Ga()})&&(this.w=a.setTimeout(this.$a.bind(this),1e3*this.Ua))},Se.vb=function(){null!=this.w&&(a.clearTimeout(this.w),this.w=null)},Se.Wb=function(){var a=this.U,b=this.Z.getBandwidth();a.estimatedBandwidth=b,a.bandwidthHistory.push(new Jd(b))},Se.$a=function(){this.w=null,this.g.endOfStream()},c(Ne,te),b("shaka.player.DashVideoSource",Ne),Ne.prototype.Aa=function(a,b,c){this.R.push(a),this.ga.push(b||""),this.ta.push(c||"")},Ne.prototype.addExternalCaptions=Ne.prototype.Aa,Ne.prototype.xa=function(a){this.j=a},Ne.prototype.setNetworkCallback=Ne.prototype.xa,Ne.prototype.destroy=function(){this.l=this.j=this.M=null,te.prototype.destroy.call(this)},Ne.prototype.X=function(){var a=new zc(this.j,[new Ab(this.za)]);return Ec(new Dc(a,this.da)).then(xa(this,function(a){this.l=a;for(var b=0;be.indexOf(a.a.split("/")[0]))}),a=i.map(function(a){return a.D.create()}),Promise.all(a)})).then(xa(this,function(a){for(var b=i,c=[],d=0;d0&&I.seekTo(0),v()}this.state=e.IDLE,c.extend(this,h);var F,G=this,H=window.YT,I=null,J=document.createElement("div"),K=-1,L=!1,M=null,N=null,O=-1,P=-1,Q=!1,R=k;this.setState=function(a){clearInterval(O),a!==e.IDLE&&a!==e.COMPLETE&&(O=setInterval(q,250),a===e.PLAYING?this.seeking=!1:a!==e.LOADING&&a!==e.STALLED||t()),g.setState.apply(this,arguments)},!H&&j&&j.getStatus()===f.loaderstatus.NEW&&(j.on(d.COMPLETE,m),j.on(d.ERROR,n),j.load()),J.id=i+"_youtube",this.init=function(a){E(a)},this.destroy=function(){this.remove(),this.off(),F=J=H=G=null},this.load=function(a){this.setState(e.LOADING),E(a),G.play()},this.stop=function(){D(),this.setState(e.IDLE)},this.play=function(){R||(I&&I.playVideo?I.playVideo():N=N?w(this.play,N):this.play)},this.pause=function(){R||I.pauseVideo&&I.pauseVideo()},this.seek=function(a){R||I.seekTo&&(this.seeking=!0,I.seekTo(a))},this.volume=function(a){if(c.isNumber(a)){var b=Math.min(Math.max(0,a),100);I&&I.getVolume&&I.setVolume(b)}},this.mute=function(b){var c=a.exists(b)?!!b:!l.mute;I&&I.mute&&(c?I.mute():I.unMute())},this.detachMedia=function(){return null},this.attachMedia=function(){Q&&(this.setState(e.COMPLETE),this.trigger(d.JWPLAYER_MEDIA_COMPLETE),Q=!1)},this.setContainer=function(a){F=a,a.appendChild(J),this.setVisibility(!0)},this.getContainer=function(){return F},this.remove=function(){D(),J&&F&&F===J.parentNode&&F.removeChild(J),M=N=I=null},this.setVisibility=function(a){a=!!a,a?(b.style(J,{display:"block"}),b.style(F,{visibility:"visible",opacity:1})):k||b.style(F,{opacity:0})},this.resize=function(){return!1},this.checkComplete=function(){return Q},this.getCurrentQuality=function(){if(!I)return-1;if(I.getAvailableQualityLevels){var a=I.getPlaybackQuality(),b=I.getAvailableQualityLevels();return b.indexOf(a)}return-1},this.getQualityLevels=function(){if(I){if(!c.isFunction(I.getAvailableQualityLevels))return[];var a=I.getAvailableQualityLevels();if(2===a.length&&c.contains(a,"auto"))return{label:c.without(a,"auto")};var b=c.map(a,function(a){return{label:a}});return b.reverse()}},this.setCurrentQuality=function(a){if(I&&I.getAvailableQualityLevels){var b=I.getAvailableQualityLevels();if(b.length){var c=b[b.length-a-1];I.setPlaybackQuality(c)}}},this.getName=function(){return{name:"youtube"}}}var j=new f(window.location.protocol+"//www.youtube.com/iframe_api"),k=a.isMobile();return i.getName=function(){return{name:"youtube"}},{register:function(a){a.api.registerProvider(i)}}}.apply(b,d),!(void 0!==e&&(a.exports=e))}}); \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/beelden.css b/server/webplatform/www/jwplayer/skins/beelden.css new file mode 100644 index 0000000..5db5a81 --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/beelden.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-beelden .jw-background-color{background:rgba(0,0,0,0.5)}.jw-skin-beelden .jw-controlbar{background:linear-gradient(to bottom,#6c6c6c 0,#444 100%)}.jw-skin-beelden .jw-text{color:#c7c7c7}.jw-skin-beelden .jw-tooltip-title{color:#c7c7c7}.jw-skin-beelden .jw-knob{color:#c7c7c7}.jw-skin-beelden .jw-button-color{color:#c7c7c7}.jw-skin-beelden .jw-button-color:hover{color:#fff}.jw-skin-beelden .jw-toggle{color:#fff}.jw-skin-beelden .jw-toggle.jw-off{color:#c7c7c7}.jw-skin-beelden .jw-option{color:#c7c7c7}.jw-skin-beelden .jw-option.jw-active-option{color:#fff}.jw-skin-beelden .jw-icon-display{color:#c7c7c7}.jw-skin-beelden .jw-display-icon-container{border-radius:.5em}.jw-skin-beelden .jw-display-icon-container:hover{background:#6c6c6c}.jw-skin-beelden .jw-display-icon-container:hover .jw-icon-display{color:#fff}.jw-skin-beelden .jw-rail{background:linear-gradient(to bottom,#353535 0,#434343 100%)}.jw-skin-beelden .jw-buffer{background:linear-gradient(to bottom,#7d7d7d 0,#868686 100%)}.jw-skin-beelden .jw-progress{background:linear-gradient(to bottom,#c93835 0,#b22021 50%,#803637 100%)}.jw-skin-beelden .jw-slider-horizontal{background:linear-gradient(to bottom,#6c6c6c 0,#444 100%)}.jw-skin-beelden .jw-slider-horizontal .jw-knob{margin-left:-0.325em}.jw-skin-beelden .jw-slider-vertical .jw-knob{margin-bottom:-0.325em}.jw-skin-beelden .jw-time-tip,.jw-skin-beelden .jw-volume-tip,.jw-skin-beelden .jw-menu{background:rgba(0,0,0,0.5);border:1px solid #000;padding:.4em}.jw-skin-beelden .jw-skip{background:linear-gradient(to bottom,#6c6c6c 0,#444 100%);padding:.4em}.jw-skin-beelden .jw-skip .jw-skip-icon{color:#c7c7c7}.jw-skin-beelden .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-beelden .jw-skip.jw-skippable:hover .jw-text{color:#fff}.jw-skin-beelden .jw-time-tip .jw-text,.jw-skin-beelden .jw-dock-button .jw-text{color:#bbb}.jw-skin-beelden .jw-time-tip{bottom:1em}.jw-skin-beelden .jw-dock-button{background:rgba(0,0,0,0.5);border-radius:.5em}.jw-skin-beelden .jw-dock-button:hover{background:#6c6c6c}.jw-skin-beelden .jw-playlist-container{padding:0}.jw-skin-beelden .jw-icon-inline,.jw-skin-beelden .jw-icon-tooltip,.jw-skin-beelden .jw-text-elapsed,.jw-skin-beelden .jw-text-duration{padding:0 .25em}.jw-skin-beelden .jw-controlbar{display:inline-block;width:96%;max-width:50em;margin:0 auto;bottom:.7em;left:2%;right:2%}.jw-skin-beelden.jw-flag-audio-player .jw-controlbar{bottom:0}.jw-skin-beelden .jw-controlbar,.jw-skin-beelden .jw-skip{box-shadow:inset 0 7px 1px -5px #808080;border-radius:.3em}.jw-skin-beelden .jw-icon-playback{padding-left:0}.jw-skin-beelden .jw-icon-playback:before{background-color:#333;background:linear-gradient(to bottom,#333,#333 50%,#2e2e2e 50%,#2e2e2e);background-size:100% 2px;border-radius:.3em;padding:.2em .7em;box-shadow:inset 0 0 1px 0 rgba(0,0,0,0.6);border:1px solid #000;box-sizing:border-box}.jw-skin-beelden.jw-state-playing .jw-icon-playback:before{padding-right:.8em}.jw-skin-beelden .jw-playlist-container{left:-45%;background-color:#282828;bottom:.5em}.jw-skin-beelden .jw-playlist-container .jw-option{border-bottom:1px solid #000;background-color:#282828;color:#b6b6b6}.jw-skin-beelden .jw-playlist-container .jw-option:hover,.jw-skin-beelden .jw-playlist-container .jw-option.jw-active-option{color:#c93835;background-color:black}.jw-skin-beelden .jw-playlist-container ::-webkit-scrollbar-track{background-color:#000}.jw-skin-beelden .jw-playlist-container ::-webkit-scrollbar{border:10px solid #282828;border-radius:.25em}.jw-skin-beelden .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:#b6b6b6}.jw-skin-beelden .jw-tooltip-title{border-bottom:1px solid #000;background-color:#282828}.jw-skin-beelden .jw-rail,.jw-skin-beelden .jw-progress,.jw-skin-beelden .jw-buffer{border-radius:.5em;border:1px solid #000}.jw-skin-beelden .jw-rail{background-color:#353535}.jw-skin-beelden .jw-progress{background-color:#c93835}.jw-skin-beelden .jw-buffer{background-color:#7d7d7d;box-shadow:inset 0 -2px 4px -1px rgba(255,255,255,0.5)}.jw-skin-beelden .jw-knob{background-color:#bbb5b7;box-shadow:inset 0 0 5px 0 rgba(255,255,255,0.5);border:1px solid #000;border-radius:50%}.jw-skin-beelden .jw-slider-horizontal{background:transparent}.jw-skin-beelden .jw-slider-horizontal .jw-slider-container{top:-0.75em;height:.4em}.jw-skin-beelden .jw-slider-horizontal .jw-rail,.jw-skin-beelden .jw-slider-horizontal .jw-progress,.jw-skin-beelden .jw-slider-horizontal .jw-buffer{height:.5em}.jw-skin-beelden .jw-slider-horizontal .jw-cue{top:.15em;background-color:#fff;width:.2em;height:.2em;border-radius:1em}.jw-skin-beelden .jw-slider-horizontal .jw-knob{top:-0.15000000000000002em;box-sizing:border-box;width:.8em;height:.8em}.jw-skin-beelden .jw-slider-vertical{bottom:5px}.jw-skin-beelden .jw-slider-vertical .jw-rail,.jw-skin-beelden .jw-slider-vertical .jw-progress{width:.4em}.jw-skin-beelden .jw-slider-vertical .jw-rail{background:rgba(0,0,0,0.5)}.jw-skin-beelden .jw-slider-vertical .jw-progress{background:linear-gradient(to right,#c93835 0,#b22021 50%,#803637 100%)}.jw-skin-beelden .jw-slider-vertical .jw-knob{width:.7em;height:.7em}.jw-skin-beelden .jw-display-icon-container{border:1px solid #000;box-shadow:inset 0 0 2px 1px rgba(255,255,255,0.3)}.jw-skin-beelden .jw-time-tip,.jw-skin-beelden .jw-volume-tip,.jw-skin-beelden .jw-menu,.jw-skin-beelden .jw-dock-button,.jw-skin-beelden .jw-skip{border-radius:.25em}.jw-skin-beelden .jw-toggle{color:#fff}.jw-skin-beelden .jw-toggle.jw-off{color:#7d7d7d} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/bekle.css b/server/webplatform/www/jwplayer/skins/bekle.css new file mode 100644 index 0000000..1098b68 --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/bekle.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-bekle .jw-background-color{background:linear-gradient(to bottom,#323b4c,#2f3847 50%,#323b4c 100%)}.jw-skin-bekle .jw-controlbar{background:rgba(24,35,53,0.8)}.jw-skin-bekle .jw-text{color:#fff}.jw-skin-bekle .jw-tooltip-title{color:#fff}.jw-skin-bekle .jw-knob{color:#fff}.jw-skin-bekle .jw-button-color{color:#fff}.jw-skin-bekle .jw-button-color:hover{color:#139ed5}.jw-skin-bekle .jw-toggle{color:#139ed5}.jw-skin-bekle .jw-toggle.jw-off{color:#fff}.jw-skin-bekle .jw-option{color:#fff}.jw-skin-bekle .jw-option.jw-active-option{color:#139ed5}.jw-skin-bekle .jw-icon-display{color:#fff}.jw-skin-bekle .jw-display-icon-container{border-radius:.5em}.jw-skin-bekle .jw-display-icon-container:hover{background:#139ed5}.jw-skin-bekle .jw-display-icon-container:hover .jw-icon-display{color:#fff}.jw-skin-bekle .jw-rail{background:linear-gradient(to bottom,#323b4c,#2f3847 50%,#323b4c 100%)}.jw-skin-bekle .jw-buffer{background:linear-gradient(to bottom,#5e6575,#565e6b 50%,#5e6575 100%)}.jw-skin-bekle .jw-progress{background:linear-gradient(to bottom,#15b2f0,#149bd1 50%,#15b2f0 100%)}.jw-skin-bekle .jw-slider-horizontal{background:rgba(24,35,53,0.8)}.jw-skin-bekle .jw-slider-horizontal .jw-knob{margin-left:-0.325em}.jw-skin-bekle .jw-slider-vertical .jw-knob{margin-bottom:-0.325em}.jw-skin-bekle .jw-time-tip,.jw-skin-bekle .jw-volume-tip,.jw-skin-bekle .jw-menu{background:rgba(80,88,99,0.9);border:0;padding:.5em}.jw-skin-bekle .jw-skip{background:rgba(24,35,53,0.8);padding:.5em}.jw-skin-bekle .jw-skip .jw-skip-icon{color:#fff}.jw-skin-bekle .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-bekle .jw-skip.jw-skippable:hover .jw-text{color:#139ed5}.jw-skin-bekle .jw-time-tip .jw-text,.jw-skin-bekle .jw-dock-button .jw-text{color:#bbb}.jw-skin-bekle .jw-time-tip{bottom:1em}.jw-skin-bekle .jw-dock-button{background:linear-gradient(to bottom,#323b4c,#2f3847 50%,#323b4c 100%);border-radius:.5em}.jw-skin-bekle .jw-dock-button:hover{background:#139ed5}.jw-skin-bekle .jw-playlist-container{padding:0}.jw-skin-bekle .jw-icon-inline,.jw-skin-bekle .jw-icon-tooltip,.jw-skin-bekle .jw-text-elapsed,.jw-skin-bekle .jw-text-duration{padding:0 .25em}.jw-skin-bekle .jw-controlbar{display:inline-block;width:96%;max-width:50em;margin:0 auto;bottom:.7em;left:2%;right:2%}.jw-skin-bekle.jw-flag-audio-player .jw-controlbar{bottom:0}.jw-skin-bekle .jw-controlbar{border-radius:.3em}.jw-skin-bekle .jw-playlist-container{left:-42%;overflow:hidden;bottom:.2em}.jw-skin-bekle .jw-playlist-container .jw-option{border-bottom:1px solid rgba(24,35,53,0.8)}.jw-skin-bekle .jw-playlist-container .jw-option:hover,.jw-skin-bekle .jw-playlist-container .jw-option.jw-active-option{background-color:rgba(24,35,53,0.8);color:#139ed5}.jw-skin-bekle .jw-playlist-container ::-webkit-scrollbar-track{background-color:#222c37}.jw-skin-bekle .jw-playlist-container ::-webkit-scrollbar{width:2px;border:10px solid rgba(24,35,53,0.8);border-radius:.3em}.jw-skin-bekle .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:#fff}.jw-skin-bekle .jw-tooltip-title{border-bottom:1px solid rgba(24,35,53,0.8);background-color:rgba(24,35,53,0.8)}.jw-skin-bekle .jw-slider-horizontal .jw-rail,.jw-skin-bekle .jw-slider-vertical .jw-rail,.jw-skin-bekle .jw-slider-horizontal .jw-progress,.jw-skin-bekle .jw-slider-vertical .jw-progress,.jw-skin-bekle .jw-slider-horizontal .jw-buffer,.jw-skin-bekle .jw-slider-vertical .jw-buffer{border-radius:.5em}.jw-skin-bekle .jw-slider-horizontal .jw-knob,.jw-skin-bekle .jw-slider-vertical .jw-knob{background-color:#fff;width:.7em;height:.7em;border-radius:50%}.jw-skin-bekle .jw-slider-horizontal{background:transparent}.jw-skin-bekle .jw-slider-horizontal .jw-rail,.jw-skin-bekle .jw-slider-horizontal .jw-progress,.jw-skin-bekle .jw-slider-horizontal .jw-buffer{height:.3em}.jw-skin-bekle .jw-slider-horizontal .jw-cue{top:.04999999999999999em;background-color:#fff;width:.2em;height:.2em;border-radius:1em}.jw-skin-bekle .jw-slider-horizontal .jw-knob{top:-0.19999999999999998em}.jw-skin-bekle .jw-slider-vertical .jw-rail,.jw-skin-bekle .jw-slider-vertical .jw-progress{width:.3em}.jw-skin-bekle .jw-slider-vertical .jw-rail{background:linear-gradient(to right,#323b4c,#2f3847 50%,#323b4c 100%)}.jw-skin-bekle .jw-slider-vertical .jw-progress{background:linear-gradient(to right,#15b2f0,#149bd1 50%,#15b2f0 100%)}.jw-skin-bekle .jw-time-tip,.jw-skin-bekle .jw-volume-tip,.jw-skin-bekle .jw-menu,.jw-skin-bekle .jw-skip{border-radius:.3em}.jw-skin-bekle .jw-volume-tip,.jw-skin-bekle .jw-menu{bottom:.2em} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/five.css b/server/webplatform/www/jwplayer/skins/five.css new file mode 100644 index 0000000..495ef99 --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/five.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-five .jw-background-color{background:rgba(51,51,51,0.7)}.jw-skin-five .jw-controlbar{background:rgba(238,238,238,0.8)}.jw-skin-five .jw-text{color:#464646}.jw-skin-five .jw-tooltip-title{color:#464646}.jw-skin-five .jw-knob{color:#464646}.jw-skin-five .jw-button-color{color:#464646}.jw-skin-five .jw-button-color:hover{color:#000}.jw-skin-five .jw-toggle{color:#000}.jw-skin-five .jw-toggle.jw-off{color:#464646}.jw-skin-five .jw-option{color:#464646}.jw-skin-five .jw-option.jw-active-option{color:#000}.jw-skin-five .jw-icon-display{color:rgba(238,238,238,0.8)}.jw-skin-five .jw-display-icon-container{border-radius:.5em}.jw-skin-five .jw-display-icon-container:hover{background:#333}.jw-skin-five .jw-display-icon-container:hover .jw-icon-display{color:#fff}.jw-skin-five .jw-rail{background:#b8b6b7}.jw-skin-five .jw-buffer{background:#9c9a9d}.jw-skin-five .jw-progress{background:#000}.jw-skin-five .jw-slider-horizontal{background:rgba(238,238,238,0.8)}.jw-skin-five .jw-slider-horizontal .jw-knob{margin-left:-0.5em}.jw-skin-five .jw-slider-vertical .jw-knob{margin-bottom:-0.5em}.jw-skin-five .jw-time-tip,.jw-skin-five .jw-volume-tip,.jw-skin-five .jw-menu{background:#333;border:0;padding:.5em}.jw-skin-five .jw-skip{background:rgba(238,238,238,0.8);padding:.5em}.jw-skin-five .jw-skip .jw-skip-icon{color:#464646}.jw-skin-five .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-five .jw-skip.jw-skippable:hover .jw-text{color:#000}.jw-skin-five .jw-time-tip .jw-text,.jw-skin-five .jw-dock-button .jw-text{color:#bbb}.jw-skin-five .jw-time-tip{bottom:1em}.jw-skin-five .jw-dock-button{background:rgba(51,51,51,0.7);border-radius:.5em}.jw-skin-five .jw-dock-button:hover{background:#333}.jw-skin-five .jw-playlist-container{padding:0}.jw-skin-five .jw-icon-inline,.jw-skin-five .jw-icon-tooltip,.jw-skin-five .jw-text-elapsed,.jw-skin-five .jw-text-duration{padding:0 .25em}.jw-skin-five .jw-display-icon-container{border-radius:0}.jw-skin-five .jw-option{color:#bbb}.jw-skin-five .jw-option:hover,.jw-skin-five .jw-option.jw-active-option{color:#fff}.jw-skin-five .jw-playlist-container{left:-42%;background-color:#fff}.jw-skin-five .jw-playlist-container .jw-option{border-bottom:1px solid #ececec;background-color:#fff;margin-right:8px;color:#464646}.jw-skin-five .jw-playlist-container .jw-option:hover,.jw-skin-five .jw-playlist-container .jw-option.jw-active-option{background-color:#ececec;color:#000}.jw-skin-five .jw-playlist-container .jw-option:hover{color:#000}.jw-skin-five .jw-playlist-container .jw-label .jw-icon-play{color:#000}.jw-skin-five .jw-playlist-container ::-webkit-scrollbar-track{background-color:#ececec}.jw-skin-five .jw-playlist-container ::-webkit-scrollbar{width:2px;border:10px solid #fff}.jw-skin-five .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:#000}.jw-skin-five .jw-tooltip-title{border-bottom:1px solid #000;background-color:#ececec}.jw-skin-five .jw-slider-horizontal{background:transparent}.jw-skin-five .jw-slider-horizontal .jw-slider-container{height:.9em}.jw-skin-five .jw-slider-horizontal .jw-rail,.jw-skin-five .jw-slider-horizontal .jw-buffer,.jw-skin-five .jw-slider-horizontal .jw-progress{height:.2em;border-radius:0}.jw-skin-five .jw-slider-horizontal .jw-rail{box-shadow:none}.jw-skin-five .jw-slider-horizontal .jw-knob{top:-0.4em;margin:0;background-color:#000;border-radius:0;width:1px;height:1em}.jw-skin-five .jw-slider-horizontal .jw-cue{top:-0.1em;width:.1em;height:.4em;background-color:#000;border-left:1px solid #fff;border-right:1px solid #fff}.jw-skin-five .jw-slider-vertical .jw-rail,.jw-skin-five .jw-slider-vertical .jw-progress{width:.2em}.jw-skin-five .jw-slider-vertical .jw-progress{background:#fff}.jw-skin-five .jw-slider-vertical .jw-rail{background:#737373}.jw-skin-five .jw-slider-vertical .jw-knob{margin-bottom:-1px;width:.6em;background:linear-gradient(to bottom,#fff 0,#fff 30%,#333 100%);border-radius:0;height:2px;width:100%}.jw-skin-five .jw-dock-button{border-radius:0} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/glow.css b/server/webplatform/www/jwplayer/skins/glow.css new file mode 100644 index 0000000..8e3556c --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/glow.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-glow .jw-background-color{background:rgba(51,51,51,0.8)}.jw-skin-glow .jw-background-color{background:#333}.jw-skin-glow .jw-controlbar{background:rgba(19,20,21,0.8)}.jw-skin-glow .jw-text{color:#fff}.jw-skin-glow .jw-tooltip-title{color:#fff}.jw-skin-glow .jw-knob{color:#fff}.jw-skin-glow .jw-button-color{color:#fff}.jw-skin-glow .jw-button-color:hover{color:#fff}.jw-skin-glow .jw-toggle{color:#fff}.jw-skin-glow .jw-toggle.jw-off{color:#fff}.jw-skin-glow .jw-option{color:#fff}.jw-skin-glow .jw-option.jw-active-option{color:#fff}.jw-skin-glow .jw-icon-display{color:#fff}.jw-skin-glow .jw-display-icon-container{border-radius:.5em}.jw-skin-glow .jw-display-icon-container:hover{background:#4d4d4d}.jw-skin-glow .jw-display-icon-container:hover .jw-icon-display{color:#fff}.jw-skin-glow .jw-rail{background:#2a2c2e}.jw-skin-glow .jw-buffer{background:#3b3d41}.jw-skin-glow .jw-progress{background:#fff}.jw-skin-glow .jw-slider-horizontal{background:rgba(19,20,21,0.8)}.jw-skin-glow .jw-slider-horizontal .jw-knob{margin-left:-0.325em}.jw-skin-glow .jw-slider-vertical .jw-knob{margin-bottom:-0.325em}.jw-skin-glow .jw-time-tip,.jw-skin-glow .jw-volume-tip,.jw-skin-glow .jw-menu{background:#333;border:0;padding:.5em}.jw-skin-glow .jw-skip{background:rgba(19,20,21,0.8);padding:.5em}.jw-skin-glow .jw-skip .jw-skip-icon{color:#fff}.jw-skin-glow .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-glow .jw-skip.jw-skippable:hover .jw-text{color:#fff}.jw-skin-glow .jw-time-tip .jw-text,.jw-skin-glow .jw-dock-button .jw-text{color:#bbb}.jw-skin-glow .jw-time-tip{bottom:1em}.jw-skin-glow .jw-dock-button{background:#333;border-radius:.5em}.jw-skin-glow .jw-dock-button:hover{background:#4d4d4d}.jw-skin-glow .jw-playlist-container{padding:0}.jw-skin-glow .jw-icon-inline,.jw-skin-glow .jw-icon-tooltip,.jw-skin-glow .jw-text-elapsed,.jw-skin-glow .jw-text-duration{padding:0 .25em}.jw-skin-glow .jw-time-tip,.jw-skin-glow .jw-volume-tip,.jw-skin-glow .jw-menu,.jw-skin-glow .jw-skip{border-radius:.25em}.jw-skin-glow .jw-volume-tip,.jw-skin-glow .jw-menu{bottom:.3em}.jw-skin-glow .jw-playlist-container{left:-42%;bottom:0;border-radius:0}.jw-skin-glow .jw-playlist-container .jw-option{border-bottom:1px solid #000;color:#fff}.jw-skin-glow .jw-playlist-container .jw-option:hover,.jw-skin-glow .jw-playlist-container .jw-option.jw-active-option{background-color:rgba(19,20,21,0.8);color:#fff}.jw-skin-glow .jw-playlist-container ::-webkit-scrollbar-track{background-color:#000}.jw-skin-glow .jw-playlist-container ::-webkit-scrollbar{border:10px solid #3b3d41}.jw-skin-glow .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:#fff}.jw-skin-glow .jw-tooltip-title{border-bottom:1px solid #000;background-color:#3b3d41}.jw-skin-glow .jw-rail,.jw-skin-glow .jw-buffer,.jw-skin-glow .jw-progress{border-radius:.5em}.jw-skin-glow .jw-knob{display:none}.jw-skin-glow .jw-slider-horizontal{background:transparent}.jw-skin-glow .jw-slider-horizontal .jw-cue{top:.07500000000000001em;background-color:#000;width:.25em;height:.25em;border-radius:1em}.jw-skin-glow .jw-slider-vertical{bottom:5px}.jw-skin-glow .jw-slider-vertical .jw-rail{background-color:#141516}.jw-skin-glow .jw-slider-vertical .jw-rail,.jw-skin-glow .jw-slider-vertical .jw-progress{width:.4em} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/roundster.css b/server/webplatform/www/jwplayer/skins/roundster.css new file mode 100644 index 0000000..dfb54af --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/roundster.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-roundster .jw-background-color{background:#8490a0}.jw-skin-roundster .jw-controlbar{background:#dfe2e9}.jw-skin-roundster .jw-text{color:#8490a0}.jw-skin-roundster .jw-tooltip-title{color:#8490a0}.jw-skin-roundster .jw-knob{color:#8490a0}.jw-skin-roundster .jw-button-color{color:#8490a0}.jw-skin-roundster .jw-button-color:hover{color:#f15173}.jw-skin-roundster .jw-toggle{color:#f15173}.jw-skin-roundster .jw-toggle.jw-off{color:#8490a0}.jw-skin-roundster .jw-option{color:#8490a0}.jw-skin-roundster .jw-option.jw-active-option{color:#f15173}.jw-skin-roundster .jw-icon-display{color:rgba(255,255,255,0.5)}.jw-skin-roundster .jw-display-icon-container{border-radius:.5em}.jw-skin-roundster .jw-display-icon-container:hover{background:#f15173}.jw-skin-roundster .jw-display-icon-container:hover .jw-icon-display{color:#fff}.jw-skin-roundster .jw-rail{background:#878fa2}.jw-skin-roundster .jw-buffer{background:#9c9a9d}.jw-skin-roundster .jw-progress{background:#f15173}.jw-skin-roundster .jw-slider-horizontal{background:#dfe2e9}.jw-skin-roundster .jw-slider-horizontal .jw-knob{margin-left:-0.45em}.jw-skin-roundster .jw-slider-vertical .jw-knob{margin-bottom:-0.45em}.jw-skin-roundster .jw-time-tip,.jw-skin-roundster .jw-volume-tip,.jw-skin-roundster .jw-menu{background:#5c6373;border:0;padding:.5em}.jw-skin-roundster .jw-skip{background:#dfe2e9;padding:.5em}.jw-skin-roundster .jw-skip .jw-skip-icon{color:#8490a0}.jw-skin-roundster .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-roundster .jw-skip.jw-skippable:hover .jw-text{color:#f15173}.jw-skin-roundster .jw-time-tip .jw-text,.jw-skin-roundster .jw-dock-button .jw-text{color:#bbb}.jw-skin-roundster .jw-time-tip{bottom:1em}.jw-skin-roundster .jw-dock-button{background:#8490a0;border-radius:.5em}.jw-skin-roundster .jw-dock-button:hover{background:#f15173}.jw-skin-roundster .jw-playlist-container{padding:0}.jw-skin-roundster .jw-icon-inline,.jw-skin-roundster .jw-icon-tooltip,.jw-skin-roundster .jw-text-elapsed,.jw-skin-roundster .jw-text-duration{padding:0 .25em}.jw-skin-roundster .jw-controlbar{display:inline-block;width:96%;max-width:50em;margin:0 auto;bottom:.7em;left:2%;right:2%}.jw-skin-roundster.jw-flag-audio-player .jw-controlbar{bottom:0}.jw-skin-roundster .jw-controlbar{border-radius:1em;padding:0 1em}.jw-skin-roundster .jw-playlist-container{left:-48%;background-color:#878fa2;border-radius:.3em;overflow:hidden}.jw-skin-roundster .jw-playlist-container .jw-option,.jw-skin-roundster .jw-playlist-container .jw-text,.jw-skin-roundster .jw-playlist-container .jw-icon{color:#cbd0da}.jw-skin-roundster .jw-playlist-container .jw-option{border-bottom:1px solid #747d92;background-color:#878fa2}.jw-skin-roundster .jw-playlist-container .jw-option:hover,.jw-skin-roundster .jw-playlist-container .jw-option.jw-active-option{background-color:#747d92;color:#fff}.jw-skin-roundster .jw-playlist-container .jw-label .jw-icon-play{color:#f15173}.jw-skin-roundster .jw-playlist-container ::-webkit-scrollbar-track{background-color:#747d92}.jw-skin-roundster .jw-playlist-container ::-webkit-scrollbar{border:10px solid #878fa2}.jw-skin-roundster .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:white}.jw-skin-roundster .jw-tooltip-title{border-bottom:1px solid #747d92;background-color:#878fa2}.jw-skin-roundster .jw-rail,.jw-skin-roundster .jw-progress,.jw-skin-roundster .jw-buffer{border-radius:1em}.jw-skin-roundster .jw-knob{background-color:#fff;width:.9em;height:.9em;border-radius:50%;box-shadow:0 1px 5px 1px #868ea3}.jw-skin-roundster .jw-slider-horizontal .jw-cue{top:.07500000000000001em;width:.25em;height:.25em;border-radius:50%;background-color:#fff}.jw-skin-roundster .jw-slider-horizontal .jw-knob{top:-0.25em}.jw-skin-roundster .jw-slider-vertical .jw-rail{background-color:#434853}.jw-skin-roundster .jw-slider-vertical .jw-rail,.jw-skin-roundster .jw-slider-vertical .jw-progress{width:.4em}.jw-skin-roundster .jw-time-tip,.jw-skin-roundster .jw-volume-tip,.jw-skin-roundster .jw-menu{border-radius:.25em}.jw-skin-roundster .jw-volume-tip,.jw-skin-roundster .jw-menu{bottom:.3em}.jw-skin-roundster .jw-dock .jw-dock-button{border-radius:50%}.jw-skin-roundster .jw-dock .jw-overlay{border-radius:2.5em}.jw-skin-roundster .jw-skip{border-radius:1em;padding:.25em 1em} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/seven.css b/server/webplatform/www/jwplayer/skins/seven.css new file mode 100644 index 0000000..2c3afdc --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/seven.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-seven .jw-background-color{background:#000}.jw-skin-seven .jw-controlbar{border-top:#333 1px solid;height:2.5em}.jw-skin-seven .jw-group{vertical-align:middle}.jw-skin-seven .jw-playlist{background-color:rgba(0,0,0,0.5)}.jw-skin-seven .jw-playlist-container{left:-43%;background-color:rgba(0,0,0,0.5)}.jw-skin-seven .jw-playlist-container .jw-option{border-bottom:1px solid #444}.jw-skin-seven .jw-playlist-container .jw-option:hover,.jw-skin-seven .jw-playlist-container .jw-option.jw-active-option{background-color:black}.jw-skin-seven .jw-playlist-container .jw-option:hover .jw-label{color:#ff0046}.jw-skin-seven .jw-playlist-container .jw-icon-playlist{margin-left:0}.jw-skin-seven .jw-playlist-container .jw-label .jw-icon-play{color:#ff0046}.jw-skin-seven .jw-playlist-container .jw-label .jw-icon-play:before{padding-left:0}.jw-skin-seven .jw-tooltip-title{background-color:#000;color:#fff}.jw-skin-seven .jw-text{color:#fff}.jw-skin-seven .jw-button-color{color:#fff}.jw-skin-seven .jw-button-color:hover{color:#ff0046}.jw-skin-seven .jw-toggle{color:#ff0046}.jw-skin-seven .jw-toggle.jw-off{color:#fff}.jw-skin-seven .jw-controlbar .jw-icon:before,.jw-skin-seven .jw-text-elapsed,.jw-skin-seven .jw-text-duration{padding:0 .7em}.jw-skin-seven .jw-controlbar .jw-icon-prev:before{padding-right:.25em}.jw-skin-seven .jw-controlbar .jw-icon-playlist:before{padding:0 .45em}.jw-skin-seven .jw-controlbar .jw-icon-next:before{padding-left:.25em}.jw-skin-seven .jw-icon-prev,.jw-skin-seven .jw-icon-next{font-size:.7em}.jw-skin-seven .jw-icon-prev:before{border-left:1px solid #666}.jw-skin-seven .jw-icon-next:before{border-right:1px solid #666}.jw-skin-seven .jw-icon-display{color:#fff}.jw-skin-seven .jw-icon-display:before{padding-left:0}.jw-skin-seven .jw-display-icon-container{border-radius:50%;border:1px solid #333}.jw-skin-seven .jw-rail{background-color:#384154;box-shadow:none}.jw-skin-seven .jw-buffer{background-color:#666f82}.jw-skin-seven .jw-progress{background:#ff0046}.jw-skin-seven .jw-knob{width:.6em;height:.6em;background-color:#fff;box-shadow:0 0 0 1px #000;border-radius:1em}.jw-skin-seven .jw-slider-horizontal .jw-slider-container{height:.95em}.jw-skin-seven .jw-slider-horizontal .jw-rail,.jw-skin-seven .jw-slider-horizontal .jw-buffer,.jw-skin-seven .jw-slider-horizontal .jw-progress{height:.2em;border-radius:0}.jw-skin-seven .jw-slider-horizontal .jw-knob{top:-0.19999999999999998em}.jw-skin-seven .jw-slider-horizontal .jw-cue{top:-0.04999999999999999em;width:.3em;height:.3em;background-color:#fff;border-radius:50%}.jw-skin-seven .jw-slider-vertical .jw-rail,.jw-skin-seven .jw-slider-vertical .jw-buffer,.jw-skin-seven .jw-slider-vertical .jw-progress{width:.2em}.jw-skin-seven .jw-slider-vertical .jw-knob{margin-bottom:-0.3em}.jw-skin-seven .jw-volume-tip{width:100%;left:-45%;padding-bottom:.7em}.jw-skin-seven .jw-text-duration{color:#666f82}.jw-skin-seven .jw-controlbar-right-group .jw-icon-tooltip:before,.jw-skin-seven .jw-controlbar-right-group .jw-icon-inline:before{border-left:1px solid #666}.jw-skin-seven .jw-controlbar-right-group .jw-icon-inline:first-child:before{border:0}.jw-skin-seven .jw-dock .jw-dock-button{border-radius:50%;border:1px solid #333}.jw-skin-seven .jw-dock .jw-overlay{border-radius:2.5em}.jw-skin-seven .jw-icon-tooltip .jw-active-option{background-color:#ff0046;color:#fff}.jw-skin-seven .jw-icon-volume{min-width:2.6em}.jw-skin-seven .jw-time-tip,.jw-skin-seven .jw-menu,.jw-skin-seven .jw-volume-tip,.jw-skin-seven .jw-skip{border:1px solid #333}.jw-skin-seven .jw-time-tip{padding:.2em;bottom:1.3em}.jw-skin-seven .jw-menu,.jw-skin-seven .jw-volume-tip{bottom:.24em}.jw-skin-seven .jw-skip{padding:.4em;border-radius:1.75em}.jw-skin-seven .jw-skip .jw-text,.jw-skin-seven .jw-skip .jw-icon-inline{color:#fff;line-height:1.75em}.jw-skin-seven .jw-skip.jw-skippable:hover .jw-text,.jw-skin-seven .jw-skip.jw-skippable:hover .jw-icon-inline{color:#ff0046}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon:before,.jw-skin-seven.jw-flag-touch .jw-text-elapsed,.jw-skin-seven.jw-flag-touch .jw-text-duration{padding:0 .35em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-prev:before{padding:0 .125em 0 .7em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-next:before{padding:0 .7em 0 .125em}.jw-skin-seven.jw-flag-touch .jw-controlbar .jw-icon-playlist:before{padding:0 .225em} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/six.css b/server/webplatform/www/jwplayer/skins/six.css new file mode 100644 index 0000000..054adef --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/six.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-six .jw-background-color{background:#333}.jw-skin-six .jw-controlbar{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%)}.jw-skin-six .jw-text{color:#aaa}.jw-skin-six .jw-tooltip-title{color:#aaa}.jw-skin-six .jw-knob{color:#aaa}.jw-skin-six .jw-button-color{color:#aaa}.jw-skin-six .jw-button-color:hover{color:#eee}.jw-skin-six .jw-toggle{color:#eee}.jw-skin-six .jw-toggle.jw-off{color:#aaa}.jw-skin-six .jw-option{color:#aaa}.jw-skin-six .jw-option.jw-active-option{color:#eee}.jw-skin-six .jw-icon-display{color:#aaa}.jw-skin-six .jw-display-icon-container{border-radius:.5em}.jw-skin-six .jw-display-icon-container:hover{background:#4d4d4d}.jw-skin-six .jw-display-icon-container:hover .jw-icon-display{color:#eee}.jw-skin-six .jw-rail{background:#666}.jw-skin-six .jw-buffer{background:#202020}.jw-skin-six .jw-progress{background:#eee}.jw-skin-six .jw-slider-horizontal{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%)}.jw-skin-six .jw-slider-horizontal .jw-knob{margin-left:-0.4em}.jw-skin-six .jw-slider-vertical .jw-knob{margin-bottom:-0.4em}.jw-skin-six .jw-time-tip,.jw-skin-six .jw-volume-tip,.jw-skin-six .jw-menu{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%);border:1px solid #000;padding:.5em}.jw-skin-six .jw-skip{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%);padding:.5em}.jw-skin-six .jw-skip .jw-skip-icon{color:#aaa}.jw-skin-six .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-six .jw-skip.jw-skippable:hover .jw-text{color:#eee}.jw-skin-six .jw-time-tip .jw-text,.jw-skin-six .jw-dock-button .jw-text{color:#bbb}.jw-skin-six .jw-time-tip{bottom:1em}.jw-skin-six .jw-dock-button{background:#333;border-radius:.5em}.jw-skin-six .jw-dock-button:hover{background:#4d4d4d}.jw-skin-six .jw-playlist-container{padding:0}.jw-skin-six .jw-icon-inline,.jw-skin-six .jw-icon-tooltip,.jw-skin-six .jw-text-elapsed,.jw-skin-six .jw-text-duration{padding:0 .25em}.jw-skin-six .jw-background-color{background-color:#444}.jw-skin-six .jw-controlbar{display:inline-block;width:96%;max-width:50em;margin:0 auto;bottom:.7em;left:2%;right:2%}.jw-skin-six.jw-flag-audio-player .jw-controlbar{bottom:0}.jw-skin-six .jw-controlbar{border:1px solid #000;border-radius:.3em;background-size:100% 100%}.jw-skin-six .jw-controlbar .jw-overlay{bottom:2em;padding-bottom:.25em}.jw-skin-six .jw-display-icon-container{background:linear-gradient(0deg,rgba(73,73,75,0.85) 0,rgba(69,69,71,0.9) 3%,rgba(63,63,65,0.9) 7%,rgba(62,62,64,0.9) 10%,rgba(58,58,61,0.9) 59%,rgba(52,52,55,0.9) 97%,rgba(52,52,55,0.85) 100%);background-size:100% 100%;border-radius:.3em;border:1px solid #000}.jw-skin-six:hover .jw-display-icon-container{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%);background-size:100% 100%}.jw-skin-six .jw-option{text-align:left}.jw-skin-six .jw-option .jw-icon-menu-bullet:before{content:"\e606"}.jw-skin-six .jw-option:before{font-size:.4em;vertical-align:middle;margin-right:.4em}.jw-skin-six .jw-playlist-container{left:-41%}.jw-skin-six .jw-playlist-container .jw-text,.jw-skin-six .jw-playlist-container .jw-icon{color:#eee}.jw-skin-six .jw-playlist-container .jw-option{border-bottom:1px solid #2f2f31;color:#878787}.jw-skin-six .jw-playlist-container .jw-option:before{content:""}.jw-skin-six .jw-playlist-container .jw-option:hover,.jw-skin-six .jw-playlist-container .jw-option.jw-active-option{background-color:#2f2f31;color:#fff}.jw-skin-six .jw-playlist-container ::-webkit-scrollbar{border-radius:.25em}.jw-skin-six .jw-playlist-container ::-webkit-scrollbar-track{background-color:#3c3c3e}.jw-skin-six .jw-playlist-container ::-webkit-scrollbar-thumb{background:linear-gradient(to right,#fff 0,#ccc 50%,#fff 100%)}.jw-skin-six .jw-rail,.jw-skin-six .jw-buffer,.jw-skin-six .jw-progress{border-radius:.5em}.jw-skin-six .jw-progress,.jw-skin-six .jw-buffer{border:1px solid #000}.jw-skin-six .jw-progress{background:linear-gradient(to bottom,#fff 0,#ccc 50%,#fff 100%)}.jw-skin-six .jw-rail{border:1px solid #000;box-shadow:inset 0 3px 10px 1px rgba(51,51,51,0.85)}.jw-skin-six .jw-knob{width:.8em;height:.8em;border-radius:1em;background:radial-gradient(ellipse at center,#f3f3f3 0,#d2d2d2 90%,#b0b0b0 100%);box-shadow:0 1px 10px 1px rgba(0,0,0,0.75)}.jw-skin-six .jw-slider-horizontal .jw-slider-container{height:1.2em}.jw-skin-six .jw-slider-horizontal .jw-rail,.jw-skin-six .jw-slider-horizontal .jw-buffer,.jw-skin-six .jw-slider-horizontal .jw-progress{height:.65em}.jw-skin-six .jw-slider-horizontal .jw-knob{top:-0.07500000000000001em}.jw-skin-six .jw-slider-horizontal .jw-progress{border-top-right-radius:0;border-bottom-right-radius:0;border-bottom-left-radius:.5em;border-top-left-radius:.5em}.jw-skin-six .jw-slider-horizontal .jw-progress,.jw-skin-six .jw-slider-horizontal .jw-buffer{border:1px solid #000;border-style:solid none #000}.jw-skin-six .jw-slider-horizontal .jw-cue{top:.2em;width:.25em;height:.25em;background-color:#616164;border-radius:50%;box-shadow:0 0 0 1px rgba(0,0,0,0.75)}.jw-skin-six .jw-slider-vertical .jw-rail,.jw-skin-six .jw-slider-vertical .jw-progress{width:.65em}.jw-skin-six .jw-slider-vertical .jw-progress{background:linear-gradient(to right,#fff 0,#ccc 50%,#fff 100%);border-top-right-radius:0;border-bottom-right-radius:.5em;border-bottom-left-radius:.5em;border-top-left-radius:0}.jw-skin-six .jw-time-tip,.jw-skin-six .jw-volume-tip,.jw-skin-six .jw-menu{background-size:100% 100%;border-radius:.25em}.jw-skin-six .jw-dock .jw-dock-button{background:linear-gradient(0deg,rgba(73,73,75,0.85) 0,rgba(69,69,71,0.9) 3%,rgba(63,63,65,0.9) 7%,rgba(62,62,64,0.9) 10%,rgba(58,58,61,0.9) 59%,rgba(52,52,55,0.9) 97%,rgba(52,52,55,0.85) 100%);background-size:100% 100%;border-radius:.25em}.jw-skin-six .jw-dock .jw-dock-button:hover{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%)}.jw-skin-six .jw-dock .jw-dock-button .jw-overlay{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%);background-size:100% 100%;border-radius:.25em}.jw-skin-six .jw-skip{background:linear-gradient(0deg,rgba(73,73,75,0.85) 0,rgba(69,69,71,0.9) 3%,rgba(63,63,65,0.9) 7%,rgba(62,62,64,0.9) 10%,rgba(58,58,61,0.9) 59%,rgba(52,52,55,0.9) 97%,rgba(52,52,55,0.85) 100%);background-size:100% 100%;border:1px solid #000;border-radius:.3em;padding:.25em .5em}.jw-skin-six .jw-skip:hover.jw-skippable{background:linear-gradient(0deg,rgba(73,73,75,0.87) 0,#454547 3%,#3f3f41 7%,#3e3e40 10%,#3a3a3d 59%,#343437 97%,rgba(52,52,55,0.87) 100%);background-size:100% 100%} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/stormtrooper.css b/server/webplatform/www/jwplayer/skins/stormtrooper.css new file mode 100644 index 0000000..d1a78b6 --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/stormtrooper.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-stormtrooper .jw-background-color{background:#2b3036}.jw-skin-stormtrooper .jw-controlbar{background:#2b3036}.jw-skin-stormtrooper .jw-text{color:#6d7a8b}.jw-skin-stormtrooper .jw-tooltip-title{color:#6d7a8b}.jw-skin-stormtrooper .jw-knob{color:#6d7a8b}.jw-skin-stormtrooper .jw-button-color{color:#6d7a8b}.jw-skin-stormtrooper .jw-button-color:hover{color:#35e5fc}.jw-skin-stormtrooper .jw-toggle{color:#35e5fc}.jw-skin-stormtrooper .jw-toggle.jw-off{color:#6d7a8b}.jw-skin-stormtrooper .jw-option{color:#6d7a8b}.jw-skin-stormtrooper .jw-option.jw-active-option{color:#35e5fc}.jw-skin-stormtrooper .jw-icon-display{color:#6d7a8b}.jw-skin-stormtrooper .jw-display-icon-container{border-radius:.5em}.jw-skin-stormtrooper .jw-display-icon-container:hover{background:#2b3036}.jw-skin-stormtrooper .jw-display-icon-container:hover .jw-icon-display{color:#35e5fc}.jw-skin-stormtrooper .jw-rail{background:#2b3036}.jw-skin-stormtrooper .jw-buffer{background:#000}.jw-skin-stormtrooper .jw-progress{background:#35e5fc}.jw-skin-stormtrooper .jw-slider-horizontal{background:#2b3036}.jw-skin-stormtrooper .jw-slider-horizontal .jw-knob{margin-left:-0.05em}.jw-skin-stormtrooper .jw-slider-vertical .jw-knob{margin-bottom:-0.05em}.jw-skin-stormtrooper .jw-time-tip,.jw-skin-stormtrooper .jw-volume-tip,.jw-skin-stormtrooper .jw-menu{background:#333;border:0;padding:.5em}.jw-skin-stormtrooper .jw-skip{background:#2b3036;padding:.5em}.jw-skin-stormtrooper .jw-skip .jw-skip-icon{color:#6d7a8b}.jw-skin-stormtrooper .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-stormtrooper .jw-skip.jw-skippable:hover .jw-text{color:#35e5fc}.jw-skin-stormtrooper .jw-time-tip .jw-text,.jw-skin-stormtrooper .jw-dock-button .jw-text{color:#bbb}.jw-skin-stormtrooper .jw-time-tip{bottom:1em}.jw-skin-stormtrooper .jw-dock-button{background:#2b3036;border-radius:.5em}.jw-skin-stormtrooper .jw-dock-button:hover{background:#2b3036}.jw-skin-stormtrooper .jw-playlist-container{padding:0}.jw-skin-stormtrooper .jw-icon-inline,.jw-skin-stormtrooper .jw-icon-tooltip,.jw-skin-stormtrooper .jw-text-elapsed,.jw-skin-stormtrooper .jw-text-duration{padding:0 .25em}.jw-skin-stormtrooper .jw-time-tip,.jw-skin-stormtrooper .jw-volume-tip,.jw-skin-stormtrooper .jw-menu,.jw-skin-stormtrooper .jw-skip{border-radius:.25em}.jw-skin-stormtrooper .jw-volume-tip,.jw-skin-stormtrooper .jw-menu{bottom:.3em}.jw-skin-stormtrooper .jw-playlist-container{background-color:#6d7a8b;left:-42%;border-radius:0;bottom:0}.jw-skin-stormtrooper .jw-playlist-container .jw-option,.jw-skin-stormtrooper .jw-playlist-container .jw-text,.jw-skin-stormtrooper .jw-playlist-container .jw-icon{color:#cbd0da}.jw-skin-stormtrooper .jw-playlist-container .jw-option{border-bottom:1px solid #5b697a;background-color:#6d7a8b}.jw-skin-stormtrooper .jw-playlist-container .jw-option:hover,.jw-skin-stormtrooper .jw-playlist-container .jw-option.jw-active-option{background:#5b697a}.jw-skin-stormtrooper .jw-playlist-container ::-webkit-scrollbar-track{background-color:#5b697a}.jw-skin-stormtrooper .jw-playlist-container ::-webkit-scrollbar{width:2px;border:10px solid #6d7a8b}.jw-skin-stormtrooper .jw-playlist-container ::-webkit-scrollbar-thumb{background:linear-gradient(to right,#2b3036 0,#fff 50%,#2b3036 100%)}.jw-skin-stormtrooper .jw-tooltip-title{border-bottom:1px solid #5b697a;background-color:#2b3036}.jw-skin-stormtrooper .jw-rail,.jw-skin-stormtrooper .jw-buffer,.jw-skin-stormtrooper .jw-progress,.jw-skin-stormtrooper .jw-knob{box-sizing:border-box;border:1.5px solid #000;border-radius:2px}.jw-skin-stormtrooper .jw-progress,.jw-skin-stormtrooper .jw-knob{background:#2b3036}.jw-skin-stormtrooper .jw-slider-horizontal .jw-rail,.jw-skin-stormtrooper .jw-slider-horizontal .jw-buffer,.jw-skin-stormtrooper .jw-slider-horizontal .jw-progress{height:.3em}.jw-skin-stormtrooper .jw-slider-horizontal .jw-progress{background:linear-gradient(to bottom,#1389af 0,#36e4fc 50%,#1389af 100%)}.jw-skin-stormtrooper .jw-slider-horizontal .jw-knob{top:-0.1em;background:linear-gradient(to right,#1389af 0,#36e4fc 50%,#1389af 100%);width:.3em;height:.5em;border-width:1px;border-radius:0}.jw-skin-stormtrooper .jw-slider-horizontal .jw-cue{top:-0.05000000000000002em;background-color:#6d7a8b;border:1px solid #000}.jw-skin-stormtrooper .jw-slider-vertical .jw-rail,.jw-skin-stormtrooper .jw-slider-vertical .jw-progress{width:.3em}.jw-skin-stormtrooper .jw-slider-vertical .jw-progress{background:linear-gradient(to right,#1389af 0,#36e4fc 50%,#1389af 100%)}.jw-skin-stormtrooper .jw-slider-vertical .jw-knob{background:linear-gradient(to bottom,#1389af 0,#36e4fc 50%,#1389af 100%);height:.2em;width:.5em;border-width:1px}.jw-skin-stormtrooper .jw-icon-cc.jw-off:before{content:"\e604"}.jw-skin-stormtrooper .jw-icon-hd.jw-off:before{content:"\e609"} \ No newline at end of file diff --git a/server/webplatform/www/jwplayer/skins/vapor.css b/server/webplatform/www/jwplayer/skins/vapor.css new file mode 100644 index 0000000..3418989 --- /dev/null +++ b/server/webplatform/www/jwplayer/skins/vapor.css @@ -0,0 +1 @@ +.jw-icon{font-family:'jw-icons';-webkit-font-smoothing:antialiased;font-style:normal;font-weight:normal;text-transform:none;background-color:transparent;font-variant:normal;-webkit-font-feature-settings:"liga";-moz-font-feature-settings:"liga=1";-moz-font-feature-settings:"liga";-ms-font-feature-settings:"liga" 1;-o-font-feature-settings:"liga";font-feature-settings:"liga";-moz-osx-font-smoothing:grayscale}.jw-skin-vapor .jw-background-color{background:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-controlbar{background:rgba(255,255,255,0.4)}.jw-skin-vapor .jw-text{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-tooltip-title{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-knob{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-button-color{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-button-color:hover{color:#fff}.jw-skin-vapor .jw-toggle{color:#fff}.jw-skin-vapor .jw-toggle.jw-off{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-option{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-option.jw-active-option{color:#fff}.jw-skin-vapor .jw-icon-display{color:rgba(255,255,255,0.5)}.jw-skin-vapor .jw-display-icon-container{border-radius:.5em}.jw-skin-vapor .jw-display-icon-container:hover{background:#000}.jw-skin-vapor .jw-display-icon-container:hover .jw-icon-display{color:#0f9e60}.jw-skin-vapor .jw-rail{background:rgba(255,255,255,0.4)}.jw-skin-vapor .jw-buffer{background:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-progress{background:#0f9e60}.jw-skin-vapor .jw-slider-horizontal{background:rgba(255,255,255,0.4)}.jw-skin-vapor .jw-slider-horizontal .jw-knob{margin-left:-0.325em}.jw-skin-vapor .jw-slider-vertical .jw-knob{margin-bottom:-0.325em}.jw-skin-vapor .jw-time-tip,.jw-skin-vapor .jw-volume-tip,.jw-skin-vapor .jw-menu{background:rgba(0,0,0,0.5);border:0;padding:.5em}.jw-skin-vapor .jw-skip{background:rgba(255,255,255,0.4);padding:.5em}.jw-skin-vapor .jw-skip .jw-skip-icon{color:rgba(0,0,0,0.5)}.jw-skin-vapor .jw-skip.jw-skippable:hover .jw-skip-icon,.jw-skin-vapor .jw-skip.jw-skippable:hover .jw-text{color:#fff}.jw-skin-vapor .jw-time-tip .jw-text,.jw-skin-vapor .jw-dock-button .jw-text{color:#bbb}.jw-skin-vapor .jw-time-tip{bottom:1em}.jw-skin-vapor .jw-dock-button{background:rgba(0,0,0,0.5);border-radius:.5em}.jw-skin-vapor .jw-dock-button:hover{background:#000}.jw-skin-vapor .jw-playlist-container{padding:0}.jw-skin-vapor .jw-icon-inline,.jw-skin-vapor .jw-icon-tooltip,.jw-skin-vapor .jw-text-elapsed,.jw-skin-vapor .jw-text-duration{padding:0 .25em}.jw-skin-vapor .jw-time-tip,.jw-skin-vapor .jw-volume-tip,.jw-skin-vapor .jw-menu{border-radius:.25em;bottom:.3em}.jw-skin-vapor .jw-skip{border-radius:.25em}.jw-skin-vapor .jw-option{color:#fff}.jw-skin-vapor .jw-option:hover,.jw-skin-vapor .jw-option.jw-active-option{color:#0f9e60}.jw-skin-vapor .jw-playlist-container{left:-42%;bottom:0;border-radius:0;background-color:#1e1e1e}.jw-skin-vapor .jw-playlist-container .jw-option,.jw-skin-vapor .jw-playlist-container .jw-text,.jw-skin-vapor .jw-playlist-container .jw-icon{color:#a0a0a0}.jw-skin-vapor .jw-playlist-container .jw-option{border-bottom:1px solid #000;background-color:#1e1e1e;color:#a8a8a8}.jw-skin-vapor .jw-playlist-container .jw-option:hover,.jw-skin-vapor .jw-playlist-container .jw-option.jw-active-option{color:#0f9e60}.jw-skin-vapor .jw-playlist-container ::-webkit-scrollbar-track{background-color:#000}.jw-skin-vapor .jw-playlist-container ::-webkit-scrollbar{width:2px;border:10px solid #1e1e1e}.jw-skin-vapor .jw-playlist-container ::-webkit-scrollbar-thumb{background-color:#a0a0a0}.jw-skin-vapor .jw-tooltip-title{border-bottom:1px solid #000;background-color:#1e1e1e}.jw-skin-vapor .jw-slider-horizontal{height:2em}.jw-skin-vapor .jw-slider-horizontal .jw-slider-container{height:2em}.jw-skin-vapor .jw-slider-horizontal .jw-rail,.jw-skin-vapor .jw-slider-horizontal .jw-progress,.jw-skin-vapor .jw-slider-horizontal .jw-buffer{height:2em}.jw-skin-vapor .jw-slider-horizontal .jw-knob,.jw-skin-vapor .jw-slider-horizontal .jw-cue{height:2em}.jw-skin-vapor .jw-slider-horizontal .jw-knob{margin-left:0;background-color:#fff;width:.2em}.jw-skin-vapor .jw-slider-horizontal .jw-cue{top:.6699999999999999em;background:rgba(255,255,255,0.5);height:.66em}.jw-skin-vapor .jw-slider-vertical{padding:.4em;bottom:3px;border-radius:2px;border:0}.jw-skin-vapor .jw-slider-vertical .jw-knob{display:none}.jw-skin-vapor .jw-slider-vertical .jw-rail{background-color:rgba(0,0,0,0.8)}.jw-skin-vapor .jw-slider-vertical .jw-rail,.jw-skin-vapor .jw-slider-vertical .jw-progress{width:.5em;border:1px solid #000}.jw-skin-vapor .jw-icon-cc.jw-off:before{content:"\e604"}.jw-skin-vapor .jw-icon-hd.jw-off:before{content:"\e609"}.jw-skin-vapor.jw-flag-audio-player .jw-controlbar{background:rgba(0,0,0,0.5)} \ No newline at end of file