From d03c6b464623f7466499140ce932338fc80cf2fc Mon Sep 17 00:00:00 2001 From: Michael Price Date: Mon, 12 Mar 2018 18:16:21 -0400 Subject: [PATCH] Update to Fancybox 3. Update to jQuery 3.3.1. Update and simplify MayanImage class. Signed-off-by: Michael Price --- HISTORY.rst | 2 + .../static/appearance/js/mayan_image.js | 41 +- .../packages/fancyBox-master/.gitattributes | 7 - .../packages/fancyBox-master/CHANGELOG.md | 125 - .../packages/fancyBox-master/README.md | 217 - .../packages/fancyBox-master/bower.json | 24 - .../packages/fancyBox-master/demo/1_b.jpg | Bin 82080 -> 0 bytes .../packages/fancyBox-master/demo/1_s.jpg | Bin 8097 -> 0 bytes .../packages/fancyBox-master/demo/2_b.jpg | Bin 51674 -> 0 bytes .../packages/fancyBox-master/demo/2_s.jpg | Bin 1455 -> 0 bytes .../packages/fancyBox-master/demo/3_b.jpg | Bin 55777 -> 0 bytes .../packages/fancyBox-master/demo/3_s.jpg | Bin 2543 -> 0 bytes .../packages/fancyBox-master/demo/4_b.jpg | Bin 84150 -> 0 bytes .../packages/fancyBox-master/demo/4_s.jpg | Bin 5203 -> 0 bytes .../packages/fancyBox-master/demo/5_b.jpg | Bin 76217 -> 0 bytes .../packages/fancyBox-master/demo/5_s.jpg | Bin 4412 -> 0 bytes .../packages/fancyBox-master/demo/ajax.txt | 15 - .../packages/fancyBox-master/demo/iframe.html | 26 - .../packages/fancyBox-master/demo/index.html | 312 - .../fancyBox-master/fancybox.jquery.json | 31 - .../fancyBox-master/lib/jquery-1.10.2.min.js | 6 - .../lib/jquery.mousewheel.pack.js | 14 - .../packages/fancyBox-master/source/blank.gif | Bin 43 -> 0 bytes .../source/fancybox_loading.gif | Bin 6567 -> 0 bytes .../source/fancybox_loading@2x.gif | Bin 13984 -> 0 bytes .../source/fancybox_overlay.png | Bin 1003 -> 0 bytes .../source/fancybox_sprite.png | Bin 1362 -> 0 bytes .../source/fancybox_sprite@2x.png | Bin 6553 -> 0 bytes .../source/helpers/fancybox_buttons.png | Bin 1080 -> 0 bytes .../helpers/jquery.fancybox-buttons.css | 97 - .../source/helpers/jquery.fancybox-buttons.js | 122 - .../source/helpers/jquery.fancybox-media.js | 199 - .../source/helpers/jquery.fancybox-thumbs.css | 55 - .../source/helpers/jquery.fancybox-thumbs.js | 165 - .../source/jquery.fancybox.css | 273 - .../fancyBox-master/source/jquery.fancybox.js | 2018 ------- .../source/jquery.fancybox.pack.js | 46 - .../packages/fancyBox-master/sprite.psd | Bin 250491 -> 0 bytes .../appearance/packages/jquery-2.1.4.min.js | 4 - .../vendors/fancybox-master/.gitignore | 1 + .../vendors/fancybox-master/README.md | 62 + .../vendors/fancybox-master/bower.json | 23 + .../fancybox-master/dist/jquery.fancybox.css | 771 +++ .../fancybox-master/dist/jquery.fancybox.js | 5238 +++++++++++++++++ .../dist/jquery.fancybox.min.css | 1 + .../dist/jquery.fancybox.min.js | 12 + .../vendors/fancybox-master/docs/index.html | 1909 ++++++ .../vendors/fancybox-master/gulpfile.js | 67 + .../vendors/fancybox-master/package.json | 51 + .../vendors/fancybox-master/src/css/core.css | 619 ++ .../fancybox-master/src/css/fullscreen.css | 11 + .../vendors/fancybox-master/src/css/share.css | 97 + .../fancybox-master/src/css/slideshow.css | 26 + .../fancybox-master/src/css/thumbs.css | 128 + .../vendors/fancybox-master/src/js/core.js | 3097 ++++++++++ .../fancybox-master/src/js/fullscreen.js | 210 + .../fancybox-master/src/js/guestures.js | 919 +++ .../vendors/fancybox-master/src/js/hash.js | 218 + .../vendors/fancybox-master/src/js/media.js | 211 + .../vendors/fancybox-master/src/js/share.js | 91 + .../fancybox-master/src/js/slideshow.js | 185 + .../vendors/fancybox-master/src/js/thumbs.js | 252 + .../vendors/fancybox-master/src/js/wheel.js | 37 + .../appearance/vendors/jquery-3.3.1.min.js | 2 + .../appearance/templates/appearance/root.html | 7 +- mayan/apps/documents/models.py | 4 + .../documents/widgets/document_thumbnail.html | 3 +- 67 files changed, 14261 insertions(+), 3790 deletions(-) delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/.gitattributes delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/CHANGELOG.md delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/README.md delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/bower.json delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_b.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_s.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/2_b.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/2_s.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/3_b.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/3_s.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/4_b.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/4_s.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/5_b.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/5_s.jpg delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/ajax.txt delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/iframe.html delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/index.html delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/fancybox.jquery.json delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/lib/jquery-1.10.2.min.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/lib/jquery.mousewheel.pack.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/blank.gif delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/fancybox_loading.gif delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/fancybox_loading@2x.gif delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/fancybox_overlay.png delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/fancybox_sprite.png delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/fancybox_sprite@2x.png delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/fancybox_buttons.png delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/jquery.fancybox-buttons.css delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/jquery.fancybox-buttons.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/jquery.fancybox-media.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/jquery.fancybox-thumbs.css delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/helpers/jquery.fancybox-thumbs.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.css delete mode 100755 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.js delete mode 100755 mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.pack.js delete mode 100644 mayan/apps/appearance/static/appearance/packages/fancyBox-master/sprite.psd delete mode 100644 mayan/apps/appearance/static/appearance/packages/jquery-2.1.4.min.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/.gitignore create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/README.md create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/bower.json create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/docs/index.html create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/gulpfile.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/package.json create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/core.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/fullscreen.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/share.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/slideshow.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/thumbs.css create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/core.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/fullscreen.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/guestures.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/hash.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/media.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/share.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/slideshow.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/thumbs.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/wheel.js create mode 100644 mayan/apps/appearance/static/appearance/vendors/jquery-3.3.1.min.js diff --git a/HISTORY.rst b/HISTORY.rst index c738f495c2..a8ef5cf614 100644 --- a/HISTORY.rst +++ b/HISTORY.rst @@ -38,6 +38,8 @@ Next (2018-XX-XX) - Display resolution settings are now specified as width and height and not a single resolution value. - Printed pages are now full width. - Move the invalid document markup to a separate HTML template. +- Update to Fancybox 3. +- Update to jQuery 3.3.1 2.8 (2018-02-27) ================ diff --git a/mayan/apps/appearance/static/appearance/js/mayan_image.js b/mayan/apps/appearance/static/appearance/js/mayan_image.js index a3d7c47108..72c5527fe1 100644 --- a/mayan/apps/appearance/static/appearance/js/mayan_image.js +++ b/mayan/apps/appearance/static/appearance/js/mayan_image.js @@ -6,17 +6,13 @@ var MayanImage = function (options) { } MayanImage.intialize = function () { - $('a.fancybox').fancybox({ - beforeShow : function(){ - this.title = $(this.element).data('caption'); - }, - openEffect : 'elastic', - closeEffect : 'elastic', - prevEffect : 'none', - nextEffect : 'none', - titleShow : true, - type : 'image', - autoResize : true, + this.fancybox = $().fancybox({ + animationDuration : 400, + buttons : [ + 'fullScreen', + 'close' + ], + selector: 'a.fancybox', }); $('img.lazy-load').lazyload({ @@ -31,7 +27,7 @@ MayanImage.intialize = function () { new MayanImage({element: $(this)}); }, container: $('#carousel-container'), - threshold: 2000 + threshold: 2000, }); $('.lazy-load').on('load', function() { @@ -51,27 +47,14 @@ MayanImage.intialize = function () { MayanImage.templateInvalidDocument = $('#template-invalid-document').html(); -MayanImage.prototype.onImageError = function () { - this.element.parent().parent().html(MayanImage.templateInvalidDocument); - - // Remove border to indicate non interactive image - this.element.removeClass('thin_border'); - - var container = this.element.parent().parent(); - // Save img HTML - var html = this.element.parent().html(); - // Remove anchor - this.element.parent().remove(); - // Place again img - container.html(html); -}; MayanImage.prototype.load = function () { var self = this; + var container = this.element.parent().parent().parent(); - this.element.error(function(event) { - self.onImageError(); - }); + this.element.on('error', (function(event) { + container.html(MayanImage.templateInvalidDocument); + })); this.element.attr('src', this.element.attr('data-url')); $.fn.matchHeight._update(); diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/.gitattributes b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/.gitattributes deleted file mode 100644 index f6bb280a0b..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/.gitattributes +++ /dev/null @@ -1,7 +0,0 @@ -# Auto detect text files and perform LF normalization -* text=auto - -# Denote all files that are truly binary and should not be modified. -*.png binary -*.jpg binary -*.gif binary \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/CHANGELOG.md b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/CHANGELOG.md deleted file mode 100644 index b0d847e256..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/CHANGELOG.md +++ /dev/null @@ -1,125 +0,0 @@ -fancyBox - Changelog -========= - -### Version 2.1.5 - June 14, 2013 -* Fixed #493 - Broken slideshow -* Fixed #556 - Parent option -* Retina graphics (#564) and retina display support (#420) -* Improved "lock" feature - -### Version 2.1.4 - January 10, 2013 -* Update to be compatible with jQuery v1.9 -* Small changes that should fix usability issues for certain users - -### Version 2.1.3 - October 23, 2012 - -* Fixed #426 - Broken IE7 -* Fixed #423 - Background flickering on iOS -* Fixed #418 - Automatically Grow/Shrink and Center -* Updated the script to work with jQuery 1.6 -* Media helper supports YouTube video series - -### Version 2.1.2 - October 15, 2012 - -* Fixed #414 - Don't allow nextClick if there is only one item -* Fixed #397 - Button helper 'Menu' not visible in IE7 -* Overlay can be opened/closed manually: -* $.fancybox.helpers.overlay.open(); -* $.fancybox.helpers.overlay.open({closeClick : false}); -* $.fancybox.helpers.overlay.close(); -* Optimized for Internet Explorer 10 (Windows 8) - -### Version 2.1.1 - October 01, 2012 - -* Fixed #357 - Converting values like 'auto' in getScalar() -* Fixed #358 - Updated overlay background image -* New "fancybox-href" and "fancybox-title" HTML5 data-attributes (#317) -* Improved helpers: -* - now they can have a property 'defaults' that contains default settings -* - updated vimeo and youtube parsers for media helper -* Content locking now can be turned off - -### Version 2.1.0 - August 20, 2012 - -* Fixed #103 - DOM element re-injection after closing -* Fixed #188 - navigation keys inside editable content -* New animation directions (see https://github.com/fancyapps/fancyBox/issues/233#issuecomment-5512453) -* New option "iframe" - it is now possible to separate scrolling for iframe and wrapping element; choose to preload -* New option "swf" - brings back functionality from fancyBox v1 -* Improved media helper - better support for vimeo and youtube; links are now configurable -* Rewritten overlay helper: -* - new option "showEarly" - toggles if should be open before of after content is loaded -* - Facebook-style (https://github.com/fancyapps/fancyBox/issues/24) and therefore uses image for background -* Option "padding" accepts array (e.g., padding: [15, 50, 10, 5]) -* One of dimensions (width or height) can now be set to "auto" (option "autoSize" needs to be "false") -* Updated callbacks: -* - "beforeClose" is now called only once -* - "afterLoad" receives current and previous object as arguments -* Method "$.fancybox.update();" recalculates content width/height -* Updated to work with jQuery v1.8 - -### Version 2.0.6 - April 16, 2012 - -* Fixed #188 - keystrokes in contenteditable -* Fixed #171 - non-images should not be preloaded -* Fixed #158 - 'closeClick: true' breaks gallery navigation -* New "media" helper - detects and displays various media types -* New option "groupAttr" - name of group selector attribute, default is "data-fancybox-group" -* New feature - selector expressions in URLs, see #170 -* Improved 'overlay' helper to use "position: fixed" -* Improved autoSize, fixed wrong height in some cases -* Improved centering and iframe scrolling for iOS -* Updated markup, new element '.fancybox-skin' is now used for styling - -### Version 2.0.5 - February 21, 2012 - -* Fixed #155 - easing for prev/next animations -* Fixed #153 - overriding "keys" options -* Fixed #147 - IE7 problem with #hash links -* Fixed #130 - changing dynamically data-fancybox-group -* Fixed #126 - obey minWidth/minHeight -* Fixed #118 - placement of loading icon and navigation arrows -* Fixed #101 - "index" option not working -* Fixed #94 - "orig" option not working -* Fixed #80 - does not work on IE6 -* Fixed #72 - can't set overlay opacity to 0 -* Fixed #63 - properly set gallery index -* New option "autoCenter" - toggles centering on window resize or scroll, disabled for mobile devices by default -* New option "autoResize" - toggles responsivity, disabled for mobile devices by default -* New option "preload" - number of images to preload -* New feature to target mobile/desktop browsers using CSS, see #108 -* Changed ajax option defaults to "{ dataType: 'html', headers: { 'X-fancyBox': true } }", see #150 and #128 -* Updated loading icon for IE7, IE8 -* Calculates height of the iframe if 'autoSize' is set to 'true' and the iframe is on the same domain as the main page - -### Version 2.0.4 - December 12, 2011 - -* Fixed #47 - fix overriding properties -* New option "position" to thumbnail and button helpers - - -### Version 2.0.3 - November 29, 2011 - -* Fixed #29 - broken elastic transitions - - -### Version 2.0.2 - November 28, 2011 - -* Fixed slideshow -* Fixed scrollbars issue when displayed a very tall image -* New option "nextClick" - navigate to next gallery item when user clicks the content -* New option "modal" - to disable navigation and closing -* Add 'metadata' plugin support -* Add ability to create groups using 'data-fancybox-group' attribute -* Updated manual usage to match earlier releases - - -### Version 2.0.1 - November 23, 2011 - -* Fixed keyboard events inside form elements -* Fixed manual usage - - -### Version 2.0.0 - November 21, 2011 - -First release - completely rewritten, many new features and updated graphics. \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/README.md b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/README.md deleted file mode 100644 index 943489378b..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/README.md +++ /dev/null @@ -1,217 +0,0 @@ -fancyBox -======== - -fancyBox is a tool that offers a nice and elegant way to add zooming functionality for images, html content and multi-media on your webpages. - -More information and examples: http://www.fancyapps.com/fancybox/ - -License: http://www.fancyapps.com/fancybox/#license - -Copyright (c) 2012 Janis Skarnelis - janis@fancyapps.com - - -How to use ----------- - -To get started, download the plugin, unzip it and copy files to your website/application directory. -Load files in the section of your HTML document. Make sure you also add the jQuery library. - - - - - - - -Create your links with a `title` if you want a title to be shown, and add a class: - - - -If you have a set of related items that you would like to group, -additionally include a group name in the `rel` (or `data-fancybox-group`) attribute: - - - - -Initialise the script like this: - - - -May also be passed an optional options object which will extend the default values. Example: - - - -Tip: Automatically group and apply fancyBox to all images: - - $("a[href$='.jpg'],a[href$='.jpeg'],a[href$='.png'],a[href$='.gif']").attr('rel', 'gallery').fancybox(); - -Script uses the `href` attribute of the matched elements to obtain the location of the content and to figure out content type you want to display. -You can specify type directly by adding classname (fancybox.image, fancybox.iframe, etc) or `data-fancybox-type` attribute: - - //Ajax: - Example - //or - Example - - //Iframe: - Example - - //Inline (will display an element with `id="example"`) - Example - - //SWF: - Example - - //Image: - Example - -Note, ajax requests are subject to the [same origin policy](http://en.wikipedia.org/wiki/Same_origin_policy). -If fancyBox will not be able to get content type, it will try to guess based on 'href' and will quit silently if would not succeed. -(this is different from previsous versions where 'ajax' was used as default type or an error message was displayed). - -Advanced --------- - -### Helpers - -Helpers provide a simple mechanism to extend the capabilities of fancyBox. There are two built-in helpers - 'overlay' and 'title'. -You can disable them, set custom options or enable other helpers. Examples: - - //Disable title helper - $(".fancybox").fancybox({ - helpers: { - title: null - } - }); - - //Disable overlay helper - $(".fancybox").fancybox({ - helpers: { - overlay : null - } - }); - - //Change title position and overlay color - $(".fancybox").fancybox({ - helpers: { - title : { - type : 'inside' - }, - overlay : { - css : { - 'background' : 'rgba(255,255,255,0.5)' - } - } - } - }); - - //Enable thumbnail helper and set custom options - $(".fancybox").fancybox({ - helpers: { - thumbs : { - width: 50, - height: 50 - } - } - }); - - -### API - -Also available are event driven callback methods. The `this` keyword refers to the current or upcoming object (depends on callback method). Here is how you can change title: - - $(".fancybox").fancybox({ - beforeLoad : function() { - this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); - - /* - "this.element" refers to current element, so you can, for example, use the "alt" attribute of the image to store the title: - this.title = $(this.element).find('img').attr('alt'); - */ - } - }); - -It`s possible to open fancyBox programmatically in various ways: - - //HTML content: - $.fancybox( '

Lorem Lipsum

Lorem lipsum

', { - title : 'Custom Title' - }); - - //DOM element: - $.fancybox( $("#inline"), { - title : 'Custom Title' - }); - - //Custom object: - $.fancybox({ - href: 'example.jpg', - title : 'Custom Title' - }); - - //Array of objects: - $.fancybox([ - { - href: 'example1.jpg', - title : 'Custom Title 1' - }, - { - href: 'example2.jpg', - title : 'Custom Title 2' - } - ], { - padding: 0 - }); - -There are several methods that allow you to interact with and manipulate fancyBox, example: - - //Close fancybox: - $.fancybox.close(); - -There is a simply way to access wrapping elements using JS: - - $.fancybox.wrap - $.fancybox.skin - $.fancybox.outer - $.fancybox.inner - -You can override CSS to customize the look. For example, make navigation arrows always visible, -change width and move them outside of area (use this snippet after including fancybox.css): - - .fancybox-nav span { - visibility: visible; - } - - .fancybox-nav { - width: 80px; - } - - .fancybox-prev { - left: -80px; - } - - .fancybox-next { - right: -80px; - } - -In that case, you might want to increase space around box: - - $(".fancybox").fancybox({ - margin : [20, 60, 20, 60] - }); - - -Bug tracker ------------ - -Have a bug? Please create an issue on GitHub at https://github.com/fancyapps/fancyBox/issues \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/bower.json b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/bower.json deleted file mode 100644 index 42527cdc73..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/bower.json +++ /dev/null @@ -1,24 +0,0 @@ -{ - "name": "fancybox", - "version": "2.1.5", - "main": [ - "source/jquery.fancybox.css", - "source/jquery.fancybox.js", - "source/blank.gif", - "source/fancybox_loading.gif", - "source/fancybox_loading@2x.gif", - "source/fancybox_overlay.png", - "source/fancybox_sprite.png", - "source/fancybox_sprite@2x.png", - "source/jquery.fancybox.pack.js" - ], - "ignore": [ - "**/.*", - "fancybox.jquery.json", - "demo" - ], - "dependencies": { - "jquery": ">=1.10", - "jquery-mousewheel": "~3.1.3" - } -} diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_b.jpg b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_b.jpg deleted file mode 100644 index 0f662e341e65350cc7aa7f88fed34eff3b44d0db..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 82080 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
S-X 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 qvPGE7Hqr;nUIKjMCxh=5=ub; diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_s.jpg b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/1_s.jpg deleted file mode 100644 index ef0bd550d7f90d7b2e65522b39964667621eea9c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8097 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

n=we6e--3}h=4vDMb~LF6a)Ds8X| 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 z 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

}~5F|)rUz|iv;kR%lh|Ldw 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 P6W(}~U*JmGp?UZ(k9AwC diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/3_b.jpg b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/3_b.jpg deleted file mode 100644 index e007a51c3ed027304f3605b25e9b9a77b8dbd254..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 55777 zcmb4qS5y<<8*M@ly(2-IBuMC01Qj8)kVp%?L;(QcYQQADH&-ubU}AMWd&JY>z9nKNf*&e`Ah?Y+;xg?}GGyl4|M6A%~-0)c@a z=-(+w&hlQ6kH1f-m#37+BPq0%v8lh$9UrBTkPv0xdtSHxx1)UXuK&OHAVUx%12ZEt z10%38u`)6-voSM6Aj}-BJS=QnLZVzELL!{p;&4809vL1^5osl9ne)OTA|j%aqH0PA zH8?^<_ydp_UJlo!0yxP&)cTZk2i{kV3g6_S1bQEdQ2+ zaEgtQH7%M#oNpR)!`+x~8(*a!U7wIv=`ZCxiuiJ~t@!iK_Dhda+vggaAxq~Hq_SRj zwXd`p&M(aBcHCXsNsI1p6Z!4e>p!{pynK83FaOJTFJeM^(0%3ay<3U_;YW)0Jf zWQ%s#om`2E#m0mGSi$Mq4J)2gqcswO#6zcwDQNNJ-Oj3#^*rM(6nsEZevq5FrKRjIo1 zV`rjVdfvnJJZs-tUH#e7oi5{_q~=LF8Gb<7%C`un!k?<^pDV`Qto$J;b&V*?Lz?Ou zAizL8=Dw3(Ij*3Hg)usrB(MAnUD|yI-EEUUvc1N#mC;_j(U-@o+$HLM6brDX|2VrS z98J!5X8pZ>S-bCN)VEuIV+jd@xpf+*lqgm;^(xdqkg1N@xajjWm}$;YyuIAodE8pl z(|~)D65-M*CW7wTa$7u4De~iwqLyOzIkvyp_bhj`XneF`&2#s@+-Rdn;|{1l-$Q9e|zP5 z2t6HB;}b-3t?Kc~@!zZ@<7a}J1H>js64)v#Bj4N1TBZg< zfk3C4r;f)Sqv7Q5v|Q>ZQ|)>vi6jI!n?_Zll*Jsr&66OI1}UqL3|gUw71t_M!OKVe z@@DL16~AdqT8^9rWVRBwZS+(pO?@~T-7Z+~SUP)JHbWPK+4_p*`r*sZZnma$M}5{- zsgtBBLsl9&hVegRx=^Uze?|yB=clir+@Muqsn`LT+ts`Ku>m!Lq*(Rhmin2jj0|5LUPzz% zGlVZ+J-!U-@{`10DwnIQ^*deYnZ|m>k)fs0%x!2dW+sr&AdlZ=P6ZiS+bbjTx3&bP zSe5X?J87y!WMBAs`vbjW+%cY%fr7>0mKzV$9tY-uH$&cIS+H!?z&@T@y=w;_D3og! zcTX!%jzP(T$sd>ZI2m)%sT4o2i@z9dgaSifHk)bhcA?HV=+8fpSdZ?ON{R2s>U1XNWqg@^9$U)O; z5ZBLz7ZK-EdzPEx9y)(TpNWsJiPcE5{1jE*B-`9*i|K!QZtKUmH@k-#2QiDy>^DAh z?V-xCkAPw!swPv^K|tVP+5pQ>BI^js;D zFcX;iCKlGSxX|(B>hqlr%s0#Jkk|S;FIoP9I2OT#IKtWfXAOJZtyqJ)tt-k0|7j$! zdh5-H-_Bgq`o$eY`N%wFbIG?aqM^x;FTXVdpEU~rS6sJf0{3B*-`-N%JFBlaDb~gM zj>Gt@aj|cd?Jh&a9z;Bd@>$qp`^e?`99%lVr>eQ8)4RVQ{q01^>;C2C=>Hw&T*UZ= z1pW6QYH26gJL|nS=$^sV_7&lHqS6aBLM(p}{@w3rE{g)1Nb5=1IfDj^?x3_33hx*4 z?c52vSS~GR8zNL$-mJ4jx~pi{#y7XKN0q$)K?$R4X~<}pzgV3gtsB~A;`?#$N>KU? z%99^8m9Xs>73cZ|usDxm(KF0kFJ((RSKSiyW%dTC?g;lwYhMM^R_8(uHCwZ!E++;sIsbjmZC0 zp)(Uj^Mu&IbKB@PCm;HHt<`w!>x>$B%cPuZeX8Oa$LZ5d!zDzCC zk0ZX=n4G(HRM_VsczO0{Nl4l0?b%21XVmHgaIRD#LhV@hqm))fTXui$wB~#>v-hD4s2x+BpKQ&}mHs-)=-sH5gaxXy24sJW6JY+A?P2du8@=k?`ixIDWE+Lv3(7)?=pGW7a2XSS#N=O zxI**Fe7+x;cj#`s_7w3unh^U&edbF$IS4M#K9Ng5Dyltt-3G5TgE2kH>}qPsdAnk& z>6O<1pIj(b0gFO0S_CIf^9G8De{P3ImsP9o-}*buVa7zdbfHN|FzeHsP(!C=f2`wW zU$XjH-p>f$layH3p08*P6LqUu%Y8pQKHrytbP0$6+ODk(XmDe55&q@t&4pS}Ecf6I z7d{UzL9=p~0QW?rHIIxL|ME7)F7q=!4hiNF6W-1^&^U^nc~AiPeX1@C%h9~ftv+2O z-IJGsGzidpGAS!a-e-${o=`VBX)=y5SQC73Sui78u~I))YcFlhoEuI0Ef}{zjNt-p zEMM2MreYz}MN+>jMf=8(A-X1=@Mi8nE#GmslcAFwOm>k@jC2x?32!4;59$joFc{Tm z!}69-IKOU%B{^Y*8Wau(EFtZnBneY(Ovj5LEMUBc}xGmbf5_3L3nLL8Z8<6nq`t62yka`GKxWrN0E zG@KGYbm@GMl39Dz9yC@Uo6!92O>5h{(%HSrY?_8 zM;a(l#~cc}mVeUo9$oZleJxIlHJdPThlJl9Q2jPc8Y!mz;i_DLdQ34FF_`%dR*X!`Q7cQ1D?2pVjckn zzKrCND-t64k$R4_^GvG+NALUx9~S zFMgJk7~L=X1_Xqt%Ky5rG&J3=?Y~$0xtKWLL5IiP{@**->-+IyvDDq_!SqD?ig`aM zgKf9ue+jw4qmsF|~L%2`FM~Z79Nr%I z8aLT32TFU(1B~Dy(xK1h@CtJo7^a}E~}fS~p{v4(5z zMZ^=NC5?@02yI_!Pd0F0FP%>95$QFdX7CcTvH~ATN8Yo6BvrQEjZ(?R%o3vS z76Ns_cJ*_DlZ(Ps$x;3nb~CE&@?K*3jl5f0W~Uo5nkwku-f_h-^U~My?_iyx=U&h> zlKGc!o93-+(V*d7gc-guO%`$r^deuN$)j9J1|+?-u4 zGhx>=W23*nj;p(#(fO=eT}I9>y!LZTsmaH|DHZBRTZslDOF>Evkttw;^-A)o(Q`8h z41ei0KR0sll{Qw6codO-+gKp0a3E)?adH;Ym;hH`9@(qYyjB($VWCYE6>JS*jHs}K zyQ!js*A+ZYB@##?9{N1a6cew6DtFZYnyYSj#gZyAfG;!p&rOy+2`azsYV_qEobgSw z6j<_2{dYL2c-}xAt`~eUIW}l^OiRELa`MkyjI0m?h^3IuAem={sbM7ry$pxWp=kz& zhjn|8=Z92xu^F)S@r%>Du>t6fw7lAe$D~__qoU6&{dyq7JOqNOO*Wdovn^c9ekQ(5 z>Z>j=Kd&%;`pc8>6q0{wxH@gr3-oXM9j7!T z`vE3XITah%grOE1{WJL*!pT`Kb}x@t=x_cSfBFZa_Y3f+$fvDx_$@jNo@%LEKz;et zq;DaQ?gq~syh*jpm#<{{2kPwgJHBtiITfnqq`A*si1d1khMgbJU3|9N+qT2=+6-&^ z%F3*`A0dWQxnl@PzN*P|;Q?buN!Z`65{_#LpJXj;WAjHPaE&MA(X$TjnsrmHYJsqW z-gjC^@%CzZQCA5A;pm!-UfG}onW3Ed<`usr3uIvPK1Q(G+(uKzpWI%Pxo$Wd#4KW(nz z9a$nVvs`>BO^34m@-C^s#HO*GkEnw`kv?``jIm>-6;EY0RRW1@^HH2e;&Q=GdgWBI z8-&svoy@ALli()?lS33#kc}=fCv)wDY==f>Tqo1RuD>a#nOKcyM3%kH4RThcfDKhQ+ot(P|Ug39x~K^r(?o2VDzg&2(52+_BU{jYLVfk7=W^I zRvZBNf__URYJ-&nFU6cJiHUS<+}?!VVu$PErUNY)3xkcPqEuj<9Q4*&%KOSTnPB z$duJO8B54O>K{dv)|x50ZrpI`nZuYd@qR46b1Z_;Gd(~4d%1YWr^;S$(WvvLMsNOQ z+!hQEj+b@)=4va;6|WXANB|AEfID)sC@ z8rn7(yu33@{e(;JLM>iXsTyChe&Lvrf7FZ#WCKhke`Oc7fTg;}9`Ow+dGkP(1s4P{ zuzm^|2r_QiXX1qb1x^L-n3oWxSRJ%`=k#?M6T|A%vxzbaJ*d-7cympQwiB26tN|2% z-n&{C_tTwtMz3K;jJAJMNrRW@r_o)Oa-6Dg;jCWE}a(=n>j$;FF zN44Ak%wpU74P0oitCQ6iby08+UrH6#U@dFnvqm{dOifJWHdpx56l`D2nkt-Bl-X9v z!$h9j*^ddyS{74$hs!(9&W7sj5TgqdGZRYH*o_&2m&7LsWky5%wl=09ADq-(kF^%| zwZu}%5O=Zg-k;!ZI(MY~bKPn~l5MRQq0B_H{%pE?G9f)9CF&Pc(gd!z>fpb!{+QhkB7*KFk$+n{-#kiNb0G|!>G&* z?8>Piw$=+VK_HMq$$CD5$9&g_CHaH|yYl>6eLGxI+nEquOjapJoFjLDT?S|6lUK$H zt8polWLcM3%RJ+JFCh|dACDScL{LGOkc+UKHc6MQa%1kVyUVgKHu(;sXIqQbcObI7 zer|2y<79@p;>_T9-D*2K?F!}Np%mF;L|zEzJS={q1AJ) zQ@hE(>{$ye?p5=I1l8%Faq>qI0Cu)3-UvLO*%*_n?roK+O`|Myx4;F?K6jcXQuccS z#)m7>5RhyGs<}SA8KO+A#`LJ9Oeq*;#R|5{!beXxd*;vC`}pML*Np8&AK`xV1Py0p z@Jx?sViRgGa$oE0cSx_i!bk2SH29NiY(K4Pa?eLDDZ8N)_=gK~cqc+ybyB1a3{27; zDBHExch$H~x4$28a1Z~w`trL8+-wMz-u?@(eDomjmHUm2N<#1WwO3uIAxDqK+aEo~ zKDjZllbWdt^I|EP_4o&ZXAc*!?G~#QUlmJnCTP^aPOje!*=PJ}>80kvcU}3Q+(wAV zJhpSVLcdKH;DuJG8`|%*Tgc^9nOw_>vd({4?@3~k4eC4fU>HJiA@PcWQ9mDM+{@B) zI4;b%T~^L}y{a}H(>ptPWFY4)G}PZj(M!0s%BNfoH}6rrp$_NSBhfW12!l)|o; zpLbG2Y+~vEKyq2bXM3!B(nE$TzMa2^z$qU*(|&U~o$;lY4}kQyXAzQCb3n508_;dp z^!EncgC8U>T~efcaDB=mXo5Fm3srG(s_{VHs>XfI7k5genzQDq=>e_n(lm5*?OQa* za!9uE8C%~?hQFVr5~CLhz6$1z2g?YSl$krgm-mc^WmRTlC_am3jAO+5x2)pOomec< z@%}1gZfEx#n#(m&Xco8|HcX5X@ zBSocWaZOA6UCu#OMU4jth|QxYQVgAiYWkc1jMY@*Nj0&XP!C}n%Uhr96p6~&T@%uC zsP^mOIrOC}tRDevQ7n8+G||IAa~_rJBD>qbF~H9qN2jy|z$wDYnqPkR-lU~t3w#yY zS42jLOIbjan0)X@t?n2k>tZuD8I``mghIA;&~J$r=SJ{kt8Chb`iC3|B_Um54BHJp zAw$cj976|XkI<=U^(O6jD!fV0y+-mTS0+MQ>S7d%iUmJlR$W^109 zJNfdUN~4SZiw$MZr?kTJ8l9a$m3izo24btHRh<7oc<*>E4)vE)|3II$)nD7vp825c zToj7CQzoOc3^nLb$SpN*PkNhSYzm>k3m8|)L}coDgW1oxV6Dt1q}|wVts8q(wkF=I zuyK~PF`YXF#Li`18JRaZw%cVoU3qMnyYK-WImBV|+)7bpH{JH>B{{22?i>{?D6pFE z#@H|0MDEjDsjK;k=q>%)TRLv8VXvzkE7`36kgh_cE=j6Z3s2pkT3FF#8p|5W0w=3F zWNfo{N32MAc*iZv9KnoNLM+j# zDA`S<=Gqv(Amd4#Yh>NoQol^sY@u>f+NjO;`olSImWPD%Olc`lp);HJAOrE067Fih zR36KSD)3gq+$Sql+`x*`;RPEy=`4>%_kSK|}(tUhdu!^WA0QHN#n5V5t%qk+z>A5?<%g@D+} ztK`0hyX83-0_%>1>AzsVgA)$o3+p!b-FaHnLGrGZStTZZcvtd?*I4h8rrm)=M*>qV zJDPB4(8L%1yL6QK?;DI}YBklwt+mQgjWCu~mKkWf9O%PE-#504Vym?H<{X(hyyA86 z^cxj_njZ4TdRKMBO#LfEcD2O(k?c=M)VKnZ*X0xKaG$5=?wUBkC&@i_k80+FH6d43 z)Jp&f(*tdnkANPv;ePs(8rae6iA*#~=neWELh{YqI6y`0Zva^E2bGVKLrFk2e@i0^ zVxwoeS-HZXf@M#=I|SKfA8zbp@s_ITdPLbyNc?p>^z_A%gjW~XeEDahqLm2+AiJ}T zbix=>R?=^B0jfAnu<#S1ez53DcayjJ^lCtM2L2I+UY?cK7dCoQc7Iy9G` zkDP#etP!eQ7cHKeU)k9M`}nwer~4SThO$6<(>CI5w|~`djZi!DH{N(8Y?q{nb zKU>XQm+_#{x)4gn!LLU~Jja?IvTumfc=V{|W9PS^SpH8jOW&6|Z8@XFdS0X1gFt0# ze<=IULN5%q8Nt}g?B;QeM*;}&G9|UQosOb1MoX{}vTK+h%kJzyF=^Bh8bbxGxv$-~ z_v_&tWY5s|e9~pyx>f*cd;rDmDPMav8ybh!!2J|Lg+n(Q(fnw$qY$90Leh}8hQiQC zjmJXD&adjXr!N#w1(9>5;{FIyK3~ZlK9_H1s5eN<4Hr>DjC`?l=^4UcA}sS*_Cz8$ zGZJi4DL!}gKV)du`f|V+kzd1lJu;OB!R!AEj0`a8R8>I6eLX_F{wiIQ^4VwWNz^?j z?7WG&mXJ5)V=e!%pqMtm$w1?=rBmq_fCy6Q6wOlpBC7QP+5CFnj}1ivA$Qu!c_-GW zEf2Ic0rVD1V7d9+d^t9NVOXWACpQc>y=BqgN=k_#1Wbsak&de0|3r?%#~#2OG@7By z$2XKXz;UY8B*Ugw_`)j~gOecie#kIwtp<@;WJcK?LYDWbmx6(C%zL!e3=O?8ffjkIxg705!!hR9OWNR?p%B zvz;AI)~Bx8h8bomH;K)IwpkAIh|Ky5B{97265EKL|fv= z$!joS+CLCm!%njkGlIxqzz}~l9P4~WSc}zPx|Po;YbpKnf62@<=3=D{k1ajw{<2L* zkMmNY^C&U~^O95H)uoK=^*~!L8BueF9D_lFcU$nVeb}K-!1oUYCY`*4>b_dy((6c$ ztrF$>DeTnOnTycNN?Yw27Nez1s%xz!a|-ITz5<(V?p!5BSI~7;l5H9pwaKz~HB(J+ zG+-Cx$TyD7Hw(T8nRhn)qR7w1+RP=i`inuJN!QS>$>fnA@&>Vxs`v!V!CKZy`<&Lq%?R&zvd`Z^`^^R13Bbz3if2M`QrKGv9GEm#3$Dtz6rH zKTNSpViYC`fg85{^~1u}Ww#@hj_MH+rVjno-W5Idgbp-jP4xD$&_Xf0Kk?o%3r*ifT}w z-kr`}%dTko2YPJz`Fa0DiCRE*4jS5%IOKEr?6~b2KSvJUEcL9t`CCb6uzUEL8&`~B zg##Ilk-iz}m%UiE$u$6&CmtwVaJ#W2>LDp7;qAX4Bb%sV@8IXRR65)m z&w>ajHSJz$@jLuR)Mr!&P=>%D=Q?kq6tZPlr%>rpQMY`2N%@Shyz3{}TL&6o&lq6J zx9OgZCz*1xNS!;>e2DSiZg;c|O} z#;vL6d8Fu_UXk$Y$LD$)Q=6Y;SO68GGj}Uj&eX941JsBT>R0u#4bE9tY;pW? z0ppEoAct<3j;1blG-j4-cuPre0fA~p&rY0wS(EZf?HLstQwwkfOj58ce%9spAO3;R zASqR8vQ{wV^G90{L^`H%B4qHGbJ6Ft)YAD`&!WDf(}^UeM>&gB!{27R{N8{40k3G> z9%Wy6QoB4$?l1`uq}9_IutBM`8SYZkHnAQe#wFb?^yZV{e2s2K-b zL(0c|HmJD3`=x&%q^Hy+EpX)u{cQ4sUSkxI-NYIh3K)QBnH5?*Kmnxetj{U1_XMEw zT|3?Ch1$6FDf>m)BfL`0I>tKQl+TB9lG--r3Ly)7R8gARVOJ*T^i$t*JDv2gI#ib)chGv6pJvSh77B=Qxbg{q9pn&j-x(^v67?kxm zQ6}%dN}Zx%=8*1l@*U=$3$^N#{VO}wU&#haV9cNcCfDeZzSx{JF}!vJ9OZbAUkoQBXO05#G~;zz!ehx)w{i%xo;6O!MseLU_KnpM z+r5m!C(NK#vYX7fp*(l!+11HHOu4zE&nx@d+esjrxVahB3OtXREK}Os;mBsrOxANe z%FcgHnWn*3HG^Uir~Ykh2?e_goMA|gg>;(g_lin8CN!n8hINK zGpEHS)rR+Rp>sKjs^7lmRid#Tg_Ds~0;$3`{<7V%+JNVIr>AuZd4pxh=aCML@qWb8 zQm}GKFrGAKO>DY~TP*vQ5%qFg2pG?ZXb3)ldZ@MWl?uY-w6Io~U=uXpgFnd^pDEGw zL8||~)^i%?4%l)TM+lAhokv1ysT_jzVJWA_k~2L=hKH?04Hj-z+*LUq-kdcQH8b~b z5|P_jwt(-g{$Vsr&|yst2QSg?0rXKtnQMniR?}?R9a(IfV&KUVo4|WzgkF5$T3U>r z1NU#5&^zQW@9`r1?32U*4!FGJwoWm~wL`fyyz9QdaKpxu#88{H{oQIb9Xw$)0G#%D z>Fir{n~2y0!I)bN4A}4m(r2QD4|5uhH&*Ej+C%wJLEz_io7Vh(RI@!6bY))3AwI}Tf+hsNokpT8GZ zK9~VJ$o#wsh1JNN9j0;TMn%s}2&}q4C@4Jkd$Sq22vDU$M*l$BxMSbK6*Xf;R+gO( zSs@mMqo2)?ZXd@4)`(<=}UT_46A1%=|0`yTtX!X17v1=WyI z!0}|a#;AQT(fCjP3^^VF%W#;g!R0`Z51>G*{B}IZ2SYw0>E5=Vahbh`WptY z8Vgc$(aQ@nT7mfApLY^RZVTZ>Q=vxbV+qir(4lyXMQY5d8Dnbi`$zg~_cHo^Q?}Df z+#8(Ahfd({Q)rx5?vJ3Z<-{y6RUypWa-K6jyh;Drhx{<$o2JG6G9PAl5ArhmuX+bF%Kw}kt7N0gf}MK*W8`$>*sY_;`>W}T7l zVo^6kxeK8aWzp4t5X3q9izl>W-v2g1-9S1zqVZT90iM>^{Rsf(MlMQBzEv+V{yx*F z{y4Y!6(HuD8H}?(xHXUIVK*YTT3`phzt=OendBr#;Q=aC4H5);uC0svfrN9(e`!zM zaIN)Zjo`Z2vl18lIH>=}Xi)9&73j`Fd>MHf&;W!GtkR6uTl3*JlpU#r&QeOt**)_s zacC4oP^W`(qKq~P)&9W7|CbO<>2i(NE&9Gg>RR{|R|!vzGn_{yqkf6##B8!u%Baou z%B`%W<4;S>5=JETot*Y%$W8>$2?z1g@!0rFJ461veN5T_Q^nFZ5MCi4luj#v{-JRp zBpgD{uAtgf2>iyEkPE7uwNYAPxB^w1ZyYCOPsgC%rE6cXG5LyyM|3W$eML7g^ZOrZ zUXym+{-2WdOC!#;OLYdjvnmhb!FWbh74wHFbA+~@+(ScVSSM48iEz4Ok|q8En=>g9 zLMu*(3dS}X9vcc({5UpA04LpW^vSer@ns0_>tH+I z8}JjHoiD0Dih`z2f_MXHeVwH#yFWLFARCuN);P^{(-9c_z<|*Vt%81&B(BCx7EOA^ zqo(Is6Fa)is??eV&Lap4EAs31Y1pj271$(cx{}*!rs8f-YOYRcP5lw%L#H|mo1?J> zFrB$(VYrfObkLI6TQs}4{83OZ{ze*G6hc!koy)=N%f_|QvIrd-V_wO+r`3N~+)1nT zvEW}^hOZ!62=BUT++93*;?}N0Ui4aQApF_?$du{}<6IADL%MnKRUYB1;NNxyOvCX) z{KMJxn#Y=%oO{u)s_DMS|6C3UsJ}85LvS5eIo0{lf&2{{%_ci$*NDHz0vH;ASbk2@q!4yHEe$np?pw7iov?_kky7N3ArJ<%cq2i@LE{$ z1^3PEFc&X#zm}-n@vEeOKasPFUdYR%ZX8F;dvLQ^LzB8^J%ixCt!6qe>h!zQd%EOw zUUj0leL{|W)a$C8>GqWUm$r4fGoV%6NnN3+XS*X{Bf{c!_N*=Qa&_D0cG`V!L6};g zdM$2jOd>YD)|eixf<-g-+6d>|aJ`WaCj~{K&zcTWdva>8iOT{r@qlX1rc-#_zH$cP zCVEY8d1ue>kI;3Bf(`#+^dB`Dr#JE=>{lOVkS*Riwwrw$1TbJoBT+~KPz9zE8j~iiIkqg|K3IK;JXx%_v&}j%$XK)&e zR0?@bAIqCm6%?0|oUXb5eWm-zHH%uax7c`aHA8+eKDIwO;(+q8Ue{#R$8m^|qvCv? zSh<2+V<TL3m!QHJRHlxWlZ#*;dNdPBZW%x}v6%>+!z z?%dA)+dRwfLU5@{CfV|KrCcBhHH42Te$o}*m=C|n$p-5-0EAqffw6HAtY`S-`;wUC zcdjH8*I^&U|CvkGa#Y?`B?F`vllx>ecKFF(v7W?A_VJ9|(hq>Oyy}hiP!%%#Q@_6` z&~tY<^9ZE$@0}wve4Q#ShqjY=#QVh z0(I~5e;hqYBSd5@f$<0&vQJfXcQ+n93Dc-sS~SW>2Y|K2jaL>H)d~D>njG9iX!L*?O-5>j`tpyUHL^wj#iD}+|HIQIVI>fP5RG!u3c86_H>uo zJ<7-AfO({7NdfK$mQPPA~5a&6XBu82_4#pyQxLwI6J($pz{ z&hk!f)tU_}TSa`9`j3${@3A}kEfAf4U-sqGVZx#Qd9?MuibvTHGmifIDVy3ZRi+EW+I*-}EGALbr5^S>V&rtSUm?_4- zW*fTJz?ySJ=cJk&vIDdSyD5UJiO)sy3OgZ@bGGWp#aJ3~3p7o>XxlE-GrM94t!1kF z+ifnjis?=XNc^i%N%jTZ)2|r3T%LW5(GR#Y*|f8=t`M zh^(~oZ94b$)B@gj`e=P_p2iHOJ$RPuONn%G{pAht+%Lpc1g&Ce=!z2 z{#=KqTe}xXGpmo2?f8{SVeD76#{Y0XZ5AyE$?Kr=YC>n1 z_qi-2ddXVF*(Q$Q%Y7UMtk!E+ZanKCC+J*YYV{p@dip73zri?4wa$HMC)OJV0$J1A zb(i-BXuefP27bL$$@U+ju~}eykJYHpH<_i*#W#ll`6s*8uMEKb#?jmE$4K`=TVB;KhQlssZ~>%JmSQ#`>Sw*OY;i+k=+k!hFSrI}dU%fn>& z_hT=q)+|BYAj-Zn(vexpHcV@Uy*U2s(>8Sj_5ZdVBA8bUS4paH1KO2KH|Qji-7XPW zCZRT1n(yY#c+_=eh5tjWISJ;4ny~!i!>PJ~ktpv10>(=tyQfSm?OS7<(UR`e46ekh(Ugtw_&RytDEKdW}`|YD8}{`mQOZ+o1+iO0DN}ht<3emr1~us>Y{E5iUG^X7B5ZZtSF~g zW%YrEjrr1KSCwDYXI?4Rbv8bX~2)GBJ%aYC9 z);j4S{a68moEkru9@>J8nGcL}&|)57h2+^W05^ZanN`61pt>b>z#;`!1d#Wh8wJfq zu=sV9vT4Igi)eU^;$WmyC(4t>iOc-@&eD)nJdEF1cX>b8o2dU~_8-qnsqxf1cwcn|{8HPh0TBsX@&dp8I z9sWUcRveUDPL%NNA1LoXm={xth4gK4&=?>c?2tT5Z)dTs^Nfri8X7?s3a(ZlAG~ON zblcf_oz_J1wLxbeXlhUgp3iBGh_(r{P&D-n?OGyj2n?9KS(F>VnmFrd{guIH$!$%Z zFV7ZQ`^BC&Q>l#TzL@A^=qq0wlx`pUm8L-KpKLeVuxS6Rg*6l)sbejnCMm{pKpt4< zDXTy&`EC=jB@sE|5n^d3p3GPFe#JP8S6FeKy*gI!~Ex$46pgH3l^QBzXcNPOjFWD zE3gr(o8F}6r%qq?ZIo{@_3+}pRB?uS(yuE(_~6n@ruEcMeh-Ku`E5uc9(zs_&FCcO zb8UgVZ_PZ|G_T@uSKxDjw!GWnhKHj^KoMTAGJJj#=RAb$b`t>p`F5fg;Y znyGP!MM|peo%uzXVWWJ^lpC-)VkQw9bXJWaZfafgkLU*$$8iQ zAiBCz+9_-65m0tt6FPYt`mhq3_`UC8?mfuwx(la&ws!al9UhnaPI|-kZlt2mW{8IA z7AxsdAL;7QxBB%b^>#wGWED0sDUl-K+Qsq?1TDYgl?`FQj3?azC`YPy%g`(GgcADQ zupaq5lUsETOFMDitZ={5-*Y?B>)upf*L}+8EdJZ2{2YMkma^?U>fta)`Jdk_DI&?Q z2e#K)CjE42Cq~uAo;Ckn{sQhj-j%(lCpYqSd|HAF2gMi7#T}&#fR>h7%U^SjTXnp` zBTkU_<5N-t#By7)8KaaXN#VeN_o`)7MBQ*L>jk8-4xSoW&h6|cEZw@R11uPFtoA3O zA!W;rTdu@egZF?%Cx(0olwK7u5tp%6 z<&=oJS0pkF=wGYnqDzM9A+*kOw+Jj>!g{@1t#DG%9USwD*@ppQrf2gg#L*jI6QCoE z8e8%+DX>ycp(DIzO4XJ}%n(x~?5aTfxhXvy|;f31_4Rv)Y|rbAV+r zgOt@w`}N-b)}b7A4@OFB%n-GBNcof&Z(r~Pa2|GH3;UYg8t?ioyi%12fk^^!A*K9_ zj3*mI9PS&yydBr6of75ps>Gc# z>|`Kl)$TjMb+1*qz!(B($JbvoRjWJx104W5hth_yzFQ(2JVv}UUwzT`DB^#z0nFR% zk{`1fI?%?H(%f-A+lWZS#I!G`uT~#F_K2JhcTqtrjFkamJA zr#lcyX@ms!%_U_B6J;_ueE`F9$pMY~k*ol^C`diGT9tMKLlG;JO|RMSR`I|VCDXny zxrme+fxhGD+y25Z-=S#~9AZO!Pxe<*0HC%Gxp2tH6x)RG?xiY0s=60T31yaaF*v-P zQ);0zc1#Iq+<3+spZj-~40&+IAr7tO9F%edyW;*9eGd>kFy}7`G z74NUNC)JL!oLSS2GdP2|XK66UZFtDs53ez1KIJQ)bWJMV=1k%6)tf@of>yl6$Gatv{ZOPS&oIH&6o#=;jk2*!^B4x)|FZfdnrhL#eX2e zm7JDj*0z6Ovk92_j@=Ngkp2T~2}1cQ_DReSRA!<&$g$16z+78k0858h_~0 zP;<#^t%JGcvnj-^(764WDwr3%c9V3$SwD20R&Ycv$!y!6^smgPA0y;qo+#;t6rhL%f_7XsY+v z{kpPi^QXsR{!n8f&9?!eW|%qy0ROn*iYP30d$#eU3z94bpPT9==loWK zNKTt8AKXYGYSc^>leWE&g0j5|D`nj&-MNCP|*`bA7)|!bp2{4njKna#q#9r3E3+W|1}bg)<0+0}DRUs7V%=eih5JC=ell~zFJ4(GZj4dNs!Sf}tDPe>s$(ZLiy3lW z6|iZHGAU(27PdpS1F&UkF{OKzD`L9mZguAoGa$@2HRgjUpW>s{D~%-O8uuu4EWdLD z_WPfRJohZ4|HIr{M@1Qj-J(NFcXu;%iXe@^49x)2-6aYLh;)M>Fu>4KLrJFs64EUU zjY`+3l!UbR_4`iTbN;yNu652j_x|8sG}8TPn6d4QFhzt zY1$Q_?e8xOf3Es^VZa2K6XN*&>D(VDNk#v@>H=_^iB+=y_;d6R)e4}aRZx;8*Z4_2 zu9qQ-B_cYcsl|muJ8ul2%a<*(!k^0!1MUEG!wOcgH7?p&IZE6qE+=3xeCpB7umKN+ zz(#Kwj-pqSe4wHu7+j6cuX~nmC40neoP+i~t-nGLO!)&8k3`2{d}dO3z;sqCNbEzo zHb04DMr9*2@Eai$+`TJNaW+D0)Bt!K;00G?8(A+lTZ$TrtI4w*t+=7Hw=24nHppt0 zlf?ld#3>5jAv+dh9;lEXFr$8tBNgHRka^|yn?|Xqo;=fxIFC&NuPDkX+-!MJUifmL zh>obr@g2~{2RELzH1Mr_zli+|g~2{^-Ajigt56We@Z^8L=uo#2cEk&7ZT*EZSBLq8 z_a6id7)P$03Bvfc!?A!7Fm0R~b8lxC=@>i?tivY*32 zZoa7p5G1)E>+4Qr2XQ9$BQ~k;2lf=;Hp2yc{FzpuQ)@GS1!N$!bS&{0WlR^u$y%NG za3dCqUIKumjJK$MBVZ7Xo3G++o$&IKPZN&{fXn-8YJPjJU10kg5+K+iZD-8{;3#+< zJC-337pzZaLPXY4t0MSR?3=y0vtEy48fBd@*zcq^IShAwKgcSxnFKEJ*54`#D=oV# zQHQlWqxf8-wjs5+7{44Z3&=en7}I=^F*=h4NwA^*eE^bfZqd8NLHMmLjyX0PsNdUl zx}vVMfDI*cR|>-+T);kK3ZF~MctieVzET!-iuRGP#eeefPHhIMgI6D_~?H@}B!L7em^Pr{{`6M}JBm`4MC_-;6)NmA0 zdVx-2Li!$5wOE|V?I@Pv5eqTN(vJ~yg~GOytRAk8$Y0j^gV>n4Za=2~6fHH`yPM_v zi^|P;U7?A}Q)GBeDlozJnEs&tuf&ax1C8wAe?f;4G--yKBps?R%f?$RY7E4{ppUZW zD1Ot6`^}fd+HN1Lip;7Y29rf`loaa7_B{wqkR@jRsuf2%ae@mM_jk28GNyr8!HK^h z4_9v~yob3;%`lb9px0^@MO4}@52vZ-m=23f`MiPGtAE*ME`mk~Hc=NP>M3>FTf%go z{w`BQ4X%I&*~CoLXEqMmdHJ*Nr-{yJsz~O5rlP&1J)k)|yCB44aE-7LLZ4qfsngQA zRc20@S{`%~@C%p20t6+JN>)&{)N+xDSE3XzV*?!>T&^`dYIo81V+Bg-y%14*OgtN4 z8vKQQcJ+oEE`!3J%6~EQ#U5^!QJRtRv~$A|?MS}225`ey=lah0=O~~k!>m5I)^?qF z2-H5{;r6to#f>?;vDv1Y3va6DEBhXo4*LOXV?qb?Eu*hdp%8;5V z4J!B0fWfcyCl0FPg++JFh^`Hq8ujqK4*4&XrgDyoPkHY53k4N58na;!kFRuo@K*qW zvYy~Z#$av?6%|hX1wkDQn_scTU`hdB=JTZ^lGfoIQ*r1h`8itgZmU4}QdUWF5ilYF z93brHj5EDpoAA^%pjvRl`hj24O1*kiMnTUN^)XDVn*o9uo^B2RTS*;x#0IKRV)}zt z_XM&GUG4UIt@V-PUyz|IJs_xHupQP32C@wW zTC0HmU{Ov!p|F$JIw+Ti#zjdo7DUScj*nSWMRq-KxB6-l2N_dsDu`Lzw`L|u=9kZ1 zxfpEX_H5Ib@Vk=FPNepiV61-%LAbyMcYd`t3`usaDEi%qF##lg5_Le(L}{^SwFO9~~DRj`DF z9e$-)ElSt*F8k$~afM|F{2930RDYJ5saCRv{EMG4#CB!*60^xTyb{OtHD=12UR%}^xk2`oVASH0`{)xj+-TpcBDV3-F z-=GlQJ%ANdXg~R$AQh|8`3*p({CiiF!e3C#8sm=N2f*qt^sAtxr9#!Bb7hDDt3u4) zu+$641i<}fv-6sF`7!^qw2wH0I*-+gd25y4P~;YLokiLE>Ekd~T-iXDFiDGkhOlKI zL)uZ&<2qrkIHQjNrEq>{GXY7x_Su6f!(*RzF` z&y*B0-B)~6WiCOpLYJ|4*H!eAi^1&(1Nz39EJ+km*~w?b1ISIqh~h$~V! zmr!)kMO3cW((R9btQmw0amP`D(6v`h@fWjVKVbJ9$p0$6&gK^JuDcaQUt=&*zkxXc zv3ub{74U0Kb;nIUjE{5MgT7yU^f)vT ziZ3rOlN#?nAOschgyxYU+zq1FV)ZW1^8(83zWIzcE&92*AQ2YF<8J#7b63Y^GqD-JA;0e>2&k#LFI&{(jx#iEh*5baQix&=a|GBSLaL zdd?q&4gkmoLuOSxzq$#m*SLd6rS`s8&EnBaUo;(r8bWeV)am#yBI0B zN5%1z*~Yo=vVzqwe7Dtq!^%lq7yaos(s!uK7sJXP`K4~;sAPpTnd9<(Xsa?m}(nSW<(L@B%*o zkC{F{l_JH{WS}J}5C~XdIV1rC4|T*x zp_Rf4*MK|#pml%>Wk+)J*lLN#+I`{hTK7V=mTDY20sUv06hXjyQE>qAZyB9GRBGCQ z1+%bzc0U@&(NbPkw{p?WksJ`3S0+VG48(EG5zJa$c5Xb3-k$;Ke*`=zg7{vL3Tf2E zH-a>Kpb4S7r$!w`>lo;35wHUFkK$bjaJADi6#&9a(958${XRqXtCFW|!j!_Q!9Vp{5D3_qeuDjt&_XGmjP?Hv%COQ6)Gq^=N<5d2J@edU9pmLyP%(h+DFLqbo>J z-Y=0VbtQCq%odbObIayd^f;?LUlpwX-bV`)w{Y9mEy0T!5IcK_(%Rlz1xE0e$4!6_ zXEfg+ge=_dKB1{<^g&M;#pIzcsC0=~{TT<@e_6@Bdb^f^B~Qi0fN>E!3-oK3Ee~3D zfQ7M7I5d@V65`{jWT;+J`+;m(_qL~6$q?peP_$Fh&aS!CWJ|27JV7icPGMcbpo=BK z8&B+3_0nyH!TC7m4I@{0IdF$=_;Z7&tRxw}->1+hX4h2cS|2Up?{m>|-@UQ0p2tl$ zC!bQWd_3E_MkwYsEB@9X!1Kc1crQEs&c>q~V-Oh$#p#^@crTh9%^R5{O+L6Om;as4 zHO51OmwdS10Eu%$mW9KW?8S6${`;CM3#|~yDdr$v{6$16(cI)AwYviB#L$`gwh9u)LrY2ycg`# zQiB<*?sneg+v$hb^F7PAI#wWmfb#=OAu=miy1&T%Z0t{1i^VckOPeH=th{v=ghI4*PV_znU~oOXkFqpUvg{T^mK&@Td=1T0nAz48P8 z4Jdx9`<;1%xhNoWVw*=%WnsD|-cLQc1>lF4&Him&i3sWpkQNYS*YcrB#-EalRtZn} z0+TW2bS2(g|2~y>*+!C0GHr=G#4lYH(~#2)gCvE4#d>975OIf)l9=eWv&DEP-V5wpeh;gU z5zbiFGEoc50e5V#+Fua^&`;1B8BxCS6vq?<$7i`##edgz7O_j5P_aQQFFsHB6sv%B z0WVi>!vB};RY}zEqXt=_h+2h8%&Pv0@1!;OQd|P&-X^hcpi_r# z2M|`WOnIfSJ|RX8h;Gq9WBbVij~53}&)jERU-wddXmL~k-%3%=-2^#wx7pX*fKLK`A0r{!#J z+I^oDLT%rycqMHmeA#03HFPS-l?YDI`a}4Be2;fbb^a~DWp27d*+&Czz8~WXvLcGM z!5y7|0MzYZzhzLOw;1MezX#0bX>e7b^zSnKX+s!lM2nxg0}zmCAZa`5pYe>UL)arl zsfrIDL-W*okDM(dQ38!NP4$$4yf>}HvR_TLr(g!Vz+`>~w83YK#w@MAG9?>kfLJYh z#%;8jLkW+o5c>OgVhcT)_esZSFbE-~zoU-q8V1V1U@qe_Yljp(%_K9zIXIG#Lo^Fzpo48$BR z$vn{ZO=ondxdEOvonN}i4Wss9zz_XUzr;i3pK-Zd-EsoQ0+`9s#qJDChm>_%XOF3ROT8vLqJ_ODoMra5hYU>k#*T78lQ09nwu z3#W9TVvZ0(^T*BL=(PJk?qG(9Du@I{$7z&9ye-E-vOeBrqD_ziPicTGYD)vUy^yJ*48sd zzzKvKoGo-WbkRy;7VpT1Jt($)1gI?~O>9f~=IJaeVuAeM&N8(2yQymZGN*XmoidE7xwJ|0&syc5B#Mm>KX1@bc zI7wR5>IlHaGY)aE{)4(ep1J)pka=gKm{Ai19^#?sBdUzo)QaFr)(e!plB5|R&+L63qO zsqfQk<-N~L5+Kf|g61E>(tnv7CZKV}aY6}m`+Uej&BLanPN z+b5={U|~7Ncz|8Fi8!oc94VQxJi?WtwaHz+EIC908cBMuRZ)dv+E7u(<`a!Eb=HS) z>0bxL1$x1Aild~-rDqBnYGgsWPTCda4ZoGB=wmdNRK6(~2+~#p&hQs8qZwp`DF$@g zUM1j|jdVS6_~_y!l9`WB3wn>JwNK!47HN0C6ZLCopiurDKa})!IXKnT=Gg}nQ3n4Z zGdN;LA(4&uI0_a#%vb4kmJmYlF4D;EiV)(Kjk$f)unH_wb zn}F~SqLseJ0)jYx$3W@!txfIwHgPC{3x$r4>yx_Gw8r!Bsht0%Qt-d0s$9=0;gZ&B zxK1D9&t^9OWvVJ7GKkNZ!ebRLS8CR}Lpjmeu402)n>mRSYDfjc^aPr}1qjp5)&16<_t}OOC9+27=FF^wtN%q@bt0e|^)#yy) zp8?mB*>HUCp`!-ha9j1#?a1qqLaM5O=-5e#gveS^rE+N7xY zLG?V4IG``z-iW3o6%%%oXmv8Z`MYd{RV}pGqMKSzv-v1S+Zh!CO!C+LZ>j6BI)RNR%3Q_EB=|*SRX23*clemn z%y3372FnZ}w?TyhKEihqx$tH9L}XAX?X`R1Hp;Y>olP9&`x?b%`lO{$7PebDcEX-w z4~7cEFlNO2sB&GdrR<6u8C&Q5!2q=C^s=3C z3dba@ob&3R4v5NdG1$mJ6=b=@znr4RPsw}*Y!2h-RKm(!_+Pr*va1s@jo_h47gG1| zGr=ZlwrTX%6F(3w5}(QEniCZ+*ca$xeTp!3+$SF#M^krX_{4-1e~M*awv7v%nkiUO z&CwL9D*w)Qx*L1lB6z8H|;p$5Ma35GfU_$u*^C8JabP@8Zy z7h*e=n&L5JKl?06kgY|ls^}@hR0>WFk0ZAe?^JWqn4@!9vn|x@`6d?$uH_fhagZ0g zK#+{9u<7qkU`>QiO{rV^MeeW)$b*5@Gaoa*mIfmCHCJx@@4%C)1h40Ou{EUvfF!R1 z1Q)D(9wn?)-l1OU66yiegGGpq-9tN$-1`|<;*S8cBMtdIn1Fc^D{ZxWM~V)<0pPYh5BF^}oS~e<%Vp5&-lwL4V@^^AP^v z|M+Qbh&_ODFg$0hJJb{B&fkQb9e6S1y8G?YBq9ikVL`qj95E4#7f~i>xr+;Y7S0_? zZh{21_2inLeLqK0@ww@lmZ=t3Y+$$@Em5rLt6ukxV_6pzowu#rlgWN{@hVbX!k$Z0 zG3{-p)R_E9;gQAjwSSG7mk|o=Wr5U01B;&)ZOy9 zg`?%NQnMDJ++2x;!+oZ`VnL8Xt=DUDi&qiP@?a|$xPe4wg*F%8PkhFW8!dlLFio?3 z2#G8_sekSDx& z7h@l1t*Hj8B}nTK{QR-BRJDIrhZC+z$jiu`%r>JKfGZ_GcHEbIt0u0hQKLEdW930t#rcJZgfZ54k>Wl% z$qK`PZkH+by8;qtt^mPgZzfZbs&MjUJ<)2;2o?k`o+yKiFiS8iZiDH+A(LwNz4-n5 zC?pVHHItB3vx;OGjgdAtUL7WoT+2lg9coPwRmyOc!OG-7EobU zrVRA?*C^bLxmBx(pX4g5v5y?gF%|iQVe|P-u@*+UU-xv{nI{7Mzl4$;CM|)`auqhYjp{n^isw=7)60IJ03Uivjv%`Wt7Jb9iB zRP2Y4T4KjyAe;LSNnD_fqC}y1qz51mkZHkA9c6%F%UY_s)TY-TE3pYo zEV^m!`{dfYGv)xs1ofQ7o|p>!PqVS=6HgBbl&g^4(BJj;HsnWRU6< ziPkmJM!i!XyfN^9hzS&B?4HCL$Q}fscHTbgYAzhWEYd1OmwI@;#*pC$>qAM>FIX0@ zWb)TUe`XzbZiI4J)CloT9H3jjdW@?l7Jf5w1+k$QP1AyBg#^aMU0+mWqA7?=-pWE) z^x^Y8eRNRGW-wbUZmV-!gcHsqPK|o9KJ~#VTk!7NI?wr9oKa92ZVf!7_$}@IcN+h; z2yRl@hgjx-F5oXnaEIqT<5~2`g?QR;_y@xV`6rTnw>4wl*?&Q^283L94g#)W)mniL zalBxnTCEd`6^RzHUVg(0@%hY-PSt3E2l-``CWY7jNWMNKcC!&l2b}{Sn2qM^0lkg0 zQQMGD;sXd*(D8R5@_#$jq(~rmFt10u&-y zevziUlQmS~gHLE4`+8BJ98q*yFf8(%sMpHbFO!w0Uk2L5UGvx8Pd|wZsIEY`<~~X0 z*481mnO|S_Agzk=c|b7nOWrTa3BF|#)}p4#8 zNhUDBDLyxZeC=!O;fKLs4EX_ZaAQu2)K=_Wth%&hL%k*okEJq#Qeq9U;8w(~08(DN z3SSbD z%snU$QnhJ>kOu)|Jx+ePR=U3IXJ1y6*%o3+*QwQ-h3O$2@hJ1&AO0f6Q9PtzFncti zsF+L90jYx$CDS8$g_)Czlb>Jyg3J^#Mp1**EI;rhHh%=P8L{3F*g6J=YtT z=DIY`93t~#`=`A3v$M?3OG>pxyss61`G@BA%z57#HXZuGBm*iynPN z5e*^v^{%ikaI?H1HPOzB6GYTN9|X;I0|`a&3k}l-<2^=Wcku}WDk8(|OcParoSDT` z4qg$H4l8>ES-rS=0BC*PR~5O>mj3QB5Pw9Jub+r7pxKWv1ru zaAkd|&V%Vq%G+TPUGt-5e>Sc%WjEQo+Ir{eLy5fXRDy7P34W#dx=R}=u3E4FSQDQB zM53{FZ&zfmT<0$+-3iNY%5Be*Xr-}@(wmA+|w!erd*;i7TRmxeWKeMA~78@=O9N^ou^<^s-P+~nrs0f663M!>CxumWYBJNxK5vJOZl3&#r4$U|HzQeX z*wl`6WRL8&ldKZVw%XVr930DfXh*Tqv&E9R`7v05wXb1mg6S6Jgygr$CnQG%uQATZ zE)Pzm$%`lLjO%A)dQ3naCh+u>W>!ULV{D?Ga^f_zB%N}4Z%g9_$nVSSP2IeANDe69 zNQ};MAl~fUDdA*!6}5AYrEcc-f?>@P*f(fgyNsR8vk#?ei?wM*Irib1;X|2`+xzZ} z#}Q>Xj#F^)?)euamKA;_Di1cdfj(K`9;`rbl(hLx3ORmr&-2^bJK9^ zQ37iC_m?!Q(p-Mn;;ylBRC@eXJYPOOefKoiz_{jorlF!=-`$-YEX7prHT%oF>x-tM37YQ?yGlkWP!w;$fra`Q`(g`U7ea z9k9Vmc(4Um>JJjZju;P`3c;;S3^=pk4Rw|iZUZPb`?YVL9lk1efpvdei z>M%e^T5kp!GgrZUIV)I^EZQY~oAdSB`+eBi%=xEvqB0x_GUafrU2{TblkCM8T5YZk z7BIkviLhsuu=K219m?`d7lpUi5x?~41ZmGd$t4p%oCcUNY@}#s1J(2x*V(^`RHerS zD1TY&XnZxR;WYHUKoGF4lDL0#n9lcU`eL(W(}RJh7n1kuhM>u2z?~HC3|}{h2@$?@ zkW2dJw0rccBh&>XFoL&o6r1Ou7uxHB$s_vABVgH|o2?T5KA8zf(v`FbM&VaUg;(HK z8c-8kbgyVl-!%$zv$3%yRw`Qmx#rJKb&layO!xBtj?0JZQ-jv9N3Bq<3`3ygGW?_+4%1BE4Jo|mTniTcc*-jgL#kU#5=wT-yAcye!*rQHpYM}s)T)(hu!42+B_fZJ^Djv29c47$WR98| z=V^-c=13ziagiCZsQ=SdS+iJKs;{Bb|C2DsjPZJ+lO^Kt3e{so;bJQCT+`6eM)&pP~3 zR+}jSwo@$Lt4V&=fDz4kS@Bu!@qn^5yQVs~q6%tNZ%)G~rNZj*lQOT8#(BMYUeZaQ zixkn5`j`g%;g(sP9l$tMYkFtX_U-WM*A9^912 zg5lPU;u&dLPE9`V;~{(TVbRCmV8{3ad||peffHbBWZ}-rO+5_{j_>3$;_64MXyuKm{b`qDdiBjVJ1trxhBCalCs- z=9CrY;zH|dl}v6oYjaW2XLN|MCh!V{bI#*mZgKilco(tRPOns%Wl%Khs7x`E{ua@U z{PNg$jdk+*%PrSL{~#=&W^iD@-0f~m|M#dkNT%?AYV!ZLjuHPCW(TtWWE21G^`K-L z0o5K0G_^p`!UN!YxHf)mZQ)7Go#q&XqJbubCkju{mr5|mumu<Ξ&GzqNJhd~9+Y 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çs!|kJ>Voym*|w~uJGfO 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%0DtP{o?^w*KE{cL9|H%tNic~a-w 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

W@|` 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 F|JihF9)JJ< diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/4_s.jpg b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/4_s.jpg deleted file mode 100644 index b9ea423224cc3492af4d9b2a2b0b6073c35a58b6..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 5203 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 diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/5_b.jpg b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/5_b.jpg deleted file mode 100644 index ea1cfbc3fad38858318a9aac2f13e3ed3601abbe..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 76217 zcmb5VdmxkjA2*ID=8(HT*d&w`IZouTHH28kHZ~os z=2RgRcL~|5J964BlvBFX@qVtpzu!O4pU?bZ*RJhzxORPBpV#5N|6cz$s-lnE>$6uy zRaHer75G#6@3#tafArbNQ<3M79W@V6FvkU8_nnG79cdRA7l)3DK6c{I0s6?9Q~&*~ z;-#`mO=FdY+A83ozGjuWhNiZLmX?P0nzgGnbzvsDMld5Cz4ZvN-r7xTb&M?REH-U6 zG_o-=*=XWuXYGivHZuIvi0T@3bq#e518r>s!*xdM4F8`W|2NT2LAmBVn|9^+-Yt+}QUbR~N&pcFDsi=cB zAQp}b25^tC)leq_Be`h{<-NI zhPMv6W2Cb*rR92ro!I#1oM%>?TVlBDK-uqnrv09fqhr_VRGAuO@xNZan&^bnsVEum zs}kICbyeem6B+8?yzH+@2uz}oI$+-VGwfX?N3^-OoKl6!xBjj)Tp&pZkg3(T@caua z7hjIpq=vp1VVtPJ(B<@^LGwE>JTjZ@cfmUMz*72{t|L$TJsGp#I|l|nE!o4w-rVu) zWiPdM);n%}4|8b>Ou|hR#AN$&kmdPiHrMnLyjr`N<*W8Dv$S@G@B?pZ+QlEa)_VYZ zES7+3*}0VLfCu*sx^!opb>s~hfCAZ&*oqpraP^(HQcf(TmtAowvewg-Ep;Qs1Z2Zw zp#}=2MWY&^2{i26kKa12bg$Iw!-l;pdq%_;-0r6Iu-KH--!VZCZc`A6(JcHHwE|rj z{rV$Kp$+5A=2%yv){bFJ{WRE;M_9Yotg_nn@zE;;+*rF!_ub<7wycyvD9KwG7)uU3 zR}S{M!fEqoAIvU@Szys0qJ&N5dErVN+VMcv;fCS;C@g$KolYw8I}JC|v7SCqVA+Hu zRZQicSHQEthEj~^r&JOcP5ctX#?cQ=2jAX0@UoAD#YYlIHR**^l;!(_vzgy#sW~Jw zq%~#^E1Ti;W-#orxuqt^2vuQ=FQ-Yf|4Q&NWvn-t0#43R7%Y#*d7@zLh! znW30&%5oHTTU?Co4IY08gE#7+C~+wxO&i<&=p;D-V@6N9@meWn3VX;}L0O@6A6$5J zBm1y*0lo?B)4m z=Sm&qjX@1>39#trXO1>0V#PZAoyn%osXhh8M<&E^LFS@ft~VLWzya6Ww$okrf73=WI7!wV*;mvp0zZ$!d0umq{@%(WAJhprd$8sd)L zP~zr^YAPOUGJ6CU>w|`i2;uVHYtdp(%s6-IgB-gcVI$X7dO`X6+=ICjV3|AE16n&t&e8Z zq;=0umIF3|IZyN+;s^ztE+4aZO=Ppx!<6(30wL?`@mk2%AuWs_YF7!5|GwMxwbr?O zQUI1p5}!FNe-o@IlrM=IcL~L_1Q#BCzhg^Z6k=Xy zF3{A_^HG&6YtyOwhmpI!)+PkD>zy9GKT|=5Asa^@v2kIlu!g-C-~KE32Mg;mFg_So zQdGntQ8&n!>HoC77ogV=8zK*u&I2s`pDM@0NG2NbyJ{uE> zDv0O$<3m)@%j}II0SE2yu10UXR3+Az5NT^2v+J%6md~`CiE6oSyc2IJwpdsBo?VTf zsHbNnw7kOZ<%~Iht!d3@{C_Im`nprxDoiA02u`2)j@g&K`*yeNShexg3*);a3E1`? zm1x{*P^!Y>Feu8U)RydaODfsb(&?L`%XrZIfH>IRo5hP8&3?~5@cvpIHfb)wop=nx z9)HB%aac;J@?N6w2)p3gCH>YbUj7qr_g!^*!flNAvUPU6UZhM7itJNg&W`5QVeYnt z<-qDM#Z{47n<@{NE@e++I)il@EwRzniK8+oI%Kl+%dkGITB{&1x49y%B{S=Bf)Zv* zAc|z?y;`3HkSZ;R4d1X{`N5VcTEsGbO)kOb9EZ&CXLzHDA!Ng%>W3eWl00}kqNe2> zqKagl$rB|mu_(Ml?a8cKGJf_wn0Jx32Z{ZfDB{^? zH$hSPk?-=bP%)U*SfW75OM}q~bZSYQc8K0gKctA! zt4rtXe9GdGHb4Owa!n)6AHl^30sx&=X0)*}R`O4A>9YF4r$qygcAp=zp$?HDwc@CB z9ztD)*iNSrDk@RO$P2vL&{xUtv?5s|t9X8FJ#ND@o01s5jW~My6Lq-ZY(ij~OFcVO zXSJxbkxni9NUA^L@UkGaRbo6)PWf4ID;DEPxyCrwrQH-usYaE3pHqM&td|cY)y8Nk z@a5dzrcNdhBCh0~mA9l@_!YnNBm-O0D@(sgB4&e`OTESP95q^N8(n!TzLH#4oEhhdl*zyT9@pHE*WXbgf`V;yX~U#m}3rS$e65%vJXDLOGXcT zLi6CnhQIP->n%10buHB<&FY*X&QIv=$lt-z*>F^Y7G1#NS-ZFTB_-t-o!WZPvm4r! zm2)XH9_qZ6V|FSkRf<6z3Soj*S@JS#PNdlYC|&(hHp9qyb9JR92aX&Sri6MlmG7pE zZh3y^)vF}c&`%$Qxe1F3-Mg#7{C&lUQ-LnFgTG?mnQXJQ;sq~kaI@(_Z+RKOKKfTy zW%LcG@81qQ7O_?wzvZc>PXg>9d)vzU&rpGR#ouyWByUJ7U7bw$vmNlM}4P z2@%EU29tu>aMw-20kg4zX3qHugDUq>t|t$J;4{)M|u%bk0!D%&r?{oc$%=8f=X$4_U@+4Q)a zSm&s^m2g*$Oa&9!KbEe3OGXqq9~89b>`yS*s3~GLH!CKB}PW!A5`Sir(lexM@az@S4YRcxZ7==feS|7 zQ~nk1FKEviPS6UtZyxFUG-Lu~UBDh?FnZ>C)LgF_gMZH8-y&C0?*}UGbcN z&``D4a+@o;8Vl*_fzH(dg&F7s40lJ3W<-Q$J)*aq0PA&w$M%}JG1KSvm#)G_mPfzg z4Olfa$rk1_z1)jBCt%l;VA)2_WPBJ`Lww158@pIzv3Foy%EW#*-m&*rF+U0|moGT_%ykYjc7iQ{HH&-6mCz!L8u|z2)&$4y~Dn8Y$I} z2Fx2UxG6kus9r4-72eY7;vIq35#~mcmQ#6|E)t}SnWE+Jg1ww6f}=HMF+J;_^nh1$ z$#Mj^`dIc#?9ZK1OtrAyXx6$5}9uV?Pa?RRU=p)2)rX60uL{OMRI#g z!y_xapv@&=AMzodSTd};OUr_12a76Qc>+VSvh${T>>OH?uLkPG+l4>CBD2UHs6r*&7Tgs!^9Wa9-MnO0025u1lW|U@(HkWq^iz3d!UV{372);klQYIOi zgD_g;doi=Fb4@Ia5Lhn#@XYTWWQNZeUhE|)R!0X3$-i7Am{4jzId~3W#WSdW`s=Cd z(r2HJS-(+1fzcortgj4E5_PFqBuh#jdoPY#hxN3y82%xZ1T=f$gIW>-f4Q{Rhf^hL z;XF%L^TQp$j)3H%kSxypl3bA333KJ~e)4MeWO$y=v>B0M_mO!pALzJsr zw_8+Ob6w=k4e$8dz>YPh0FU4P8bRieE^xs9bDsQsnKg7{TzYbqS8Z zhQPX&z##f3VEut^*`jzl%`XBJtZHF?3N&Lbk&0F?X)Fb{5#kuY)uZf-Cu6O8YmgIu7380z%%LR%~RCgaW>sd9^7p^e7-`WY2BO-t(Nw% z=d9}Ljy8!b_9oj~(GR&+-8jkm<}BC)QS{j*QT8Sip^{D4jcq~SHTj)71~(__d%d5& zkRLk@7vxQN%(aX13>2JY9uIP&x9?DX!Bf}bZN;a7O@1$vb5Q8sn(NF%OWQh?$75|y z?Dc)}Bg&?Ur;H|IM6;oT!gmNm^}Xc_gm~pm-Gq%u-FXP_P?r)5nUg+ECnd%;4S_P<`wVD1E#NTU|aZp*9&Z7jw018aij1>yxiJpv&~Z|8+sg-Ez8E0K@T6> zv^QU~H$E^$^U=xK8b-6um`)}ALSl|uCv4*cI|4LZ z(9>pA96|i_sYE+Rw4NN1#`e=4&fApU;C?Xk3Qln?b#p58b~K3)dGL*8sIANCnMyL4 zu&qF}+r)h&eM|j`qv89vIh+}4back>#F4D{3DDY@FzK$^<}ckB9n*|%j#M4rH@!be z2%c9?Lw@eEV2Go=S9JHEpWG>L3F8Et*4Kr|th6!dV=2n%)sJmxHYA>X5BRtc(gBrd z>0&Uv`UxFPX66KkIc126pGtLn$5N=*PwQ|*XU=zs9cXh2p7_sm6YN#*JOXdlIsTJ9 zY;edd+zdu%8=7d;_qv5~U3kiALr7R!xHdKF;q9(s$g@Du<|>SUB|FxKELl`eYsK_g z&iANyk;u5NXvdt0Z{0^(ww3fp$f_`1JW;K#dl;0Jz+ z0f3WKY}cUUeO4qoEQ_ay4w>`pqQ%i2cJ%x>CW*ukHj9=wx(i9&FdAh{cdOTV)g8_R zBA{kyDSsVy8S6j*-VgTiCu{Vl=q{kupybxE>Hk5Z%~K7qy=hoV+$`;iDO{iC>02v~ zbkQ_O@J)~Z<66DM_0w@*0eWp!mG#WVBsbKHA9*bY7>?{p0w^1Ucf9iMq@+M7g4Yj= zqs_Y5jU{M6IRV`Iw72@p2=^4J|87$S=vBd&ClFsjFRjzvf?9Uh9iivLT5JHe!&E_0k{;*U+?Cyg!~wQgRM64J zZ3f_f-n=Qik|NPgi(DmmkUj>Vh*QT6Y|W7xve`YKwugzC>#^v32yZOIOe!%l$+!I5 zaYXg4+UTYUTtWi<@@bHk7CdZJ*3~aU6=zD+8-DDlmVw5%N~{OdWBEpuxq&TkzHux5 zE=eB@L-CH4b7`ymwFI9uVdUKrO^S2*YCIu7fcuF~yS%6Qt|Mv5k3KMF`DV)%-*JtI z)jx20A_Q?k0$Wl{R(puc#zcACICZ&pT(IAH zrR4#5_k%DCw^Uo?Ck-`TanO~Ox}Xz>$z}-V>8WYn{iF!Uh>e`B)`Q>RZu3#tp)zpi>M_x9W9wUzmtK>5#WzP@&&W zfVSlw)xTEPaD4oFoUks;YvN|ZW_025!9M5|+ez`r-rHw_joz-D-njY#&*n7>OMW9ZG zlbxE-GB0#uVL2h(YGWNXFejqixk|I@Day)uY@OGZf)g2Qy$hzw_1l$4GqVo9 z3zzaEWC@)s0r@b8K6cOnqAaLi3fHAo~~gnE2fu}nPbpn48|LnjpgsY zbk;A%pO*J7vJ;+H&iAgp2wXcr#`t|bFNLsRVUtL z?L=qfSH-ocQ(E4h2%iV%;K%VkXpysUlh6oV>Xb`y9mX z1I^k+hedm~dYDDDjAa>UkT7#fjbXC~5!vEM_$WWxEuMa;5Fhjs`ooe_MGSX#3)J~W zr{=_Iv<1%tgfYdVwL=|vq2zE|p3hFyqh0g?9=09?Fl!M#8OO?ERlCf~ACmR^k*vmx zr|1LuI{Jee>UNV$tjstrMUl^@6tDo(`~2P;Pm2iKXK6V*)i37-p09N$&G!PC0*^+m zB~1XDgui~=c3Z5NaFyU=*noGamQMRzDZEo2*%X2>Ds!nvVOD=HSe(Mqsn;xUBKSnd zb!iU@#UV+yTe;Gy!Y#W_9}k6E0;Zo4XttSZ?TFJtSeKubQ$`c?T;XHlD2~Wnlwt*4 z1ZGrd@bX0yH~%!ha}G5~QTmPxgqXHSt}gw0ZA#{*68K@^FtA0mVKAPyMtwjaVty** zSv2T75Sw8gB2#|?Ov?B~9jqSro|s-2;ncQv?}7PYGb7^&bm;ba5RyyPfuiX$n~&WKpggFIDZ0Xh(SJ zIEsul{Bi`ZK|Gw?vx$8u+me0=qf)ZT&2Q>RE46mp z?mZ%PmHww<{K^6Y(};!j#F!>Tv;I-_;U9}i$&!ggMgOVPS5b;l+lQ}K5!@qvG}IH& zGc|RZ*5?oB+!Jnt#^N=VbG`|~?e*y|d^%ibkh$Fp`=xe$gYg)kG# ztn?^BUCtez^<_~tk}poI^x9?bS`$R&^0(a~jVz_DY2Ur;X65w6cdu{1^F|WRdw%X6 z*u8$k=<5Y)tA)Iwjo}|HqiY`J2g0tnn>X4qe^h4M4o(?vzO=!(opOwt7?#$vfY;|) zzpG{MU)TC-ijDc)x3)<&pZdAeqVUni9!qKS)vYZS!w?YD zKK8EF=#OC;>3gbnTjS&q1!}x>DcRf{aQ?*xO7E*7Wu*%lBph0(3uH8NO1;vs%`QFb zEnXi%Q@wxzzF8?P@S?{1}dnUj&Sibj!|QAH$=p23!XkC+!_DH82;Z(YaMyT|@&y zLy;Ys4kQY034=;qkkXg-rQ=X4rZ&N*1lvM%ew4Ib@O5%yzxe5|^OVO?UmS zG!j`kuLM7|NOwgT4OnZ5aamh>?L+BJh(mwuUd@BgGR{dw9!}Kg{eJX9%x$I^SKGCz zKvaJWVo!w;voZjnLvUbDQ@W=Nkfb)^qbf&&VIyjDj~(t?wNwPhBTJ3+C<=4;sWtkAnAIteijdmu3Cl-1Vx9^NyzT> zxsa)JY0v8H_%oYzzSOt<154&KcvXK&WPV;!s6I!!qQ=Vrl+O*2L^b#)SV`YKRonHI zu;&3~@>QK>=~ZsP%X}DQVV1%_i|vMQbc>aI+N2-Qwo|6qMZcm6Iz5CeUIGaCMXkt2 zlLx-AYBvU84sFSllDo1#01UCYf-9sJKFXC2dzkYeta^G+F}0q{cASPp`e93^$o!_B zw9alDV|dH@1%d-sqcx53qUg8jXpRP@#rZK{WUgUtKIId{sR8}jAuu?BXtZdtX5+2| zTDTcohkKA`0cZ(c++0V~u1fF-5PZs0hT(z~HJ;!wTkJNbzwHiO1Q!i%&>k}?t_&nx z?=a8f_((nRNE>QlcNfB;0V4nj#F1s;Q;t~2Sg`gyYo^w>o9ZZLX75e78=;-qQ03c# zEdlOb_#0HepTY5#Kr^F->?c?)zla-e;FINGt4w_u7RBcTu~|)UZQHAZuog^)ha@48 zo9KB|h0pq>g=2TzS%W`0H0e9dvZ6ybsQA%HVtVdISHaU~Qj;rNQ_Q(!Olt6V`qyJn z1a=Ie|AvL?ClhZU$vn722(q?9lPv~ z_3gV-cj~+6=U?WkEAcTs>#iYv>X;ew1otAHM(nW^c@dV=x&6Es!~1Z94f^>`z`?y{ zW`w-W%`i?TO0mhOOgD9zpvsoLlXmM*movOIpwCBU{F;&i5dHyp`3M@+<+t;OEs@kdd6<*9!bg=C^1}w{W-~Q=1 z_QF&RFtEb4-r^aHJ$9%tY)3cpjBO$_y$Cj_vzS&O4xVbarQUvFEW~!AvUIhY^K3PO z)}`?Jk!6c6%A3PFEnLt~UY*9?Z2T7g1j`-$J9$w>)s8SswKmS9A^26w(vNXOGD>v* zNe_q57}E(6DJ-Yhj!qyMD(;v#DFD3#pb~S&1^s{>KtKhr2dLehtteh7k=*7YCT_;` zIs?vdh(K|eFBy?$OX`38O94-MTMO@TsC z(Oox@qO1hps}MR4H8v|w2$GUFfZPCBaA7!I5gVE9{vf8a#1W;yEBdW`Jfw8o=1rSZ zx*y9hlP%)uh0N0O5ICCWFkTi&QfQZAM1woxlwgc$J_E3V_a>hMeTo?o#fV+}qJ0jw zL<57=M|umS&m6lge@e$FtOaUhE`YIR?Q=?!sU1;xNDNR!DGyG4?$pK3zSbCtITT87 zgq%4iU$RdEpwU^+Cs_ngNCxH)5mjx*j$sz$E!iDV&tdA9`W`3`B|-%DQkLQjAA5OV z#6hL5bQ<}(*|z+hUxp>>8;@t>F1}TuvbN2n;i_GMLXIj4zAA4^6_>095j-@ehrSXa z{#FRGI+`hyzJgi;!QU*l-dmPhVaY1moOE7+Qvb3F6(p-(|5m|Y?K%XDq`K5UT{0bl zWZryE!RqBImA3RhkYBC$muf$@d!pJHVE$T@zQaxN;BofFbu4(co1*mFG8{lF`m?D-%$E6GMM!gT*&M$zYZ-tpRaJbBLZ*!Fc zo_B7Rxm^&e^h>?pF({9}?QpP%w_|I^vpu`wNyiZeR%{-B5|t>GctKDoeN`G-F8xMF z>p_OB+qM9^o^Ua=fCq#5q7(r33g6^-_!vt-x>OM_5H+yo#<~ZYu!!u|YZ^IN72#^A z?NGe?ehclMH*lL%Q?wOX!yA|(wz43cwKv5#7A0-PhoOj7Rkiyy>daCEZ&qw^ zURXEB#{Iqj-dT=A&X(dX6+ZJ5i~uS+UW7fyShw@(PEy|nEsZ>(o4Zdss5B~XdvLg4 z=D$pdF&6voKwVoNR522Yp)R#IDRunP`_A6>@JHQoK)kg^LiBmWq9ZGvA6P!;vOQoT zaag1C37D35FW5s{_*T4=TtBVvuy5VE6hWpibVj+_6=a^9Rly;$MWHoS0T(P$fqF{P zNJ!NjM%d%@O7njBN{c2kyeRl85E(?k-=6+QxbSTuWusx%ZG?bVec;u@m7L+Xli9v4 zyn9qjrTU4hEqAO@Igai8Z|ymeXMMA=I=}BAb_Z0%9>q>x9B4c-i;K$F+dlCXGem3{ z&s$!el6+Vh`~XsD^x1nK{m}}K=P4-do5mkDx@%>*GN=9^j1lwe|9GQnc6$7ZQa5!^ zIW4bcX*p#y$XhD1^(v8A8^v`*^TYF~wL1BZW9>#8HS?`Nx36wAmH^9HsXs zl+aaK4WLG|sn_AcwD>BTCtGf+K*o`SZc~Hqc=UrED-@Ig4+3OKc%;6Us)-t*GBFe2 zu1_dw@-7wqX)*zC0O->LLu;MIE@BH&8r5i#^$M3w+nw)I@Y0F6)KAv1!MhAg^lhr- zC=LLU7-Jr9o?u|h9CB&Di^XEbf!Y;`-ncZGqb6We?A>@ZTTsNzvgImBgpklv-lRZL z-Ob2BEioOG$w9516*0V&aW=jYAgUOiWT~c{qOf^N{Kfbo1TKv^U=e-><{50U3x~|K zN!NV1Ly`B{g-9k-cyx-VS$jjXn0|R4B??aY%s1*dR2aN|a8;av04Tit<3~eD1S~!& zfldV#K|FmM|G2O$IN7MVyjj{__%iLYs>F2|$BLU0GffC2ax}(M-jGqP#~k|;sXaHi zXz&@pn%dVJyN;KENfGSUrLpoy7E~;TOi`?p&C*KhwGTGHMZv)LWcxV%Imrh-L1hA5 zpPlB~Y|@oQMr>IBT~Xm5Duj;ad|_|$XRiR^Va)DcQx z`-U)FF}^wdb)J#D1Js`UPv@_@AHmX7t`e6tJ%xJJwPwi114`|M)JJC%6F!|Zp;JU1 z(Krc>(z8Ac9qX@M-=xafLpV+O zY?p=1YqlM-&~5Ks1>fV!I$jGHWsy29j9(VwD_#r?&1@<4p~Ez0X*q55QI$)@8Iub( ztTC;4K646)ZXTPEedM1diY@t!;XOi=w-R_ zc`uG5Z}N68r9WvUVl{5@r?*{87VMxR$y1^2B5 z)TjZfD+I&3+{F)~x+{|$S#+pUl?;EW4K z*&>A{bV`*?i;(ID$R&MYMh4JGi*-5BhLtXKfgimHus~N7e;e-!R%Aa>Ko9Nv64~Jf zWY>kVe4n@l?<_d6CFw)s1suDVGGtDsI@IVK#&6(b7Y$uwsz|qTLso#b-bx3fh@3Ah z3Mfc@$57CXp?P_$jk6_*Oyb2T&dH$vfKpkUZWrK1ixG-w&~)NplftT4R}F3#oDe-l z0UW*^N76ORmahmjL1iN))v^FjE>YU?>6n-q$$H$Ur}dudD3MM&@+?pcz)f6oL1wZz zeL%-%oid@2gaDA|r>?>qBp8?hlSjZ>1oV^| zfYG949LaH>9T@VU5I|r9Y$XBG@~1`&iX=%iZz6^7`aR3M@8uLAPdq?;-#$}8=_rJmlt=Vidgq*es;Y)=0Y z*;4CAzuu%d2&oW- zt%xToiNd%t8|ZGhn8*2h`gt@f@KwTY1B-rJ5+*;;dG2$vUjw<75g_YozQWSvRc~nr>ckM+(ywEAn>n)2p~DWNad5h^B=!^_4UVW3ri1)Y#f*FBoP;_K6NMxmzGLY}Xac#JIi*W}9;RL%~q6P5IWPNhL@^{}4 zxV1m^AExlr#+ct5@*Zgh-1)Yz`=%!%O?x97sd8*NL;f(J(p|$BgCS9Oe*i*^kk)7I zCJrP~hX>Pof?Kss2hdNR{${NfKbNN1&a13KfFf0y#Cq+EM^!tN*WR;mHc%^@zjz$zOk9%$d^9qN=|d-YQn_Ys;UWDAF&TbGRABXHOfjPeqACa&cYqNV^4VND9j9i`6dZi_&PO={yr z$H3+hPVayT9UqJgZ(QpJP&A8P(8Ye{%E|;A8za8Ryc~?`pt?x#wC%uBUzFJ7O6wp~ z*mi*GSUA{p$VgRD40zK>M!Q(b?K4(Rk^&vOWoDDX&JCPSXKpI0I5|9MJ~81ej92*Ij-9 z5R_u&YOiBHVwbkvE}(EN5PR?%nz3XNV5>_e#_C^>H(^J&dM9T3-!zZ zCHB?|nJuO_8UH%j2=pCJSyjJ_PAv|Eilci02poULY>WQ$y2Pvy0L?<#0q6!F)-jmr z8F+v6atZ?@j`Rm;M{U<9WKm4DbaL=E|F~Xcla$ov2Iq;?;6Yj9sI>J+R%v*{v+Z8^ z>&c2(*y(ide;dk&p>6`bcplEijUND#6O>*i_Y8q? zg(X9{0qRq5!B)^B2eN2l_yrXZ0~Ro87ZWM^`I>Nipug||MIf| z-62?50vU4n9ZKg!Vjx(_b^_gxo*%^~V@U!)n<*)yAVG`cm^eWz_s8S%ztS6MGje3K z=l6gD;U7aWdq@Aa#hRo)9@PU>X2X8hhG(a?YL2151YbJ`pjbHxBQh%c(_(NSs2bV& zUBTB&j3b~$Uk88^h3A%+p`0^;+JY9kw?LF>#h%0>Fd_Y)Y( zDHz_oc*syxd<2L)Hv2mr&K0~Tp$2C9!St)72YErcV`OSn(cUz99vQqXjb4Vl6GEJU zfIh9c*Y(lGoQ=Nh2ZjNKmt(-iJ6KqNNOXo@jTW7_Vq}{ur{#5F^k_Y!E;k=2RtnyrpGAV zrw{q($$HlbT^%ap&;Vow$U3>@)TOkX1gr%$nbC6xGPi#@+X(=nt;SJ#FXylpijuLl z*L}6qZ?j%&9-FwjgVC)%rQNr|RSD^Mw0t@Ikn!2YUlwuI1%J{^6`cboW;Gk5Gl0MV zXnR@*44b%Wi~;eE zI&7L^o%d9v`ou3Sr-w4HM1bwr(?k2I3RnlQ|Lt*W1u93L#{=s$8MgUz_#aiF<5Ok? zP?S41*Zvgqv4lX1zMkIy4wOw%O!lTAV9|1^ukVnP{1FnB_%pVCAH&%rF;F+jboAYp zUOW0yFKh1H)(Gu4Pi3k81QHXhZf zU6v$v14gtGA>w$;W>cnt;ts1wa`zvXsl=dZwR1PLdoFV)1-^ia)4}s{^Ob`D* zvw0D0cANH7D)FDJ&swEFfu$M@tYJ8k$el*bl;!PhP?7z60P#{xb)k0vwddy$sfx0P z`L?*u(nvgjC=nuo03g2_&ZbSikXDfdR}#PmX+R|-YW&=)Xu`pkjFdk@)~4NrH{>Ed zOi$s?!6&*eP?nG3{ZqO0=K%SLe0^hcWzkJjdD#a(Th~b|!AvywOSCujZ6UL8-nngE zU2lu$wwK%Tf?1Os@1LioJC1y^_}fEKHvRn3MO|h?neRjIhTKv;*u?RH3wG}>dDUpQ z-Rtu5-6#=hV>`|UD@E>eaJWEp#^NyNn(=q=+xx%nd^}*MS3rpg+|m}=^0$9e+^ZWH z|LxapCfaw6wXN&%_QjC9o2(i_LB$82AJpz7F}AGN;1Q*y(MI>DMTdnYi({tMniZLx zsb}WlPz(3 z9|!WuPVcJ^NI@UBz>%v0DI7ZX`5sN%`hlf_(3*?LJE8p#Q8=#povtQtz7@j%ZN-+& zt7o>pMGo$~T~Vk;{Jry*zovIyg>323x!tnV#`d2UM>aa0=cTQ9QpemcAIhjg22@sA zcy)MnxI4|VovODhxk$E?TqI4;1Jisnasz%RHDb7~#}>b^w6hW~GBYG5-<2RE08!Gf zL=;+fE0CwHb9X!1?-?*L(g8~Rs?-w!*)%oF_Mzi{F;m?fdk5C1Oa@wZ?oRMp0JIaJ z&x`;TlWYOFMm27g3`v2J8Gs3BlMdCNz{k(HwOTM1{-DeH%YUBRF)(9m>or5aR~f2u zLptn-Um$>)(vljzZiDAjTNvG48y|g6ZRp~3xVpQ`Ccb;3U4Q5AI-%33V8vuaTjaX_ z&pxpSgc@Kom+!s36ojf*f=#T%51p?w(%3N4D=joj`xO#SnF8#ovg(_@h z8FNZ4T-u{;YotyEMk^vcGfJ0=Xtn7HXlYg5ZA#61@p;NxnG@;Ohmg>$ z5_PIbz`_2hqhMns+vD3(GqcJ6Gn@!;8b$)0lebzs5Dud^>j5@59}N$5_9XiQ-%oBV z3@OC}gS>_HeUe!mUZNNsgx(Sso-EncpOn9g+%m-7+Ny}q{2O5O1%gfNAzR;#`+4n(=V?6+vB^-*^{D&i*NX}gR|fEwG6Of)VmA0)RXmDTwk}p zsKCE3dkkDY2BnOX15Kkb$y(G(eMPLBwQ0<%%i^K>9OP|_aW)_Qq_gxM^Q69YEP-J2 z)l!ee)k%G1Y76}iF)<#v@}l_hGmM7L>BaQxsltY~k>-nMKtp6k-Ii%DGWnozTC{hY z?jH+b1J3!FBw{uO?reEQ;@{%n)W=il8&gpk*_!HIzj(9Wa}EA}K`STYfRqXi2xHCuUWww%x1)AZ&g7#4Ou# z3=mM=4B3fU_8vfw^~sHH)~PZQe&@sF0L+Di4jrOa9L8Rlon<3>T@!6?)*&VzHhQYr zP$PhUwzsK`9rf3M#;6r)+EhlTkq)rtxAg%F&o36R7cCpQyD0;XPTE{xjc$AY6~ozLvSTFR10m!(rIQ*RBw|BAiU0hkBotySIje)PQ5 zfU}rBOW;&xXM_xJf1Z{*OKABA;(*0vu$l$pNHzk?8v*=o|E-Qz*~+gHK^Na0ez-trGf44j85SgA^6}V0zvWI;+X_=4)cd0`Yp=Jzl>_{d^d zd=g_OY2&YpHjn>Z(K@6pPrCCdMe9nYhuC>nb-oldBlJUtMfmPVyfty4SSsaOsNlO>yiOt{U3! zU(TKfi&rM2)9Iv=n<+k`p779n>>e(tZA1NA8+e9W^W+Es!7;!{(f4DomO z`Z9!Kx`h=-24YiwfZk7a_C&K<%exep_w42}5 zFU%irW(nu6AtaE&D|hXda`k*RxsX{W*>%Jw2sg~FbzcF*Y$Yi$s#~LBE&f5S00^S=%+xv-i@D{{+pk27x0ve zTbbIi44j$Jwoc4Us+IY0J3$O}8D&*rBWIzSW168-$ z!?OWw$RNNpdZ6II+SsGtn8diRz#hw>=NQTvT?R^Q8xJ*D4YW-6x*Nyc-&A^91DS($ ziBezbQGlR<(GM&?!q>}v<(pKRXIkDrYqf@fe_mx+Qz3{fjsENcbtmHjUQVDV4rq|W z@IKIX1@(5{)sa&tpa5n}Jc~&dCP?bX;{=*zx&O0_WoJN%1{oF>T5i38KhQP@>fiyN z%N?QWz~!N77xDtEN_W@~EI61Y>f2KHC2WSd-)W|93GLwEG<=W^9NAD=YJ--8a@7ym z)1q?6(I;VWwbc=J#Y0ps|Fvas1coN7j-DDck4|$jq_Myopj`Qj62p`?^p;Tdin=l~ zV+*9RDhCC4C+KrBPJl^?m+L5lilv|X5XJb?j9GLv!kU19*-$nNT?R*J@CX2q*GaRm zm=^~NyIFsfr~6PXuX-;8ze0G?gbH!q7HAg!&Su_*TWS`{Qv4SpYh1PZbm~u;Gv8pM zM0J6-r(>zN;xSC=2ZhtGNNP!>R30Upu+_o1{1sEIvXfGla`*(RY=6yF@O5 z=MpM=;o(7?9CVE*23-Y0qyl|B^RT_W+|Rsmt$WeU!d1?t`AHY!-xjc438K=pHJl80 z*vFUQUZn=X3BGc~(rx2cm}8;#=9&2Cw38em&NT?8%hUG@a_U+v1m?@qA({`nNVLRIZ6 zO0Ui+q_G1X@MQNj4y+>->f?5;6tSpFwj$BnW2{4d@wml8wTm`GWv_aa@+}IAtR)Cr zx;%x2hLhhu9OE-nD_Q9xvnyQ3qjwDwXL`S*EI_0BD?B8`F5Ws^yvdt)i*TF;Ly?~2 z+x_yDPBN|-u9E4&pLIGD;V^ISyyk*2%-Ur<&}?sQi z<&9^A5bfs47QMHsT@E4YR+TLY?&_rb9yR+mLskzoZ-A~Sw6Fq^mrz<}D{lQF$Pw&i z8Mi^PK3i#TotC2ty+p}0`0G&Wq@fJdSzj-sj?)>a{wRfU=*UCn>yTH=(5=iGRv?h) z^DF05g`Z3*rV$%`^k@_uxIAQc-V{dg$OS$1&XK;4-HzXBK&6Fv4@k+a!(iVNcS}gF zN9Rc}>P70-)tgoDBRtmdkwA)O7)@mb+}Cs}I3gg5O2^eSHH7#KpF(sBSvAe=%?8<;{qMjXzS6>sDFX6{7(10Fz< z0E9i@&#J4~=mnvCD(%j70AgAg6&_dMTfuU_^_>E<EB%BywOXYq~IEc~Nc3}irsFb49 zC?OyuFl}ob&<@Pig(|>kAzHlzXNvDDOsT_wTcIf1bgT1?sgeV*DtfpUISc*sqYxGo zeP+^`>0)E)LBZ2A#OH9C)>jhrN;~rI*1;dHWzQSN!ugcNC5>=>|3XY-aku|Mm`pBw zbyV|JO2^5RyEM8*1Nq0I^IsPDIUAqGO;wf6`LvZ<@Xda6c_nu&?{a)|a-O`OjyRb> zvKq;Jv_ZERb`{u|BPuCq74h6LYnW)!Qn2+hw+K4Ig2dI{mDl8$X>GQ2(3A0=r);$E zN(svrPWBR&Xe;*8+187LOsDcq)<`6>el2zIOMqW@a3=T^dl~Jxl+m)AQnIv^gnE(4Krj}{%KwWJG+9ei6uFwnorqb9wuE4T4b%DCFd@F#OzoqDEd4sK&Ay1#Bh% zkes4(c$vW*QzSjF}%8%r388i>;1NTWpj?L&LcOQY0UVbzD~BvI!M zxltjq{%d*e6NC^y*~h?v9#u2~l5FfRB!CC)hWZ;XFnR1jqOhp~h^WU)e-@26DU7~F zYBIU3|L&pV0(qC#Rn7>&iHxvED7}4*z(4#+5ZVbSq5mT-L3e*49Z!P|DB47&?QXy$ zSgWw8^kYzNADlc5X!R4y<)m-~58wmsZy`x3w;tl)RB8^QKC+7qOvhiSVi|`=*KQ}N z6U_ahtBeQja0Ao*I1mhUp5}w2T@GG#(=2Yy8qd1Jqy%)Bmu_NZQuGff6J4v0G_ znB|`Q!0LK`uU(``T*2hgS`#qYv&$e*YZx%Mz>BE-{1Ompke)3dDN%wEbq4|RFZX|O z53np?U5U<+TIw7D5vBsb++NsPucs%M2)IK1?hc{sBCxgRckYkWbsYqC7DvgTY}X!n zW1$zlcdRtL6J5$3R(*<2)4pskWem>b7dV|jT_v?k2x{IfQs0KkdkY=zaP70^|9M=K zS!0@EWnb_JZI8Zt+*PRGm#_;a$}gyFaaysklYFf_;U#Igpto^h?W0TjR;`>MNpSUB z;Ag?uVfL3V4JPMbUGjg}iqPK3TN=1}*<@f|xE(C_r}R{CIN7KHvtxdNYZw38)Oi-} zB+GxrxO$>l%W0!Wo8joD_hFK+NjScK*ShkAUuct%C(}??Oa?K%xh+0E=DYrZ;J1HPZc%z^-C0=d zRwnl;WWF@4WlBwAwV!ubu(*$U;eJmk$Nru4mN$|q3STVMLW+HyxotAx zD!-@iTYHeC9aXd-`E2(5q8h%Uoq_JQK4JKeM6!xmMRmji>nx?EL#t*`D+e=w5f4~O zmLQ66f#%D!?yJqlDfd4s0T@U1E#myelH*cd)lD>-Uql~aExnM`QB6@3E5{?U!bp8r z`I-0GExE!nTpUauDA_U~vu=^@Qqg1gIga5b(mYovA25MgDm~2OI17B^u!vWb%Z`cP z!R|{^sYQ41MdR`?Q-_(5kSG-v+V?%_#a0Y#Z)HmtZrthh9zVtFrnMn|B zPy1Drp@ugbl9#ijuvj|mzE03iTiuL#kX)Ck4vxO*NH zb9wAjcq|-emRAxoq;i*Wc~L|_){<1=F6BZ~v_$xh3hhfvjxjFOw{O$d{tFJ?Ft0%q~E`anOTe3RCaCOS3aBKAZmr_){!`@_N< zF3^mu(LwxtKso>+z|vEpH(z28J3?yyF?3d!P=kJP3aaByLMl2GnsN6rX{uvBDApG^ zH#WQZ8X}yf++j8_$UUIL*T^EL?5ePgJiaj+u)-LTgk>O3%4o}K(|KXSYdF5vSQvn+ zhfZryNTw=&j>HeW>wgI*7BfAuS~cer5{U= z$_)jf!M;)CCIkDL0`Mu2_fFuUPUbxdKJ3Lm3g~bXu(%Is)d;{EdH|)Nj6}d`p%REQ z%iei-{}M31Wcof%r3oqkaNuziiUU4FmE*47Z~zdgg69Dujc&qhG#!LSh$Ur_|u zjya`$Z}nrw0P+SIJc$FR|ASYERFngNdQJhC^^!NUcR8BG!Kc<2%K3yvX;in01p(_~ zj}W&~dwfQduL;s}sm!2%|6o=2stZ2K0p}2T-1;32c>5k#-HqxR26k*&+XB-RvPN^aw}vvGFnRINXsKTl_Ne8rb0SIV z>VHsWZu`}IBn@|#h_f=|4^rydCG^Oiu%1U&+7FF7%grrBy)eXtrKjOHS6=$0{EqyP z7;6}KkDLat-LOS{i}F(Ok=j|-(%`qTv&$Fn_m8H324^&!xo+cCrIE`zj@1^p)^~Tt zwVsSDx2yLZMTF*Sn)Au-eF-BXy8oPfFaYg0fn}{EPTyU!l5@L*9@RsP@-H53X$AcJ z?nabh35#{YjpG>x9oDH9l-yTz$RCh9^z>@#TgZrDn3;5D>+bt!8}mKYMHBq*_c5_b z4T26anl0r@mhPJ+rP{U6kjj=;;px+3UO&*|`Z>3=?kYy zL8LXwc!aYWtJ4}62=U0JoY-RK_2@1c+;7|&cH-BaBw`lKt-9@> zLUEMi_yaj{9Cl(^;+{=%ZKj%9B` zWLWe)2e~%*bV%iS(T5|6awn}wBE?k}oEO(zMzJ{vLgP$IEOEqZE0u3F8zT zQ{hn*Yh^@`*Th$4uxG2}78oVwx|(EAG>W2LtGx9Abf(`q-d2}uP! zwTRY?27`Ky^_=XM+VD_9r}OTqp~dB8!{a?H4x9+dsg%^zOh+rrX~sx+U(KB!)q9Q>+?(yfM*vH*-VUY#-Nu8a-i0dFX{oEN?_#>I zKfJ#ZAs6J~DPe5gmt45>5Vg?cY2ZqfK1eVDq{4Ftz7<#q#q+>{phEygAS0k312`DC z-R+|SAO)xy04|{%F@RP7{q7)uPU`EUKhMOtH^Apg`5Ci|LN)+tPv7%ri8=!c3a}Kc z37T(`qnYIT66lda)D9yM{2#5koKNJ|0aJW`f8|jx`3U}>F_fAPgkX`6JSBwiy z%tt`sX=i&-)alF0e!_0u=}|3Ysjj9JbSf9BT4c+k{=3(%$2z3ENt!tPfY7X;(hk6fQXZh-hQmd9>f2Gz{VS;=9?Iw61+4 ziYG-NaAI{+wd}I6E{4a(-BO8h>M$$4>aoJHG5*tQk>vAHr_jWV-uU+7ipc&Vq5v}~ zm4T=WyDiqnj-jI0%QW&8yvfwIK{llH*A4v5Brf%JfLVP%7gg!6&zvFw%i|XYj6-fm zPcOG48AcU(=#4~VQ(FI!i<2=m{W=PfLm)e?^pK8g7`b|vEy@INW|@~_l707!^!Iz5 z6ooye9gPt4)CMhNOni|r({CNrh59~&hvfV8-%Cs)e}1kgB`S^&lGalD6;>Ztq!r&M z*HOlMCU#-;TAW^Cwy}%p*i3)iFfII%5Zh~uU$C<>U#Kib7pXt}uY1c6;d?#0nozXefOM`L zWv}P^PA?@l?DjFsk;FeK2|QVH)TiK6OM7{s%n2X-tbbS+Y)ohCZ{r#rbUF1Gve9Gn zB3+tt+D5&a!mi+)OAZ-|k!MdVls6F7S%ma$^hpU^CBVO@)|_6)25@7Ht5_3XZ$;V& zT0Z$XnWf_G*@97L)mZAJ6a3X|;IN|*YY_x?zJVGal;LhA3J^-OfHVVhqTlYKXxH1x$B9k=-hjOYxRyH# z)Z9=vIru-C5!{=N-GEI2rN~L)WAwf!%iGutb>72vfkL4?C;*^mXsjq00xC5acEj3> zzm@Grk^3ISy2SMbP#(RH04#b%#VD^IBj`}xS^@%>6E!RK#yC%&nK__tKw%!mqIslOC` zX*;Cb_N;Dr!EB;5z-$)RKr`Z9w7Q*9e`s;x(^?Ep(Kj8n9B16WdwENr?+BT8$>Qic zHVh_TNtFh7_WBRvHVmGMq<<7(NW#<+O6xz|goXEcJ<4)dkSiW&bwhW7U9)-}NBo5> zkGGWu+;uz~YYU$KfNM7X#-Sj6frL<+>{>iof(WL*Od~MElP2ZN)R-&cn6sWNJriJH zzNevtpQ&ql*YkLF?$TKG!N$+}`KTeNI#jfPnJ<>I@wzhsrg63#TlOqcC9;l4s&sF} zR097@nLpW$DZ05uf{`%naPBC~Vk~fqUN=9AitriFjmCF^+%b1GqY{sLOT3Xr1!UIc3>tTa27tXVU&c_WA|( zMeE6}@TLa*u%@;S5^XyP#nUpa^bb!p z{z4F*KJk0pE10R~&B~MHf?A9CZy%WH`Dh&YbvJX3ss>()1kF{Hdvh2G)*g7xedP- zEeZR!I{EjnIk%5k$NR%+^oqM;@LLZxd<_r$v=e7HyM5_%lcuKXW{;N~4Xj?w6m)Ii zX6YvJh8s7Hb-Y7_@LO7rgxV`m5sF_`t@bUK?vgL@n2#jy=#{dY3Q3vq^K7ZB!(7!n zJFK270WdiIjCxkL-3eUqwrH4MF#IMo;pnD46B@&hW0C)$m(rUU=ItXcuHkb$I-uPdzSQ+TJQr4 zK8qv5n*?8CTe2@t&9~Yx^S4BPdiCa)9^x!IDUqin`G!Qwc*>ev_-kuJORv!X*=rzE zzLkLW01WhmcAA875LQy;(D&r^prCIT1*15y7r^=h_Z9*FbT0}iv);A>3dwPU61{i- zEkM5x;-sk31wd3#0=?I?btMrF673xi(!#cVQP(~CS0+8NH5cPfOG(d_9tNmN;J_=+10quWi3&LfPf3o`@3jbdy z1|}asYLxc~7WrosilL#N{o5)y0ZCoDyp2IaWlH{;h;ATkhGMZ07r;hQnE&t9fA0_B z>?GtA%C#1N*mshwJ_>vh82DlULPmn&m*lV#0FIJ8(RawXBl$?))|$Al%An46@O2Pf zDp@S)Qk3XIvVtJzIBqn>Sp!cvpUHI%ZL1Oqb@Z^PO&j~pBRSie%pINqxjCkeMmgFP z-qC#u=hf%<-9OJAk54IENxu-m4-Tb|k54!>zk5EKK%a-!P4sQrgcF(53)0bl$XnFT zrmCXi8xq9om#gxD68kd=JP=hg+DCtwKF7^cUYcH1N-8zesr`B3{hfj{rCwoK9utgt z#!16ZJPx({l*0SoWwo%B*Omz41&g$OpR{+RsuHi{zOSv&ErZ$rSM^2Xf;$y=UGSN? zEje;{8cpjWSIH@3{3S4TuuCFY#u_tp+3epYRw2iUbQq_@zDA1w#4;3Mrm=p zLyO9qI{2r%Dnl(?CU zrmOR!ScfpVd*VQVuU^{L7E|qoptwyMPTZc#iM2|}cjZ%s4|@g+gp=Y*bNKkia#71; zSkbqcCgV0MMtmXi{dE&c7Q`mFFTEZhah6B1H;bRBt-|iJSL^9qQq&1(-XS^RDEEF8 z_H~+r=^%y!o2XeaW?DW058f;KrtB}oq;Kx#%da3OOGnyutw=`c0e-(=a7+)Gk+-miod1j|4bf&iy>rc6~QEqoA zv6G~ebLP693piA3Oh_kxutAABBYdiP7ZdmwUkr6ekJ#5%)gPOq_O~C@kK_>K^UPFn-cc zBfDEaD!WJeR(VJC zu^kkxvP&y7mBgr`M0akgAIJ+O9UOebQHc7VTXew@06BQ@uW}9FaI% zw2k}aZN#%IOiG_lhGhSRz^z;ULaq{N*Hd?`CL9g3vv%mNzXek}H<(0aIO>+^Tm9x^ z_Q&se^YK!$V^qUnzI>bW>+sElkB%pm)n7E(Ty2sat*Fj!0cg%@eHZmGHkH(Pd0 z2Qgp2`1!KZMwk;l)TV_+y(L^t9hP5u<>g#&H4%Rff5oEoX>UbpHbt(`$#{KXAbT}B zOg>A!d+^?2wBMC{iXx}fyA61fU%rMmSClwT4(H_uLvNywoyLZ1Nq-@nst@I<$zm-X ze?KL+o!4kxENgi&^RePCbBpT0^CefqprGq;*iSf|uZ4@X3k;yW8%OUnI3cV948F4-BZ^Zs=XZOL?rH?eos)3NwhqTx>p>M^pwj{pw;&# ze-v4eWvi^~yq&s!2}Qo-pWnT2K#>c_r!LC+;O$N<>a0M5_3cr!zyrpD-mr?iLP0i5 z*?B9Lq7x4v^^c)(1Yu3z{=qk@gGxD(U6{^DuY7tdfN-k23Fq}#*FFO#L1M0%Q8;Q_ z!v{M{4~>kh=4rUPL%F-#X9lpboq>wbr{pN%8&DwgG5P@3DdQ*Vo1t_E)%>*eWC26^ z0)g9@LEvD>Sg)XX{WCOS;KDva?N6wE5w(qg4Mh*d^nvw)__ss;yMg?>MLD`Cw-bnB*^Y9t8)xNl(5{TMnq*qE$gKu&6cXls7Xf> z8(-xFwy+O{uSWA-$#|)yX*XqsUkf~ABz$(0Anj~`dh zO#&B0f;b2~kW)$to|NI^qLxXaSkkA06Aspabg+B3>rq!<&R^|2x_n7ZuSS~vbm6EH zqV3z8%5O5Z7>`8KFMN-7e9}scOPr8D?lK#DvYL+YcOo#PDU77pTdT@A=!dl{UN;+t zP;Exn?)e#2+75fl?Bjkl{m3_$+);Czrxvw5a<00kA)(8vvsnL5Ue4#vQkvff(I+D? zt`EqzGfovhyYH4a4Stg(TP7zX5m7_2NY<1JE}L-TfXQ@LK8eM-C0V}Z2~njoFZ5a4 ztb(P)y`AFZ_eCW)?JHh?A$)=h9E&mGAf(C%5|YLTR7euiX2)B@5hcGk+l`WQ9wVAzp;%de6E>b$wpeJ#8E} zoa3IjJPNlBmweqoo}wSiM>N_&@e z-Dmd1awO?gIMs=qp|?IO)yJ*FiTM5C?^24Ewr4v~yScW2N`RMD=kEcA8p_JpUpAo!UCIohioY{DA~g+ z7YMqQ>koZMgiLknvQ-z;1>b!je06SCh7%tx`vhZ4HQK_lClkK1Y}>yv??B}S=`hhU zJ~Q9MScG=obnC2Q+x+UtC8$I{+;eYH>93t@;~8}G8ep=lFIIiQ+DL;YRhLjHiR}C( z_sLD_Rl|1@#bF2|JwoFs3X66&JW6=b>DP-)J-(;XyAln`p^TuPu8gD5qIgM0h3wsc zuvlg~-*$I=!v}}TC!-9uXErgWa}d~Wn{?3{(ss!vVn2U$F*Xaj{Jh7vU3q-qrA1~e zv&pCur+Q-BG*;tD_OVA|Yi5Y>R}`MBeQagd$n2Hb9pQ6q@9R z&@pfm%BvKe5X^HN3I^Lal~5ZEYKy1t(t5)kGhIMZj77!9sY1vuBkE+&@;DFg+2sZ? z&pA0lI$zdEdI)VvV_MxJh27XTW^W7*Eu4vtaiCsGf4>7}bF&mR5x3+7E$S?PA#TzP zaN18ZQ2%YOfoV3+XjN2ud=jt|&&*@5FQJ^v@idkTZkJbr1j7PNs}GpMbr=P|pc&_? zmlKJ|Vbg~WS@Epp(Q|hVQ1m~ZR@XRvSLB45XZBMd6I0#l~)1}#R9{d<0-7s#A9RIwN;n9Azgb?? zp~n+`_UWaCWgYh=J-*@i^UEY2(yS~(vUVA_I5wwTFETTE>cf)97r5@7i30WX3{gKN zr+XwVm@>CJ0_^361_To=kJOKlwEf*92r$EQ@X03%YIz*1j5V_$B_od9-9M+`x+9<( zu|Bd_Dr=M=K~pNEtgev-pVh9ZuB=a{kPtL2m6cRQG7)E)D1$x&;6v^vNEUzbF_!D2 z(ux5)`V9UgYU2m=qN@_fSO^|UeS&)KD5!EomvP(}-a%DtP{j{QCw;&enw*rR(bhSi z{u{gVpRP{kMX6x&dmU~Fez4{5UZAJ~Fc*PmsQ;gXh-#|3MyYc^0)Q3B;qbqA|KHO) zsS`4Y*iY=_@1 zr7}olj&}Ce+$WfINw&JS_gzk^OVZ4pyvWQnYo8s`B%~_A&T4S`QYM5vs&6Q0#T~)Y zLTBvbYba=Huvz#zoNcafjbCSK&TvIKmh?_L(RZhb4=T4?_n_9?keqjq zMD(8S|AqXD@ZhW|miP-<8?E)iMkEEy%xH(oMG}6A!&r}SJ6Dnt6s2)Pvi(77uG!?X zG`deDW}Y+7S9o%Djpff~h1$!cROrqq%W|o;@X@v%gj8H6IQoe0F% z+Bdx6rHw$~HJ`yJ5{^iGKJ&8cd#Q-2!A+VBeSa5Ptf+q59~~hZp#_C`x*p_5LgHg~ zv(EjgSqX|yDxH!I4XbR{YR(Vl2`cn-LK24mTwc7?7KvKnF&-soLa$-#H13Hih5cFN z)%i*+=%8cJL?z-oQYDcgxrdG$9w?D1%`GW8|EdKyx*8|U&MW2W9({Q=i|ickl0ns6 zczSiS&DjrZu6x#zYr((6|MX{L@YFTv3Xz;sNk6qVRT&D@bS(teI;xqeZk}(l<|F6n ze-WKSw%s86)on5P(OrM-ZHd(?6uIB=MCvNK|MrXrd*j`p&K*b5w;OQWR|d5^NwW&A_s?tNzpDoS4n5jPvy3q zu~JcWu#Yp0Z1>j}1nQJ;8PC10?he{WDEXRb!KN2o^W%zstT*h$l_l}jh#;ml&1YMt z=?`=X1I6fD_!|t~{4#$brRCWV1?Q;aWM(;NEwl`D8w^Pcn#FRMInCuh8n=`LdhYpL z^7*83?(0_D{Nm|%eeT*LAw2(_XJGdY_Q}C3z|d@gD-Y8#@t=qGx>ob+5CM#?yIQE{z_)eA7(^1v`NDB4Z6S@27 z9pwuy!j$SPxzO}@BWb~}=Xy4cgPaO4O=~=!OEE}?h}Mg2z}aH-F3h^)g}0;ThX`_- zRwcjYnRU))8G3Vuq>a0Y79Ue2R|idfFfaeDoNKxmA0^q7x>qr<8&Kogy)$^h&xFHy znIuy9GO6BoQ+tE%z>XEYfX_u&_y@}ob;L%eR&qyUa;H||S=IMyks(3c3H_IH%FEX$ zc~qx#*8F>aAvuQ2LxNnat|`obJN`M^9erhK%IAftc=4Ul&o&nSgA61}7vUH2PDr1| zpg2sRRf+R>5)xqHzYC2O&-D0y5xQu@%m`u?asF3l;)Or{ZVis;=(d4ka-P??zKDmh2c&WY@Jv zo*GY{!|mtJ5#d;vbVv18PpZGu#IZ=hG@P4Tyt6WB)e3Lv*3)-tBOy|g?}_K6E^biPD3D}*ke{Fi?H8G1#3pdkrchG^?eobAdR{!>x=~t# zXn7hfMX4Lob(n;KR*i1ILI>D3V~Ee`iu^N==;#|0=t~%$e8zBA!>VLI*p9(tE~YNf zUjE3GJ|(0U^EMF}z=C8mXKuyE@5kZ-cY3P~Q!WYsLn?Wl;Nd?u(Zo)WrL1?=q%*F< zM9>?e#o*2Sa1KX?lYw+SftUR8(yUb+t)6LoG5f@Z4qTIja}dcGi8uuGu=RqZG>XSbVX5m+73ut$ilnpsd)rb4)E;D(t5&N= zl&r>2laS4fXBFV0<(2OV8BeQyFE)6xx>0~(7n7F9iLjO%#ya2ec#*g9q}i4@Lwmdu z7zijc0wOoWrzXKu81>f0p?o{33`Yya1yCt}&>%qd?+FCuGjO9k1JohZ6A09O8h)J% zY;jNk1!u{DYmqboZya!dfBGLJ9|llmNwK@XH%34!H!A!9?!MmvT;LJP708d-v2A)M zUH!d&yGejvE~G659#L@mV9#FHDUMrZ!DA=cQuXJ{{*YuqvC5w1|lVpc6< zIhv=r#n*oKgm-E9$ThVuj%6+rUnE7jD9k$9Wr_>8^ioruL$|O>)jybW5-wnTlpA^Y z&<=MJjm=3%GBYSdV<<+`IqTk8ijJ95$S;W*BGn*NOyjtkheRcX5 zLTEKuo^zJNZBr_}%3;BO(A!b1Zrbd$uRg9akJJ2>gI+GL%lXD+oPIXJb`qWhfw9fR zZcNMZtNfBesy^9KIF(#ki(<1Ot!AAhZj3&zqoA5#=!r3zeW$otknOTXT2+u(I_Lta zsGN@WU^zNGjAp!2Cwnx0SXioqr%iyC^2fA=NJ_R8=^h{0^Q|~Ea`~)(z+i7TUyslv zM~^Bwsb*!CpJsUQr~2T&l<9E1VX*n&JKRgo{B>?VoHT+5mOYjV**y ztg3~?57RQQSu5%qSl=<19I~~V&SXjXBP~RJhdggVnyJxF>@=gL?K#O`Nc>qyx|3P3 zPT_lrJ^E!`gAg;~1aUQlnit&?|FOYk?B>%Y#`4`qIR*`7sWV|fnoB&SFuoF4sK91P zPhUBtok($ziG5}^yn5AOXj!zfob8B&_L4Tu?==*&48l3J)XmSgiK&j)+y+v(8=V4u zreyb2aWAL|D(fX8ZXZM^NLDQ7J}|JuE9-G{l~Jn0xgPD^^}aANc)Le`s8*6UuevYk zQ^?ERA5zBxX1NpC*!_ige$j}}7%{ z%%>Md)?KFOA6?2#@I;ada(E{lcI4Jm;RsGGCT%7*+jkUQG0&CC?u);D+_>y_Q%vDj zJ7|JP(tK^Z9CtsHY1dUgzmiDgo+LHlisFms zen!q^rUg%|rW4Vj4H-S4djgs4RohEtC$u|DQ7MHGjyM$&SG3dm5YDIn8#`TYWN8`v ziMnn6Nn_IeS$klUXU!y8+Q3?sDeGEvyg9!=W>6c4S43_ZedohsS~3**)Zl?E6Y~z2 zS=|G3tYf>p=U{%TkQVu02kT(v8M z>`{F3yE!VwO(YA!8)JoW>EorS&|NmX;i}P5=A*K?TX>(BnYoU^Y@yOtI(*1Rvxi8J z2BA-6-ra|EkIGj@BC=IPd9$kp-)4O+*N>fBV)RIV=Gi;1(^3&Krg@dWc?{YYsqF7Y zyf}SRJG8*@>EwlfxO^p{_nS+pc?VvPZ!Vn8w(Kv36pp46SqRT>LjN>j^@G$ZsE&f1 z$>pV|gy@>M9Vcwm|zBHKBr5eWdhcfHLBTFm{^?p=9aVw9u+Jqw2Yg zzg!WRKJygMqA__Ks&P#3R8Gqk%wK7*Opt_0!qZY>?Uv!)6`2}m9*1Wjp%k9^B8Z3X zt!`(+7NmHMRb2vF;1VwJ%_5+rB&0)^2`=fv_yB)yOj(_YIf+UFtl2l`mXNd=zcTW#_qzOGbHWHI0+~{eOr%j zNf+L^x?EKTsVbv3dH(aFq7WHn{i_LVbbd{u-+dx1EYdA%t*yJe_j!zT*zHQ(Ht=_H z;-}`N9-Px97Et6(@sxKDD>Fx!Ft6p6)D~#AgDIx^LMMrpbhXq3)pf z1EHW1ejY!At;InsSxZ)8D9RKUmq%0nw)Cv}!)x*5rIPYjYb>%K)xh-RPjs)+(6s1f zLk$vSu-1`PCciMp^b%xEhZR3N0km;^>2G*U?kuEm?x>>-!9NuB>sb{v~3WJ?p1Rc#mP+ zP?z=ZQd{EJqH`NQlIu~RZ#>Vpc@HUJ#HrnH?n-L8H;i_~&bd9!#vDh=VJli%O{II; zo5yX=ef1prrqC>%w-&5=M{%^}k4g4c1hPysCUr4n`?OYm0G|b5@!%WZAzk&6LtGgGkpra)@d0T$Q{OsNb(E@szlBq1J z{jiApl1OeXzu~ZhL6#?H88sJ2QSEb4S>q<@)(z@wozILnxV%3BMRHeQDhx+vvvuTD zT6~yzr|zL@GeJlFD^~kGjtn~ugQ9|x ze+Y%w!t@81FXC((r4c?aPV=3NPGxrti#e`w?)Z61`8#VPQ?K64VW2@B*a2O@*=07>oQe87rBpQcD){R!nKVoIP{Tn%k>8h?Kj2wSChTV(U9(2Q5$P z5BJxS{H-8cnt0F0?|7Z1Gc{2^S{unu%NKFxdO%%Q18cABy61w>d|tEpe3L4}Bk^6D z&pUo14;vrbdxWb~p-q@^1@6&Xc+5?CWPwQs-Y~omi>axNvP&5amMtFJrDY>}Iddz2 zA+e8t?D4*K8?w&?`Y%#sOz9g^IO>E?oZ^kk$*`rCRu2M^6$y#w==AtgMwt z^|S5%JO^REZS1~pZi{bB9DX|f>j3lR9dzyXq=agtx!Kz)Mpy$TCSNsk(9^@Sh+J$V zs@DB{7Q%tJzmPKdR3wY+N`CciLC0T+kXoxo=DfN8od8V1rHWj)^VXhenB5YY*rD$v z9lo67{z}OpTyn(ARPJ_ch~d@po+y)cc%V=v;NQ_V5;tk_E3NbAACw(;?{RJUE}5Cp z`S@RpIqFzhRBB(yUiZ4$<4aldvOX_V*}1nYP-!l-vP1Dz?$1*}=WQJV#T8?irp5W) zLww%vn_H3ow`OY^)bk&|#Y@yKj77(J8lIMlzL^Q+%QWhxtaz#KDZ&D_Ws$n`4AYhI zf)Pu_bZyB*f?a(_5oykr36a5HH@1rQw?A4V-OVY~EIF^?KIJjM@umhbqE-+mMY-NP z`9pwt0_$4@?ES5O9D`1jvfh$bbrc)D`L#beLilX#j|cvRX5|DVZ4UGnzewgIR zDOyTZe;so;8cZ48!&M^NS?xNLIEQ79hw!Q*PTBj0cH?qRc(i3|)A`^$gL%2lIUfF^ zH$j>{f(2n6Xi_Y;?cuK{)p@IyDt|+aqs;x5u{07HY1KTnyn6yR#>pn(;r~M7pvm=#%V%WEc0hX zP2sKNPj(GDa||^a*3$2>lfFGZxF0N}E6<8{nUI6{lj65@#qHA|7LO zGyHSRVWAht;bMO_#NsmGgKD6AwLC#tv4~Z6A}VZxq28>54&nIdVCDd$_BRw>`}-}D zlzj-V@I?u|@~fMi0Ehab^aj-|Wx4A55dVF;g2zy<9JV(mJS@o@OLC!+P=}AJ#x>@F zXLBVLGQrmL;bQS{b)d-2(F8-GMB<9t(C;$Jx&z_Z^!?37KjhR0j(y73#(DE14e?-v zmEU;^v7os=V#V^;$D!~ClpgS&=ODnV7DTJAI3vm;c9zE=2Wxy&vR1sbd%ujXjMUGC z`1pH<148&GyJ|m}5Shz5w+RRI5L_ZFE$7g zr4=Y&J<=qk%X1pQF`Hg1HrOnvjuMtHRpx~f9r|yqurB;|-@sD)$X965)y-0ZDE=R& z-ZHGo_m3M!g&zWf(o)jR=uSa8Wpqn3V00s(2uLG2I!2FXbV_%P9wprkQ%djspZk9C zyu4oRI(8lBd4A7NdNUepg4jZjHaAx5`uUGs*@!-0&C^xauUNsh%OW{%>*pESwOidP zm;x|z+^ebiMgiFB`jLA$lal4&O`ADpB%^cSXkMiiQva!XvjyXzX_-YXCqXndEK6uR zHNi2vq1X^S#9|KSW|2U{F_j#BB9B*sW{xNzOSHgH)WS~YI;R>l7&w}u<3Imk7#pmKUlGwZY9Yl z!Q%e?FoMG|krnxlm@s1phA*hBU3rc5H;iX6Qh62hg)oAZ|DNtsSt^(BCjb;&9a)W+ zZ5)|7cli&aM6Ue73+2S*^eBNlq42lR@V4SO;K*9}N~RbQ6~q=m&Ry|H#XYKUSFThB zuKoED%MxMG+n0aa;@uby?M@zNi$0i6C2CcKXskWE7re>%ZJ~c|LiVZLq8U93l-}@?{AmQ;=*!izReF(#L+sCkvZgAP2hBLil|`M6#rhdllN3Iz z!#Cqo#&0|&?GcEkwyQghAZs~f&e41crW zaC;uK`elvJXEa~}MG2xKTF`moBxMO7qSfrnn=_fYc``I`Bkstvk_H{VNDg;?z^3qb z_W*$xqu#4odto(m)ZG*Y*_y&4>7Y-3djpRZHBaMX#8sj9DY0+qr`RL7mLg#BVHk9byx9&VlozZRk~lV8B^6;>FkqOm(|A!=NEQHD;aN?5ks36 z@X#S`qOPDly_OPDdJdgl4)T;Zx4CV~9QC{JOAV)$L(OLe_EX}kmHn+1zhb@)l|Koy z(9l{tH(a25NLI)K=%8DB_oOm??_^H2W&ReHkecO(MVa+wDwRBmth)se&rtZ=Wr>x? zCl52euQo-JF{^F7wv(b5kPMP83?S5c+a_H)gHLjt#9so$9U->%!+$i{Z6|d;#ggbB z6SHlK`FRSpgwQ}zuv4Ud6^0q$z7ca;h)#-1a1VChZMWl#aW}R-z5gmLoLM}VY)|kz z-wjWloGe|Pcb#p96-?+;;xYP}_vsU;v?^6&K2fbBnlxE3w)C-c*AvgFuktx(izUyfbJr z?sp#*enE~ZXaf1`%lc~G)>eOI7SZ!g5jZIb1#5q;vD71R$oO2qF_*i;KIkZ+sfC(o z0Hh&CynVZ%04tfM$$QL!ACR)tikB&I?JD0W_EIdEl4UoRlO5T2OonS2S8Rl-9qeN9 zh<^Jb@(>+R=)suBIlpG*y9JB^xIGmterekeWZ_k=TwA5~-yxW*Xg{==F2g^{Hd8lf z3p9k|ZsbAojv@^wmQau%98<~ryThp-#?Vrv6DNq0Uf{ZNy!U;6yB?QFM-2^Sn+w`x zQpxCwp<%0j?c1SS%+SW^+}L!qliHiY)7u!OHaf}(vB0SKrrU!Ptb#L$2Wb#c%c|u| zJ($hO7)sP8=T~Q#bLlf5e~45`Q+u1tRi7NgJ)aBF)0R)s)z+Ehv@%Lt)Af%?)!9<2 zB|7^)P;IbEZPOZ`%FMMzqT6tgx>m-dzGIu>3+655)s6ROD$cesr(63IbXjEHpIyhV zig^L$(Alu77-i)!*{~uI$m(C^lyY^^QiHL^6OzLBI8uU*Laxa%V@ZR{O4(%sjeyS{Y`(0j5_&l+Ju*2w;L^f$G`G2z* z&YCkp_@oXZoSL+3^dXMTT-?Rb24iiUMoNzBZ(OYg)|8o+%$&|_u(0xCvdHE{MxjFq zGlB%w4p`LGYfl8e z1<6*N>TXkM2tv#*RN2)1rxpWNh%~6#ilO#Hd<6*P~r^EOPNM$f!o# z0am-l5av5Mi~S8N-}aIHL5+&_#=DZaBfq}=*W!z6lA+0^o3i3@P=>oNOWb}Q;p zX^X28@@HXU{A$b2()AhbaA93D70+L6qgP=wB8%d-c5yrECcnSM-@H9n0=v1dwClpG z^)dPl+u^2Vn zv)gOkCIK=#ssm$nI4fx7A5JsAv?Ie8ohv5}9p!6%@=8CoR94Flc3_Q{R=Giffx#FfC!WK{Z zLwrAWM0DRL>hurvR@^`>&kONikvW-+5C%2Rgk+^`mpG2_|)0n!FHP_H* zqCXp(iLG&=rxsm_`90}OQNsgqt5hIP(=|Fn^_~0ar>Iu@5!E7mniDalV5FJ2cd2j4 zo>JO_gU?Cq1iANnM4g{^KupmhK^J$m+B?9F87KXev+zyPZD^^Z5T||#na$v~_vpTz zct}a`(gwlRte;BTbH@k-e4)S{x$oz8-q3;`{ z38&Afc1}vDePk-}y{dIjDPnpCK3aV@_RD0VQbsxC*-5s;*=A#QPHa5|h#xeDie3M+ zX#ZRL+OSC&swT!DWGdtHWKB8i=!cmKP*^j^;3c+}RB;Dj6BXY+Cr%dM{8kLPLCJh5 zYea)8Fs7UI&3_oPf9oLdCWWj?{@~ZKdUcBplMJ1u;z!FaK67p4Q-QTX0G{`88lcb&<9%MkMnaI%Q;?0o;S zj+QP4b3%&L;?Yz!uFTV1qF@qaSc@qHjQm}scj~{PfzFlS1gq|meCrJ0?|*z;r%1xk&qBZ4-`(lPnvCn zvdnqw|DFr@HVX`Lv}_ulkeAxFiGVSt$hi+rs5U8EeOnA<)@Qjt<@`(vgJmLqF9NQ=BgJN?nyj+cPKi=>`{NFpUs1 zd0XPp=hVojD*;EdkdMQSm8P@uYj<85=}V<{@vqyBebYeK3BvWPPgxpxG0ccDfD6OP z57u#IY@xD6bVac^J096&4sy!KjK%*DlsoLbAUy{ef~Ll(_#ecsGszC>GUGKrP(Kj^=6_1CBt9{EEiYR(cIovN$`ZV)NlV z48BnJa6v8M&9f%hAuhYK=^E3}<^%)(K&RAi%wo3F-|L{5YGPI3i5f$bnrf6))QIR$ z2~ZuM4~T0Tn~+`4oyP#zpiO{fe*@I-z?7=pL8E7jN`A*KZ?g2q64U5RZG8D)bZ>gwvb-MsVVh0YXq>Np+KIj$fCtXGFj1Hm24f{W+_0}=z)%m{; z@8S$mdJl;Y%40+~J54dEGU<=L(G+3od)-+}IhUnGNPd^<^jpEUn=QMt|9-jmlK30% zH6{$o7MB!I#UCdYWh9j}F1S-Gyv1Uzie^DRd3`Yg?-5uHHz?Y2RMcU$HSBS|@Csc@ zPD@Txs$4O!F@wr-k@5{?1H+C?00S%qO@pH3_q3oIDLTlXw{q#q5S&bv4W*$!%_NT@G`Y4goqzMHe>k zXs|;+DLgGUP=~CrJE=t%t^W?iCGs?_jZzKIm36bQ6^>Fo@I6m)8A-O&!0n3I2A44V z^IlJ}^*2<3a165j?;=zP$qM}OjV*R38Mt+P3^=r-4QyC0HqiL@N&NF1AXW<8Rz2tQV~7F`|lC)wFLoI~Fxp3XWQj;%$c)gK z#O(Ir!+|*0I%_(?gr`$UeKvNZw{uYZns01(W>oqu^^0_2uSeOBu1GqHjtFfe3TPgJ zZ1(eq$ zN0By7>=oL2rF_K)k}HPXTd$vji%Z^|zA*91b|d0Z~<>TUk%rVV*sYih{Ef`>w4a?@wAycnZ~*J;yj6 z^7UB7tHv(ph3l=oF{#wbW!GX^%#EGz@2h4ebm_k?C;g=!{?vW(55urDGIe}cc4Y10 zOwyplQ~4hTVyfWzMEZ4({$L|V*|&$T3#`-gzAmZy%Z-j#sb_D8(oD!?RPk1B6A*g@ z%3NYjl(re+fGtM1{tL=~7-N%CQgwlUMbX=$q=EwTy9D7$*rQ1-*fkaKxZUDH@5+1T zt}{p_wMX3}0k!B{NOgUHmd7`I3H&;?KB(x9-cEI-D+|Ny{bisGm#U054po~dD;Ce^ z&8pht0=j&m&-#qGY;shC(vy8l*IuZ#GZnEhEgV|M`ja=~l)J&JFuk8qwKyQn`wJJE zepY{4`R4mqZ)tC%DL}>^Y02nhvhcaHK-fDCJLeheXGT-OdfnDyQQ@5A<^5^5ZUycr zF^=RXzKkY}oW`WAca^g9m-iba?&wr#F^^o-+KJDgi;HbLYW6q?B5XsB{Z$FUpVpBX zPSvz4@DC%J@G7JkWm6KIBt7ih+N@SVJ$@b59+Zc-Rfgz8li-7(vf)f0XFEro8ka|r z=U86i9QyUm_S4*6rv%lf0KRo~9)7;Dj-{r9`R#yf)a&AElMfdePJ96DF;jAO~K-FFJ# zEB$3=h3$f-EYqG(Ie(m76Qb%+vZtAYjhBMTKN|!jyctRl5`3AwOfH+@PNh*?E}~X# zQT>7@8|U?3RT^pa%|{hQ-kvjLGq>j+I&OD3=KvmuKJCmr(3ye zwEdQZsu5T$MPFNu4%Fj*25eZiDog*}`}Io-Fw(rXKybue#>ci&2pq${2uL>af734S zmUdr*1RQNrUg?`AIqM<8;i{Wv`tzcDk|3fV6uimcH0lg{XS46rRWb!`k50?SZRDa3=cfKS7Uf=&g1mM4gZuH%=fdp9d+Gk|pUIjP@`!zag9Jy#9v)B` zrpJCB6!@r|BX)Lz3YF7~k=CjhHi{*w2=5rh;D6qEJDFH=?M$6qbn;Dk`Bn}gczQOi$TEG2f>Q)-TpJ+p_5%ZM=QIII zrv={}u@!6$)2XZ`-#{!2IxOHSE;FKZ#YlwMSpv2k!6I)RfE?&(qpgBF>7PQ^6Q~*) z?dMw*04O@CSCbNOnBcv9egN;Ci*Ulnkyf?p&Ch*<8e;A=wiMc+-ktf^WEV4um!LG9=&vG}J%oM{^iYd<%b7AaM z51($l%nfgIjsY>9H>Guk9ED3hdjK!C{cFqtx?FEzS zi8hNi70*<)ctZ7+v^YXily(!uUGJX$s*kcate7I8h$z}=rgKmshu$IPzt>*%^ArVU zTXYU-=izjR6i%9E@6w;Dw~H7I9L5-6d7+Pm?`DGsJ)CXU8j3^beR9m$SRC=<2-V&Z z=3g3~P#0P>+3uE*lCm|6%m@DA*rXH@L7!eXOLnU!_ZiR}#(dm zL-Yl-p}&vSzRs4@Q32@xol?#MZ~DVTfgs#Rq2;IMSY8MHb2pa~(WVN87#6!KtlSiw z2UQCPQhEkB`cq|SWCOizw@*p;tRqRo=0vh}OglQO?1RX* zyirb|VNo$_i-v-de=)c4kI9$nY7M}#TlM(E5DtZ!xO)7ycs^!#^0gX6A*dgaKO@gM zHaEvMYzbyo7^N;&?L6;BPaDt*Oa5U~mKJ<@%MVMpl z*cro2R&_Bqv4W!%WTe1XMg!4CB9#gM-W3H;8I+=M)?nYcpwT9rh185Pp%u9c$appLYJ zgG$8Z!u&XHeRAGkMQ1zC(_7-MG*Y@Ra{OYX9B+dRARk=e?}bgo-R@jl}PMhnLC zv>BaO$(Y~J;cw>{_44Ivp&gR#+mu0B>RJx_$}B(My6X|z417$MehV8&6WsZg6w?VZ zqCb5F<1cId6%%EPKOkk0mtUN(GReVwXvAJCWco2f_#Z~!rGmy}=6K||kp}T3^Q-&K z|ITk^G|htp%(7Y_e$o! z?IbBEKQz>oF+fV}veU|V7Y)=M;;k_Z<+q>cQUa`|AlT1V3gn#sJUOt`ZwH&Zy?@JG z=qN9Jg>&%0h1JQj3ejP~zo^2?CUz9uczO&AD9Eo{0U60<*5yz(X0a7Tre)585}RsOqrx zL>vYp8$BHE3Tq4W;F&84FC|ciXi5EmbH|;AATyvF7T@g-xdLo+4V>>x$~x0H6aHa1 zN?Mm_3g^yCMXF6|5P!O@5_T**o${~eVEvPyU!w!FIJMne2)vQ`F9^^bT=c=6e~@Jp zu=-*s;2FOqNunte^is6;7`__hX8vbaeP>v+OdeFvxflpdQ-I1DP>pq1LD^FnNq9Sl zd@xruqi{K&cg~4&8<(=6ua0*A8Hw<$b^gQPKheksheTYiY3?(M-9?4TF+0?r8CI3I z#p#mWx|PX+=`V$-HCUf*N-dWX4=`lZXXi(b3pZH&38}=;s;$sbtTq1=fz<9_^>>?0 z2(C5Xj$;ROy{zB)le%}`HY+MpIfdt|I%(;$uVhW@aL~dgfb9l{52y0m9Y(~NyZ_H@+PlCJA*vQ}*i!w$O@185w)76uQ& z(Caf}Vg5Xw7c_%+tEJiA{X16$Y|)?8fNN>jn?Ls_c^h~ERGfsv|;(ONLe)7oo#z^vPfOVRUYS%;%2Ql0mm^FveQ{3 z^L_o+X;bmeT2XxD;h65Whm{f!=*PWNc6#t^(1K~Lxzx3WH}3BE6_qu}$3cUfcHQMK zFXm(N&)w%P&OR#Pz#GY7uZrmq&NB-gemnDNeKlJbafXU;)N`?sC@0I-&`u|{DsozP zY!eWunO(1ecA4^QzAoOuEQgNY#MYI;GC+sNutj0S<>a1b$=K7qbNjE%C5{Yo%W!f8 z@>j*>zHf5ec<}gr2t4JPfS%OBXb=E5t8#@%UN)1HiS+i1DW~(`WlDkB*!r6RHr8Qp zrPmZ5J|-hHDiWZ`1{Et6F<*X_mF7;y;lG(R9s9CD8T=j&V=*FylX;g&|V)C;H0YthRGY6vaZM zdgz@Tm(F9&a1*SVY`E~F+iKJ+QxmvqJK&tS(xa3pU6#qtBs$n=UuvS}D-9t|A-Zy& zLM6_`rx_;^T@4_%sU*!SCJH|dCmR7X7HMCak=0g?37bWEWc|QK(FgUgtgtHZ4yIEA z#gA#LRhJ9dUDd^8cx91Rle%NLA4mKYWAlwhmo(ZxiEwW-DyELOuafLY6V~hhQQcJF&?LJ2AsL~B_o7NlSE!Tg+X~hn`0Bbb;mY+w^|$? z=Z;w>llhOjdY4>`(#VY3=%6OrrXLz^B*Y3`t&ftQN-J0B7jRn9*j>0OCZb|H&eAKu zTvZ!~0DSs`2nHR7n(^!v5qd4Op`3n=q}f%Ky5zF$XrY`tJNX<{O?3Wah^8Cio_oLe zI?6FOimDV~GmiLFdB_?C@*9|lUN<*Gm$)o=cSRfjJXYTRFK*$UQ68elJJnU^9G5kH z$1=W>3|DB>E9b$Q5*lM`wIc1-LpeVXzLHVsyvfiQR)KSEE04ko^z>e-n2Y@n=Wjr0x3iEJ=kcpmEnO}8rohU)A_TK8?Ze50J|`7uf5&8{j~_ z3-7hH*=wC)-IL|!gu2HAQmz|20|Q2ZH5j3nfx=T}W zvNW6K@B%PSS^P4r1gMtWbjn4RYn*d=vq{4ScFIU8F7EWEA$}^6R1HFIXN(f%ldVL*k@$Y8Xm1RMgnoQ z8$7HKyv`hr3LWW|QQRDPT-M+y32LVBh*IvDqR6!osN+$IB)##g+SPK*{w*q8(ZYBR z>+L~4zbH-P=JS%>HvRbXpzrTg_?uQ?%0^dfAEQ+Eo5BQpTg?aPTHTXeR+MrZi?C)q zVpKkuM7N-3W4-AfhxGLv?bKJ^kC-q){RX(bON;bucbPP8iC?dia^x~b-VcaR{0VHu zO)`JNt@1JR9&vYBfPbVi&OFgCwUGbHoH*j2oR;dL{DVEpOiLTRw#(O31sbiE59Zp4 z!yshlprPu7D3&*$3pHC-;;H20GOOpCDY41-%n1Q4oD#nN1Rpy(@6xAa5Q5%!oYG_U zsaM4t>o{22R^`w`>YOB5K6uGiDYFaZ@fFY$j z^9qwLGxTaiOo{VG>re`gAc&iqxPhTvaLxQLM=M^$5mkJFF*)ISq`u=HUEFWKr~0c1 z?Q_qnv7SwL+#pv%t?nkh4C(pkZw!EVV}Zz+TB=4`)6|zC_;cVbs6pyOV_%B5C!FXP z_Iwe!BM7LQssIZ*q@L^8Jhf9P0i!atSD&RR&gi)f*KOhou?n41PjT5`&!7CaH!^Z( zw6i4Huny81)U!^NH7$E?`GpnP5-cyJw3-;kHDc(W^7)p}%CSdWxu;`K{1}N*Y zLXn*1dbxOwQ9W=Le?0f9mG?{Glk~^c+l2=)=dc>92gQ)WKCW3cG11G_zsxZwfyz4Re|_A)0ueGM-(io-ptkcPm6wDBf=6P(+D94OUfS zn-7ISQ+AQips_Fxx8$Wf*XfdCK<+Dq`w%{AbgFhw%RUlt|T%cZPv^%i0jGCBM!;j3#O2ltYU~Pnx*A8H)d$ch#|e zo4S8?U0^%x*l#rPg!WiT*8@FPR5P0{(`N5u;FxQa9t+wle~U}4?Hc}&4pzZbg*QN~ zo1VuMLh$_)c8YRP6r?C;1ETA4^#=XMR9#ckh}l%7u;e!sw==i{p;EC9>1lUG@jt3=FAIe2%Zzvxpkh!`PfHuE8&ufrsPzbzUGlB zf$M_zJ zot!&=TxSJWlcg;S%RuqXirUE_`;%CcFht+y#< zEhTcRqxp+nf~ZX|7*2%Ah18t~qloPy$zT*g-!{wBDw%D&%9|hWKngn1X0dxo4*Kze zxS-q{XE4`o7o+ee<@ARoBFjd421vHYRfsN2BX>4(=8wtGaREQ-f{~=()&T(4ojL9{ zOcK+eaV>j^fWOPo^Rj`f(+S8WQ;%Z{TPyB30vO&&)1h9Tx9lKS)ymy@K~>J$l~3@i z8?SDL3S7cHD$e{g6E4AHQ`l@uh`Zgf{7S;GO~~r*^Jk1BhEyC#M56lMGDTN%AEf_{ z?5I)LyzIiA_5qol#(>k>WLLUnXTS?T&8*-uT(dDbv=W$%d+{&*tG5pe;Yjh}&78%W z_v)&X!t$lUxQy!ye0WM#k$O-YSSvfRTard*qo&T<`ZMvz;fc4eiYDgN^+-ZQ1ua}F z=H~h{;?>j`E{`Y>aJ@k{c2B4|nFt#?*2N_U zZ3?H}ddUu?uK_mJ<9`U=43zLZ1GGv4p1b6yr&z8uf5ZeTgxl))979|Ntp~Wju$>eg z`@(fIVqyiw%RgN5>qX-gBBI9zFr)dcl*&(O24kY-n!%=KI4dk2AA#Gi2;K@f zGD2htseiN&eD_20PFm|BqZO-jJoK4$4RqVSRz4yy;@%43;!QB_RC@O^{Fx}!ADon;F3<>XL~20e}YfT6@EzFc$& zTOf~0U@vXGT%@(P&N_+r1!eb3?x>K)T&1msc}l0hJHB1PKA%TU=gz%KOe_9w@5cI< zqLJ;D2QzQeLl8sFMJCBbJS|$raX(2Aug(S&9dY8b8sc5*otIl2A6& z#@vpa4f||C&T@W%Dr&2;7UQZ2Nhn8PpVIpi*;y7jr$ux01@XyB+ZKf zzsD{80GE4jLjVO&YauRqgvGD4a<%K}M~gr~)w7+mT_*RU;MA-tQ0HKSV`og{g3*3qB8cfYOO zvcL{AC)Avw;|Lb~lH~zzFESuNIV7_|45n@plG|iYhnAg$GqV5_8fu~36LJdL!FH`m ze2zhM0hIVe%TM^ZBAl0uU})(E)rYT_h^N<8CexJ3(z8t@c^}d^Nf*=Kn?Z{P2qp75 zMGbBDidXDxnCCdGYUr6gE;mP|@fy1lg`rIv%Q=`SxD2KStS`%V#Dya2XKTg88mJT*UUniZ^(p38dV_v7wK8D0LzgkKhu^e z5&6EEZ4%J(yFQIb{VB^P-Mta1DHyr-Qriw&@|rX@Fc@J43>TSgr;pHcl>60C7PVDj z_^6rJB(A_Oud{Fp-6VIsnSpFm*liCQWP3%qRjKF;C2VG}J2C$ixwQT8jTrgxdU?#X zq-&~Z1?Y0sU| zgtjvKeJ*sg_|AKQTscx3UXUbKICX7!qG^z7y%8l9?@V-&hBnF?Bo--XIyUOYtFECQ z#5Y@nT@_wZnU7N6S8Xt`se}b1kp}}x<-OIiPcsF-lTKaA z9S2hh${<_KlUpuHU?USvvGFQE0z?{hZ9L?l6ES6<^lrpPT*hSuU(JN8xUh0J&Z$tgqrx0m^*XgpaKB0E zUd3+wCa-8Axk<fAt9}X(v(2wj_*p(O@YR< z@Gx>J=&x@nxBB^^}XkCsARln|oAxG*P#hXwXoJ=G| z)$kNuGBF7kup>Sn`(~5MXe|6~JxcEq3X~Q@f$Wj>!X5QU^>MXE$IK?!65!7L{33pw zML1XB`D)Qwby8c?L`7iz9Fl_h`=6{?D_1Qu!ei98DG}+_j&>ivu@sz4Qd$zJ)28DQ&Q@zpas z=^r#kxURK|TCwH~Nie@Tm`y@PdhNLId&E{mjzP>7)`rewaSlKD*gLG%fZ+UBW`MZ0 z0}N(6QiO;FAd}^kh#ivQ|D*7A2C;4AV8g-A0#_S&HsGDw?B5t9e|)ou)vJYNo{B|C z&@9hReDLHUZ37-NgloXV;gt@4A=T;kYo#s?W1rBMVtm}un*a`_uos}oQ4M9$xu;yU zCLX_hdCsSqBg;R)!jeLLT+@fidujkHbt6Nb^z{H2PFJe&byH*YZQElb#Ab{tp(Spe z%)Kr2+ijXO*M`L;SpTMw<}8U)1P zKZqNhMH{o=NwD%RteSZdT@lfO;0fOM3~FBHO2uYUo(1)AXG1u*3QU0a^cLa~<0t=@ zcONgzeMvQ?*x{tfjH~h_=d|h`Deh=}IGJ5vtp->?{BCNNnnG28@idV7-gR7e)#N*< zk*AY6D|O=qlWU3psz#VI<^R$eE<;dCCc+xYRe3&ajj?yF64G{{Z`pRHUrb+b@w2`I z@#v*(&IjAk@QhbPiW+)4w(HFqDnMS<%)S#1;I7f9(=X&j23&~yeQHtvx39kU4}5{b z1JT=oDkhr7m%H$+&Of~=%!Gdxbwbo~mL^-#Ui;+syw3J#NMfC^?a5ckS$tgmVcl+Pv)pNW;GmFa9 zpg}Ce=rKee+Xa;5-XQM{N`3VS4``)lgrPs?Xn(1OqSNe){(22#74_nuMd}AqI~XB;lpb-=Hpy zOq;JgA7t*KSMd5A+!#9pWGDXnj7)S;asVWY&>RmC%#oK3CooJrD|IJlbUFEN7cO0G z5ik<+y6k;OEO58cp5e{7Y75B(e$qEa3%Lcd!VsQ64W3P~Wi1&vyAe3c$vA4zroSp% zBQPlk+;f&8I@4tD?2CIhrp#_O2o-wU=g#FzB2P(2q!oT#SIGn3FP0M+t9GU3i`Tov zt1_Nt|4u?&WVq8<#NSAzZ{*lwkv6qJ&1@5O?&~;#ztgwA5ncNBGmA^JGs9+kP;3D@ zN66ZA(Wl!v_`8hwe35`}yt!;cpw*b?5G~Q0$s1gwI)%SGSh@RDw@0hmoH*qegx9iFJ^B;AIHM}zN169zj~e@l zw(C+DqgxIXwi2?WN;!Dc>_8ebluGRTDd3yw;d>=P#fpH=J4M!9?OQ{`oqPztv|4xx z%q?u=T88j{uKfQebs^6?q@+gIts(w@<35JWEs%ugsE7^Yo@Ev_a+-M2qW@U-nw<=C z9cy)s0vMIfl&g>rpEGbD70;XdGX=)Bhw-1PcRPGP zrEnVl3NJnrD*L5kIMh_a`Z6}|l6*R)3`^tWQvM>Av3K54f~oz9v}Y75%3d9RQ&5p* z!h4_x-5@O%>)#2GL11f>*sc%)iyMCaYoD6#nr0K0ABYAl1x*Sr7Zpu)lBE&K)<$>C zWl}6mP~+|{)vTKI>oE&>qB3R;dmBSodA$Fi=a6*)r`?4)Tgxas9?=zJ)Jd)bq7(o+ zBwehw`wLW~K)P{b48UPdw+xoz4D3|hS4x{-Osw2~*ypZ3PNn`7ls3`7+H%tc-t+n4^*{(AIm?UOr&0V{adx zKcZHDR35Ity{0(gHYPsw<{k-6rP8Agn)*tL8?zzXFMYs%=;S@J5FU~Bd7zHTeUY?% zAQvacI?XTeZ}mS66VicEpu}&=AE2MdIm*UzWzZzt0+_o+xb#P=Cx-gc)Lzcip@?32h@mw_x{ z5HPncOV{Cpk;KUiXxn2eg>d!-zj___HiD|3S#5%0PUrR8DJ$dAm;0$YeqbpfZz!Hrgk&;qgmEGk{u$RU(_q~5olZnbFb;60B&+~NJvnq{M=?O z&QP-Ojxy52CVjJT^dE&^iMFNcau40CCEJwo{{huND!&z8NJ-(vaE^ssWTd91A2k9Y zqls}<5i{eAMY%a+kZsbNRAoaICBzYNj+%TYP3^cR2(v0_lIl0kfNHs;>Iw;YBJU(>`^BK&;Z3c4@|50&17AS`Q95EOV_Ib%Rt9>j1lo zv{bs7FN7XK_?qoz+oAxi%eBEfxz;)HI5mit)=bloMD3#{wvdzZjw>y#Fhx!86vCKC zA3xG*rmeA+4u_iW6~)>kiUXZDa7gPVkcs=9WOfQPbdeCL{%DNg%Cjpl>Pii9-b7p} z;hbX}4H_?1ervVh(Vr1dF$d@ROj3b7)rQM0819Rui2ndc#x&)(Z%fPVn6cYSp;AX1 zyV>B8F=f^+PfOZ!FB8dCWgNk%v9~7~7iZ_D8bA^EZGdeGGgK)>{ITfQvuk~0h8mh> z4RnUkCYmFak-h|X(OtW6VEKDy)fAU%dd_RAt=qn+RhB-|)pk)>94k6X08_abFN z=5v+^wiU0cPopXnDK7CD&I!#N?P)JH_P0(PF>mZ zjOn?nA&IGXZ8z-K=4(lVIg7hIJ{!H!s^EL8EA?LP-8%_bTk`fE&nq=y&ObFHCfb;? z<^+x50Ti1r%e+lW2sR14h**qsJrcHT*_$3}URG!~csA|b*fz`?0Oj2qKH0f8cy7#I zjOB-&2{rL8n{NAdco|NVleVQV%gL~8gyiyrt`$b`6l_^$>p*N-^DU*vD(%wQtOYW% zRbZ^wW)@){y)cTG(BKeaP5%IBUR!EyZl7gK2sTru-8Gf8 zgbrBVy@UJrcVmv4J7rFCco>o?LMqdYbN0oe+_bPw+6^W4(yj|-ekz>^ReKjgNzZkbM8VK+--?%P zxU69c6&Ayyl%k))&!jDGjPz7onKhP~mTklvfh#uad)VY6v6ueI&-HO~%IR#|V_ngh zmTmt4$~@_@4t=B9+23c(4=LyZMkF3n`2YEFyykAh3dx{J3rHjDWIITdM9hN%Y#pJ zAvOO1<6F_n`&Ra-%;!t2yFa3+OC>bmB+)qD%J0KZ);^C5YQ}lFCLNw(w?OEquMYkY zR;5!8lbm+m+i&#jFAu`?)IKE_%cZg_cjav-5x?E4(u@`*ZwnQyJ0IBdhApSsHier}n8)9|0kUiaf=lwCx+Y(;Wq*-vB=>3;C!)rxZ zYeygKaU+knZHrn)S-0)(iQ96l0`D10ZAbf?jU$GYSEZjrP4-{N>7`o-T31qCzNcw9 zJ1XL~FPj8TVtYpMjCsYflrJ|d(ouJA6ml}XDzIjx=4Jl?ZOZ|nZnoo>KkJPb9Fcjg zvV@V5rfGNn*uTrvrL{D7VPj5PA7j6OaHOxi5S^H2ziVk? zU9;ca`l=@bO%v@pV%y9u3lDp9{-~hdv=-^K+uf{gsFYic`3<8S%XfjLD``nK@VPWo zEs|$>lEOTP>2CNJwwpI#X>@E`KH{S1?$SH{zUVj&nW&0zAdf2gT{x%h+F(_CHf5h$ z7GC5dw}7cz9sQE>K6~-SJ}uGyzXp$;`bKJY)X}Xo@5(bg^7MkOB}JZfa>wNY`Q_;! zQ%z-uQSsQRIpQSw--x{O^o8e_q%S+mBHc zQ~9^4jB3f+G6O2`+RiYH8y~uo5~tnHJc_uSN84$1@VU14oU1Z6dscCaOp;nAW}|(@ zG!Re67!GDpvA&%|FSv-HsECO~#aA3-YRYw)%U58wkO;P$s4WuQMd5oY!9_1B1oP82 zs_qd9E3RJIbD~4z=T2JRyl|m-+|9G+8evXBrju(h)zKs+D}=n)j44;`5mseedBO(A zbS|MOlK1k1M`CjfHE2vUfsjD??Tw=HTkr*!@D-c?5U`Qa6ZadFc8wzl4b8j#}VM5Z1Vkz~%Y zvm}_BEkzR!AEZxc{JBgp^WoPf5iZ|ERT};;^0e5w7V>*W&FGr4{2L) zQfOrwS;JLb@xG0Rj|KFKl$(F1MGxBNeNrmi2C2*S1@ zQ3GEk@~?Gx zVFbueuoJHotgMhqt|D7&=<0t~DF`QJ=4YC2&6O}VRFu;7&5C{0g;sK$ZI`b8KXPSB zL7fedit7_n!gAod6GAr(Qf{NpO>vv?85(Nz&SE(sWdZgt1nm0(mw zD>YKQmly4DUsw)ntG_GsEc8TL}$~+*i^t#l|^Oeoxi?|A-M9by)M>jtx(@vz^#Qew+ zV)KhJO{Fm5mQk@MKO$|AvuZiDm_M$&qMZAy9J7p{%iN2UZ@9K@Pll^mnWWAWSmnwseEQdcev-yHAUlTFe#To z%8O}w`T(aI=8NfA+mCd%FMQiZjvtYsxE1O#-*7&kGA5U$doZDS|CCD5zFWwt*()7F8j7eE}rJM)Z>j5q#C@6C-AL9x*UNNV;lVLih-+G-^4}) zoNif2&9~F4hiwRBDSlyMJ{{T!|CiR-+n@_at$$WBO0ZKps)=1^SOq5l9(YuS>Mz=m^^BofYs6lUs=^+ein-mkTn7q6pu ziJ;I&zc>QaTR@*}MftF87qpKF2*b}>rj4$bx8Eg+lap3xK2BA}EV-Fx?HQGA)Wk_Y zhaAMkm1a2Z$E-Zzxt&~%N6E>C=9ybW$k8Y}*Dja+(OYt6Ge7vV!39!|-q}N^Inv+U zMdYQT02=@bahDk-W#o41k`!x6^mXNaZ*OYN8%v1M`h! zXTH*-H5X$xeolH|To(|Prmz~N-S`6DK9bbGX1w!6(R-CwFI|o6V5hbq@FFN7?jaNa z%E*%h4k9nRpsoPMv0iXiWCX;N0DGhC z*E)I82Lo=*)i)|gNsD+#!80nT_2~p~ZkF;Zk)Jj;(iFqe6OALSl@%3ZEN2E%;Th(3 zT?*Z+Ueie9el1b@4J*@bjZ7@5GibGaONiax?u;&*bo#)v?1xQ<4CWM#C=1yxarx{c z)00iRB+`*BP*AarNfhZCfeoi1AnA@Jw8k=*;fy>bcQpB~u5R(PvgnVw`X|#)kJ=6G z$?KD3&E*7+w$Pno(&+5d(hrh}fS{)7BUhu~nF)25w54Vov}fm78TvW0#4%M;j<8{VWyUdayrRre`@RX>__muwt#kJ#e(Wm&2glO_UmFZ*SYc|)i z++WPWTPA1eKhrj5Hi;q+Twq&Uw@I-;ME?K;dOwEo*nD0!xG8A~UiRMOv969|&HP8h zH8@L)%#yU8tA5U2gXamg{pH2MH@;C%o>8^aIca%5mD;v^qv~?f(*`Y-dqWt$d3s0H z(~_Jnxeo%T&iX~?`a<)|(ifaBJiQ^3FFd^=dFAN~&o4+`d3rzt{{U4XLjI~kfDdAP z`ZnMji7-t}_Dg>fish{<9Rc>`CD>M5YV5wzyTm->l$T^ACmWcOoR@lH?&>%(pE$41 zPqkVl^!9XaoI=k)rT%Dk+1hiSHwWi2GAcW^ZseVP!!^5Ravb=KKe!upeB z{_AnhNHs7Lr?i=2SlqfJo!Oh~gEcajP(~|Bevx|3bmh^Yu?EH+A4a{3}7F#op0Vy}M+U&#n zJ}Akxgcxz5k{Lp9#8YfdU>u@hh@nziU#Dky{{Sggo~*?Jw9WPsS&3#_+6~nwZtp=8 z_INbAJ88ffg7{N^=5cMKKQ}cqR*96DZwC|^-4Grz&#@~qbA57Q>7$p~kr%wj{{U=U z6yGB8?PSU^xwmS`S!|FnY_LQaTnDl9gCE;A;0>7|jqFP6bu2DNIc7@AH8(LcJ!m$` zlSHB@chsEjjSDQLRYWJ}4L}FscJ|H`>AP)jx6~=hF*I$7;cz9a`$}_VcNz>2G`2Y_ zBQY|rylw`~4bQ$Z?RjZ&Qka{WGH&%73ztgg^F>`C8z4t(XIZl)cs=U9{^+?yQ=w^CDN z!yuB*?%Yd*d^yKP+>_E0&YIf$1DU_LGZ#PUjH}X=BW*h`)6i*3r9HZY+LF_wG!9|a zoV%Df(ip&YWSyAg^n$wCT_OG}ZgwvJ05oYi(oT~NrPZaULD?Z}MaJG|ZM6^T?~TdX z+4pfkw1@EEUkqg_Vkt*kbf@KHDLN8YOpUE3!**>X=E=?^gz&d>7|vno zhNJ|6SUE>7?NEnjcJKXBmJ*LN`|lLUru9iW#r1;;B-ym2zie7U1k-z>Tj|OrM#|fF z?DR5qrz2X+DVfFrw{2F@rrfPITO}VD>Mf^OY^B*VodyI2Ko@xqIZHZMqtg4vSr_dc(lZ&Vp`S74S&tB;S_-YU@KWcqw~jb~yPWWUTAJ z0^{K#lXG&VdR^AoGpOEgXS3z}uylo^JyIterQ!~*3RpzG4XEkz zb(+T%n>tpTl^Zp}YFVM#{{RtgUxMuEiFR!Llch2SMY<`uyTxOW+S^W9;ueeTtHka0 z(1PNBhqVgGH=VNWCTD1q7x!1{{{WgL;65FBNp3Qc=ojprh?}kj(!hsl{#eYOvuvHO z?RRAXW*ozMY?}OIpRod6C7W=By2Chjuz+1A-dSlUWf8x7v~ZN6!v!TR8|UclD?O3k zy!?x8?O&H2unh@7uP>L`h%`-gS52u_`nZ1#P_aJf<7B6sJ5bsOW$xW1Y?aHmV^x{5 z7Y(3(U1si*T?X*}=q17KBpoE|`)6j0EVSCqm+=E@@o;uY1*&k`ZlB z-V=j)c}9@DQmmVgzSD+`;1-0Cncn$e?RT*KLwzuym_+X}A7iC*{*_T{&HCVRK2}v?? zOc2h_cJK1Eb>R-vGLNhBQjY-3-p#ZABo8R348mo}b3tzUZoOPX>g5va4uz{O`;I6X z0dFgvu23+GEEO4SmufwsE59hwvXWe$X&*&LHgs)omh=)z!dILDCC+@6;TC^=R*MyL zW|tuwgf?(C>9>4;j)+&ci*_1vUUA`Q+Y79P^La_q8?n!eO3BKy!oEkeC3VC**G#|d zhZx3X-Q3)mZdIA8u+8IL*S;&m-j|~5vP{UjjhYLN7rYYQTfOBWBEP#NWW&P27I3d>G`cv&+1rwaifRh?|U9N}L-wyGB}BPM}AQ z0*$-zMva`7NlG~{H8DDdgI3jU5=GX766it#$`8VH_+vyuRVDYZCWkZ}a)nZwaUtO8 z+~qo1(ezaZf^-)57~~J5a;`MR$+AaG^SvJXU^!>GC)K9rUBC+BsP;dmGP*@(%P6-w zV$7j5t_|cuf{rr1FNW-;f}tbGq&hzN5rY=P#?t=)&B82Z&VQJ za$DaMQl&T&qT#OdquGy8C*|4Mi>|nh-KX%rC>DL&Dq*XJ)!m*u!513!qwSKg(LCm9 z$C+WL!ekJT=zWd&&$MP6n3fji8gUy>;nC}h9rG4-h+;L`v?}XY)P+ahV;Va2Ww*f)>Ea`?95m$2 z`b^)r$dMHsTmG?g^Rwf1){0+ocSv52o_fJmdErE4nE|Nb136{9lMIV;!V=^)ORf6G zs}Y8h++wI=>B{qCuRx2RNdY8Fy|~Z)tXy27a8K=uBTr&($1E)3_3Q$=J|&A#&dEZ;Mve|wgjUO4 zEyUt#VzCQX+Ie-UCpb==$tn}h6TF!YJ=n9W&7oacXK#Nj zdy6w7B*w;2QO7uJei*N$6AZH~Lp0Eg$}L1`j8frRj#kUw3WY@*v&CDLvN)^HmZs`^|^6KF7^p9o?<(z{5rIQOhs=GiHWO{W+!?4tZ}x6#phV$YdjhZt(j zm+fAcy?ex?r|8==NH54N<(qe9dg;uE{{WD?BfSE*{?9ZACu*vW#7zvFJBVf9d$Li_ zJY4GN`mC?q{Z6=HAsu{4fAWMmR|VFVPjE$AmiYew%??(G63e$|wKS3~oi302!tYX! z53Eau%$kx1Wb$NEa~9)4hiy5j|M z+cGlPw20YLnyk4;;O1+b|$+c-Eq-&Q9g^DaKZPOGh1 zO%>b%>fGn`qEkYhQJ4P!Zkb(Xw{CVz{^E>g9wTI5S%p2Jh>{U+MX0&2rLEj$#yFd8 z7f0Qe2ES)Mb0p;*CqLc)0BY{VByxL zEDL~QlqZIf(OW5C%C`2#(KIJNh$PTg{{Uqfp58 zG98t%m}R#p;kEIW*6q$|8K3;T4c8=F0s|64-p9r*n6s@(i6rHQ?**B1W(@JqTT z#hGXU?2cZ~0CTdUezBsRG_{v`GF2rV5X_{>yR&X=c4E!qOQpLTtkvfw0%0aD<&4A& zV>H=JOt2P}#u(kd*%t~PTo`GhCZ!Hxi{*7v_iy>58jVT&-`FVA%M)f*fa?z!yK%8{ z=!i^SAusBUNmf1Zp^Gkn;c*@s-sgHb7DmcyZgxgy(lMFtxKtin(Wzw2$WBf>Ss6 zd!*_sSly&$R+O!Mdl{r!Jpd(S73pbbS&|K}@jrSKNTz(G*_SpY5JVVvdY4FVaP0P@ znRskgnwWZFwg+TIc7=cC8dezeOhL)1i& z>*#0icdF*{U8ex74DCI#;IXJd7rRPjq*;ZLPxn1#x+PH-# zhUz}sLw?|m#R%l5EmdvpwVEpS&f-zVkKGqI+mxJ1c?PE46kBD>*HB*UXU_Bzp)9`r z^@3{p8nbeiv$Ati>1MXkcDFO$jYpDMmFngOuFCclOZcVyzg9ABQnz~SjH}P8OFY;Y z@ortrvHHUWbXsazn<8Gtp5^^ri^*vFLz8W25YEA;=`2ROUFT4@m9mWI4sD4$j!2=?8lF(h zoUmICqT@^G%YeclzsJ)*dvne3$2#kt@xK~`eGJopv#i7`^xOWUS{i`2X)9L zhmD6O+B>Hom;wpuXIxINc}P@mCC=zmQ?E;)%r?{Mw(Qd(#xjO&)@3D)k|H59+g&@0 zv+lbCy)eU4Y)=&p$AF5a)Ln9%7ce9xDil=Ai z2#Q(lkT7rFyqoGH0>fDiw018(%A+8&j=4}P$f0#g0+rg6k2H)@mzBNf!LTg}miDOQ z4mkK;*{VlZBRs^z4Xn!sB)n7Nh@2%zr0zViS|EbKTscPj zQNjb;N;fdj3xo|k-t9iLXoIqyNStle5>Coq?G$5Cw2hNlbSs)82UzOnY9ie(-HQeC zRN1`H>{}X=mhSXYa|)`{gEUClolkb^ggLc1AzrNM@v1l_#wDvQN|w47nz8O@STkCd z_Vg{YZaNLty&oEbAG8v=U%?GM%}H0=_i zn>A&w6x_3ps_jX>JITBM08D0DAuL!mF1MTQ2?wf0V=(Vn5Kv2qMST!qj%bEe;5SuU zYX}r&79|@p>p|N&re&B~0SRtW_pR8XRrv>0$Yxqb_m!%TXTAlUd9eaVTSfPDzQ0-m zn3rWv^QhPW4(aVXA`wcQZLPvnl6o3%zAegay2+Hy?jIB>mu5|w(PR+}Zs8g1PBHiOD0N(F>0VgM>-~L)wAUu~Deo9f2oRqzB#sJVaeDSPIubW%kKJV(?v4 zFSE<*L%eT_gT~`N@UDp~_io`58H8D<5z9rptJy}*{n%;}2~}XvjIuD)*H)Nt!AgmA zhU`Y{k$|Mki#wPgqqic~=8?1g=5Ps>S|<0_tV!F4FhwcVohH($?>-oIk{1}-6B|&H z4{~j=r%D#~#;LxnhQNDk2wt8}i$OO3a*Xhqp`*bWz)xxWP8 zHzlT89hzNmlLrc+%^|vNY`Af%)@Y<s?8*#;){tq8=Iq!1=LNRCmGhPgZ)rR93^w&U-)s_1jLF@wgWUK1axMpy?QLP zMzWhWT@XId)y#LI<63ZHlvLt*uk3k&THhV@s_x%~9mL$k#JhsSI{_2{tpK;7MxUCj z%y_B@^2zHoU9~{wSypF6iDve0?R>6QFs;d1(7k7b%)m99%I@kmJU^BN+0Q*Z`{dHM zHMG3hgV!TNZELLLtg$i&w%&huo$UACk3tHh9@XjMbIrzE0{SZ>XM-$E%*dF(dvQtJ z2)IW>{?E?6HP;-stnil&_o*{*?*9PY8C@c_tp_eymc5xW(aYWUVmA|K!ZcfEaqB&Y zEVi7u4|}t9z}y;Tyt}cC<%s#7o$Iuyaa%ry4Zg{?n^|i@Wo6u#ykLcoI>zOfCn-5* z%P~7TfoET+{_r%t-l6eDK`Jt`voAOdIWqSX96z=;q)N-#ZDu8q&v{J5MvcO&T3Iyh z2&lOk^BozN4|*(3oV#V8+Tr-X#b=bP)#0((x$v&=s26l;TDFa#hQca_Ic>%T9n z8w?GgiZgSQc4)dClsC4kat@V#X>E3i>4|Hu7?s4_OP$LLj+|cS@0D#XG@~R4+{0&O zH+0pBo4>k|V<*RYp=nkjV(Tqfqat@~IT zxp+$M!{Ll$OGuc0Vq{(+mty_-g2v_;Bu-v6`}bm>?&5D)M!&Ttf>v7lEV6e?;l0o7 z#;oknHrovBWdh(`6~A>iv;LUn`r4I{+tWQ+0NfN7o4;M?F3wh!*2-Otthj~ifqUKK z_Mudzckjd$z7wjN8%DQe+-Iv3KJmS!^dAgh*>Bpf44s?4m#VDHoU`uo8qOsJ=>+)j#f$cdfRNsS#G^J-XNqz;J3|8w_{34 zxz{b=wAzqBX`*Woa{mCI^DGg=xJTlC9t6~>W2UoaY*|*BnQlSUcJZMSF|$$+hQDSu zrsrIhcpPd-nQ7AZDn>2ck2!p$1#0D_S6UBybH~OkwB}^d$w_ux6SKDa`)6_9gy=?c z-cK6T4$@+7NhYRb5?$vmJ-bqhMt|CGkLp} z7rS0CNxLu-(~?Tthaf~NwmZ9oHNhhrthn5*h_h3Y=V_d|j_Z3cmUQ@Uc8>2J9#L3L zm+U4PnUZzZ8hDlRQV~sV(kWBFzp&#{R8y7ZPSHJMwznTQHLQOwaqqt`er| z{{V_Fv}F1@Fm4mh1ktu-irys#;+m$k@+$6Z=`5M)M3E4fC$`UG(jeZtQKceG^8pDO=8NgJSVk_b5B|ptosE%}6lESDVG8aIk9+w7b!a zmEM=`Dp9`Cta6$JdRdupa$x1?NOxN7{{Y_>&xFeC#i>?A*}SzJ+BnCUopxY);!LSt zbdbP*-G7z_nVGcOW_+b*jSa@B?*0;rP?X-_zC?8vM2yR!wsO~Q;j_F+c=k>})2u!( zHp0#t3Ol*oz26*dic`(mpi)+uZ66{R7U%tuwJzkyB-FbTvrjaeqQ71g=}HpY+-FhA zvq|X`W<;f?W~LF)a)N?Iz9k3+sd*C%^FrZnmeVHrMm*%htjU9Iyk`5n6fdvU?L`uk z7TWb!r=4A>mt}X9;BcFXr8gX>S#^;)Vw@xp?5>rxKJJUk;-(zKct2FZ)}ez9Q~&YbfaM=9EVA;E3)#9ob;oPgFAM|aEs+gA%~`;=uE3hGSKufoEF(&lvq|?F4~9vu@+~D zCAQBxC$%lu;TRcpd6rG$6HWwQ3_@Z?McHF=SpC~qfKg(9F9)~4)n;h!di1h2D)Cv& zD7JNQRvyuqZOM|^h=)Ii!aVLmT5XAASKT|Pb*=BZDt^&*g=$!)UD&WWuJ!KdZw#FN z5aTlKI{mb{Gj;u@+(eUbuz_DmGg@tKpJba+#CgCH_JF91`#Dr?q9yc){i886XaZTI zE-j3`UnTeooIbQ1Oyb72mKB)W#k47+L2m8a&fZ@Lg{vt#ZQciE#!b7$zUObc6Sjn~ zxXX^rkvQe>{#+ngf7vffZQ7f8c5KjY{2nk~uGiou;VlVEH$KynXsIsU%p6UpYMfJbSlv?GXYYWY`Pc}Ep-q1UI*XqWcRHd@S zy0NA^;-xIZ@1sdq2WE!WBN`63M+BQ{OLX?cGGEw zjn!cYoH_;4_~R?Bw05+)Bl9eTsa3_f+Jc;_W!cs$uFq*ztuHjoQm@OJl!*WerRcqe zop4#0Yic!YE~*X0AsAMgS*k8DGme|nBc9B?)<0$sm>VFaidsr=HVPwD7dN3fyuU)> zABY*}mHS$a3ur{y-UKVRqcm0Rhf*dNY5wsMF)^-Js~ZBz*K01~qadV-y?t*%Pf5F0 zPD$WNiHAc1PvM7t>?JtELCMNTF5@$$F5~kmO#)u3R}+OXG=9!gJyM4@56Sagh zlcHb@8!U(;WSEvFTp;OVvk{ST97A}B)w|?fs(n}lRNJ#$SCyrh5W@?*I8ka(Qf2Vy zfq}VAh543Mrwz-l-nut?;pJJD8GV^H(~Y9<6NPkyd!s_%agcSE22rh%CE{^Q0{()I zZbT%N=Njrs)!z~=p*ljMU-w3lyy3s!Sr7MfFSOYvrgjp-;xO7!Q)_qeg&H<|wVyP} zxcvObyE~z9wrL6$X1>9z+;|M*mYP`%OH0f>v2f_(rs}#~nB1`D4qjv>R>*xs2+_@? z-QNUQB&@k6`cq^}+V-Ki-LI@} zSnY$dopfEZ9Vd>ajr*nAb05kjJ7|(lGB3$Wi%mE0cWybK){N(foW2$1<~YJI)s+OS zumh!Ovf1pM{vtkSwB(=hBCB2IBqePYr5aMST)0jkG9K-*{{W-944SrVr`}=40Gc)? zFEA#~*70$yauVOPU!0$EN>6JpC+`G%Pmef=LQ?s=AHRJ?PNI&%!qqvkeJxu>!sG``I0kr1UN=b%#!QTbmJ&1Q9elgT^ak-{! zmgbJmzb5HZdEpN;jne2^Z!&^%W*16kZHc0meZhG)Er69Bx#1Sb$~@>W4$8P! zj-akNh2Hqxwp)AlM6k-s+?jQ&}TvTn~?(n=F|_KgEuTgCk`3ZzvX zE#Ks5;N?9*4$o-}7-m7^CmTFlzuEal8A{8`%}p~h1TO{Tp^eqO9W%4dJt5Vs=cYe$ z0t?2`RK0G%-5ZggQYRe=cOBW1xqmT*3bTZMFR1E4IoTL(qgQ&o?CF3p{_V2I{86jt*Qn0wlCKNM-KfCqLV`l| z)$v#!&9h&dBaeo|^+g9C|fG;ilelMvNQO;iUGR+a> zLerR*dZmEs$;g=Q9u>@Ic z+JgN1ubI0b&tu?1yW9gBath(u(+^K5b<=S6Ese^5SK0j_*}F|xvm9=1_Py|C0omod z@WjfiwUQ;#ysp7)i#E}Hxrf?*VVO3u6T5}_c4FxnwFSOX(z5eR-a_qDvx5Hs_ZRVu zrYGG?Io0cvfiBiNmv^sj*7QoqC2h@wq8rwems8%|B)d!4`a*G(lg;m>nJmWTlr!^o zMA^G7BG@)9sT=bf?Q%i-(T^^(RdQLG=Eb7At}e`bToEp;M%{AKcF!w5Rojx_=F(v{ zcQ<$@ac!F{49Yy@&^AQhd0bzu+N?OME!`h-ve;{SVr<4)xr3BBXIZYzTD(o-xgR{? zbYZF2r(LrfRJpeyBH?qgpUcM>)S2pgSvy4=U>G8yhTm?ihaGc>TBRT?wpMl1v+n|4 z+K^u_tM@}v_$-N?IY7G0c2!fawjS}aXh4bW(Px7FXx_PE9JQcg_4gS58YvK5-BMEj z00-S1?6FIVlCq65$lvQ%+1ro@dSmvX=VpvsH5pWMV=KCd-WxLAs^jMoC`wY$x@#;5 z$j?ZHoiAsE!v!>E2f#*7AB3uSEcY|R_kaX!};K-x5Sv#v`9RoFFM&GC^@jG*CxoLU;)dF%uUUO;%f0C z-S<(O!R9tCqWL1>29UP?E zlkTwCHV-ZUKgGHq%u!7I!mGCd9=Laqh*~PgGcv7SapqO9mO>D13w?6E2FW{<|=WpTsw4$Bxynvx6H z*=@@>-MO_CZL+w@C*1-|sWSOXNzmGPt@1}Z1sF!)?10u-_9*2$UmO=YQmZK1GdNvs z>@nTligfaq3XQ7-lD?B07Zt^*&`o}{4sX!w)l|qk^9Yv0Xp-w_AxPWN&r1iCuUd-&?}S--yT% zHm(`6rV2aT-}e+}SxpPmOt$%|?A#Qh3~ohA)IMk7hsm`9J?7+0UvcU3FW=6kP4iGpr%FWEngn_Kc zIw(hb2n61BW%jK+TTndHJH5#V1Ma^h4maj|ASByM$wnyua3J}7OC*b<2sWRyK($6JvZxtV6>oH>MYgtXb;=XNR5k2ySS^Bc1d61aEYL~2~O zkTc5|si}pOO|73Y1{+V^#`ZU9pOgVK(`hjIHbN&ff|P8o+~>UjzR?git-PB>61-xb zkfTm53T}C>j-J=F-xsBu{joM8+at9>8=Iw-AX#fjhRt?KZ4g<6cXMRiVay!cOiHyf z@gvQh19I|T#v`-|d2wvW0^%0YMZVcr{4gv%H6MP3tW8FA(-YG!&d5wj$+Yz0jnTT7 zF8BWcEI(VnXFlLbsnBTg-np~7x=78C{gjWlH++&!i|I46UGMRIsE|!etKl};u&s4! z5Kuz#e<;N9QCmIp0&e#Vd|e5d35ljiW!Nf_8UFwe#w?b7fR=7{&}U^X<>hHr!KjaY z*ak{z$)$U*$Zch%%idga@1NR(CdZ=&E{?}zDDa3HlHcuAp-Edu-S^w6P;INA=O^qz zKu4Qy`i*x;h7@GDHYmL4$;wSRC?!Uf58;Iq#Y6eM^^c98H)qiC`G8je86W20_CV1f zIeOs{x!V4ym7zERX}LQx)4j}tOzhFH?BN|``+XN}mm75LBX(DJ-8cLn>iD;#AEWH6 zvYUB}G+Ju#q`I5?J+OZ?dNk`sQNF!;ZRt5{Qk+=wWj@@SQvfqN)-5HcQ zm-;jpn{2>WXeKRQ?+B-)R>h=6%I8a(4Un z>kQtT89RbC+HQ!(gKaX{I>L*{^u6G4(;?>>Y}=hHZfvHK#01%0Sy9-P8|NC1S~C;l zD>rLdy-sYz_rHXbm(^;&%?Za7`mJtfzoU3msYz_*H9Fvg_foQC#&TJKp(4um!k=fl z2$E*e>MhU6*&t*NUfKW+=6kP3T)f=3SN)y@*%32ArQrVnr?nbA7h+s&XPb6rX>W)7 zuXv#Ca7_CbV;RB}R8c}dtf5_(lU+9WqGkScPozUHGq=N%pI?@l?KeOH(9&n$Om}Ft1KR5yDUXn zRFrLUJsp>DZD3|-8tYr7;O+cT%{gmYb2fvn zS@Q3k!$nauYVr;^e=$IvBbFxt*{e;tWt?%n#Ons%{ZSKzN|UqGqi9;1h5p8sw&Db( zn=R4jFTCO3zjF-pLB=vIU4W}q6)n3)k8J+9rRcg=&uzw~j!tTBTdEL*(5r)Y`EPw} z;HzF)ZqC}HKI5Czs@#MP^*v+%~);4t?3Si1mwCltsr&czYMMck+R!$8BqE+i`YMEsogSb9^pta{8%+5rkgU z6T4a(wjr@J^pea;2Gye_eGSqDcJ_1u-GJ>`X@zLELf5@&@HT;atAAWmY|K3};2-TU zC;LD}EqJdCX3Z_Cb0CK_n_Ql&B}>p#r6nu(Y7%L}%+{D8x)PSdw_0Ngx4qz(KC~9X zNVzZ9%4GXH$Ypl#`J)xW;rJH^0Voj@!n|qrU&A!hi`rIO2PBH7w5{#lmrmYDsi?phDw&Gh9 z6Tf~koqo|Ul40qF(ZuE`L4%NXgvJ!6A}`_(~b6dDZ1eZi zBX+7S_eP_@a}&=4lCC>GP2Ul0_ZzyLe<+=t+hiMQd7{{%0Jpodyj{>KMh|z~m9&kR zHj_-WODgYPUC=isFK-s|QYUQ6&o~`jXP)gCx3nv_zsnjj?afNtZ2s7oCg)HbM#P&S z`F)r&L`lh@nwdrFpw(Jl4BggoF0G}1eOEPbRsxf=C8gw!dDojMg<^~vo;!=4a7z;G z1>h+zA&tyRDggKBwAYoVv|l-7eKQMpdak>)jtYhbLv+ zCa$AGh5RwcUT`F|*3!)uCIS7iw?R-Fw|sugTxnW5nYzs#G?d#@_8_@; zr47d&YR^?UUv}v!;39c1=^Q+(&9NymvS#;QZQxt`D5lRHjJw++c-p;Ii*!@Q2ZoC( z6`9wuKGdtvG1L@<&W2_;AfCM}+OYJ3%ZZ8Zf|e1-&NksRGgGsrvU9YFk$;*iJ(^0o z)74jyhh~cI48nMLGL>oWI-5e!R?hs?@SMZXP*FeKMg-fFY`r#1K5oo4y}V!3NEPWn5|O1umW77$YdILcS)9BXqxQ^Imyu^ayY4AvBFIZcC(CYfVh7+p^P0g)F050pS}pXqj!fk-Yc9DR`Fu z0DMWIlO~*UWv5l~DmY6S#!-tKjGT^G+?Ba3-o%uc-l%Tf@r?#10h<`rRl=EA6~U2N zxr>jIGCh^-q#HXX8#a`kaalne&j{8^JItxZZdXQmt79-AVA>Lh?L+NE-9@-}3qNgAF|?FqhEx?+0LFl%Xx=c9qQs4b)O? znWb5fTcdO8S1%|cUi#jZCKMTM3`o^5{{S>)ObfdQn`TTlcPn`dx8DXjE(C*8a_%~! z?kJS_`>#TFu$F6$XFVhyL2`hj2cVj}w>dZ^+#pDay zqL+4y=NUxeh4&4s;dGJZP{ht6#K1dc$S}>LFnd{&+cqQE2#H2hh||av=Oc;~Mm+pf}Z1V>!j>fc`k}3v@^I>rAqHKxCQI|0_CoJ(ZIQkpwil{ntg$7&l zj>jz965%x_+~lJTb&?g_JHG3^af>#sl$&hHFr7>$1nO<$db~fT2A5YJx1M%g@kvda zie&EUdZyYVJ*Us@&~x zjBb;dEbl{_wXC_DK7Xv)(z~oSUADe2<&FkURqn7;lha0oBT)f! zZl#26%Md*Ll*OO0W^Ji*>rN9y-Ru|odl*LFl#D-AwrjH99%eGdago@({7nKYEazvX z#$*Co(|6vX%x<(7uTyt>2sXx?nd=WbD)`4M&k}yjegGoW%q(w@k<}qyT&S|I5_FAzi7qgl#QEJ$+>jfy=6GFY)jF_ zDU2_DYt@YF9GXcsWT#$~ZreGZ-POkouYq^oUD5pD3D@NcVs>I=-+WwbmB3q~XWiNC z#%9{kc`Gp^EG;k>*;8||kT3H>jV9yo&)tUPoQ~I~DQ7p)n>~v;`%T8BKz-n{8!P0S z>3ia)5slIbnYlmO4TXa-)g%G5al;*f<$|x-yBIwzc6Eet%Q)X=LTd1i@QOck{#W%y zwp8_|m~0*TpOL7Ot(fIJT;)6-@4mwvcESd=!}MDtrx(Uo0ynMYol_z z+ZgJ05;F4F2rV|JT_Et7@Yfj18LP+C?F%wl>9;n4b)R>%GRbdzV+Bnz`n@Q&9Gvj= zmi@{k&e29Sow_?M@2JKKQg=5-YI;<_Hq93uy+QVs zlRD!JO-l(3i-T4}_@&FU8MdvTFphPzal;0;TNQ5N2lT<#eX#R#(-R9TB9ePy0&Oo) zGbG-u2W;9CX!*L^>axx@*-Tz!TG@A|>hBLYRNf;soxS;$H;2ec#;q2tuC$U&izLk* zM%}sn-&!*IGy(fq!35FAFKyHEy%LgFy0cPp?vGq-uM#2Qy}~TFLeME`ThAzryO$ig z=Fi^$0NolTZ8S2J?2e8}>mA~mW@U+1LRqSb4f5KbWB%;pC#KUqqJqu2vkk^J zX?B=)peGV(yIZKr&52Gkzq{EUUsR%2guyUR>?PYSvvmcs-`+0&0PcyWM=b8Ivy>HC zN+GQ&w=nIT66_q$R@}Po*;p#){u)8{oW09AlarZ89Upm%q5}38mbl*SRXn4fkwsay z9+8@rYHG|1G-z8Tzx?=k`9-r|v-WLDm9X2Rc8rG1jdQ(7bB(3+e*N-=C-CZ7w3`=a z)#tgcQ<+xhRFRafUAKRbB0e zck;vn4Fj=rzahFE`yc2gV^Me zPK}JECnjqQoTEi4HzhUu<7IdiUfm(*d*vGQZduLFO}x{xlI@vP)E>XE0$aU^=jP?5 zOQ=0A>z!l$>WKU?xa{qMy9rlp*6uVHM9sg4oJ8A~DAdwsWYw(j0}e}*s>{GF?FR6d zh3MStGF^U6sRcBKu88#gb@Gci9bNifAupXDJ>#tO4#dPwoi zgT!jfZPma>zl-r<5h_t!ft|`W3ACl1YSC?pxz_egUN;;PD$HL?_qU+Ykd~b5lM=J- zxn;BsIPAlW?A4C-yN|_&5zNc9<972T`$&z4@taq#joyD&39;qEZqZ`RZq`&`T**E$ z?%@>EjCStZZ+iC;6z*yCf#$YEZ1jR%;gfU`w#~C`PaJ87XY!4yyGc^cVp++3w7kTn zcQ%2ta+vM`N1F7@s|C3>*H@lq$yu7*`n;mqcUl%D=P#hlIOn;jcE9Z&7(;k?$_w9t zYHlpunwjeoa?hlk;Twbk>fI{EcJMVXWSsLYk}~nto7<}0-Vu)`6R$4Kxu^EKmz4;E ze~`u9PJP5`S;^Gu%0;pTJO(K!!Gg^qyApoTNyo~GvOycka`O2`<(6SIEI9kmd`ndK zS9wN%RBgwZeq@!oS#8?hDngNzm{D}6EfGm@euP3dmwV0?S59Msox|oO?uj{l#--jT zKvBmpUm;9VAFKe`5@yJ_I}6)Hb9Dq`X2+G0c4^Z>uH_xP?)BdI(`HW3CYo*elfcax zZ3F$^^L$&;i^N7dO(9C#4tC9%S&6A|DOQbv8aKVmIOwG%f zf>u*#6uOy!c59qfW& z+k-Uom23d8%Q#CkMCA$X0j#-9?hC}wZy6QwOR=8Xf=x2?oZQH|rTjge#4i5;>4GfB zCJuep<`ve&{{Vt09k2bcMV`#BTX?MmdA3}>P1G+TV;bKlyZh=hlTKOy$iF((r?Hl4 zLZV+EU`nt#vO?Uv{K-C-T)T{KOR(J4qVX{(t2hT+%es(L`%$w$XSXD4w0O{*QpLPC zcOg2-OHQyWXy@2=XuD&3_;4)yZ!tI~<79&9 z0+@mAZ}a-Go7Lx4#~BG3X6*L}2%HhPz6xU+J4~2-G7hsy6~~eAm2lGS!@q^{f|#0_ zYFXiF)&hf)HIF#9PG4F5#U7I3qXk7&d8YS8P04xkEDN|_Kba#XSceg*f36o-V znbK_M+es#Xu9{{yqdKlO(9(*Nj;2(z3=2Z8wu%Plysl!@4QP{vEcaEGnMO+Jva07e z>Wr-8ahF}0ByLzqT@Sb27dXVYO3F?PXfC=$f(P|tcg;eWaXealK{1;cfwT9yz87VaKDYsNIBrYEK> z=39EvmswS2sLD5v-YT%#Q<(`<>g~Q))eOEL{gC49* zRR)HnUC>pkk_jyI(v>Hb!q@<<+u2eBnL(J8Xl)lzT~XRH+hvX4`(P_NWYTag358d7 zP0$fgMP9Y@!BMZB(XOTW_%X)i6tRUD%L7m*ArD6=g- zMZ73j2aFoiZR};dp}4}2*%Hge8PK7>Mpv~+e~A9P0Fb-8h2%QX}v+fh*> zyy{%!I?5@zN>)V0M%V5h(0+T*!hu}3?Fj&BplPyZWOj{_CvO|S z^$Nm=#ZQqH#;$Y7rp?(~JPuXTM@s`PC4$FiZ`o2-XF{z0klF7{b=yU@_TpDaGrQQN zC{gG=-7PZ;yLyi_>1vZUoYbQvNHUW&0^(P@|WnM-~RZ__Juz=)_-aa%x0zKAAVv+N=juwrLGbH+#hxE;SuQjYz>!ex-2$?GGJr7+3gG{Q8V~r?aI7R zfA)15grzHN8`8vEW<|7RS9@c7x-l$?>E(Uta&Sl*WbWP@{8#ILEGSX6IH@gpyvUBu zzcbQ~%#oO$d~E`le5IuvR>{Y2uIfi2(PU}vmDu)avI#FcH!R!K&f(_@6k$qow7LTj zmT@~TBvw1~rz|To)(+y|KX>7bHLgb~(u*q0lrl*3nQw)=^< z33dcjcYe$$Q0S}pcox5gLDD9UVFguPV)C|XSd39Bs_nik5~zXf`#Ycr7)hUD=9e3(!zT}CX%Xu zTCulfO3OaO^RA(7<@Vb>>)njIP@zJrIbW!jz7v_xZSGaw##VS`#Zvebq58@>c)3RpKw^S*+C1B zkp@2wJU_M+C?Cn$;8b*((_2W~qmy#-Z2+|;DqBB`w5gx|qQCS4#0-qp9=t96a=+FG*N#8?T|i{7O06=Mc2+158Uc*q}C9@!f?AI@8(L z=0U3`vu*QGWwj(|_G-WG@V$g+&FmU#!gOTVB5)qg_rf>-0P2MbIqJ#Z-y<}jU|H`w zH70D#AZ*3)EC%lg>@5j-HW+c{C4mi0{^(Gk#5}S!q_rg|s#4Fc9_Tk+*#PC1}Slo2bI+O&B)i+Dfo&IAklm?=i+P zIz;@_HjRSA50V7Y)!(&x6e!;cvu!b{q>u5h76(=w5>W<2vOTI9hf zivs2ek>{LtofIN=*0UIYd-pr!yiBpr`(Z+iF>Ci%_ps^1yT{)tk!{UQ1%YXh8h-9~ z8~Y;}a&Ejfld^4^qd?#weV9<9sYW?H^ARU$`{xv_)Y8edHl#aFx0T!rKk~vUxsrB# zDkv?1T&Ked6jF?D@03+1EQY^FK~BeM759*qYUSiCZd_LtKfwdqGY_}YGISL$%x|Cb zQWPl7uiiegpYT^tshiN{>rXfn0x8v|H&jyUo(fq10Bjp=xTR?}Mge>P6jqR-MN9ah zAK(#{H)XnA)L3x3yX}&aDPH+TjK!fkHk89^jTQN(MM*;(m;A7yMAeL3x|fOz{2gIz z%F7yBb5jUTI+$;kzN~0ks@xMm%WvG;^KCY(vz3-?*+uvY6ey}%`{za0+G5R4Ogl9u%8Ozo@UH4z z?~86XGRIncS7>v_*-*dT;R+ON{vC%LwU|Y&@ygCUEWir3&F~xB+mu>GT^~YrO_>)Q zJCh7;93(5NyI4@7e@9^9{6jCNmR*>=F0{eM+%1c@0Rd+z4x z7VPAB6B~3>+wh^Lr<<3XctAjag!?lmm;Z=_gSY3^3_u+KqN1gyr2qY zv_BRE;8h1e;7=l2;D5pXKWG3{)UlikcNu-|GfdE zqNZWzpyd>nq~j8iQZq_2##LNR1DL7**sxQx15^RWgJO}0QwdHqD#KF>;@IXSS!rJ> zUy+o=oSXB3T>(zWduy)%)MdQRF2(>c>g9h9r70GJ$Evvt{Z--=tFDCDBh-mx&eGp4 z&-_}!$UVStXo)lnx>efds`I|6-|v08d(k6nr0+w)hN)vVv#oP&^0vw_{1>dy4^%)kh$<0bKIs3NRW~al`QfIT#>m(r{NS@kaJ;C)AGlr^*s$?uT*B_VMV5 zBPE^Zh3=GYe6p5lWUpi5Eoe`SIlXCv@o)y0ffN5F>GHnW%PuJV`rap|0 z7Io!(%Z8J0gl^tiOOTSH(k-g6VF+#+HRo1idalS>R1t@N$Rcc4mt+33wAx(w9u_>7 zSqhe^HnND}C9QoQUj%!4F*kADi8-??uq+*JDooYnwh1Fur*-auEMm9#7zJ#2Ga zNsrf>ogBdT-i6I3KS`V%t^VwY$3ED0PHh9jbuu6iq&T^HX$|mhaVf2?{A#)>MsNh4 z@y<<4>JMz=d1jn(QLZDxlD@H4SQ){|%iOvuj>4au{Z?4-pD%t3T1!2KpdIch`uUPU z+^Zj%_L+_ixtIDsYjduYJ>~6GF(7!!Rr5w370>Y9cI-tF$o%|0(#95_tM30mK#sQBD>uT*(j%}^`GE0*KG=5m!fd@wgh=X1n!r~Ir1(K8rpAoD z-s?d#h|0;j4CJVi#&$%OCfBTF;aTU-1yf&LYP0wnHaNFUe6(%x(Cl5=Wq=uOZ#U!V z^<1YJ!GeWj<%*8l2>P7W#)k=ppM`3a6FCk_w!GB?RbDm}ROymkMv$*w`lqzv3X_GhcV*8l86kG)1*|>WJ zDBEN$+PC#JQ_|mwPE4>eqo+V3Kb@zg@#yULIbQ)ZPv#R>=YPyS(Fvq)F#SqW@(>Dp*9lhn{_=;DiM>!A2~T0 zTC7jj_{&DvBiGjx);e7H{JM2OX%Vl9aZDV_;}evA=IO?=t?X@?=mnA0qt6q`pbe=e z@_fFtvrE66SLe)~_%hsH&MH8&R#U2cFtYli zsrm88+vhh*wi|o;0urLv*5DU3mHU=wl+i$_Q!)X6(WdP&)fYe#od21)SsiLKU-wh<}=)Rxw2GJ?%}T1k3dXXYKiO*rLv6({O?YG%s#re7Tz07||o96Q|w|DKK3DO0)%b z&hMGIc4a1ZVI9B8NkCvz+LM88A}H6mt{jn_5|-j-%cDL- zV#`)`_B1^7#~gUa?`S7%jyf=iCf;}bCz|9A@jQAf5bc2zpkhq<$(WkA*jt2Q1(Q^T zazsw7KNp6`Kt{_*`9?N#zs7C0IwgaK%tLINgnaltzduSYy_mgawXvk#q{NC`&XB`7 z*Bwg0?C7GoTX7+`EyyujQ5nHfc(ozfW2ap;Gn=o~8DoCd>*At$qE@~ks^}rjYOd-{ z|8D}S=Bh$qlvT#02IYXi^WDF|DAraFS&1-tX#Oc>P3%e46(COQt*o+T%h>t%nNjix zEUH4?&PlJUN z9aMc;;m#x#^NAkmB%(F6j@&{@XlAfGzl}bxR9&jRgrz1q`>u*dJ9_NMLHNT8VM8hy zw5ehEP^ESOWJs6N-uz9S@aeP}L?@2BD^$vR1@KAvdzip)Q8c-P8L-tV03DN8a>`8$ z2r8kA&(fom>=&z>*KHL!k}OA+o|P|DxEEd;yPA}Do_>=|Nuk!$kI-`Um zU18ku1wshtqdA?F7vV1h(|Bbb!U%`qrLH=AItZL|l}8W7plIJr6swX`1zlSnP;t;t z`Ce-<@z-lV&rW~G@o-Yt2vob%f5?}ZwonT4(VQDq@2m|wylk!WtNOCWUNgFlb+L#}ys3y{ zIOzRT57G14SC6A^-fqh14ZZf*T*9Z})pm{{_;FpQHP*+edbCk-9~AMMLuE@13bM5v zut)!Xy`Y1nY%~T*n>EaG{J4`ld_$!`t*P}cxcrRmo{!QAMG&&d;Sy1AW%WT@WkVP} z6&)uXiD%HTjgM3XTQ=TNj{kh)2@(8Mqa(7Fn34uV>kOw%pyyJXSk+~C7#Y8~5H}te z2!=0neLW+|+>n!FX?&ML=OFYvBz$!w^piXG_lW|>P+(ubY*fFMT!{8*(JDktrwK7g zDpw`Le*HARwe+M*$a-~c3RoLHkvN`?o2wm@EDQdR)=8eS>Zo!wHuymnE^6i(own#4jh^T)Qty?-K zju8;|JS(y!3*KwRGJGtm!HllO@rZBpxNgg^>VSJw(oM0!)(Xg@I>ki?Y0g@ie0%!Y zf6_zM(l{+l$mifp+HcaT5pD7u-AZEwF0xwm`FgM{b7uwL7pPt=!V1r9OwUfXFbt^rwHV;~Q7G zWTlS|ZrIWC;EfdIhlixoIhFNNYNKp+SY4 z-aPYh*;O@{v#LMpcg~({Wf?XRMSJl*@lMp~+ox~SZ7uFwzC;SKy>bA=pVYHfIOwFe zK0Fzz3?YP;`OGNieS6R`%PUMM7&4#>+zv1#tiiPDC-;%H!eax0HTri}TD$n)33@BU zw*SlAW|_fi;3^kuz=1Mg?bnq1SL4mdUiGpZYctSi&{m8U%M_v0Dmee?bG7j zA_`Q#mS(xvMw=XVqxuA)5}&m~1sRfa;o-hu{?v|5U2}O~1!Sp`UMycf`Ir@xtwL3f z`Dp(HFUvDTT+b%ep~g}jfSV3*hw$J^p0&T6$%YjlB>NuMNe!uZpCE*@fjr5k_1*ni z$*lXm$iUd9tT}5vb*uIqf~KiH%Ur`jxVxQ1{*R~h2@T=6*+!qo_BAZ(!rW=2l!Nh2 zYpDVB^+;TwWu?6o^MPUcc+9S}jtLtA67;vWzWs$rHcF#ibF^(u>1~5v_NF?bt$b7cz5=$!onyVjCSAZN)kjojfp-HfwD2gAz*_4!A0i3P{2Noo)xFLJa z8Xue%H^rOWnl?lPow({3xUD7Rr!7kc^Tn}#bn|$QPV6V*<(my`s?*B~uX!o1cnv)y zp-r`zoKV8VNxYgWNS7RA@!>w!OUM_4NR*UrQPZ?y!MS*-u-Y1M#5^^88l0Id_ph{3 zw*%YwqQGi$fH`WqL8{)OinA)P5@vcNK7TEkFM_pw)tQH!HnP}-Q9>~__WYVAO$%Zm z`lHN^o+wXqoCHuFOG~tPJ z5!cObQBkjS=9vYeZ9rV3(tz{8&v`iv)F=)+yW&^e?X03?L}Y4o?1uD`_H?V9={|g^ z=`JLqUN-n*pxR%^KLl2Ov?q0DyS7%pT%nLd=h!W+Y)#r@qT%n9NaJ%Y+L&9JmLht1 z%$;V=sWG8jHWx5JZ>(i0IV(v}WRM8O^S0EvpnJrw6@Q~T(A_rZ&j)8&?oIqnR>B>g zy@94$t;74jjHxH~Xv-%|W>m*Vzjw^dyv>YR0Idoiss=&RA2uaH>*-v1i7#b_Il1)} z;FG)bUwIzD*{yjc!G^K< VWHr=<(;Nnx3<2l3H3?l!{SRPrFGBzT diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/ajax.txt b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/ajax.txt deleted file mode 100644 index 6f9788c843..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/ajax.txt +++ /dev/null @@ -1,15 +0,0 @@ -

-

Lorem ipsum dolor sit amet3

-

- Close me -

-

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Maecenas fermentum ante et sapien dignissim in viverra magna feugiat. Donec tempus ipsum nec neque dignissim quis eleifend eros gravida. Praesent nisi massa, sodales quis tincidunt ac, semper quis risus. In suscipit nisl sed leo aliquet consequat. Integer vitae augue in risus porttitor pellentesque eu eget odio. Fusce ut sagittis quam. Morbi aliquam interdum blandit. Integer pharetra tempor velit, aliquam dictum justo tempus sed. Morbi congue fringilla justo a feugiat. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Praesent quis metus et nisl consectetur pharetra. Nam bibendum turpis eu metus luctus eu volutpat sem molestie. Nam sollicitudin porttitor lorem, ac ultricies est venenatis eu. Ut dignissim elit et orci feugiat ac placerat purus euismod. Ut mi lorem, cursus et sagittis elementum, luctus ac massa. -

-

- Phasellus et ligula vel diam ullamcorper volutpat. Integer rhoncus rhoncus aliquam. Aliquam erat volutpat. Aenean luctus vestibulum placerat. Quisque quam neque, lacinia aliquet eleifend ac, aliquet blandit felis. Curabitur porta ultricies dui, sit amet mattis quam euismod a. Ut eleifend scelerisque neque, sit amet accumsan odio consequat ut. Proin facilisis auctor elit sed accumsan. Cras dapibus nisl in nisi rhoncus laoreet. Nullam pellentesque tortor libero, eget facilisis ipsum. Donec ultricies tellus tellus, in tincidunt purus. Nullam in est aliquam velit scelerisque blandit. In tincidunt, magna a dapibus imperdiet, quam urna elementum leo, vitae rhoncus nisl velit cursus velit. In dignissim sem ac mauris rhoncus ornare. -

-

- Duis imperdiet velit vel quam malesuada suscipit imperdiet tellus hendrerit. Mauris vestibulum odio mauris, ut placerat leo. Mauris quis neque at tellus feugiat congue id non enim. Nam vehicula posuere nulla eget vehicula. Donec pretium purus nec ligula porta eu laoreet sapien venenatis. Nulla facilisi. Phasellus eget mi enim. Phasellus molestie tincidunt ultrices. Aenean id sem a tellus lobortis tincidunt. Nam laoreet nulla vel velit tincidunt ac rutrum libero malesuada. Nulla consequat dolor quis nisl tempor fermentum. Integer sodales pretium varius. Aenean a leo vitae odio dictum dignissim malesuada nec dolor. Phasellus adipiscing viverra est, ac sagittis libero sagittis quis. Sed interdum dapibus nunc et fringilla. Nunc vel velit et urna laoreet bibendum. -

-
\ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/iframe.html b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/iframe.html deleted file mode 100644 index b586e15250..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/iframe.html +++ /dev/null @@ -1,26 +0,0 @@ - - - - fancyBox - iframe demo - - - -

fancyBox - iframe demo

- -

- Close iframe parent - - | - - Change content -

- -

- Lorem ipsum dolor sit amet, consectetur adipiscing elit. Nullam scelerisque justo ac eros consectetur bibendum. In hac habitasse platea dictumst. Nulla aliquam turpis et tellus elementum luctus. Duis sit amet rhoncus velit. Duis nisl ligula, mattis interdum blandit laoreet, mattis id ante. Cras pulvinar lacus vitae nisi egestas non euismod neque bibendum. Vestibulum faucibus libero id ante molestie ultricies. Vestibulum quis nibh felis. Vestibulum libero nisl, vehicula vel ullamcorper sit amet, tristique sit amet augue. Etiam urna neque, porttitor sed sodales lacinia, posuere a nisl. Vestibulum blandit neque in sapien volutpat ac condimentum sapien auctor. Ut imperdiet venenatis ultricies. Phasellus accumsan, sem eu placerat commodo, felis purus commodo ipsum, sit amet vulputate orci est viverra est. -

- -

- Aenean velit est, condimentum ut iaculis ut, accumsan at mi. Maecenas velit mi, venenatis ut condimentum at, ultrices vel tortor. Curabitur pharetra ornare dapibus. Ut volutpat cursus semper. In hac habitasse platea dictumst. Donec eu iaculis ipsum. Morbi eu dolor velit, a semper nunc. -

- - \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/index.html b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/index.html deleted file mode 100644 index e227c7a543..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/demo/index.html +++ /dev/null @@ -1,312 +0,0 @@ - - - - fancyBox - Fancy jQuery Lightbox Alternative | Demonstration - - - - - - - - - - - - - - - - - - - - - - - - - - - -

fancyBox

- -

This is a demonstration. More information and examples: www.fancyapps.com/fancybox/

- -

Simple image gallery

-

- - - - - - - -

- -

Different effects

-

- - - - - - - -

- -

Various types

-

- fancyBox will try to guess content type from href attribute but you can specify it directly by adding classname (fancybox.image, fancybox.iframe, etc). -

- - - - -

- Ajax example will not run from your local computer and requires a server to run. -

- -

Button helper

-

- - - - - - - -

- -

Thumbnail helper

-

- - - - - - - -

- -

Media helper

-

- Will not run from your local computer, requires a server to run. -

- - - -

Open manually

- - -

- Photo Credit: Instagrammer @whitjohns -

- - \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/fancybox.jquery.json b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/fancybox.jquery.json deleted file mode 100644 index a32e45f54f..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/fancybox.jquery.json +++ /dev/null @@ -1,31 +0,0 @@ -{ - "name": "fancybox", - "title": "fancyBox", - "description": "fancyBox offers an elegant way to present images, html content and multimedia for webpages", - "keywords": [ - "lightbox", - "effect", - "responsive", - "modal", - "window", - "ui" - ], - "version": "2.1.5", - "author": { - "name": "Janis Skarnelis", - "url": "http://fancyapps.com/contact/" - }, - "licenses": [ - { - "type": "fancyBox", - "url": "http://fancyapps.com/fancybox/#license" - } - ], - "homepage": "http://fancyapps.com/fancybox/", - "docs": "http://fancyapps.com/fancybox/#docs", - "download": "http://fancyapps.com/fancybox/#license", - "bugs": "https://github.com/fancyapps/fancyBox/issues", - "dependencies": { - "jquery": ">=1.7" - } -} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/lib/jquery-1.10.2.min.js b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/lib/jquery-1.10.2.min.js deleted file mode 100644 index da4170647d..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/lib/jquery-1.10.2.min.js +++ /dev/null @@ -1,6 +0,0 @@ -/*! jQuery v1.10.2 | (c) 2005, 2013 jQuery Foundation, Inc. | jquery.org/license -//@ sourceMappingURL=jquery-1.10.2.min.map -*/ -(function(e,t){var n,r,i=typeof t,o=e.location,a=e.document,s=a.documentElement,l=e.jQuery,u=e.$,c={},p=[],f="1.10.2",d=p.concat,h=p.push,g=p.slice,m=p.indexOf,y=c.toString,v=c.hasOwnProperty,b=f.trim,x=function(e,t){return new x.fn.init(e,t,r)},w=/[+-]?(?:\d*\.|)\d+(?:[eE][+-]?\d+|)/.source,T=/\S+/g,C=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g,N=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,k=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,E=/^[\],:{}\s]*$/,S=/(?:^|:|,)(?:\s*\[)+/g,A=/\\(?:["\\\/bfnrt]|u[\da-fA-F]{4})/g,j=/"[^"\\\r\n]*"|true|false|null|-?(?:\d+\.|)\d+(?:[eE][+-]?\d+|)/g,D=/^-ms-/,L=/-([\da-z])/gi,H=function(e,t){return t.toUpperCase()},q=function(e){(a.addEventListener||"load"===e.type||"complete"===a.readyState)&&(_(),x.ready())},_=function(){a.addEventListener?(a.removeEventListener("DOMContentLoaded",q,!1),e.removeEventListener("load",q,!1)):(a.detachEvent("onreadystatechange",q),e.detachEvent("onload",q))};x.fn=x.prototype={jquery:f,constructor:x,init:function(e,n,r){var i,o;if(!e)return this;if("string"==typeof e){if(i="<"===e.charAt(0)&&">"===e.charAt(e.length-1)&&e.length>=3?[null,e,null]:N.exec(e),!i||!i[1]&&n)return!n||n.jquery?(n||r).find(e):this.constructor(n).find(e);if(i[1]){if(n=n instanceof x?n[0]:n,x.merge(this,x.parseHTML(i[1],n&&n.nodeType?n.ownerDocument||n:a,!0)),k.test(i[1])&&x.isPlainObject(n))for(i in n)x.isFunction(this[i])?this[i](n[i]):this.attr(i,n[i]);return this}if(o=a.getElementById(i[2]),o&&o.parentNode){if(o.id!==i[2])return r.find(e);this.length=1,this[0]=o}return this.context=a,this.selector=e,this}return e.nodeType?(this.context=this[0]=e,this.length=1,this):x.isFunction(e)?r.ready(e):(e.selector!==t&&(this.selector=e.selector,this.context=e.context),x.makeArray(e,this))},selector:"",length:0,toArray:function(){return g.call(this)},get:function(e){return null==e?this.toArray():0>e?this[this.length+e]:this[e]},pushStack:function(e){var t=x.merge(this.constructor(),e);return t.prevObject=this,t.context=this.context,t},each:function(e,t){return x.each(this,e,t)},ready:function(e){return x.ready.promise().done(e),this},slice:function(){return this.pushStack(g.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(0>e?t:0);return this.pushStack(n>=0&&t>n?[this[n]]:[])},map:function(e){return this.pushStack(x.map(this,function(t,n){return e.call(t,n,t)}))},end:function(){return this.prevObject||this.constructor(null)},push:h,sort:[].sort,splice:[].splice},x.fn.init.prototype=x.fn,x.extend=x.fn.extend=function(){var e,n,r,i,o,a,s=arguments[0]||{},l=1,u=arguments.length,c=!1;for("boolean"==typeof s&&(c=s,s=arguments[1]||{},l=2),"object"==typeof s||x.isFunction(s)||(s={}),u===l&&(s=this,--l);u>l;l++)if(null!=(o=arguments[l]))for(i in o)e=s[i],r=o[i],s!==r&&(c&&r&&(x.isPlainObject(r)||(n=x.isArray(r)))?(n?(n=!1,a=e&&x.isArray(e)?e:[]):a=e&&x.isPlainObject(e)?e:{},s[i]=x.extend(c,a,r)):r!==t&&(s[i]=r));return s},x.extend({expando:"jQuery"+(f+Math.random()).replace(/\D/g,""),noConflict:function(t){return e.$===x&&(e.$=u),t&&e.jQuery===x&&(e.jQuery=l),x},isReady:!1,readyWait:1,holdReady:function(e){e?x.readyWait++:x.ready(!0)},ready:function(e){if(e===!0?!--x.readyWait:!x.isReady){if(!a.body)return setTimeout(x.ready);x.isReady=!0,e!==!0&&--x.readyWait>0||(n.resolveWith(a,[x]),x.fn.trigger&&x(a).trigger("ready").off("ready"))}},isFunction:function(e){return"function"===x.type(e)},isArray:Array.isArray||function(e){return"array"===x.type(e)},isWindow:function(e){return null!=e&&e==e.window},isNumeric:function(e){return!isNaN(parseFloat(e))&&isFinite(e)},type:function(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?c[y.call(e)]||"object":typeof e},isPlainObject:function(e){var n;if(!e||"object"!==x.type(e)||e.nodeType||x.isWindow(e))return!1;try{if(e.constructor&&!v.call(e,"constructor")&&!v.call(e.constructor.prototype,"isPrototypeOf"))return!1}catch(r){return!1}if(x.support.ownLast)for(n in e)return v.call(e,n);for(n in e);return n===t||v.call(e,n)},isEmptyObject:function(e){var t;for(t in e)return!1;return!0},error:function(e){throw Error(e)},parseHTML:function(e,t,n){if(!e||"string"!=typeof e)return null;"boolean"==typeof t&&(n=t,t=!1),t=t||a;var r=k.exec(e),i=!n&&[];return r?[t.createElement(r[1])]:(r=x.buildFragment([e],t,i),i&&x(i).remove(),x.merge([],r.childNodes))},parseJSON:function(n){return e.JSON&&e.JSON.parse?e.JSON.parse(n):null===n?n:"string"==typeof n&&(n=x.trim(n),n&&E.test(n.replace(A,"@").replace(j,"]").replace(S,"")))?Function("return "+n)():(x.error("Invalid JSON: "+n),t)},parseXML:function(n){var r,i;if(!n||"string"!=typeof n)return null;try{e.DOMParser?(i=new DOMParser,r=i.parseFromString(n,"text/xml")):(r=new ActiveXObject("Microsoft.XMLDOM"),r.async="false",r.loadXML(n))}catch(o){r=t}return r&&r.documentElement&&!r.getElementsByTagName("parsererror").length||x.error("Invalid XML: "+n),r},noop:function(){},globalEval:function(t){t&&x.trim(t)&&(e.execScript||function(t){e.eval.call(e,t)})(t)},camelCase:function(e){return e.replace(D,"ms-").replace(L,H)},nodeName:function(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()},each:function(e,t,n){var r,i=0,o=e.length,a=M(e);if(n){if(a){for(;o>i;i++)if(r=t.apply(e[i],n),r===!1)break}else for(i in e)if(r=t.apply(e[i],n),r===!1)break}else if(a){for(;o>i;i++)if(r=t.call(e[i],i,e[i]),r===!1)break}else for(i in e)if(r=t.call(e[i],i,e[i]),r===!1)break;return e},trim:b&&!b.call("\ufeff\u00a0")?function(e){return null==e?"":b.call(e)}:function(e){return null==e?"":(e+"").replace(C,"")},makeArray:function(e,t){var n=t||[];return null!=e&&(M(Object(e))?x.merge(n,"string"==typeof e?[e]:e):h.call(n,e)),n},inArray:function(e,t,n){var r;if(t){if(m)return m.call(t,e,n);for(r=t.length,n=n?0>n?Math.max(0,r+n):n:0;r>n;n++)if(n in t&&t[n]===e)return n}return-1},merge:function(e,n){var r=n.length,i=e.length,o=0;if("number"==typeof r)for(;r>o;o++)e[i++]=n[o];else while(n[o]!==t)e[i++]=n[o++];return e.length=i,e},grep:function(e,t,n){var r,i=[],o=0,a=e.length;for(n=!!n;a>o;o++)r=!!t(e[o],o),n!==r&&i.push(e[o]);return i},map:function(e,t,n){var r,i=0,o=e.length,a=M(e),s=[];if(a)for(;o>i;i++)r=t(e[i],i,n),null!=r&&(s[s.length]=r);else for(i in e)r=t(e[i],i,n),null!=r&&(s[s.length]=r);return d.apply([],s)},guid:1,proxy:function(e,n){var r,i,o;return"string"==typeof n&&(o=e[n],n=e,e=o),x.isFunction(e)?(r=g.call(arguments,2),i=function(){return e.apply(n||this,r.concat(g.call(arguments)))},i.guid=e.guid=e.guid||x.guid++,i):t},access:function(e,n,r,i,o,a,s){var l=0,u=e.length,c=null==r;if("object"===x.type(r)){o=!0;for(l in r)x.access(e,n,l,r[l],!0,a,s)}else if(i!==t&&(o=!0,x.isFunction(i)||(s=!0),c&&(s?(n.call(e,i),n=null):(c=n,n=function(e,t,n){return c.call(x(e),n)})),n))for(;u>l;l++)n(e[l],r,s?i:i.call(e[l],l,n(e[l],r)));return o?e:c?n.call(e):u?n(e[0],r):a},now:function(){return(new Date).getTime()},swap:function(e,t,n,r){var i,o,a={};for(o in t)a[o]=e.style[o],e.style[o]=t[o];i=n.apply(e,r||[]);for(o in t)e.style[o]=a[o];return i}}),x.ready.promise=function(t){if(!n)if(n=x.Deferred(),"complete"===a.readyState)setTimeout(x.ready);else if(a.addEventListener)a.addEventListener("DOMContentLoaded",q,!1),e.addEventListener("load",q,!1);else{a.attachEvent("onreadystatechange",q),e.attachEvent("onload",q);var r=!1;try{r=null==e.frameElement&&a.documentElement}catch(i){}r&&r.doScroll&&function o(){if(!x.isReady){try{r.doScroll("left")}catch(e){return setTimeout(o,50)}_(),x.ready()}}()}return n.promise(t)},x.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(e,t){c["[object "+t+"]"]=t.toLowerCase()});function M(e){var t=e.length,n=x.type(e);return x.isWindow(e)?!1:1===e.nodeType&&t?!0:"array"===n||"function"!==n&&(0===t||"number"==typeof t&&t>0&&t-1 in e)}r=x(a),function(e,t){var n,r,i,o,a,s,l,u,c,p,f,d,h,g,m,y,v,b="sizzle"+-new Date,w=e.document,T=0,C=0,N=st(),k=st(),E=st(),S=!1,A=function(e,t){return e===t?(S=!0,0):0},j=typeof t,D=1<<31,L={}.hasOwnProperty,H=[],q=H.pop,_=H.push,M=H.push,O=H.slice,F=H.indexOf||function(e){var t=0,n=this.length;for(;n>t;t++)if(this[t]===e)return t;return-1},B="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",P="[\\x20\\t\\r\\n\\f]",R="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",W=R.replace("w","w#"),$="\\["+P+"*("+R+")"+P+"*(?:([*^$|!~]?=)"+P+"*(?:(['\"])((?:\\\\.|[^\\\\])*?)\\3|("+W+")|)|)"+P+"*\\]",I=":("+R+")(?:\\(((['\"])((?:\\\\.|[^\\\\])*?)\\3|((?:\\\\.|[^\\\\()[\\]]|"+$.replace(3,8)+")*)|.*)\\)|)",z=RegExp("^"+P+"+|((?:^|[^\\\\])(?:\\\\.)*)"+P+"+$","g"),X=RegExp("^"+P+"*,"+P+"*"),U=RegExp("^"+P+"*([>+~]|"+P+")"+P+"*"),V=RegExp(P+"*[+~]"),Y=RegExp("="+P+"*([^\\]'\"]*)"+P+"*\\]","g"),J=RegExp(I),G=RegExp("^"+W+"$"),Q={ID:RegExp("^#("+R+")"),CLASS:RegExp("^\\.("+R+")"),TAG:RegExp("^("+R.replace("w","w*")+")"),ATTR:RegExp("^"+$),PSEUDO:RegExp("^"+I),CHILD:RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+P+"*(even|odd|(([+-]|)(\\d*)n|)"+P+"*(?:([+-]|)"+P+"*(\\d+)|))"+P+"*\\)|)","i"),bool:RegExp("^(?:"+B+")$","i"),needsContext:RegExp("^"+P+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+P+"*((?:-\\d)?\\d*)"+P+"*\\)|)(?=[^-]|$)","i")},K=/^[^{]+\{\s*\[native \w/,Z=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,et=/^(?:input|select|textarea|button)$/i,tt=/^h\d$/i,nt=/'|\\/g,rt=RegExp("\\\\([\\da-f]{1,6}"+P+"?|("+P+")|.)","ig"),it=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:0>r?String.fromCharCode(r+65536):String.fromCharCode(55296|r>>10,56320|1023&r)};try{M.apply(H=O.call(w.childNodes),w.childNodes),H[w.childNodes.length].nodeType}catch(ot){M={apply:H.length?function(e,t){_.apply(e,O.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function at(e,t,n,i){var o,a,s,l,u,c,d,m,y,x;if((t?t.ownerDocument||t:w)!==f&&p(t),t=t||f,n=n||[],!e||"string"!=typeof e)return n;if(1!==(l=t.nodeType)&&9!==l)return[];if(h&&!i){if(o=Z.exec(e))if(s=o[1]){if(9===l){if(a=t.getElementById(s),!a||!a.parentNode)return n;if(a.id===s)return n.push(a),n}else if(t.ownerDocument&&(a=t.ownerDocument.getElementById(s))&&v(t,a)&&a.id===s)return n.push(a),n}else{if(o[2])return M.apply(n,t.getElementsByTagName(e)),n;if((s=o[3])&&r.getElementsByClassName&&t.getElementsByClassName)return M.apply(n,t.getElementsByClassName(s)),n}if(r.qsa&&(!g||!g.test(e))){if(m=d=b,y=t,x=9===l&&e,1===l&&"object"!==t.nodeName.toLowerCase()){c=mt(e),(d=t.getAttribute("id"))?m=d.replace(nt,"\\$&"):t.setAttribute("id",m),m="[id='"+m+"'] ",u=c.length;while(u--)c[u]=m+yt(c[u]);y=V.test(e)&&t.parentNode||t,x=c.join(",")}if(x)try{return M.apply(n,y.querySelectorAll(x)),n}catch(T){}finally{d||t.removeAttribute("id")}}}return kt(e.replace(z,"$1"),t,n,i)}function st(){var e=[];function t(n,r){return e.push(n+=" ")>o.cacheLength&&delete t[e.shift()],t[n]=r}return t}function lt(e){return e[b]=!0,e}function ut(e){var t=f.createElement("div");try{return!!e(t)}catch(n){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function ct(e,t){var n=e.split("|"),r=e.length;while(r--)o.attrHandle[n[r]]=t}function pt(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&(~t.sourceIndex||D)-(~e.sourceIndex||D);if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function ft(e){return function(t){var n=t.nodeName.toLowerCase();return"input"===n&&t.type===e}}function dt(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function ht(e){return lt(function(t){return t=+t,lt(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}s=at.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return t?"HTML"!==t.nodeName:!1},r=at.support={},p=at.setDocument=function(e){var n=e?e.ownerDocument||e:w,i=n.defaultView;return n!==f&&9===n.nodeType&&n.documentElement?(f=n,d=n.documentElement,h=!s(n),i&&i.attachEvent&&i!==i.top&&i.attachEvent("onbeforeunload",function(){p()}),r.attributes=ut(function(e){return e.className="i",!e.getAttribute("className")}),r.getElementsByTagName=ut(function(e){return e.appendChild(n.createComment("")),!e.getElementsByTagName("*").length}),r.getElementsByClassName=ut(function(e){return e.innerHTML="
",e.firstChild.className="i",2===e.getElementsByClassName("i").length}),r.getById=ut(function(e){return d.appendChild(e).id=b,!n.getElementsByName||!n.getElementsByName(b).length}),r.getById?(o.find.ID=function(e,t){if(typeof t.getElementById!==j&&h){var n=t.getElementById(e);return n&&n.parentNode?[n]:[]}},o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){return e.getAttribute("id")===t}}):(delete o.find.ID,o.filter.ID=function(e){var t=e.replace(rt,it);return function(e){var n=typeof e.getAttributeNode!==j&&e.getAttributeNode("id");return n&&n.value===t}}),o.find.TAG=r.getElementsByTagName?function(e,n){return typeof n.getElementsByTagName!==j?n.getElementsByTagName(e):t}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},o.find.CLASS=r.getElementsByClassName&&function(e,n){return typeof n.getElementsByClassName!==j&&h?n.getElementsByClassName(e):t},m=[],g=[],(r.qsa=K.test(n.querySelectorAll))&&(ut(function(e){e.innerHTML="",e.querySelectorAll("[selected]").length||g.push("\\["+P+"*(?:value|"+B+")"),e.querySelectorAll(":checked").length||g.push(":checked")}),ut(function(e){var t=n.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("t",""),e.querySelectorAll("[t^='']").length&&g.push("[*^$]="+P+"*(?:''|\"\")"),e.querySelectorAll(":enabled").length||g.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),g.push(",.*:")})),(r.matchesSelector=K.test(y=d.webkitMatchesSelector||d.mozMatchesSelector||d.oMatchesSelector||d.msMatchesSelector))&&ut(function(e){r.disconnectedMatch=y.call(e,"div"),y.call(e,"[s!='']:x"),m.push("!=",I)}),g=g.length&&RegExp(g.join("|")),m=m.length&&RegExp(m.join("|")),v=K.test(d.contains)||d.compareDocumentPosition?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},A=d.compareDocumentPosition?function(e,t){if(e===t)return S=!0,0;var i=t.compareDocumentPosition&&e.compareDocumentPosition&&e.compareDocumentPosition(t);return i?1&i||!r.sortDetached&&t.compareDocumentPosition(e)===i?e===n||v(w,e)?-1:t===n||v(w,t)?1:c?F.call(c,e)-F.call(c,t):0:4&i?-1:1:e.compareDocumentPosition?-1:1}:function(e,t){var r,i=0,o=e.parentNode,a=t.parentNode,s=[e],l=[t];if(e===t)return S=!0,0;if(!o||!a)return e===n?-1:t===n?1:o?-1:a?1:c?F.call(c,e)-F.call(c,t):0;if(o===a)return pt(e,t);r=e;while(r=r.parentNode)s.unshift(r);r=t;while(r=r.parentNode)l.unshift(r);while(s[i]===l[i])i++;return i?pt(s[i],l[i]):s[i]===w?-1:l[i]===w?1:0},n):f},at.matches=function(e,t){return at(e,null,null,t)},at.matchesSelector=function(e,t){if((e.ownerDocument||e)!==f&&p(e),t=t.replace(Y,"='$1']"),!(!r.matchesSelector||!h||m&&m.test(t)||g&&g.test(t)))try{var n=y.call(e,t);if(n||r.disconnectedMatch||e.document&&11!==e.document.nodeType)return n}catch(i){}return at(t,f,null,[e]).length>0},at.contains=function(e,t){return(e.ownerDocument||e)!==f&&p(e),v(e,t)},at.attr=function(e,n){(e.ownerDocument||e)!==f&&p(e);var i=o.attrHandle[n.toLowerCase()],a=i&&L.call(o.attrHandle,n.toLowerCase())?i(e,n,!h):t;return a===t?r.attributes||!h?e.getAttribute(n):(a=e.getAttributeNode(n))&&a.specified?a.value:null:a},at.error=function(e){throw Error("Syntax error, unrecognized expression: "+e)},at.uniqueSort=function(e){var t,n=[],i=0,o=0;if(S=!r.detectDuplicates,c=!r.sortStable&&e.slice(0),e.sort(A),S){while(t=e[o++])t===e[o]&&(i=n.push(o));while(i--)e.splice(n[i],1)}return e},a=at.getText=function(e){var t,n="",r=0,i=e.nodeType;if(i){if(1===i||9===i||11===i){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=a(e)}else if(3===i||4===i)return e.nodeValue}else for(;t=e[r];r++)n+=a(t);return n},o=at.selectors={cacheLength:50,createPseudo:lt,match:Q,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(rt,it),e[3]=(e[4]||e[5]||"").replace(rt,it),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||at.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&at.error(e[0]),e},PSEUDO:function(e){var n,r=!e[5]&&e[2];return Q.CHILD.test(e[0])?null:(e[3]&&e[4]!==t?e[2]=e[4]:r&&J.test(r)&&(n=mt(r,!0))&&(n=r.indexOf(")",r.length-n)-r.length)&&(e[0]=e[0].slice(0,n),e[2]=r.slice(0,n)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(rt,it).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=N[e+" "];return t||(t=RegExp("(^|"+P+")"+e+"("+P+"|$)"))&&N(e,function(e){return t.test("string"==typeof e.className&&e.className||typeof e.getAttribute!==j&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=at.attr(r,e);return null==i?"!="===t:t?(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i+" ").indexOf(n)>-1:"|="===t?i===n||i.slice(0,n.length+1)===n+"-":!1):!0}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,l){var u,c,p,f,d,h,g=o!==a?"nextSibling":"previousSibling",m=t.parentNode,y=s&&t.nodeName.toLowerCase(),v=!l&&!s;if(m){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===y:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?m.firstChild:m.lastChild],a&&v){c=m[b]||(m[b]={}),u=c[e]||[],d=u[0]===T&&u[1],f=u[0]===T&&u[2],p=d&&m.childNodes[d];while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if(1===p.nodeType&&++f&&p===t){c[e]=[T,d,f];break}}else if(v&&(u=(t[b]||(t[b]={}))[e])&&u[0]===T)f=u[1];else while(p=++d&&p&&p[g]||(f=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===y:1===p.nodeType)&&++f&&(v&&((p[b]||(p[b]={}))[e]=[T,f]),p===t))break;return f-=i,f===r||0===f%r&&f/r>=0}}},PSEUDO:function(e,t){var n,r=o.pseudos[e]||o.setFilters[e.toLowerCase()]||at.error("unsupported pseudo: "+e);return r[b]?r(t):r.length>1?(n=[e,e,"",t],o.setFilters.hasOwnProperty(e.toLowerCase())?lt(function(e,n){var i,o=r(e,t),a=o.length;while(a--)i=F.call(e,o[a]),e[i]=!(n[i]=o[a])}):function(e){return r(e,0,n)}):r}},pseudos:{not:lt(function(e){var t=[],n=[],r=l(e.replace(z,"$1"));return r[b]?lt(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),!n.pop()}}),has:lt(function(e){return function(t){return at(e,t).length>0}}),contains:lt(function(e){return function(t){return(t.textContent||t.innerText||a(t)).indexOf(e)>-1}}),lang:lt(function(e){return G.test(e||"")||at.error("unsupported lang: "+e),e=e.replace(rt,it).toLowerCase(),function(t){var n;do if(n=h?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return n=n.toLowerCase(),n===e||0===n.indexOf(e+"-");while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===d},focus:function(e){return e===f.activeElement&&(!f.hasFocus||f.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:function(e){return e.disabled===!1},disabled:function(e){return e.disabled===!0},checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,e.selected===!0},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeName>"@"||3===e.nodeType||4===e.nodeType)return!1;return!0},parent:function(e){return!o.pseudos.empty(e)},header:function(e){return tt.test(e.nodeName)},input:function(e){return et.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||t.toLowerCase()===e.type)},first:ht(function(){return[0]}),last:ht(function(e,t){return[t-1]}),eq:ht(function(e,t,n){return[0>n?n+t:n]}),even:ht(function(e,t){var n=0;for(;t>n;n+=2)e.push(n);return e}),odd:ht(function(e,t){var n=1;for(;t>n;n+=2)e.push(n);return e}),lt:ht(function(e,t,n){var r=0>n?n+t:n;for(;--r>=0;)e.push(r);return e}),gt:ht(function(e,t,n){var r=0>n?n+t:n;for(;t>++r;)e.push(r);return e})}},o.pseudos.nth=o.pseudos.eq;for(n in{radio:!0,checkbox:!0,file:!0,password:!0,image:!0})o.pseudos[n]=ft(n);for(n in{submit:!0,reset:!0})o.pseudos[n]=dt(n);function gt(){}gt.prototype=o.filters=o.pseudos,o.setFilters=new gt;function mt(e,t){var n,r,i,a,s,l,u,c=k[e+" "];if(c)return t?0:c.slice(0);s=e,l=[],u=o.preFilter;while(s){(!n||(r=X.exec(s)))&&(r&&(s=s.slice(r[0].length)||s),l.push(i=[])),n=!1,(r=U.exec(s))&&(n=r.shift(),i.push({value:n,type:r[0].replace(z," ")}),s=s.slice(n.length));for(a in o.filter)!(r=Q[a].exec(s))||u[a]&&!(r=u[a](r))||(n=r.shift(),i.push({value:n,type:a,matches:r}),s=s.slice(n.length));if(!n)break}return t?s.length:s?at.error(e):k(e,l).slice(0)}function yt(e){var t=0,n=e.length,r="";for(;n>t;t++)r+=e[t].value;return r}function vt(e,t,n){var r=t.dir,o=n&&"parentNode"===r,a=C++;return t.first?function(t,n,i){while(t=t[r])if(1===t.nodeType||o)return e(t,n,i)}:function(t,n,s){var l,u,c,p=T+" "+a;if(s){while(t=t[r])if((1===t.nodeType||o)&&e(t,n,s))return!0}else while(t=t[r])if(1===t.nodeType||o)if(c=t[b]||(t[b]={}),(u=c[r])&&u[0]===p){if((l=u[1])===!0||l===i)return l===!0}else if(u=c[r]=[p],u[1]=e(t,n,s)||i,u[1]===!0)return!0}}function bt(e){return e.length>1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function xt(e,t,n,r,i){var o,a=[],s=0,l=e.length,u=null!=t;for(;l>s;s++)(o=e[s])&&(!n||n(o,r,i))&&(a.push(o),u&&t.push(s));return a}function wt(e,t,n,r,i,o){return r&&!r[b]&&(r=wt(r)),i&&!i[b]&&(i=wt(i,o)),lt(function(o,a,s,l){var u,c,p,f=[],d=[],h=a.length,g=o||Nt(t||"*",s.nodeType?[s]:s,[]),m=!e||!o&&t?g:xt(g,f,e,s,l),y=n?i||(o?e:h||r)?[]:a:m;if(n&&n(m,y,s,l),r){u=xt(y,d),r(u,[],s,l),c=u.length;while(c--)(p=u[c])&&(y[d[c]]=!(m[d[c]]=p))}if(o){if(i||e){if(i){u=[],c=y.length;while(c--)(p=y[c])&&u.push(m[c]=p);i(null,y=[],u,l)}c=y.length;while(c--)(p=y[c])&&(u=i?F.call(o,p):f[c])>-1&&(o[u]=!(a[u]=p))}}else y=xt(y===a?y.splice(h,y.length):y),i?i(null,a,y,l):M.apply(a,y)})}function Tt(e){var t,n,r,i=e.length,a=o.relative[e[0].type],s=a||o.relative[" "],l=a?1:0,c=vt(function(e){return e===t},s,!0),p=vt(function(e){return F.call(t,e)>-1},s,!0),f=[function(e,n,r){return!a&&(r||n!==u)||((t=n).nodeType?c(e,n,r):p(e,n,r))}];for(;i>l;l++)if(n=o.relative[e[l].type])f=[vt(bt(f),n)];else{if(n=o.filter[e[l].type].apply(null,e[l].matches),n[b]){for(r=++l;i>r;r++)if(o.relative[e[r].type])break;return wt(l>1&&bt(f),l>1&&yt(e.slice(0,l-1).concat({value:" "===e[l-2].type?"*":""})).replace(z,"$1"),n,r>l&&Tt(e.slice(l,r)),i>r&&Tt(e=e.slice(r)),i>r&&yt(e))}f.push(n)}return bt(f)}function Ct(e,t){var n=0,r=t.length>0,a=e.length>0,s=function(s,l,c,p,d){var h,g,m,y=[],v=0,b="0",x=s&&[],w=null!=d,C=u,N=s||a&&o.find.TAG("*",d&&l.parentNode||l),k=T+=null==C?1:Math.random()||.1;for(w&&(u=l!==f&&l,i=n);null!=(h=N[b]);b++){if(a&&h){g=0;while(m=e[g++])if(m(h,l,c)){p.push(h);break}w&&(T=k,i=++n)}r&&((h=!m&&h)&&v--,s&&x.push(h))}if(v+=b,r&&b!==v){g=0;while(m=t[g++])m(x,y,l,c);if(s){if(v>0)while(b--)x[b]||y[b]||(y[b]=q.call(p));y=xt(y)}M.apply(p,y),w&&!s&&y.length>0&&v+t.length>1&&at.uniqueSort(p)}return w&&(T=k,u=C),x};return r?lt(s):s}l=at.compile=function(e,t){var n,r=[],i=[],o=E[e+" "];if(!o){t||(t=mt(e)),n=t.length;while(n--)o=Tt(t[n]),o[b]?r.push(o):i.push(o);o=E(e,Ct(i,r))}return o};function Nt(e,t,n){var r=0,i=t.length;for(;i>r;r++)at(e,t[r],n);return n}function kt(e,t,n,i){var a,s,u,c,p,f=mt(e);if(!i&&1===f.length){if(s=f[0]=f[0].slice(0),s.length>2&&"ID"===(u=s[0]).type&&r.getById&&9===t.nodeType&&h&&o.relative[s[1].type]){if(t=(o.find.ID(u.matches[0].replace(rt,it),t)||[])[0],!t)return n;e=e.slice(s.shift().value.length)}a=Q.needsContext.test(e)?0:s.length;while(a--){if(u=s[a],o.relative[c=u.type])break;if((p=o.find[c])&&(i=p(u.matches[0].replace(rt,it),V.test(s[0].type)&&t.parentNode||t))){if(s.splice(a,1),e=i.length&&yt(s),!e)return M.apply(n,i),n;break}}}return l(e,f)(i,t,!h,n,V.test(e)),n}r.sortStable=b.split("").sort(A).join("")===b,r.detectDuplicates=S,p(),r.sortDetached=ut(function(e){return 1&e.compareDocumentPosition(f.createElement("div"))}),ut(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||ct("type|href|height|width",function(e,n,r){return r?t:e.getAttribute(n,"type"===n.toLowerCase()?1:2)}),r.attributes&&ut(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||ct("value",function(e,n,r){return r||"input"!==e.nodeName.toLowerCase()?t:e.defaultValue}),ut(function(e){return null==e.getAttribute("disabled")})||ct(B,function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&i.specified?i.value:e[n]===!0?n.toLowerCase():null}),x.find=at,x.expr=at.selectors,x.expr[":"]=x.expr.pseudos,x.unique=at.uniqueSort,x.text=at.getText,x.isXMLDoc=at.isXML,x.contains=at.contains}(e);var O={};function F(e){var t=O[e]={};return x.each(e.match(T)||[],function(e,n){t[n]=!0}),t}x.Callbacks=function(e){e="string"==typeof e?O[e]||F(e):x.extend({},e);var n,r,i,o,a,s,l=[],u=!e.once&&[],c=function(t){for(r=e.memory&&t,i=!0,a=s||0,s=0,o=l.length,n=!0;l&&o>a;a++)if(l[a].apply(t[0],t[1])===!1&&e.stopOnFalse){r=!1;break}n=!1,l&&(u?u.length&&c(u.shift()):r?l=[]:p.disable())},p={add:function(){if(l){var t=l.length;(function i(t){x.each(t,function(t,n){var r=x.type(n);"function"===r?e.unique&&p.has(n)||l.push(n):n&&n.length&&"string"!==r&&i(n)})})(arguments),n?o=l.length:r&&(s=t,c(r))}return this},remove:function(){return l&&x.each(arguments,function(e,t){var r;while((r=x.inArray(t,l,r))>-1)l.splice(r,1),n&&(o>=r&&o--,a>=r&&a--)}),this},has:function(e){return e?x.inArray(e,l)>-1:!(!l||!l.length)},empty:function(){return l=[],o=0,this},disable:function(){return l=u=r=t,this},disabled:function(){return!l},lock:function(){return u=t,r||p.disable(),this},locked:function(){return!u},fireWith:function(e,t){return!l||i&&!u||(t=t||[],t=[e,t.slice?t.slice():t],n?u.push(t):c(t)),this},fire:function(){return p.fireWith(this,arguments),this},fired:function(){return!!i}};return p},x.extend({Deferred:function(e){var t=[["resolve","done",x.Callbacks("once memory"),"resolved"],["reject","fail",x.Callbacks("once memory"),"rejected"],["notify","progress",x.Callbacks("memory")]],n="pending",r={state:function(){return n},always:function(){return i.done(arguments).fail(arguments),this},then:function(){var e=arguments;return x.Deferred(function(n){x.each(t,function(t,o){var a=o[0],s=x.isFunction(e[t])&&e[t];i[o[1]](function(){var e=s&&s.apply(this,arguments);e&&x.isFunction(e.promise)?e.promise().done(n.resolve).fail(n.reject).progress(n.notify):n[a+"With"](this===r?n.promise():this,s?[e]:arguments)})}),e=null}).promise()},promise:function(e){return null!=e?x.extend(e,r):r}},i={};return r.pipe=r.then,x.each(t,function(e,o){var a=o[2],s=o[3];r[o[1]]=a.add,s&&a.add(function(){n=s},t[1^e][2].disable,t[2][2].lock),i[o[0]]=function(){return i[o[0]+"With"](this===i?r:this,arguments),this},i[o[0]+"With"]=a.fireWith}),r.promise(i),e&&e.call(i,i),i},when:function(e){var t=0,n=g.call(arguments),r=n.length,i=1!==r||e&&x.isFunction(e.promise)?r:0,o=1===i?e:x.Deferred(),a=function(e,t,n){return function(r){t[e]=this,n[e]=arguments.length>1?g.call(arguments):r,n===s?o.notifyWith(t,n):--i||o.resolveWith(t,n)}},s,l,u;if(r>1)for(s=Array(r),l=Array(r),u=Array(r);r>t;t++)n[t]&&x.isFunction(n[t].promise)?n[t].promise().done(a(t,u,n)).fail(o.reject).progress(a(t,l,s)):--i;return i||o.resolveWith(u,n),o.promise()}}),x.support=function(t){var n,r,o,s,l,u,c,p,f,d=a.createElement("div");if(d.setAttribute("className","t"),d.innerHTML="
a",n=d.getElementsByTagName("*")||[],r=d.getElementsByTagName("a")[0],!r||!r.style||!n.length)return t;s=a.createElement("select"),u=s.appendChild(a.createElement("option")),o=d.getElementsByTagName("input")[0],r.style.cssText="top:1px;float:left;opacity:.5",t.getSetAttribute="t"!==d.className,t.leadingWhitespace=3===d.firstChild.nodeType,t.tbody=!d.getElementsByTagName("tbody").length,t.htmlSerialize=!!d.getElementsByTagName("link").length,t.style=/top/.test(r.getAttribute("style")),t.hrefNormalized="/a"===r.getAttribute("href"),t.opacity=/^0.5/.test(r.style.opacity),t.cssFloat=!!r.style.cssFloat,t.checkOn=!!o.value,t.optSelected=u.selected,t.enctype=!!a.createElement("form").enctype,t.html5Clone="<:nav>"!==a.createElement("nav").cloneNode(!0).outerHTML,t.inlineBlockNeedsLayout=!1,t.shrinkWrapBlocks=!1,t.pixelPosition=!1,t.deleteExpando=!0,t.noCloneEvent=!0,t.reliableMarginRight=!0,t.boxSizingReliable=!0,o.checked=!0,t.noCloneChecked=o.cloneNode(!0).checked,s.disabled=!0,t.optDisabled=!u.disabled;try{delete d.test}catch(h){t.deleteExpando=!1}o=a.createElement("input"),o.setAttribute("value",""),t.input=""===o.getAttribute("value"),o.value="t",o.setAttribute("type","radio"),t.radioValue="t"===o.value,o.setAttribute("checked","t"),o.setAttribute("name","t"),l=a.createDocumentFragment(),l.appendChild(o),t.appendChecked=o.checked,t.checkClone=l.cloneNode(!0).cloneNode(!0).lastChild.checked,d.attachEvent&&(d.attachEvent("onclick",function(){t.noCloneEvent=!1}),d.cloneNode(!0).click());for(f in{submit:!0,change:!0,focusin:!0})d.setAttribute(c="on"+f,"t"),t[f+"Bubbles"]=c in e||d.attributes[c].expando===!1;d.style.backgroundClip="content-box",d.cloneNode(!0).style.backgroundClip="",t.clearCloneStyle="content-box"===d.style.backgroundClip;for(f in x(t))break;return t.ownLast="0"!==f,x(function(){var n,r,o,s="padding:0;margin:0;border:0;display:block;box-sizing:content-box;-moz-box-sizing:content-box;-webkit-box-sizing:content-box;",l=a.getElementsByTagName("body")[0];l&&(n=a.createElement("div"),n.style.cssText="border:0;width:0;height:0;position:absolute;top:0;left:-9999px;margin-top:1px",l.appendChild(n).appendChild(d),d.innerHTML="
t
",o=d.getElementsByTagName("td"),o[0].style.cssText="padding:0;margin:0;border:0;display:none",p=0===o[0].offsetHeight,o[0].style.display="",o[1].style.display="none",t.reliableHiddenOffsets=p&&0===o[0].offsetHeight,d.innerHTML="",d.style.cssText="box-sizing:border-box;-moz-box-sizing:border-box;-webkit-box-sizing:border-box;padding:1px;border:1px;display:block;width:4px;margin-top:1%;position:absolute;top:1%;",x.swap(l,null!=l.style.zoom?{zoom:1}:{},function(){t.boxSizing=4===d.offsetWidth}),e.getComputedStyle&&(t.pixelPosition="1%"!==(e.getComputedStyle(d,null)||{}).top,t.boxSizingReliable="4px"===(e.getComputedStyle(d,null)||{width:"4px"}).width,r=d.appendChild(a.createElement("div")),r.style.cssText=d.style.cssText=s,r.style.marginRight=r.style.width="0",d.style.width="1px",t.reliableMarginRight=!parseFloat((e.getComputedStyle(r,null)||{}).marginRight)),typeof d.style.zoom!==i&&(d.innerHTML="",d.style.cssText=s+"width:1px;padding:1px;display:inline;zoom:1",t.inlineBlockNeedsLayout=3===d.offsetWidth,d.style.display="block",d.innerHTML="
",d.firstChild.style.width="5px",t.shrinkWrapBlocks=3!==d.offsetWidth,t.inlineBlockNeedsLayout&&(l.style.zoom=1)),l.removeChild(n),n=d=o=r=null)}),n=s=l=u=r=o=null,t -}({});var B=/(?:\{[\s\S]*\}|\[[\s\S]*\])$/,P=/([A-Z])/g;function R(e,n,r,i){if(x.acceptData(e)){var o,a,s=x.expando,l=e.nodeType,u=l?x.cache:e,c=l?e[s]:e[s]&&s;if(c&&u[c]&&(i||u[c].data)||r!==t||"string"!=typeof n)return c||(c=l?e[s]=p.pop()||x.guid++:s),u[c]||(u[c]=l?{}:{toJSON:x.noop}),("object"==typeof n||"function"==typeof n)&&(i?u[c]=x.extend(u[c],n):u[c].data=x.extend(u[c].data,n)),a=u[c],i||(a.data||(a.data={}),a=a.data),r!==t&&(a[x.camelCase(n)]=r),"string"==typeof n?(o=a[n],null==o&&(o=a[x.camelCase(n)])):o=a,o}}function W(e,t,n){if(x.acceptData(e)){var r,i,o=e.nodeType,a=o?x.cache:e,s=o?e[x.expando]:x.expando;if(a[s]){if(t&&(r=n?a[s]:a[s].data)){x.isArray(t)?t=t.concat(x.map(t,x.camelCase)):t in r?t=[t]:(t=x.camelCase(t),t=t in r?[t]:t.split(" ")),i=t.length;while(i--)delete r[t[i]];if(n?!I(r):!x.isEmptyObject(r))return}(n||(delete a[s].data,I(a[s])))&&(o?x.cleanData([e],!0):x.support.deleteExpando||a!=a.window?delete a[s]:a[s]=null)}}}x.extend({cache:{},noData:{applet:!0,embed:!0,object:"clsid:D27CDB6E-AE6D-11cf-96B8-444553540000"},hasData:function(e){return e=e.nodeType?x.cache[e[x.expando]]:e[x.expando],!!e&&!I(e)},data:function(e,t,n){return R(e,t,n)},removeData:function(e,t){return W(e,t)},_data:function(e,t,n){return R(e,t,n,!0)},_removeData:function(e,t){return W(e,t,!0)},acceptData:function(e){if(e.nodeType&&1!==e.nodeType&&9!==e.nodeType)return!1;var t=e.nodeName&&x.noData[e.nodeName.toLowerCase()];return!t||t!==!0&&e.getAttribute("classid")===t}}),x.fn.extend({data:function(e,n){var r,i,o=null,a=0,s=this[0];if(e===t){if(this.length&&(o=x.data(s),1===s.nodeType&&!x._data(s,"parsedAttrs"))){for(r=s.attributes;r.length>a;a++)i=r[a].name,0===i.indexOf("data-")&&(i=x.camelCase(i.slice(5)),$(s,i,o[i]));x._data(s,"parsedAttrs",!0)}return o}return"object"==typeof e?this.each(function(){x.data(this,e)}):arguments.length>1?this.each(function(){x.data(this,e,n)}):s?$(s,e,x.data(s,e)):null},removeData:function(e){return this.each(function(){x.removeData(this,e)})}});function $(e,n,r){if(r===t&&1===e.nodeType){var i="data-"+n.replace(P,"-$1").toLowerCase();if(r=e.getAttribute(i),"string"==typeof r){try{r="true"===r?!0:"false"===r?!1:"null"===r?null:+r+""===r?+r:B.test(r)?x.parseJSON(r):r}catch(o){}x.data(e,n,r)}else r=t}return r}function I(e){var t;for(t in e)if(("data"!==t||!x.isEmptyObject(e[t]))&&"toJSON"!==t)return!1;return!0}x.extend({queue:function(e,n,r){var i;return e?(n=(n||"fx")+"queue",i=x._data(e,n),r&&(!i||x.isArray(r)?i=x._data(e,n,x.makeArray(r)):i.push(r)),i||[]):t},dequeue:function(e,t){t=t||"fx";var n=x.queue(e,t),r=n.length,i=n.shift(),o=x._queueHooks(e,t),a=function(){x.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return x._data(e,n)||x._data(e,n,{empty:x.Callbacks("once memory").add(function(){x._removeData(e,t+"queue"),x._removeData(e,n)})})}}),x.fn.extend({queue:function(e,n){var r=2;return"string"!=typeof e&&(n=e,e="fx",r--),r>arguments.length?x.queue(this[0],e):n===t?this:this.each(function(){var t=x.queue(this,e,n);x._queueHooks(this,e),"fx"===e&&"inprogress"!==t[0]&&x.dequeue(this,e)})},dequeue:function(e){return this.each(function(){x.dequeue(this,e)})},delay:function(e,t){return e=x.fx?x.fx.speeds[e]||e:e,t=t||"fx",this.queue(t,function(t,n){var r=setTimeout(t,e);n.stop=function(){clearTimeout(r)}})},clearQueue:function(e){return this.queue(e||"fx",[])},promise:function(e,n){var r,i=1,o=x.Deferred(),a=this,s=this.length,l=function(){--i||o.resolveWith(a,[a])};"string"!=typeof e&&(n=e,e=t),e=e||"fx";while(s--)r=x._data(a[s],e+"queueHooks"),r&&r.empty&&(i++,r.empty.add(l));return l(),o.promise(n)}});var z,X,U=/[\t\r\n\f]/g,V=/\r/g,Y=/^(?:input|select|textarea|button|object)$/i,J=/^(?:a|area)$/i,G=/^(?:checked|selected)$/i,Q=x.support.getSetAttribute,K=x.support.input;x.fn.extend({attr:function(e,t){return x.access(this,x.attr,e,t,arguments.length>1)},removeAttr:function(e){return this.each(function(){x.removeAttr(this,e)})},prop:function(e,t){return x.access(this,x.prop,e,t,arguments.length>1)},removeProp:function(e){return e=x.propFix[e]||e,this.each(function(){try{this[e]=t,delete this[e]}catch(n){}})},addClass:function(e){var t,n,r,i,o,a=0,s=this.length,l="string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).addClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):" ")){o=0;while(i=t[o++])0>r.indexOf(" "+i+" ")&&(r+=i+" ");n.className=x.trim(r)}return this},removeClass:function(e){var t,n,r,i,o,a=0,s=this.length,l=0===arguments.length||"string"==typeof e&&e;if(x.isFunction(e))return this.each(function(t){x(this).removeClass(e.call(this,t,this.className))});if(l)for(t=(e||"").match(T)||[];s>a;a++)if(n=this[a],r=1===n.nodeType&&(n.className?(" "+n.className+" ").replace(U," "):"")){o=0;while(i=t[o++])while(r.indexOf(" "+i+" ")>=0)r=r.replace(" "+i+" "," ");n.className=e?x.trim(r):""}return this},toggleClass:function(e,t){var n=typeof e;return"boolean"==typeof t&&"string"===n?t?this.addClass(e):this.removeClass(e):x.isFunction(e)?this.each(function(n){x(this).toggleClass(e.call(this,n,this.className,t),t)}):this.each(function(){if("string"===n){var t,r=0,o=x(this),a=e.match(T)||[];while(t=a[r++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else(n===i||"boolean"===n)&&(this.className&&x._data(this,"__className__",this.className),this.className=this.className||e===!1?"":x._data(this,"__className__")||"")})},hasClass:function(e){var t=" "+e+" ",n=0,r=this.length;for(;r>n;n++)if(1===this[n].nodeType&&(" "+this[n].className+" ").replace(U," ").indexOf(t)>=0)return!0;return!1},val:function(e){var n,r,i,o=this[0];{if(arguments.length)return i=x.isFunction(e),this.each(function(n){var o;1===this.nodeType&&(o=i?e.call(this,n,x(this).val()):e,null==o?o="":"number"==typeof o?o+="":x.isArray(o)&&(o=x.map(o,function(e){return null==e?"":e+""})),r=x.valHooks[this.type]||x.valHooks[this.nodeName.toLowerCase()],r&&"set"in r&&r.set(this,o,"value")!==t||(this.value=o))});if(o)return r=x.valHooks[o.type]||x.valHooks[o.nodeName.toLowerCase()],r&&"get"in r&&(n=r.get(o,"value"))!==t?n:(n=o.value,"string"==typeof n?n.replace(V,""):null==n?"":n)}}}),x.extend({valHooks:{option:{get:function(e){var t=x.find.attr(e,"value");return null!=t?t:e.text}},select:{get:function(e){var t,n,r=e.options,i=e.selectedIndex,o="select-one"===e.type||0>i,a=o?null:[],s=o?i+1:r.length,l=0>i?s:o?i:0;for(;s>l;l++)if(n=r[l],!(!n.selected&&l!==i||(x.support.optDisabled?n.disabled:null!==n.getAttribute("disabled"))||n.parentNode.disabled&&x.nodeName(n.parentNode,"optgroup"))){if(t=x(n).val(),o)return t;a.push(t)}return a},set:function(e,t){var n,r,i=e.options,o=x.makeArray(t),a=i.length;while(a--)r=i[a],(r.selected=x.inArray(x(r).val(),o)>=0)&&(n=!0);return n||(e.selectedIndex=-1),o}}},attr:function(e,n,r){var o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return typeof e.getAttribute===i?x.prop(e,n,r):(1===s&&x.isXMLDoc(e)||(n=n.toLowerCase(),o=x.attrHooks[n]||(x.expr.match.bool.test(n)?X:z)),r===t?o&&"get"in o&&null!==(a=o.get(e,n))?a:(a=x.find.attr(e,n),null==a?t:a):null!==r?o&&"set"in o&&(a=o.set(e,r,n))!==t?a:(e.setAttribute(n,r+""),r):(x.removeAttr(e,n),t))},removeAttr:function(e,t){var n,r,i=0,o=t&&t.match(T);if(o&&1===e.nodeType)while(n=o[i++])r=x.propFix[n]||n,x.expr.match.bool.test(n)?K&&Q||!G.test(n)?e[r]=!1:e[x.camelCase("default-"+n)]=e[r]=!1:x.attr(e,n,""),e.removeAttribute(Q?n:r)},attrHooks:{type:{set:function(e,t){if(!x.support.radioValue&&"radio"===t&&x.nodeName(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},propFix:{"for":"htmlFor","class":"className"},prop:function(e,n,r){var i,o,a,s=e.nodeType;if(e&&3!==s&&8!==s&&2!==s)return a=1!==s||!x.isXMLDoc(e),a&&(n=x.propFix[n]||n,o=x.propHooks[n]),r!==t?o&&"set"in o&&(i=o.set(e,r,n))!==t?i:e[n]=r:o&&"get"in o&&null!==(i=o.get(e,n))?i:e[n]},propHooks:{tabIndex:{get:function(e){var t=x.find.attr(e,"tabindex");return t?parseInt(t,10):Y.test(e.nodeName)||J.test(e.nodeName)&&e.href?0:-1}}}}),X={set:function(e,t,n){return t===!1?x.removeAttr(e,n):K&&Q||!G.test(n)?e.setAttribute(!Q&&x.propFix[n]||n,n):e[x.camelCase("default-"+n)]=e[n]=!0,n}},x.each(x.expr.match.bool.source.match(/\w+/g),function(e,n){var r=x.expr.attrHandle[n]||x.find.attr;x.expr.attrHandle[n]=K&&Q||!G.test(n)?function(e,n,i){var o=x.expr.attrHandle[n],a=i?t:(x.expr.attrHandle[n]=t)!=r(e,n,i)?n.toLowerCase():null;return x.expr.attrHandle[n]=o,a}:function(e,n,r){return r?t:e[x.camelCase("default-"+n)]?n.toLowerCase():null}}),K&&Q||(x.attrHooks.value={set:function(e,n,r){return x.nodeName(e,"input")?(e.defaultValue=n,t):z&&z.set(e,n,r)}}),Q||(z={set:function(e,n,r){var i=e.getAttributeNode(r);return i||e.setAttributeNode(i=e.ownerDocument.createAttribute(r)),i.value=n+="","value"===r||n===e.getAttribute(r)?n:t}},x.expr.attrHandle.id=x.expr.attrHandle.name=x.expr.attrHandle.coords=function(e,n,r){var i;return r?t:(i=e.getAttributeNode(n))&&""!==i.value?i.value:null},x.valHooks.button={get:function(e,n){var r=e.getAttributeNode(n);return r&&r.specified?r.value:t},set:z.set},x.attrHooks.contenteditable={set:function(e,t,n){z.set(e,""===t?!1:t,n)}},x.each(["width","height"],function(e,n){x.attrHooks[n]={set:function(e,r){return""===r?(e.setAttribute(n,"auto"),r):t}}})),x.support.hrefNormalized||x.each(["href","src"],function(e,t){x.propHooks[t]={get:function(e){return e.getAttribute(t,4)}}}),x.support.style||(x.attrHooks.style={get:function(e){return e.style.cssText||t},set:function(e,t){return e.style.cssText=t+""}}),x.support.optSelected||(x.propHooks.selected={get:function(e){var t=e.parentNode;return t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex),null}}),x.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){x.propFix[this.toLowerCase()]=this}),x.support.enctype||(x.propFix.enctype="encoding"),x.each(["radio","checkbox"],function(){x.valHooks[this]={set:function(e,n){return x.isArray(n)?e.checked=x.inArray(x(e).val(),n)>=0:t}},x.support.checkOn||(x.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})});var Z=/^(?:input|select|textarea)$/i,et=/^key/,tt=/^(?:mouse|contextmenu)|click/,nt=/^(?:focusinfocus|focusoutblur)$/,rt=/^([^.]*)(?:\.(.+)|)$/;function it(){return!0}function ot(){return!1}function at(){try{return a.activeElement}catch(e){}}x.event={global:{},add:function(e,n,r,o,a){var s,l,u,c,p,f,d,h,g,m,y,v=x._data(e);if(v){r.handler&&(c=r,r=c.handler,a=c.selector),r.guid||(r.guid=x.guid++),(l=v.events)||(l=v.events={}),(f=v.handle)||(f=v.handle=function(e){return typeof x===i||e&&x.event.triggered===e.type?t:x.event.dispatch.apply(f.elem,arguments)},f.elem=e),n=(n||"").match(T)||[""],u=n.length;while(u--)s=rt.exec(n[u])||[],g=y=s[1],m=(s[2]||"").split(".").sort(),g&&(p=x.event.special[g]||{},g=(a?p.delegateType:p.bindType)||g,p=x.event.special[g]||{},d=x.extend({type:g,origType:y,data:o,handler:r,guid:r.guid,selector:a,needsContext:a&&x.expr.match.needsContext.test(a),namespace:m.join(".")},c),(h=l[g])||(h=l[g]=[],h.delegateCount=0,p.setup&&p.setup.call(e,o,m,f)!==!1||(e.addEventListener?e.addEventListener(g,f,!1):e.attachEvent&&e.attachEvent("on"+g,f))),p.add&&(p.add.call(e,d),d.handler.guid||(d.handler.guid=r.guid)),a?h.splice(h.delegateCount++,0,d):h.push(d),x.event.global[g]=!0);e=null}},remove:function(e,t,n,r,i){var o,a,s,l,u,c,p,f,d,h,g,m=x.hasData(e)&&x._data(e);if(m&&(c=m.events)){t=(t||"").match(T)||[""],u=t.length;while(u--)if(s=rt.exec(t[u])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){p=x.event.special[d]||{},d=(r?p.delegateType:p.bindType)||d,f=c[d]||[],s=s[2]&&RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),l=o=f.length;while(o--)a=f[o],!i&&g!==a.origType||n&&n.guid!==a.guid||s&&!s.test(a.namespace)||r&&r!==a.selector&&("**"!==r||!a.selector)||(f.splice(o,1),a.selector&&f.delegateCount--,p.remove&&p.remove.call(e,a));l&&!f.length&&(p.teardown&&p.teardown.call(e,h,m.handle)!==!1||x.removeEvent(e,d,m.handle),delete c[d])}else for(d in c)x.event.remove(e,d+t[u],n,r,!0);x.isEmptyObject(c)&&(delete m.handle,x._removeData(e,"events"))}},trigger:function(n,r,i,o){var s,l,u,c,p,f,d,h=[i||a],g=v.call(n,"type")?n.type:n,m=v.call(n,"namespace")?n.namespace.split("."):[];if(u=f=i=i||a,3!==i.nodeType&&8!==i.nodeType&&!nt.test(g+x.event.triggered)&&(g.indexOf(".")>=0&&(m=g.split("."),g=m.shift(),m.sort()),l=0>g.indexOf(":")&&"on"+g,n=n[x.expando]?n:new x.Event(g,"object"==typeof n&&n),n.isTrigger=o?2:3,n.namespace=m.join("."),n.namespace_re=n.namespace?RegExp("(^|\\.)"+m.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,n.result=t,n.target||(n.target=i),r=null==r?[n]:x.makeArray(r,[n]),p=x.event.special[g]||{},o||!p.trigger||p.trigger.apply(i,r)!==!1)){if(!o&&!p.noBubble&&!x.isWindow(i)){for(c=p.delegateType||g,nt.test(c+g)||(u=u.parentNode);u;u=u.parentNode)h.push(u),f=u;f===(i.ownerDocument||a)&&h.push(f.defaultView||f.parentWindow||e)}d=0;while((u=h[d++])&&!n.isPropagationStopped())n.type=d>1?c:p.bindType||g,s=(x._data(u,"events")||{})[n.type]&&x._data(u,"handle"),s&&s.apply(u,r),s=l&&u[l],s&&x.acceptData(u)&&s.apply&&s.apply(u,r)===!1&&n.preventDefault();if(n.type=g,!o&&!n.isDefaultPrevented()&&(!p._default||p._default.apply(h.pop(),r)===!1)&&x.acceptData(i)&&l&&i[g]&&!x.isWindow(i)){f=i[l],f&&(i[l]=null),x.event.triggered=g;try{i[g]()}catch(y){}x.event.triggered=t,f&&(i[l]=f)}return n.result}},dispatch:function(e){e=x.event.fix(e);var n,r,i,o,a,s=[],l=g.call(arguments),u=(x._data(this,"events")||{})[e.type]||[],c=x.event.special[e.type]||{};if(l[0]=e,e.delegateTarget=this,!c.preDispatch||c.preDispatch.call(this,e)!==!1){s=x.event.handlers.call(this,e,u),n=0;while((o=s[n++])&&!e.isPropagationStopped()){e.currentTarget=o.elem,a=0;while((i=o.handlers[a++])&&!e.isImmediatePropagationStopped())(!e.namespace_re||e.namespace_re.test(i.namespace))&&(e.handleObj=i,e.data=i.data,r=((x.event.special[i.origType]||{}).handle||i.handler).apply(o.elem,l),r!==t&&(e.result=r)===!1&&(e.preventDefault(),e.stopPropagation()))}return c.postDispatch&&c.postDispatch.call(this,e),e.result}},handlers:function(e,n){var r,i,o,a,s=[],l=n.delegateCount,u=e.target;if(l&&u.nodeType&&(!e.button||"click"!==e.type))for(;u!=this;u=u.parentNode||this)if(1===u.nodeType&&(u.disabled!==!0||"click"!==e.type)){for(o=[],a=0;l>a;a++)i=n[a],r=i.selector+" ",o[r]===t&&(o[r]=i.needsContext?x(r,this).index(u)>=0:x.find(r,this,null,[u]).length),o[r]&&o.push(i);o.length&&s.push({elem:u,handlers:o})}return n.length>l&&s.push({elem:this,handlers:n.slice(l)}),s},fix:function(e){if(e[x.expando])return e;var t,n,r,i=e.type,o=e,s=this.fixHooks[i];s||(this.fixHooks[i]=s=tt.test(i)?this.mouseHooks:et.test(i)?this.keyHooks:{}),r=s.props?this.props.concat(s.props):this.props,e=new x.Event(o),t=r.length;while(t--)n=r[t],e[n]=o[n];return e.target||(e.target=o.srcElement||a),3===e.target.nodeType&&(e.target=e.target.parentNode),e.metaKey=!!e.metaKey,s.filter?s.filter(e,o):e},props:"altKey bubbles cancelable ctrlKey currentTarget eventPhase metaKey relatedTarget shiftKey target timeStamp view which".split(" "),fixHooks:{},keyHooks:{props:"char charCode key keyCode".split(" "),filter:function(e,t){return null==e.which&&(e.which=null!=t.charCode?t.charCode:t.keyCode),e}},mouseHooks:{props:"button buttons clientX clientY fromElement offsetX offsetY pageX pageY screenX screenY toElement".split(" "),filter:function(e,n){var r,i,o,s=n.button,l=n.fromElement;return null==e.pageX&&null!=n.clientX&&(i=e.target.ownerDocument||a,o=i.documentElement,r=i.body,e.pageX=n.clientX+(o&&o.scrollLeft||r&&r.scrollLeft||0)-(o&&o.clientLeft||r&&r.clientLeft||0),e.pageY=n.clientY+(o&&o.scrollTop||r&&r.scrollTop||0)-(o&&o.clientTop||r&&r.clientTop||0)),!e.relatedTarget&&l&&(e.relatedTarget=l===e.target?n.toElement:l),e.which||s===t||(e.which=1&s?1:2&s?3:4&s?2:0),e}},special:{load:{noBubble:!0},focus:{trigger:function(){if(this!==at()&&this.focus)try{return this.focus(),!1}catch(e){}},delegateType:"focusin"},blur:{trigger:function(){return this===at()&&this.blur?(this.blur(),!1):t},delegateType:"focusout"},click:{trigger:function(){return x.nodeName(this,"input")&&"checkbox"===this.type&&this.click?(this.click(),!1):t},_default:function(e){return x.nodeName(e.target,"a")}},beforeunload:{postDispatch:function(e){e.result!==t&&(e.originalEvent.returnValue=e.result)}}},simulate:function(e,t,n,r){var i=x.extend(new x.Event,n,{type:e,isSimulated:!0,originalEvent:{}});r?x.event.trigger(i,null,t):x.event.dispatch.call(t,i),i.isDefaultPrevented()&&n.preventDefault()}},x.removeEvent=a.removeEventListener?function(e,t,n){e.removeEventListener&&e.removeEventListener(t,n,!1)}:function(e,t,n){var r="on"+t;e.detachEvent&&(typeof e[r]===i&&(e[r]=null),e.detachEvent(r,n))},x.Event=function(e,n){return this instanceof x.Event?(e&&e.type?(this.originalEvent=e,this.type=e.type,this.isDefaultPrevented=e.defaultPrevented||e.returnValue===!1||e.getPreventDefault&&e.getPreventDefault()?it:ot):this.type=e,n&&x.extend(this,n),this.timeStamp=e&&e.timeStamp||x.now(),this[x.expando]=!0,t):new x.Event(e,n)},x.Event.prototype={isDefaultPrevented:ot,isPropagationStopped:ot,isImmediatePropagationStopped:ot,preventDefault:function(){var e=this.originalEvent;this.isDefaultPrevented=it,e&&(e.preventDefault?e.preventDefault():e.returnValue=!1)},stopPropagation:function(){var e=this.originalEvent;this.isPropagationStopped=it,e&&(e.stopPropagation&&e.stopPropagation(),e.cancelBubble=!0)},stopImmediatePropagation:function(){this.isImmediatePropagationStopped=it,this.stopPropagation()}},x.each({mouseenter:"mouseover",mouseleave:"mouseout"},function(e,t){x.event.special[e]={delegateType:t,bindType:t,handle:function(e){var n,r=this,i=e.relatedTarget,o=e.handleObj;return(!i||i!==r&&!x.contains(r,i))&&(e.type=o.origType,n=o.handler.apply(this,arguments),e.type=t),n}}}),x.support.submitBubbles||(x.event.special.submit={setup:function(){return x.nodeName(this,"form")?!1:(x.event.add(this,"click._submit keypress._submit",function(e){var n=e.target,r=x.nodeName(n,"input")||x.nodeName(n,"button")?n.form:t;r&&!x._data(r,"submitBubbles")&&(x.event.add(r,"submit._submit",function(e){e._submit_bubble=!0}),x._data(r,"submitBubbles",!0))}),t)},postDispatch:function(e){e._submit_bubble&&(delete e._submit_bubble,this.parentNode&&!e.isTrigger&&x.event.simulate("submit",this.parentNode,e,!0))},teardown:function(){return x.nodeName(this,"form")?!1:(x.event.remove(this,"._submit"),t)}}),x.support.changeBubbles||(x.event.special.change={setup:function(){return Z.test(this.nodeName)?(("checkbox"===this.type||"radio"===this.type)&&(x.event.add(this,"propertychange._change",function(e){"checked"===e.originalEvent.propertyName&&(this._just_changed=!0)}),x.event.add(this,"click._change",function(e){this._just_changed&&!e.isTrigger&&(this._just_changed=!1),x.event.simulate("change",this,e,!0)})),!1):(x.event.add(this,"beforeactivate._change",function(e){var t=e.target;Z.test(t.nodeName)&&!x._data(t,"changeBubbles")&&(x.event.add(t,"change._change",function(e){!this.parentNode||e.isSimulated||e.isTrigger||x.event.simulate("change",this.parentNode,e,!0)}),x._data(t,"changeBubbles",!0))}),t)},handle:function(e){var n=e.target;return this!==n||e.isSimulated||e.isTrigger||"radio"!==n.type&&"checkbox"!==n.type?e.handleObj.handler.apply(this,arguments):t},teardown:function(){return x.event.remove(this,"._change"),!Z.test(this.nodeName)}}),x.support.focusinBubbles||x.each({focus:"focusin",blur:"focusout"},function(e,t){var n=0,r=function(e){x.event.simulate(t,e.target,x.event.fix(e),!0)};x.event.special[t]={setup:function(){0===n++&&a.addEventListener(e,r,!0)},teardown:function(){0===--n&&a.removeEventListener(e,r,!0)}}}),x.fn.extend({on:function(e,n,r,i,o){var a,s;if("object"==typeof e){"string"!=typeof n&&(r=r||n,n=t);for(a in e)this.on(a,n,r,e[a],o);return this}if(null==r&&null==i?(i=n,r=n=t):null==i&&("string"==typeof n?(i=r,r=t):(i=r,r=n,n=t)),i===!1)i=ot;else if(!i)return this;return 1===o&&(s=i,i=function(e){return x().off(e),s.apply(this,arguments)},i.guid=s.guid||(s.guid=x.guid++)),this.each(function(){x.event.add(this,e,i,r,n)})},one:function(e,t,n,r){return this.on(e,t,n,r,1)},off:function(e,n,r){var i,o;if(e&&e.preventDefault&&e.handleObj)return i=e.handleObj,x(e.delegateTarget).off(i.namespace?i.origType+"."+i.namespace:i.origType,i.selector,i.handler),this;if("object"==typeof e){for(o in e)this.off(o,n,e[o]);return this}return(n===!1||"function"==typeof n)&&(r=n,n=t),r===!1&&(r=ot),this.each(function(){x.event.remove(this,e,r,n)})},trigger:function(e,t){return this.each(function(){x.event.trigger(e,t,this)})},triggerHandler:function(e,n){var r=this[0];return r?x.event.trigger(e,n,r,!0):t}});var st=/^.[^:#\[\.,]*$/,lt=/^(?:parents|prev(?:Until|All))/,ut=x.expr.match.needsContext,ct={children:!0,contents:!0,next:!0,prev:!0};x.fn.extend({find:function(e){var t,n=[],r=this,i=r.length;if("string"!=typeof e)return this.pushStack(x(e).filter(function(){for(t=0;i>t;t++)if(x.contains(r[t],this))return!0}));for(t=0;i>t;t++)x.find(e,r[t],n);return n=this.pushStack(i>1?x.unique(n):n),n.selector=this.selector?this.selector+" "+e:e,n},has:function(e){var t,n=x(e,this),r=n.length;return this.filter(function(){for(t=0;r>t;t++)if(x.contains(this,n[t]))return!0})},not:function(e){return this.pushStack(ft(this,e||[],!0))},filter:function(e){return this.pushStack(ft(this,e||[],!1))},is:function(e){return!!ft(this,"string"==typeof e&&ut.test(e)?x(e):e||[],!1).length},closest:function(e,t){var n,r=0,i=this.length,o=[],a=ut.test(e)||"string"!=typeof e?x(e,t||this.context):0;for(;i>r;r++)for(n=this[r];n&&n!==t;n=n.parentNode)if(11>n.nodeType&&(a?a.index(n)>-1:1===n.nodeType&&x.find.matchesSelector(n,e))){n=o.push(n);break}return this.pushStack(o.length>1?x.unique(o):o)},index:function(e){return e?"string"==typeof e?x.inArray(this[0],x(e)):x.inArray(e.jquery?e[0]:e,this):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){var n="string"==typeof e?x(e,t):x.makeArray(e&&e.nodeType?[e]:e),r=x.merge(this.get(),n);return this.pushStack(x.unique(r))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function pt(e,t){do e=e[t];while(e&&1!==e.nodeType);return e}x.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return x.dir(e,"parentNode")},parentsUntil:function(e,t,n){return x.dir(e,"parentNode",n)},next:function(e){return pt(e,"nextSibling")},prev:function(e){return pt(e,"previousSibling")},nextAll:function(e){return x.dir(e,"nextSibling")},prevAll:function(e){return x.dir(e,"previousSibling")},nextUntil:function(e,t,n){return x.dir(e,"nextSibling",n)},prevUntil:function(e,t,n){return x.dir(e,"previousSibling",n)},siblings:function(e){return x.sibling((e.parentNode||{}).firstChild,e)},children:function(e){return x.sibling(e.firstChild)},contents:function(e){return x.nodeName(e,"iframe")?e.contentDocument||e.contentWindow.document:x.merge([],e.childNodes)}},function(e,t){x.fn[e]=function(n,r){var i=x.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=x.filter(r,i)),this.length>1&&(ct[e]||(i=x.unique(i)),lt.test(e)&&(i=i.reverse())),this.pushStack(i)}}),x.extend({filter:function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?x.find.matchesSelector(r,e)?[r]:[]:x.find.matches(e,x.grep(t,function(e){return 1===e.nodeType}))},dir:function(e,n,r){var i=[],o=e[n];while(o&&9!==o.nodeType&&(r===t||1!==o.nodeType||!x(o).is(r)))1===o.nodeType&&i.push(o),o=o[n];return i},sibling:function(e,t){var n=[];for(;e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n}});function ft(e,t,n){if(x.isFunction(t))return x.grep(e,function(e,r){return!!t.call(e,r,e)!==n});if(t.nodeType)return x.grep(e,function(e){return e===t!==n});if("string"==typeof t){if(st.test(t))return x.filter(t,e,n);t=x.filter(t,e)}return x.grep(e,function(e){return x.inArray(e,t)>=0!==n})}function dt(e){var t=ht.split("|"),n=e.createDocumentFragment();if(n.createElement)while(t.length)n.createElement(t.pop());return n}var ht="abbr|article|aside|audio|bdi|canvas|data|datalist|details|figcaption|figure|footer|header|hgroup|mark|meter|nav|output|progress|section|summary|time|video",gt=/ jQuery\d+="(?:null|\d+)"/g,mt=RegExp("<(?:"+ht+")[\\s/>]","i"),yt=/^\s+/,vt=/<(?!area|br|col|embed|hr|img|input|link|meta|param)(([\w:]+)[^>]*)\/>/gi,bt=/<([\w:]+)/,xt=/\s*$/g,At={option:[1,""],legend:[1,"
","
"],area:[1,"",""],param:[1,"",""],thead:[1,"","
"],tr:[2,"","
"],col:[2,"","
"],td:[3,"","
"],_default:x.support.htmlSerialize?[0,"",""]:[1,"X
","
"]},jt=dt(a),Dt=jt.appendChild(a.createElement("div"));At.optgroup=At.option,At.tbody=At.tfoot=At.colgroup=At.caption=At.thead,At.th=At.td,x.fn.extend({text:function(e){return x.access(this,function(e){return e===t?x.text(this):this.empty().append((this[0]&&this[0].ownerDocument||a).createTextNode(e))},null,e,arguments.length)},append:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.appendChild(e)}})},prepend:function(){return this.domManip(arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Lt(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return this.domManip(arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},remove:function(e,t){var n,r=e?x.filter(e,this):this,i=0;for(;null!=(n=r[i]);i++)t||1!==n.nodeType||x.cleanData(Ft(n)),n.parentNode&&(t&&x.contains(n.ownerDocument,n)&&_t(Ft(n,"script")),n.parentNode.removeChild(n));return this},empty:function(){var e,t=0;for(;null!=(e=this[t]);t++){1===e.nodeType&&x.cleanData(Ft(e,!1));while(e.firstChild)e.removeChild(e.firstChild);e.options&&x.nodeName(e,"select")&&(e.options.length=0)}return this},clone:function(e,t){return e=null==e?!1:e,t=null==t?e:t,this.map(function(){return x.clone(this,e,t)})},html:function(e){return x.access(this,function(e){var n=this[0]||{},r=0,i=this.length;if(e===t)return 1===n.nodeType?n.innerHTML.replace(gt,""):t;if(!("string"!=typeof e||Tt.test(e)||!x.support.htmlSerialize&&mt.test(e)||!x.support.leadingWhitespace&&yt.test(e)||At[(bt.exec(e)||["",""])[1].toLowerCase()])){e=e.replace(vt,"<$1>");try{for(;i>r;r++)n=this[r]||{},1===n.nodeType&&(x.cleanData(Ft(n,!1)),n.innerHTML=e);n=0}catch(o){}}n&&this.empty().append(e)},null,e,arguments.length)},replaceWith:function(){var e=x.map(this,function(e){return[e.nextSibling,e.parentNode]}),t=0;return this.domManip(arguments,function(n){var r=e[t++],i=e[t++];i&&(r&&r.parentNode!==i&&(r=this.nextSibling),x(this).remove(),i.insertBefore(n,r))},!0),t?this:this.remove()},detach:function(e){return this.remove(e,!0)},domManip:function(e,t,n){e=d.apply([],e);var r,i,o,a,s,l,u=0,c=this.length,p=this,f=c-1,h=e[0],g=x.isFunction(h);if(g||!(1>=c||"string"!=typeof h||x.support.checkClone)&&Nt.test(h))return this.each(function(r){var i=p.eq(r);g&&(e[0]=h.call(this,r,i.html())),i.domManip(e,t,n)});if(c&&(l=x.buildFragment(e,this[0].ownerDocument,!1,!n&&this),r=l.firstChild,1===l.childNodes.length&&(l=r),r)){for(a=x.map(Ft(l,"script"),Ht),o=a.length;c>u;u++)i=l,u!==f&&(i=x.clone(i,!0,!0),o&&x.merge(a,Ft(i,"script"))),t.call(this[u],i,u);if(o)for(s=a[a.length-1].ownerDocument,x.map(a,qt),u=0;o>u;u++)i=a[u],kt.test(i.type||"")&&!x._data(i,"globalEval")&&x.contains(s,i)&&(i.src?x._evalUrl(i.src):x.globalEval((i.text||i.textContent||i.innerHTML||"").replace(St,"")));l=r=null}return this}});function Lt(e,t){return x.nodeName(e,"table")&&x.nodeName(1===t.nodeType?t:t.firstChild,"tr")?e.getElementsByTagName("tbody")[0]||e.appendChild(e.ownerDocument.createElement("tbody")):e}function Ht(e){return e.type=(null!==x.find.attr(e,"type"))+"/"+e.type,e}function qt(e){var t=Et.exec(e.type);return t?e.type=t[1]:e.removeAttribute("type"),e}function _t(e,t){var n,r=0;for(;null!=(n=e[r]);r++)x._data(n,"globalEval",!t||x._data(t[r],"globalEval"))}function Mt(e,t){if(1===t.nodeType&&x.hasData(e)){var n,r,i,o=x._data(e),a=x._data(t,o),s=o.events;if(s){delete a.handle,a.events={};for(n in s)for(r=0,i=s[n].length;i>r;r++)x.event.add(t,n,s[n][r])}a.data&&(a.data=x.extend({},a.data))}}function Ot(e,t){var n,r,i;if(1===t.nodeType){if(n=t.nodeName.toLowerCase(),!x.support.noCloneEvent&&t[x.expando]){i=x._data(t);for(r in i.events)x.removeEvent(t,r,i.handle);t.removeAttribute(x.expando)}"script"===n&&t.text!==e.text?(Ht(t).text=e.text,qt(t)):"object"===n?(t.parentNode&&(t.outerHTML=e.outerHTML),x.support.html5Clone&&e.innerHTML&&!x.trim(t.innerHTML)&&(t.innerHTML=e.innerHTML)):"input"===n&&Ct.test(e.type)?(t.defaultChecked=t.checked=e.checked,t.value!==e.value&&(t.value=e.value)):"option"===n?t.defaultSelected=t.selected=e.defaultSelected:("input"===n||"textarea"===n)&&(t.defaultValue=e.defaultValue)}}x.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(e,t){x.fn[e]=function(e){var n,r=0,i=[],o=x(e),a=o.length-1;for(;a>=r;r++)n=r===a?this:this.clone(!0),x(o[r])[t](n),h.apply(i,n.get());return this.pushStack(i)}});function Ft(e,n){var r,o,a=0,s=typeof e.getElementsByTagName!==i?e.getElementsByTagName(n||"*"):typeof e.querySelectorAll!==i?e.querySelectorAll(n||"*"):t;if(!s)for(s=[],r=e.childNodes||e;null!=(o=r[a]);a++)!n||x.nodeName(o,n)?s.push(o):x.merge(s,Ft(o,n));return n===t||n&&x.nodeName(e,n)?x.merge([e],s):s}function Bt(e){Ct.test(e.type)&&(e.defaultChecked=e.checked)}x.extend({clone:function(e,t,n){var r,i,o,a,s,l=x.contains(e.ownerDocument,e);if(x.support.html5Clone||x.isXMLDoc(e)||!mt.test("<"+e.nodeName+">")?o=e.cloneNode(!0):(Dt.innerHTML=e.outerHTML,Dt.removeChild(o=Dt.firstChild)),!(x.support.noCloneEvent&&x.support.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||x.isXMLDoc(e)))for(r=Ft(o),s=Ft(e),a=0;null!=(i=s[a]);++a)r[a]&&Ot(i,r[a]);if(t)if(n)for(s=s||Ft(e),r=r||Ft(o),a=0;null!=(i=s[a]);a++)Mt(i,r[a]);else Mt(e,o);return r=Ft(o,"script"),r.length>0&&_t(r,!l&&Ft(e,"script")),r=s=i=null,o},buildFragment:function(e,t,n,r){var i,o,a,s,l,u,c,p=e.length,f=dt(t),d=[],h=0;for(;p>h;h++)if(o=e[h],o||0===o)if("object"===x.type(o))x.merge(d,o.nodeType?[o]:o);else if(wt.test(o)){s=s||f.appendChild(t.createElement("div")),l=(bt.exec(o)||["",""])[1].toLowerCase(),c=At[l]||At._default,s.innerHTML=c[1]+o.replace(vt,"<$1>")+c[2],i=c[0];while(i--)s=s.lastChild;if(!x.support.leadingWhitespace&&yt.test(o)&&d.push(t.createTextNode(yt.exec(o)[0])),!x.support.tbody){o="table"!==l||xt.test(o)?""!==c[1]||xt.test(o)?0:s:s.firstChild,i=o&&o.childNodes.length;while(i--)x.nodeName(u=o.childNodes[i],"tbody")&&!u.childNodes.length&&o.removeChild(u)}x.merge(d,s.childNodes),s.textContent="";while(s.firstChild)s.removeChild(s.firstChild);s=f.lastChild}else d.push(t.createTextNode(o));s&&f.removeChild(s),x.support.appendChecked||x.grep(Ft(d,"input"),Bt),h=0;while(o=d[h++])if((!r||-1===x.inArray(o,r))&&(a=x.contains(o.ownerDocument,o),s=Ft(f.appendChild(o),"script"),a&&_t(s),n)){i=0;while(o=s[i++])kt.test(o.type||"")&&n.push(o)}return s=null,f},cleanData:function(e,t){var n,r,o,a,s=0,l=x.expando,u=x.cache,c=x.support.deleteExpando,f=x.event.special;for(;null!=(n=e[s]);s++)if((t||x.acceptData(n))&&(o=n[l],a=o&&u[o])){if(a.events)for(r in a.events)f[r]?x.event.remove(n,r):x.removeEvent(n,r,a.handle); -u[o]&&(delete u[o],c?delete n[l]:typeof n.removeAttribute!==i?n.removeAttribute(l):n[l]=null,p.push(o))}},_evalUrl:function(e){return x.ajax({url:e,type:"GET",dataType:"script",async:!1,global:!1,"throws":!0})}}),x.fn.extend({wrapAll:function(e){if(x.isFunction(e))return this.each(function(t){x(this).wrapAll(e.call(this,t))});if(this[0]){var t=x(e,this[0].ownerDocument).eq(0).clone(!0);this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstChild&&1===e.firstChild.nodeType)e=e.firstChild;return e}).append(this)}return this},wrapInner:function(e){return x.isFunction(e)?this.each(function(t){x(this).wrapInner(e.call(this,t))}):this.each(function(){var t=x(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=x.isFunction(e);return this.each(function(n){x(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(){return this.parent().each(function(){x.nodeName(this,"body")||x(this).replaceWith(this.childNodes)}).end()}});var Pt,Rt,Wt,$t=/alpha\([^)]*\)/i,It=/opacity\s*=\s*([^)]*)/,zt=/^(top|right|bottom|left)$/,Xt=/^(none|table(?!-c[ea]).+)/,Ut=/^margin/,Vt=RegExp("^("+w+")(.*)$","i"),Yt=RegExp("^("+w+")(?!px)[a-z%]+$","i"),Jt=RegExp("^([+-])=("+w+")","i"),Gt={BODY:"block"},Qt={position:"absolute",visibility:"hidden",display:"block"},Kt={letterSpacing:0,fontWeight:400},Zt=["Top","Right","Bottom","Left"],en=["Webkit","O","Moz","ms"];function tn(e,t){if(t in e)return t;var n=t.charAt(0).toUpperCase()+t.slice(1),r=t,i=en.length;while(i--)if(t=en[i]+n,t in e)return t;return r}function nn(e,t){return e=t||e,"none"===x.css(e,"display")||!x.contains(e.ownerDocument,e)}function rn(e,t){var n,r,i,o=[],a=0,s=e.length;for(;s>a;a++)r=e[a],r.style&&(o[a]=x._data(r,"olddisplay"),n=r.style.display,t?(o[a]||"none"!==n||(r.style.display=""),""===r.style.display&&nn(r)&&(o[a]=x._data(r,"olddisplay",ln(r.nodeName)))):o[a]||(i=nn(r),(n&&"none"!==n||!i)&&x._data(r,"olddisplay",i?n:x.css(r,"display"))));for(a=0;s>a;a++)r=e[a],r.style&&(t&&"none"!==r.style.display&&""!==r.style.display||(r.style.display=t?o[a]||"":"none"));return e}x.fn.extend({css:function(e,n){return x.access(this,function(e,n,r){var i,o,a={},s=0;if(x.isArray(n)){for(o=Rt(e),i=n.length;i>s;s++)a[n[s]]=x.css(e,n[s],!1,o);return a}return r!==t?x.style(e,n,r):x.css(e,n)},e,n,arguments.length>1)},show:function(){return rn(this,!0)},hide:function(){return rn(this)},toggle:function(e){return"boolean"==typeof e?e?this.show():this.hide():this.each(function(){nn(this)?x(this).show():x(this).hide()})}}),x.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Wt(e,"opacity");return""===n?"1":n}}}},cssNumber:{columnCount:!0,fillOpacity:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{"float":x.support.cssFloat?"cssFloat":"styleFloat"},style:function(e,n,r,i){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var o,a,s,l=x.camelCase(n),u=e.style;if(n=x.cssProps[l]||(x.cssProps[l]=tn(u,l)),s=x.cssHooks[n]||x.cssHooks[l],r===t)return s&&"get"in s&&(o=s.get(e,!1,i))!==t?o:u[n];if(a=typeof r,"string"===a&&(o=Jt.exec(r))&&(r=(o[1]+1)*o[2]+parseFloat(x.css(e,n)),a="number"),!(null==r||"number"===a&&isNaN(r)||("number"!==a||x.cssNumber[l]||(r+="px"),x.support.clearCloneStyle||""!==r||0!==n.indexOf("background")||(u[n]="inherit"),s&&"set"in s&&(r=s.set(e,r,i))===t)))try{u[n]=r}catch(c){}}},css:function(e,n,r,i){var o,a,s,l=x.camelCase(n);return n=x.cssProps[l]||(x.cssProps[l]=tn(e.style,l)),s=x.cssHooks[n]||x.cssHooks[l],s&&"get"in s&&(a=s.get(e,!0,r)),a===t&&(a=Wt(e,n,i)),"normal"===a&&n in Kt&&(a=Kt[n]),""===r||r?(o=parseFloat(a),r===!0||x.isNumeric(o)?o||0:a):a}}),e.getComputedStyle?(Rt=function(t){return e.getComputedStyle(t,null)},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s.getPropertyValue(n)||s[n]:t,u=e.style;return s&&(""!==l||x.contains(e.ownerDocument,e)||(l=x.style(e,n)),Yt.test(l)&&Ut.test(n)&&(i=u.width,o=u.minWidth,a=u.maxWidth,u.minWidth=u.maxWidth=u.width=l,l=s.width,u.width=i,u.minWidth=o,u.maxWidth=a)),l}):a.documentElement.currentStyle&&(Rt=function(e){return e.currentStyle},Wt=function(e,n,r){var i,o,a,s=r||Rt(e),l=s?s[n]:t,u=e.style;return null==l&&u&&u[n]&&(l=u[n]),Yt.test(l)&&!zt.test(n)&&(i=u.left,o=e.runtimeStyle,a=o&&o.left,a&&(o.left=e.currentStyle.left),u.left="fontSize"===n?"1em":l,l=u.pixelLeft+"px",u.left=i,a&&(o.left=a)),""===l?"auto":l});function on(e,t,n){var r=Vt.exec(t);return r?Math.max(0,r[1]-(n||0))+(r[2]||"px"):t}function an(e,t,n,r,i){var o=n===(r?"border":"content")?4:"width"===t?1:0,a=0;for(;4>o;o+=2)"margin"===n&&(a+=x.css(e,n+Zt[o],!0,i)),r?("content"===n&&(a-=x.css(e,"padding"+Zt[o],!0,i)),"margin"!==n&&(a-=x.css(e,"border"+Zt[o]+"Width",!0,i))):(a+=x.css(e,"padding"+Zt[o],!0,i),"padding"!==n&&(a+=x.css(e,"border"+Zt[o]+"Width",!0,i)));return a}function sn(e,t,n){var r=!0,i="width"===t?e.offsetWidth:e.offsetHeight,o=Rt(e),a=x.support.boxSizing&&"border-box"===x.css(e,"boxSizing",!1,o);if(0>=i||null==i){if(i=Wt(e,t,o),(0>i||null==i)&&(i=e.style[t]),Yt.test(i))return i;r=a&&(x.support.boxSizingReliable||i===e.style[t]),i=parseFloat(i)||0}return i+an(e,t,n||(a?"border":"content"),r,o)+"px"}function ln(e){var t=a,n=Gt[e];return n||(n=un(e,t),"none"!==n&&n||(Pt=(Pt||x("', - error : '

The requested content cannot be loaded.
Please try again later.

', - closeBtn : '', - next : '', - prev : '', - loading : '
' - }, - - // Properties for each animation type - // Opening fancyBox - openEffect : 'fade', // 'elastic', 'fade' or 'none' - openSpeed : 250, - openEasing : 'swing', - openOpacity : true, - openMethod : 'zoomIn', - - // Closing fancyBox - closeEffect : 'fade', // 'elastic', 'fade' or 'none' - closeSpeed : 250, - closeEasing : 'swing', - closeOpacity : true, - closeMethod : 'zoomOut', - - // Changing next gallery item - nextEffect : 'elastic', // 'elastic', 'fade' or 'none' - nextSpeed : 250, - nextEasing : 'swing', - nextMethod : 'changeIn', - - // Changing previous gallery item - prevEffect : 'elastic', // 'elastic', 'fade' or 'none' - prevSpeed : 250, - prevEasing : 'swing', - prevMethod : 'changeOut', - - // Enable default helpers - helpers : { - overlay : true, - title : true - }, - - // Callbacks - onCancel : $.noop, // If canceling - beforeLoad : $.noop, // Before loading - afterLoad : $.noop, // After loading - beforeShow : $.noop, // Before changing in current item - afterShow : $.noop, // After opening - beforeChange : $.noop, // Before changing gallery item - beforeClose : $.noop, // Before closing - afterClose : $.noop // After closing - }, - - //Current state - group : {}, // Selected group - opts : {}, // Group options - previous : null, // Previous element - coming : null, // Element being loaded - current : null, // Currently loaded element - isActive : false, // Is activated - isOpen : false, // Is currently open - isOpened : false, // Have been fully opened at least once - - wrap : null, - skin : null, - outer : null, - inner : null, - - player : { - timer : null, - isActive : false - }, - - // Loaders - ajaxLoad : null, - imgPreload : null, - - // Some collections - transitions : {}, - helpers : {}, - - /* - * Static methods - */ - - open: function (group, opts) { - if (!group) { - return; - } - - if (!$.isPlainObject(opts)) { - opts = {}; - } - - // Close if already active - if (false === F.close(true)) { - return; - } - - // Normalize group - if (!$.isArray(group)) { - group = isQuery(group) ? $(group).get() : [group]; - } - - // Recheck if the type of each element is `object` and set content type (image, ajax, etc) - $.each(group, function(i, element) { - var obj = {}, - href, - title, - content, - type, - rez, - hrefParts, - selector; - - if ($.type(element) === "object") { - // Check if is DOM element - if (element.nodeType) { - element = $(element); - } - - if (isQuery(element)) { - obj = { - href : element.data('fancybox-href') || element.attr('href'), - title : $('
').text( element.data('fancybox-title') || element.attr('title') || '' ).html(), - isDom : true, - element : element - }; - - if ($.metadata) { - $.extend(true, obj, element.metadata()); - } - - } else { - obj = element; - } - } - - href = opts.href || obj.href || (isString(element) ? element : null); - title = opts.title !== undefined ? opts.title : obj.title || ''; - - content = opts.content || obj.content; - type = content ? 'html' : (opts.type || obj.type); - - if (!type && obj.isDom) { - type = element.data('fancybox-type'); - - if (!type) { - rez = element.prop('class').match(/fancybox\.(\w+)/); - type = rez ? rez[1] : null; - } - } - - if (isString(href)) { - // Try to guess the content type - if (!type) { - if (F.isImage(href)) { - type = 'image'; - - } else if (F.isSWF(href)) { - type = 'swf'; - - } else if (href.charAt(0) === '#') { - type = 'inline'; - - } else if (isString(element)) { - type = 'html'; - content = element; - } - } - - // Split url into two pieces with source url and content selector, e.g, - // "/mypage.html #my_id" will load "/mypage.html" and display element having id "my_id" - if (type === 'ajax') { - hrefParts = href.split(/\s+/, 2); - href = hrefParts.shift(); - selector = hrefParts.shift(); - } - } - - if (!content) { - if (type === 'inline') { - if (href) { - content = $( isString(href) ? href.replace(/.*(?=#[^\s]+$)/, '') : href ); //strip for ie7 - - } else if (obj.isDom) { - content = element; - } - - } else if (type === 'html') { - content = href; - - } else if (!type && !href && obj.isDom) { - type = 'inline'; - content = element; - } - } - - $.extend(obj, { - href : href, - type : type, - content : content, - title : title, - selector : selector - }); - - group[ i ] = obj; - }); - - // Extend the defaults - F.opts = $.extend(true, {}, F.defaults, opts); - - // All options are merged recursive except keys - if (opts.keys !== undefined) { - F.opts.keys = opts.keys ? $.extend({}, F.defaults.keys, opts.keys) : false; - } - - F.group = group; - - return F._start(F.opts.index); - }, - - // Cancel image loading or abort ajax request - cancel: function () { - var coming = F.coming; - - if (coming && false === F.trigger('onCancel')) { - return; - } - - F.hideLoading(); - - if (!coming) { - return; - } - - if (F.ajaxLoad) { - F.ajaxLoad.abort(); - } - - F.ajaxLoad = null; - - if (F.imgPreload) { - F.imgPreload.onload = F.imgPreload.onerror = null; - } - - if (coming.wrap) { - coming.wrap.stop(true, true).trigger('onReset').remove(); - } - - F.coming = null; - - // If the first item has been canceled, then clear everything - if (!F.current) { - F._afterZoomOut( coming ); - } - }, - - // Start closing animation if is open; remove immediately if opening/closing - close: function (event) { - F.cancel(); - - if (false === F.trigger('beforeClose')) { - return; - } - - F.unbindEvents(); - - if (!F.isActive) { - return; - } - - if (!F.isOpen || event === true) { - $('.fancybox-wrap').stop(true).trigger('onReset').remove(); - - F._afterZoomOut(); - - } else { - F.isOpen = F.isOpened = false; - F.isClosing = true; - - $('.fancybox-item, .fancybox-nav').remove(); - - F.wrap.stop(true, true).removeClass('fancybox-opened'); - - F.transitions[ F.current.closeMethod ](); - } - }, - - // Manage slideshow: - // $.fancybox.play(); - toggle slideshow - // $.fancybox.play( true ); - start - // $.fancybox.play( false ); - stop - play: function ( action ) { - var clear = function () { - clearTimeout(F.player.timer); - }, - set = function () { - clear(); - - if (F.current && F.player.isActive) { - F.player.timer = setTimeout(F.next, F.current.playSpeed); - } - }, - stop = function () { - clear(); - - D.unbind('.player'); - - F.player.isActive = false; - - F.trigger('onPlayEnd'); - }, - start = function () { - if (F.current && (F.current.loop || F.current.index < F.group.length - 1)) { - F.player.isActive = true; - - D.bind({ - 'onCancel.player beforeClose.player' : stop, - 'onUpdate.player' : set, - 'beforeLoad.player' : clear - }); - - set(); - - F.trigger('onPlayStart'); - } - }; - - if (action === true || (!F.player.isActive && action !== false)) { - start(); - } else { - stop(); - } - }, - - // Navigate to next gallery item - next: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.next; - } - - F.jumpto(current.index + 1, direction, 'next'); - } - }, - - // Navigate to previous gallery item - prev: function ( direction ) { - var current = F.current; - - if (current) { - if (!isString(direction)) { - direction = current.direction.prev; - } - - F.jumpto(current.index - 1, direction, 'prev'); - } - }, - - // Navigate to gallery item by index - jumpto: function ( index, direction, router ) { - var current = F.current; - - if (!current) { - return; - } - - index = getScalar(index); - - F.direction = direction || current.direction[ (index >= current.index ? 'next' : 'prev') ]; - F.router = router || 'jumpto'; - - if (current.loop) { - if (index < 0) { - index = current.group.length + (index % current.group.length); - } - - index = index % current.group.length; - } - - if (current.group[ index ] !== undefined) { - F.cancel(); - - F._start(index); - } - }, - - // Center inside viewport and toggle position type to fixed or absolute if needed - reposition: function (e, onlyAbsolute) { - var current = F.current, - wrap = current ? current.wrap : null, - pos; - - if (wrap) { - pos = F._getPosition(onlyAbsolute); - - if (e && e.type === 'scroll') { - delete pos.position; - - wrap.stop(true, true).animate(pos, 200); - - } else { - wrap.css(pos); - - current.pos = $.extend({}, current.dim, pos); - } - } - }, - - update: function (e) { - var type = (e && e.originalEvent && e.originalEvent.type), - anyway = !type || type === 'orientationchange'; - - if (anyway) { - clearTimeout(didUpdate); - - didUpdate = null; - } - - if (!F.isOpen || didUpdate) { - return; - } - - didUpdate = setTimeout(function() { - var current = F.current; - - if (!current || F.isClosing) { - return; - } - - F.wrap.removeClass('fancybox-tmp'); - - if (anyway || type === 'load' || (type === 'resize' && current.autoResize)) { - F._setDimension(); - } - - if (!(type === 'scroll' && current.canShrink)) { - F.reposition(e); - } - - F.trigger('onUpdate'); - - didUpdate = null; - - }, (anyway && !isTouch ? 0 : 300)); - }, - - // Shrink content to fit inside viewport or restore if resized - toggle: function ( action ) { - if (F.isOpen) { - F.current.fitToView = $.type(action) === "boolean" ? action : !F.current.fitToView; - - // Help browser to restore document dimensions - if (isTouch) { - F.wrap.removeAttr('style').addClass('fancybox-tmp'); - - F.trigger('onUpdate'); - } - - F.update(); - } - }, - - hideLoading: function () { - D.unbind('.loading'); - - $('#fancybox-loading').remove(); - }, - - showLoading: function () { - var el, viewport; - - F.hideLoading(); - - el = $(F.opts.tpl.loading).click(F.cancel).appendTo('body'); - - // If user will press the escape-button, the request will be canceled - D.bind('keydown.loading', function(e) { - if ((e.which || e.keyCode) === 27) { - e.preventDefault(); - - F.cancel(); - } - }); - - if (!F.defaults.fixed) { - viewport = F.getViewport(); - - el.css({ - position : 'absolute', - top : (viewport.h * 0.5) + viewport.y, - left : (viewport.w * 0.5) + viewport.x - }); - } - - F.trigger('onLoading'); - }, - - getViewport: function () { - var locked = (F.current && F.current.locked) || false, - rez = { - x: W.scrollLeft(), - y: W.scrollTop() - }; - - if (locked && locked.length) { - rez.w = locked[0].clientWidth; - rez.h = locked[0].clientHeight; - - } else { - // See http://bugs.jquery.com/ticket/6724 - rez.w = isTouch && window.innerWidth ? window.innerWidth : W.width(); - rez.h = isTouch && window.innerHeight ? window.innerHeight : W.height(); - } - - return rez; - }, - - // Unbind the keyboard / clicking actions - unbindEvents: function () { - if (F.wrap && isQuery(F.wrap)) { - F.wrap.unbind('.fb'); - } - - D.unbind('.fb'); - W.unbind('.fb'); - }, - - bindEvents: function () { - var current = F.current, - keys; - - if (!current) { - return; - } - - // Changing document height on iOS devices triggers a 'resize' event, - // that can change document height... repeating infinitely - W.bind('orientationchange.fb' + (isTouch ? '' : ' resize.fb') + (current.autoCenter && !current.locked ? ' scroll.fb' : ''), F.update); - - keys = current.keys; - - if (keys) { - D.bind('keydown.fb', function (e) { - var code = e.which || e.keyCode, - target = e.target || e.srcElement; - - // Skip esc key if loading, because showLoading will cancel preloading - if (code === 27 && F.coming) { - return false; - } - - // Ignore key combinations and key events within form elements - if (!e.ctrlKey && !e.altKey && !e.shiftKey && !e.metaKey && !(target && (target.type || $(target).is('[contenteditable]')))) { - $.each(keys, function(i, val) { - if (current.group.length > 1 && val[ code ] !== undefined) { - F[ i ]( val[ code ] ); - - e.preventDefault(); - return false; - } - - if ($.inArray(code, val) > -1) { - F[ i ] (); - - e.preventDefault(); - return false; - } - }); - } - }); - } - - if ($.fn.mousewheel && current.mouseWheel) { - F.wrap.bind('mousewheel.fb', function (e, delta, deltaX, deltaY) { - var target = e.target || null, - parent = $(target), - canScroll = false; - - while (parent.length) { - if (canScroll || parent.is('.fancybox-skin') || parent.is('.fancybox-wrap')) { - break; - } - - canScroll = isScrollable( parent[0] ); - parent = $(parent).parent(); - } - - if (delta !== 0 && !canScroll) { - if (F.group.length > 1 && !current.canShrink) { - if (deltaY > 0 || deltaX > 0) { - F.prev( deltaY > 0 ? 'down' : 'left' ); - - } else if (deltaY < 0 || deltaX < 0) { - F.next( deltaY < 0 ? 'up' : 'right' ); - } - - e.preventDefault(); - } - } - }); - } - }, - - trigger: function (event, o) { - var ret, obj = o || F.coming || F.current; - - if (obj) { - if ($.isFunction( obj[event] )) { - ret = obj[event].apply(obj, Array.prototype.slice.call(arguments, 1)); - } - - if (ret === false) { - return false; - } - - if (obj.helpers) { - $.each(obj.helpers, function (helper, opts) { - if (opts && F.helpers[helper] && $.isFunction(F.helpers[helper][event])) { - F.helpers[helper][event]($.extend(true, {}, F.helpers[helper].defaults, opts), obj); - } - }); - } - } - - D.trigger(event); - }, - - isImage: function (str) { - return isString(str) && str.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i); - }, - - isSWF: function (str) { - return isString(str) && str.match(/\.(swf)((\?|#).*)?$/i); - }, - - _start: function (index) { - var coming = {}, - obj, - href, - type, - margin, - padding; - - index = getScalar( index ); - obj = F.group[ index ] || null; - - if (!obj) { - return false; - } - - coming = $.extend(true, {}, F.opts, obj); - - // Convert margin and padding properties to array - top, right, bottom, left - margin = coming.margin; - padding = coming.padding; - - if ($.type(margin) === 'number') { - coming.margin = [margin, margin, margin, margin]; - } - - if ($.type(padding) === 'number') { - coming.padding = [padding, padding, padding, padding]; - } - - // 'modal' propery is just a shortcut - if (coming.modal) { - $.extend(true, coming, { - closeBtn : false, - closeClick : false, - nextClick : false, - arrows : false, - mouseWheel : false, - keys : null, - helpers: { - overlay : { - closeClick : false - } - } - }); - } - - // 'autoSize' property is a shortcut, too - if (coming.autoSize) { - coming.autoWidth = coming.autoHeight = true; - } - - if (coming.width === 'auto') { - coming.autoWidth = true; - } - - if (coming.height === 'auto') { - coming.autoHeight = true; - } - - /* - * Add reference to the group, so it`s possible to access from callbacks, example: - * afterLoad : function() { - * this.title = 'Image ' + (this.index + 1) + ' of ' + this.group.length + (this.title ? ' - ' + this.title : ''); - * } - */ - - coming.group = F.group; - coming.index = index; - - // Give a chance for callback or helpers to update coming item (type, title, etc) - F.coming = coming; - - if (false === F.trigger('beforeLoad')) { - F.coming = null; - - return; - } - - type = coming.type; - href = coming.href; - - if (!type) { - F.coming = null; - - //If we can not determine content type then drop silently or display next/prev item if looping through gallery - if (F.current && F.router && F.router !== 'jumpto') { - F.current.index = index; - - return F[ F.router ]( F.direction ); - } - - return false; - } - - F.isActive = true; - - if (type === 'image' || type === 'swf') { - coming.autoHeight = coming.autoWidth = false; - coming.scrolling = 'visible'; - } - - if (type === 'image') { - coming.aspectRatio = true; - } - - if (type === 'iframe' && isTouch) { - coming.scrolling = 'scroll'; - } - - // Build the neccessary markup - coming.wrap = $(coming.tpl.wrap).addClass('fancybox-' + (isTouch ? 'mobile' : 'desktop') + ' fancybox-type-' + type + ' fancybox-tmp ' + coming.wrapCSS).appendTo( coming.parent || 'body' ); - - $.extend(coming, { - skin : $('.fancybox-skin', coming.wrap), - outer : $('.fancybox-outer', coming.wrap), - inner : $('.fancybox-inner', coming.wrap) - }); - - $.each(["Top", "Right", "Bottom", "Left"], function(i, v) { - coming.skin.css('padding' + v, getValue(coming.padding[ i ])); - }); - - F.trigger('onReady'); - - // Check before try to load; 'inline' and 'html' types need content, others - href - if (type === 'inline' || type === 'html') { - if (!coming.content || !coming.content.length) { - return F._error( 'content' ); - } - - } else if (!href) { - return F._error( 'href' ); - } - - if (type === 'image') { - F._loadImage(); - - } else if (type === 'ajax') { - F._loadAjax(); - - } else if (type === 'iframe') { - F._loadIframe(); - - } else { - F._afterLoad(); - } - }, - - _error: function ( type ) { - $.extend(F.coming, { - type : 'html', - autoWidth : true, - autoHeight : true, - minWidth : 0, - minHeight : 0, - scrolling : 'no', - hasError : type, - content : F.coming.tpl.error - }); - - F._afterLoad(); - }, - - _loadImage: function () { - // Reset preload image so it is later possible to check "complete" property - var img = F.imgPreload = new Image(); - - img.onload = function () { - this.onload = this.onerror = null; - - F.coming.width = this.width / F.opts.pixelRatio; - F.coming.height = this.height / F.opts.pixelRatio; - - F._afterLoad(); - }; - - img.onerror = function () { - this.onload = this.onerror = null; - - F._error( 'image' ); - }; - - img.src = F.coming.href; - - if (img.complete !== true) { - F.showLoading(); - } - }, - - _loadAjax: function () { - var coming = F.coming; - - F.showLoading(); - - F.ajaxLoad = $.ajax($.extend({}, coming.ajax, { - url: coming.href, - error: function (jqXHR, textStatus) { - if (F.coming && textStatus !== 'abort') { - F._error( 'ajax', jqXHR ); - - } else { - F.hideLoading(); - } - }, - success: function (data, textStatus) { - if (textStatus === 'success') { - coming.content = data; - - F._afterLoad(); - } - } - })); - }, - - _loadIframe: function() { - var coming = F.coming, - iframe = $(coming.tpl.iframe.replace(/\{rnd\}/g, new Date().getTime())) - .attr('scrolling', isTouch ? 'auto' : coming.iframe.scrolling) - .attr('src', coming.href); - - // This helps IE - $(coming.wrap).bind('onReset', function () { - try { - $(this).find('iframe').hide().attr('src', '//about:blank').end().empty(); - } catch (e) {} - }); - - if (coming.iframe.preload) { - F.showLoading(); - - iframe.one('load', function() { - $(this).data('ready', 1); - - // iOS will lose scrolling if we resize - if (!isTouch) { - $(this).bind('load.fb', F.update); - } - - // Without this trick: - // - iframe won't scroll on iOS devices - // - IE7 sometimes displays empty iframe - $(this).parents('.fancybox-wrap').width('100%').removeClass('fancybox-tmp').show(); - - F._afterLoad(); - }); - } - - coming.content = iframe.appendTo( coming.inner ); - - if (!coming.iframe.preload) { - F._afterLoad(); - } - }, - - _preloadImages: function() { - var group = F.group, - current = F.current, - len = group.length, - cnt = current.preload ? Math.min(current.preload, len - 1) : 0, - item, - i; - - for (i = 1; i <= cnt; i += 1) { - item = group[ (current.index + i ) % len ]; - - if (item.type === 'image' && item.href) { - new Image().src = item.href; - } - } - }, - - _afterLoad: function () { - var coming = F.coming, - previous = F.current, - placeholder = 'fancybox-placeholder', - current, - content, - type, - scrolling, - href, - embed; - - F.hideLoading(); - - if (!coming || F.isActive === false) { - return; - } - - if (false === F.trigger('afterLoad', coming, previous)) { - coming.wrap.stop(true).trigger('onReset').remove(); - - F.coming = null; - - return; - } - - if (previous) { - F.trigger('beforeChange', previous); - - previous.wrap.stop(true).removeClass('fancybox-opened') - .find('.fancybox-item, .fancybox-nav') - .remove(); - } - - F.unbindEvents(); - - current = coming; - content = coming.content; - type = coming.type; - scrolling = coming.scrolling; - - $.extend(F, { - wrap : current.wrap, - skin : current.skin, - outer : current.outer, - inner : current.inner, - current : current, - previous : previous - }); - - href = current.href; - - switch (type) { - case 'inline': - case 'ajax': - case 'html': - if (current.selector) { - content = $('
').html(content).find(current.selector); - - } else if (isQuery(content)) { - if (!content.data(placeholder)) { - content.data(placeholder, $('
').insertAfter( content ).hide() ); - } - - content = content.show().detach(); - - current.wrap.bind('onReset', function () { - if ($(this).find(content).length) { - content.hide().replaceAll( content.data(placeholder) ).data(placeholder, false); - } - }); - } - break; - - case 'image': - content = current.tpl.image.replace(/\{href\}/g, href); - break; - - case 'swf': - content = ''; - embed = ''; - - $.each(current.swf, function(name, val) { - content += ''; - embed += ' ' + name + '="' + val + '"'; - }); - - content += ''; - break; - } - - if (!(isQuery(content) && content.parent().is(current.inner))) { - current.inner.append( content ); - } - - // Give a chance for helpers or callbacks to update elements - F.trigger('beforeShow'); - - // Set scrolling before calculating dimensions - current.inner.css('overflow', scrolling === 'yes' ? 'scroll' : (scrolling === 'no' ? 'hidden' : scrolling)); - - // Set initial dimensions and start position - F._setDimension(); - - F.reposition(); - - F.isOpen = false; - F.coming = null; - - F.bindEvents(); - - if (!F.isOpened) { - $('.fancybox-wrap').not( current.wrap ).stop(true).trigger('onReset').remove(); - - } else if (previous.prevMethod) { - F.transitions[ previous.prevMethod ](); - } - - F.transitions[ F.isOpened ? current.nextMethod : current.openMethod ](); - - F._preloadImages(); - }, - - _setDimension: function () { - var viewport = F.getViewport(), - steps = 0, - canShrink = false, - canExpand = false, - wrap = F.wrap, - skin = F.skin, - inner = F.inner, - current = F.current, - width = current.width, - height = current.height, - minWidth = current.minWidth, - minHeight = current.minHeight, - maxWidth = current.maxWidth, - maxHeight = current.maxHeight, - scrolling = current.scrolling, - scrollOut = current.scrollOutside ? current.scrollbarWidth : 0, - margin = current.margin, - wMargin = getScalar(margin[1] + margin[3]), - hMargin = getScalar(margin[0] + margin[2]), - wPadding, - hPadding, - wSpace, - hSpace, - origWidth, - origHeight, - origMaxWidth, - origMaxHeight, - ratio, - width_, - height_, - maxWidth_, - maxHeight_, - iframe, - body; - - // Reset dimensions so we could re-check actual size - wrap.add(skin).add(inner).width('auto').height('auto').removeClass('fancybox-tmp'); - - wPadding = getScalar(skin.outerWidth(true) - skin.width()); - hPadding = getScalar(skin.outerHeight(true) - skin.height()); - - // Any space between content and viewport (margin, padding, border, title) - wSpace = wMargin + wPadding; - hSpace = hMargin + hPadding; - - origWidth = isPercentage(width) ? (viewport.w - wSpace) * getScalar(width) / 100 : width; - origHeight = isPercentage(height) ? (viewport.h - hSpace) * getScalar(height) / 100 : height; - - if (current.type === 'iframe') { - iframe = current.content; - - if (current.autoHeight && iframe.data('ready') === 1) { - try { - if (iframe[0].contentWindow.document.location) { - inner.width( origWidth ).height(9999); - - body = iframe.contents().find('body'); - - if (scrollOut) { - body.css('overflow-x', 'hidden'); - } - - origHeight = body.outerHeight(true); - } - - } catch (e) {} - } - - } else if (current.autoWidth || current.autoHeight) { - inner.addClass( 'fancybox-tmp' ); - - // Set width or height in case we need to calculate only one dimension - if (!current.autoWidth) { - inner.width( origWidth ); - } - - if (!current.autoHeight) { - inner.height( origHeight ); - } - - if (current.autoWidth) { - origWidth = inner.width(); - } - - if (current.autoHeight) { - origHeight = inner.height(); - } - - inner.removeClass( 'fancybox-tmp' ); - } - - width = getScalar( origWidth ); - height = getScalar( origHeight ); - - ratio = origWidth / origHeight; - - // Calculations for the content - minWidth = getScalar(isPercentage(minWidth) ? getScalar(minWidth, 'w') - wSpace : minWidth); - maxWidth = getScalar(isPercentage(maxWidth) ? getScalar(maxWidth, 'w') - wSpace : maxWidth); - - minHeight = getScalar(isPercentage(minHeight) ? getScalar(minHeight, 'h') - hSpace : minHeight); - maxHeight = getScalar(isPercentage(maxHeight) ? getScalar(maxHeight, 'h') - hSpace : maxHeight); - - // These will be used to determine if wrap can fit in the viewport - origMaxWidth = maxWidth; - origMaxHeight = maxHeight; - - if (current.fitToView) { - maxWidth = Math.min(viewport.w - wSpace, maxWidth); - maxHeight = Math.min(viewport.h - hSpace, maxHeight); - } - - maxWidth_ = viewport.w - wMargin; - maxHeight_ = viewport.h - hMargin; - - if (current.aspectRatio) { - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - if (height > maxHeight) { - height = maxHeight; - width = getScalar(height * ratio); - } - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (height < minHeight) { - height = minHeight; - width = getScalar(height * ratio); - } - - } else { - width = Math.max(minWidth, Math.min(width, maxWidth)); - - if (current.autoHeight && current.type !== 'iframe') { - inner.width( width ); - - height = inner.height(); - } - - height = Math.max(minHeight, Math.min(height, maxHeight)); - } - - // Try to fit inside viewport (including the title) - if (current.fitToView) { - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - // Real wrap dimensions - width_ = wrap.width(); - height_ = wrap.height(); - - if (current.aspectRatio) { - while ((width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight) { - if (steps++ > 19) { - break; - } - - height = Math.max(minHeight, Math.min(maxHeight, height - 10)); - width = getScalar(height * ratio); - - if (width < minWidth) { - width = minWidth; - height = getScalar(width / ratio); - } - - if (width > maxWidth) { - width = maxWidth; - height = getScalar(width / ratio); - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - } - - } else { - width = Math.max(minWidth, Math.min(width, width - (width_ - maxWidth_))); - height = Math.max(minHeight, Math.min(height, height - (height_ - maxHeight_))); - } - } - - if (scrollOut && scrolling === 'auto' && height < origHeight && (width + wPadding + scrollOut) < maxWidth_) { - width += scrollOut; - } - - inner.width( width ).height( height ); - - wrap.width( width + wPadding ); - - width_ = wrap.width(); - height_ = wrap.height(); - - canShrink = (width_ > maxWidth_ || height_ > maxHeight_) && width > minWidth && height > minHeight; - canExpand = current.aspectRatio ? (width < origMaxWidth && height < origMaxHeight && width < origWidth && height < origHeight) : ((width < origMaxWidth || height < origMaxHeight) && (width < origWidth || height < origHeight)); - - $.extend(current, { - dim : { - width : getValue( width_ ), - height : getValue( height_ ) - }, - origWidth : origWidth, - origHeight : origHeight, - canShrink : canShrink, - canExpand : canExpand, - wPadding : wPadding, - hPadding : hPadding, - wrapSpace : height_ - skin.outerHeight(true), - skinSpace : skin.height() - height - }); - - if (!iframe && current.autoHeight && height > minHeight && height < maxHeight && !canExpand) { - inner.height('auto'); - } - }, - - _getPosition: function (onlyAbsolute) { - var current = F.current, - viewport = F.getViewport(), - margin = current.margin, - width = F.wrap.width() + margin[1] + margin[3], - height = F.wrap.height() + margin[0] + margin[2], - rez = { - position: 'absolute', - top : margin[0], - left : margin[3] - }; - - if (current.autoCenter && current.fixed && !onlyAbsolute && height <= viewport.h && width <= viewport.w) { - rez.position = 'fixed'; - - } else if (!current.locked) { - rez.top += viewport.y; - rez.left += viewport.x; - } - - rez.top = getValue(Math.max(rez.top, rez.top + ((viewport.h - height) * current.topRatio))); - rez.left = getValue(Math.max(rez.left, rez.left + ((viewport.w - width) * current.leftRatio))); - - return rez; - }, - - _afterZoomIn: function () { - var current = F.current; - - if (!current) { - return; - } - - F.isOpen = F.isOpened = true; - - F.wrap.css('overflow', 'visible').addClass('fancybox-opened').hide().show(0); - - F.update(); - - // Assign a click event - if ( current.closeClick || (current.nextClick && F.group.length > 1) ) { - F.inner.css('cursor', 'pointer').bind('click.fb', function(e) { - if (!$(e.target).is('a') && !$(e.target).parent().is('a')) { - e.preventDefault(); - - F[ current.closeClick ? 'close' : 'next' ](); - } - }); - } - - // Create a close button - if (current.closeBtn) { - $(current.tpl.closeBtn).appendTo(F.skin).bind('click.fb', function(e) { - e.preventDefault(); - - F.close(); - }); - } - - // Create navigation arrows - if (current.arrows && F.group.length > 1) { - if (current.loop || current.index > 0) { - $(current.tpl.prev).appendTo(F.outer).bind('click.fb', F.prev); - } - - if (current.loop || current.index < F.group.length - 1) { - $(current.tpl.next).appendTo(F.outer).bind('click.fb', F.next); - } - } - - F.trigger('afterShow'); - - // Stop the slideshow if this is the last item - if (!current.loop && current.index === current.group.length - 1) { - - F.play( false ); - - } else if (F.opts.autoPlay && !F.player.isActive) { - F.opts.autoPlay = false; - - F.play(true); - } - }, - - _afterZoomOut: function ( obj ) { - obj = obj || F.current; - - $('.fancybox-wrap').trigger('onReset').remove(); - - $.extend(F, { - group : {}, - opts : {}, - router : false, - current : null, - isActive : false, - isOpened : false, - isOpen : false, - isClosing : false, - wrap : null, - skin : null, - outer : null, - inner : null - }); - - F.trigger('afterClose', obj); - } - }); - - /* - * Default transitions - */ - - F.transitions = { - getOrigPosition: function () { - var current = F.current, - element = current.element, - orig = current.orig, - pos = {}, - width = 50, - height = 50, - hPadding = current.hPadding, - wPadding = current.wPadding, - viewport = F.getViewport(); - - if (!orig && current.isDom && element.is(':visible')) { - orig = element.find('img:first'); - - if (!orig.length) { - orig = element; - } - } - - if (isQuery(orig)) { - pos = orig.offset(); - - if (orig.is('img')) { - width = orig.outerWidth(); - height = orig.outerHeight(); - } - - } else { - pos.top = viewport.y + (viewport.h - height) * current.topRatio; - pos.left = viewport.x + (viewport.w - width) * current.leftRatio; - } - - if (F.wrap.css('position') === 'fixed' || current.locked) { - pos.top -= viewport.y; - pos.left -= viewport.x; - } - - pos = { - top : getValue(pos.top - hPadding * current.topRatio), - left : getValue(pos.left - wPadding * current.leftRatio), - width : getValue(width + wPadding), - height : getValue(height + hPadding) - }; - - return pos; - }, - - step: function (now, fx) { - var ratio, - padding, - value, - prop = fx.prop, - current = F.current, - wrapSpace = current.wrapSpace, - skinSpace = current.skinSpace; - - if (prop === 'width' || prop === 'height') { - ratio = fx.end === fx.start ? 1 : (now - fx.start) / (fx.end - fx.start); - - if (F.isClosing) { - ratio = 1 - ratio; - } - - padding = prop === 'width' ? current.wPadding : current.hPadding; - value = now - padding; - - F.skin[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) ) ); - F.inner[ prop ]( getScalar( prop === 'width' ? value : value - (wrapSpace * ratio) - (skinSpace * ratio) ) ); - } - }, - - zoomIn: function () { - var current = F.current, - startPos = current.pos, - effect = current.openEffect, - elastic = effect === 'elastic', - endPos = $.extend({opacity : 1}, startPos); - - // Remove "position" property that breaks older IE - delete endPos.position; - - if (elastic) { - startPos = this.getOrigPosition(); - - if (current.openOpacity) { - startPos.opacity = 0.1; - } - - } else if (effect === 'fade') { - startPos.opacity = 0.1; - } - - F.wrap.css(startPos).animate(endPos, { - duration : effect === 'none' ? 0 : current.openSpeed, - easing : current.openEasing, - step : elastic ? this.step : null, - complete : F._afterZoomIn - }); - }, - - zoomOut: function () { - var current = F.current, - effect = current.closeEffect, - elastic = effect === 'elastic', - endPos = {opacity : 0.1}; - - if (elastic) { - endPos = this.getOrigPosition(); - - if (current.closeOpacity) { - endPos.opacity = 0.1; - } - } - - F.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : current.closeSpeed, - easing : current.closeEasing, - step : elastic ? this.step : null, - complete : F._afterZoomOut - }); - }, - - changeIn: function () { - var current = F.current, - effect = current.nextEffect, - startPos = current.pos, - endPos = { opacity : 1 }, - direction = F.direction, - distance = 200, - field; - - startPos.opacity = 0.1; - - if (effect === 'elastic') { - field = direction === 'down' || direction === 'up' ? 'top' : 'left'; - - if (direction === 'down' || direction === 'right') { - startPos[ field ] = getValue(getScalar(startPos[ field ]) - distance); - endPos[ field ] = '+=' + distance + 'px'; - - } else { - startPos[ field ] = getValue(getScalar(startPos[ field ]) + distance); - endPos[ field ] = '-=' + distance + 'px'; - } - } - - // Workaround for http://bugs.jquery.com/ticket/12273 - if (effect === 'none') { - F._afterZoomIn(); - - } else { - F.wrap.css(startPos).animate(endPos, { - duration : current.nextSpeed, - easing : current.nextEasing, - complete : F._afterZoomIn - }); - } - }, - - changeOut: function () { - var previous = F.previous, - effect = previous.prevEffect, - endPos = { opacity : 0.1 }, - direction = F.direction, - distance = 200; - - if (effect === 'elastic') { - endPos[ direction === 'down' || direction === 'up' ? 'top' : 'left' ] = ( direction === 'up' || direction === 'left' ? '-' : '+' ) + '=' + distance + 'px'; - } - - previous.wrap.animate(endPos, { - duration : effect === 'none' ? 0 : previous.prevSpeed, - easing : previous.prevEasing, - complete : function () { - $(this).trigger('onReset').remove(); - } - }); - } - }; - - /* - * Overlay helper - */ - - F.helpers.overlay = { - defaults : { - closeClick : true, // if true, fancyBox will be closed when user clicks on the overlay - speedOut : 200, // duration of fadeOut animation - showEarly : true, // indicates if should be opened immediately or wait until the content is ready - css : {}, // custom CSS properties - locked : !isTouch, // if true, the content will be locked into overlay - fixed : true // if false, the overlay CSS position property will not be set to "fixed" - }, - - overlay : null, // current handle - fixed : false, // indicates if the overlay has position "fixed" - el : $('html'), // element that contains "the lock" - - // Public methods - create : function(opts) { - var parent; - - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.close(); - } - - parent = F.coming ? F.coming.parent : opts.parent; - - this.overlay = $('
').appendTo( parent && parent.length ? parent : 'body' ); - this.fixed = false; - - if (opts.fixed && F.defaults.fixed) { - this.overlay.addClass('fancybox-overlay-fixed'); - - this.fixed = true; - } - }, - - open : function(opts) { - var that = this; - - opts = $.extend({}, this.defaults, opts); - - if (this.overlay) { - this.overlay.unbind('.overlay').width('auto').height('auto'); - - } else { - this.create(opts); - } - - if (!this.fixed) { - W.bind('resize.overlay', $.proxy( this.update, this) ); - - this.update(); - } - - if (opts.closeClick) { - this.overlay.bind('click.overlay', function(e) { - if ($(e.target).hasClass('fancybox-overlay')) { - if (F.isActive) { - F.close(); - } else { - that.close(); - } - - return false; - } - }); - } - - this.overlay.css( opts.css ).show(); - }, - - close : function() { - W.unbind('resize.overlay'); - - if (this.el.hasClass('fancybox-lock')) { - $('.fancybox-margin').removeClass('fancybox-margin'); - - this.el.removeClass('fancybox-lock'); - - W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); - } - - $('.fancybox-overlay').remove().hide(); - - $.extend(this, { - overlay : null, - fixed : false - }); - }, - - // Private, callbacks - - update : function () { - var width = '100%', offsetWidth; - - // Reset width/height so it will not mess - this.overlay.width(width).height('100%'); - - // jQuery does not return reliable result for IE - if (IE) { - offsetWidth = Math.max(document.documentElement.offsetWidth, document.body.offsetWidth); - - if (D.width() > offsetWidth) { - width = D.width(); - } - - } else if (D.width() > W.width()) { - width = D.width(); - } - - this.overlay.width(width).height(D.height()); - }, - - // This is where we can manipulate DOM, because later it would cause iframes to reload - onReady : function (opts, obj) { - var overlay = this.overlay; - - $('.fancybox-overlay').stop(true, true); - - if (!overlay) { - this.create(opts); - } - - if (opts.locked && this.fixed && obj.fixed) { - obj.locked = this.overlay.append( obj.wrap ); - obj.fixed = false; - } - - if (opts.showEarly === true) { - this.beforeShow.apply(this, arguments); - } - }, - - beforeShow : function(opts, obj) { - if (obj.locked && !this.el.hasClass('fancybox-lock')) { - if (this.fixPosition !== false) { - $('*').filter(function(){ - return ($(this).css('position') === 'fixed' && !$(this).hasClass("fancybox-overlay") && !$(this).hasClass("fancybox-wrap") ); - }).addClass('fancybox-margin'); - } - - this.el.addClass('fancybox-margin'); - - this.scrollV = W.scrollTop(); - this.scrollH = W.scrollLeft(); - - this.el.addClass('fancybox-lock'); - - W.scrollTop( this.scrollV ).scrollLeft( this.scrollH ); - } - - this.open(opts); - }, - - onUpdate : function() { - if (!this.fixed) { - this.update(); - } - }, - - afterClose: function (opts) { - // Remove overlay if exists and fancyBox is not opening - // (e.g., it is not being open using afterClose callback) - if (this.overlay && !F.coming) { - this.overlay.fadeOut(opts.speedOut, $.proxy( this.close, this )); - } - } - }; - - /* - * Title helper - */ - - F.helpers.title = { - defaults : { - type : 'float', // 'float', 'inside', 'outside' or 'over', - position : 'bottom' // 'top' or 'bottom' - }, - - beforeShow: function (opts) { - var current = F.current, - text = current.title, - type = opts.type, - title, - target; - - if ($.isFunction(text)) { - text = text.call(current.element, current); - } - - if (!isString(text) || $.trim(text) === '') { - return; - } - - title = $('
' + text + '
'); - - switch (type) { - case 'inside': - target = F.skin; - break; - - case 'outside': - target = F.wrap; - break; - - case 'over': - target = F.inner; - break; - - default: // 'float' - target = F.skin; - - title.appendTo('body'); - - if (IE) { - title.width( title.width() ); - } - - title.wrapInner(''); - - //Increase bottom margin so this title will also fit into viewport - F.current.margin[2] += Math.abs( getScalar(title.css('margin-bottom')) ); - break; - } - - title[ (opts.position === 'top' ? 'prependTo' : 'appendTo') ](target); - } - }; - - // jQuery plugin initialization - $.fn.fancybox = function (options) { - var index, - that = $(this), - selector = this.selector || '', - run = function(e) { - var what = $(this).blur(), idx = index, relType, relVal; - - if (!(e.ctrlKey || e.altKey || e.shiftKey || e.metaKey) && !what.is('.fancybox-wrap')) { - relType = options.groupAttr || 'data-fancybox-group'; - relVal = what.attr(relType); - - if (!relVal) { - relType = 'rel'; - relVal = what.get(0)[ relType ]; - } - - if (relVal && relVal !== '' && relVal !== 'nofollow') { - what = selector.length ? $(selector) : that; - what = what.filter('[' + relType + '="' + relVal + '"]'); - idx = what.index(this); - } - - options.index = idx; - - // Stop an event from bubbling if everything is fine - if (F.open(what, options) !== false) { - e.preventDefault(); - } - } - }; - - options = options || {}; - index = options.index || 0; - - if (!selector || options.live === false) { - that.unbind('click.fb-start').bind('click.fb-start', run); - - } else { - D.undelegate(selector, 'click.fb-start').delegate(selector + ":not('.fancybox-item, .fancybox-nav')", 'click.fb-start', run); - } - - this.filter('[data-fancybox-start=1]').trigger('click'); - - return this; - }; - - // Tests that need a body at doc ready - D.ready(function() { - var w1, w2; - - if ( $.scrollbarWidth === undefined ) { - // http://benalman.com/projects/jquery-misc-plugins/#scrollbarwidth - $.scrollbarWidth = function() { - var parent = $('
').appendTo('body'), - child = parent.children(), - width = child.innerWidth() - child.height( 99 ).innerWidth(); - - parent.remove(); - - return width; - }; - } - - if ( $.support.fixedPosition === undefined ) { - $.support.fixedPosition = (function() { - var elem = $('
').appendTo('body'), - fixed = ( elem[0].offsetTop === 20 || elem[0].offsetTop === 15 ); - - elem.remove(); - - return fixed; - }()); - } - - $.extend(F.defaults, { - scrollbarWidth : $.scrollbarWidth(), - fixed : $.support.fixedPosition, - parent : $('body') - }); - - //Get real width of page scroll-bar - w1 = $(window).width(); - - H.addClass('fancybox-lock-test'); - - w2 = $(window).width(); - - H.removeClass('fancybox-lock-test'); - - $("").appendTo("head"); - }); - -}(window, document, jQuery)); diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.pack.js b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.pack.js deleted file mode 100755 index 2db1280848..0000000000 --- a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/source/jquery.fancybox.pack.js +++ /dev/null @@ -1,46 +0,0 @@ -/*! fancyBox v2.1.5 fancyapps.com | fancyapps.com/fancybox/#license */ -(function(s,H,f,w){var K=f("html"),q=f(s),p=f(H),b=f.fancybox=function(){b.open.apply(this,arguments)},J=navigator.userAgent.match(/msie/i),C=null,t=H.createTouch!==w,u=function(a){return a&&a.hasOwnProperty&&a instanceof f},r=function(a){return a&&"string"===f.type(a)},F=function(a){return r(a)&&0
',image:'',iframe:'",error:'

The requested content cannot be loaded.
Please try again later.

',closeBtn:'',next:'',prev:''},openEffect:"fade",openSpeed:250,openEasing:"swing",openOpacity:!0, -openMethod:"zoomIn",closeEffect:"fade",closeSpeed:250,closeEasing:"swing",closeOpacity:!0,closeMethod:"zoomOut",nextEffect:"elastic",nextSpeed:250,nextEasing:"swing",nextMethod:"changeIn",prevEffect:"elastic",prevSpeed:250,prevEasing:"swing",prevMethod:"changeOut",helpers:{overlay:!0,title:!0},onCancel:f.noop,beforeLoad:f.noop,afterLoad:f.noop,beforeShow:f.noop,afterShow:f.noop,beforeChange:f.noop,beforeClose:f.noop,afterClose:f.noop},group:{},opts:{},previous:null,coming:null,current:null,isActive:!1, -isOpen:!1,isOpened:!1,wrap:null,skin:null,outer:null,inner:null,player:{timer:null,isActive:!1},ajaxLoad:null,imgPreload:null,transitions:{},helpers:{},open:function(a,d){if(a&&(f.isPlainObject(d)||(d={}),!1!==b.close(!0)))return f.isArray(a)||(a=u(a)?f(a).get():[a]),f.each(a,function(e,c){var l={},g,h,k,n,m;"object"===f.type(c)&&(c.nodeType&&(c=f(c)),u(c)?(l={href:c.data("fancybox-href")||c.attr("href"),title:f("
").text(c.data("fancybox-title")||c.attr("title")).html(),isDom:!0,element:c}, -f.metadata&&f.extend(!0,l,c.metadata())):l=c);g=d.href||l.href||(r(c)?c:null);h=d.title!==w?d.title:l.title||"";n=(k=d.content||l.content)?"html":d.type||l.type;!n&&l.isDom&&(n=c.data("fancybox-type"),n||(n=(n=c.prop("class").match(/fancybox\.(\w+)/))?n[1]:null));r(g)&&(n||(b.isImage(g)?n="image":b.isSWF(g)?n="swf":"#"===g.charAt(0)?n="inline":r(c)&&(n="html",k=c)),"ajax"===n&&(m=g.split(/\s+/,2),g=m.shift(),m=m.shift()));k||("inline"===n?g?k=f(r(g)?g.replace(/.*(?=#[^\s]+$)/,""):g):l.isDom&&(k=c): -"html"===n?k=g:n||g||!l.isDom||(n="inline",k=c));f.extend(l,{href:g,type:n,content:k,title:h,selector:m});a[e]=l}),b.opts=f.extend(!0,{},b.defaults,d),d.keys!==w&&(b.opts.keys=d.keys?f.extend({},b.defaults.keys,d.keys):!1),b.group=a,b._start(b.opts.index)},cancel:function(){var a=b.coming;a&&!1===b.trigger("onCancel")||(b.hideLoading(),a&&(b.ajaxLoad&&b.ajaxLoad.abort(),b.ajaxLoad=null,b.imgPreload&&(b.imgPreload.onload=b.imgPreload.onerror=null),a.wrap&&a.wrap.stop(!0,!0).trigger("onReset").remove(), -b.coming=null,b.current||b._afterZoomOut(a)))},close:function(a){b.cancel();!1!==b.trigger("beforeClose")&&(b.unbindEvents(),b.isActive&&(b.isOpen&&!0!==a?(b.isOpen=b.isOpened=!1,b.isClosing=!0,f(".fancybox-item, .fancybox-nav").remove(),b.wrap.stop(!0,!0).removeClass("fancybox-opened"),b.transitions[b.current.closeMethod]()):(f(".fancybox-wrap").stop(!0).trigger("onReset").remove(),b._afterZoomOut())))},play:function(a){var d=function(){clearTimeout(b.player.timer)},e=function(){d();b.current&&b.player.isActive&& -(b.player.timer=setTimeout(b.next,b.current.playSpeed))},c=function(){d();p.unbind(".player");b.player.isActive=!1;b.trigger("onPlayEnd")};!0===a||!b.player.isActive&&!1!==a?b.current&&(b.current.loop||b.current.index=c.index?"next":"prev"],b.router=e||"jumpto",c.loop&&(0>a&&(a=c.group.length+a%c.group.length),a%=c.group.length),c.group[a]!==w&&(b.cancel(),b._start(a)))},reposition:function(a,d){var e=b.current,c=e?e.wrap:null,l;c&&(l=b._getPosition(d),a&&"scroll"===a.type?(delete l.position,c.stop(!0,!0).animate(l,200)):(c.css(l),e.pos=f.extend({},e.dim,l)))}, -update:function(a){var d=a&&a.originalEvent&&a.originalEvent.type,e=!d||"orientationchange"===d;e&&(clearTimeout(C),C=null);b.isOpen&&!C&&(C=setTimeout(function(){var c=b.current;c&&!b.isClosing&&(b.wrap.removeClass("fancybox-tmp"),(e||"load"===d||"resize"===d&&c.autoResize)&&b._setDimension(),"scroll"===d&&c.canShrink||b.reposition(a),b.trigger("onUpdate"),C=null)},e&&!t?0:300))},toggle:function(a){b.isOpen&&(b.current.fitToView="boolean"===f.type(a)?a:!b.current.fitToView,t&&(b.wrap.removeAttr("style").addClass("fancybox-tmp"), -b.trigger("onUpdate")),b.update())},hideLoading:function(){p.unbind(".loading");f("#fancybox-loading").remove()},showLoading:function(){var a,d;b.hideLoading();a=f('
').click(b.cancel).appendTo("body");p.bind("keydown.loading",function(a){27===(a.which||a.keyCode)&&(a.preventDefault(),b.cancel())});b.defaults.fixed||(d=b.getViewport(),a.css({position:"absolute",top:0.5*d.h+d.y,left:0.5*d.w+d.x}));b.trigger("onLoading")},getViewport:function(){var a=b.current&& -b.current.locked||!1,d={x:q.scrollLeft(),y:q.scrollTop()};a&&a.length?(d.w=a[0].clientWidth,d.h=a[0].clientHeight):(d.w=t&&s.innerWidth?s.innerWidth:q.width(),d.h=t&&s.innerHeight?s.innerHeight:q.height());return d},unbindEvents:function(){b.wrap&&u(b.wrap)&&b.wrap.unbind(".fb");p.unbind(".fb");q.unbind(".fb")},bindEvents:function(){var a=b.current,d;a&&(q.bind("orientationchange.fb"+(t?"":" resize.fb")+(a.autoCenter&&!a.locked?" scroll.fb":""),b.update),(d=a.keys)&&p.bind("keydown.fb",function(e){var c= -e.which||e.keyCode,l=e.target||e.srcElement;if(27===c&&b.coming)return!1;e.ctrlKey||e.altKey||e.shiftKey||e.metaKey||l&&(l.type||f(l).is("[contenteditable]"))||f.each(d,function(d,l){if(1h[0].clientWidth||h[0].clientHeight&&h[0].scrollHeight>h[0].clientHeight),h=f(h).parent();0!==c&&!k&&1g||0>l)&&b.next(0>g?"up":"right"),d.preventDefault())}))},trigger:function(a,d){var e,c=d||b.coming||b.current;if(c){f.isFunction(c[a])&&(e=c[a].apply(c,Array.prototype.slice.call(arguments,1)));if(!1===e)return!1;c.helpers&&f.each(c.helpers,function(d,e){if(e&& -b.helpers[d]&&f.isFunction(b.helpers[d][a]))b.helpers[d][a](f.extend(!0,{},b.helpers[d].defaults,e),c)})}p.trigger(a)},isImage:function(a){return r(a)&&a.match(/(^data:image\/.*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg)((\?|#).*)?$)/i)},isSWF:function(a){return r(a)&&a.match(/\.(swf)((\?|#).*)?$/i)},_start:function(a){var d={},e,c;a=m(a);e=b.group[a]||null;if(!e)return!1;d=f.extend(!0,{},b.opts,e);e=d.margin;c=d.padding;"number"===f.type(e)&&(d.margin=[e,e,e,e]);"number"===f.type(c)&&(d.padding=[c,c, -c,c]);d.modal&&f.extend(!0,d,{closeBtn:!1,closeClick:!1,nextClick:!1,arrows:!1,mouseWheel:!1,keys:null,helpers:{overlay:{closeClick:!1}}});d.autoSize&&(d.autoWidth=d.autoHeight=!0);"auto"===d.width&&(d.autoWidth=!0);"auto"===d.height&&(d.autoHeight=!0);d.group=b.group;d.index=a;b.coming=d;if(!1===b.trigger("beforeLoad"))b.coming=null;else{c=d.type;e=d.href;if(!c)return b.coming=null,b.current&&b.router&&"jumpto"!==b.router?(b.current.index=a,b[b.router](b.direction)):!1;b.isActive=!0;if("image"=== -c||"swf"===c)d.autoHeight=d.autoWidth=!1,d.scrolling="visible";"image"===c&&(d.aspectRatio=!0);"iframe"===c&&t&&(d.scrolling="scroll");d.wrap=f(d.tpl.wrap).addClass("fancybox-"+(t?"mobile":"desktop")+" fancybox-type-"+c+" fancybox-tmp "+d.wrapCSS).appendTo(d.parent||"body");f.extend(d,{skin:f(".fancybox-skin",d.wrap),outer:f(".fancybox-outer",d.wrap),inner:f(".fancybox-inner",d.wrap)});f.each(["Top","Right","Bottom","Left"],function(a,b){d.skin.css("padding"+b,x(d.padding[a]))});b.trigger("onReady"); -if("inline"===c||"html"===c){if(!d.content||!d.content.length)return b._error("content")}else if(!e)return b._error("href");"image"===c?b._loadImage():"ajax"===c?b._loadAjax():"iframe"===c?b._loadIframe():b._afterLoad()}},_error:function(a){f.extend(b.coming,{type:"html",autoWidth:!0,autoHeight:!0,minWidth:0,minHeight:0,scrolling:"no",hasError:a,content:b.coming.tpl.error});b._afterLoad()},_loadImage:function(){var a=b.imgPreload=new Image;a.onload=function(){this.onload=this.onerror=null;b.coming.width= -this.width/b.opts.pixelRatio;b.coming.height=this.height/b.opts.pixelRatio;b._afterLoad()};a.onerror=function(){this.onload=this.onerror=null;b._error("image")};a.src=b.coming.href;!0!==a.complete&&b.showLoading()},_loadAjax:function(){var a=b.coming;b.showLoading();b.ajaxLoad=f.ajax(f.extend({},a.ajax,{url:a.href,error:function(a,e){b.coming&&"abort"!==e?b._error("ajax",a):b.hideLoading()},success:function(d,e){"success"===e&&(a.content=d,b._afterLoad())}}))},_loadIframe:function(){var a=b.coming, -d=f(a.tpl.iframe.replace(/\{rnd\}/g,(new Date).getTime())).attr("scrolling",t?"auto":a.iframe.scrolling).attr("src",a.href);f(a.wrap).bind("onReset",function(){try{f(this).find("iframe").hide().attr("src","//about:blank").end().empty()}catch(a){}});a.iframe.preload&&(b.showLoading(),d.one("load",function(){f(this).data("ready",1);t||f(this).bind("load.fb",b.update);f(this).parents(".fancybox-wrap").width("100%").removeClass("fancybox-tmp").show();b._afterLoad()}));a.content=d.appendTo(a.inner);a.iframe.preload|| -b._afterLoad()},_preloadImages:function(){var a=b.group,d=b.current,e=a.length,c=d.preload?Math.min(d.preload,e-1):0,f,g;for(g=1;g<=c;g+=1)f=a[(d.index+g)%e],"image"===f.type&&f.href&&((new Image).src=f.href)},_afterLoad:function(){var a=b.coming,d=b.current,e,c,l,g,h;b.hideLoading();if(a&&!1!==b.isActive)if(!1===b.trigger("afterLoad",a,d))a.wrap.stop(!0).trigger("onReset").remove(),b.coming=null;else{d&&(b.trigger("beforeChange",d),d.wrap.stop(!0).removeClass("fancybox-opened").find(".fancybox-item, .fancybox-nav").remove()); -b.unbindEvents();e=a.content;c=a.type;l=a.scrolling;f.extend(b,{wrap:a.wrap,skin:a.skin,outer:a.outer,inner:a.inner,current:a,previous:d});g=a.href;switch(c){case "inline":case "ajax":case "html":a.selector?e=f("
").html(e).find(a.selector):u(e)&&(e.data("fancybox-placeholder")||e.data("fancybox-placeholder",f('
').insertAfter(e).hide()),e=e.show().detach(),a.wrap.bind("onReset",function(){f(this).find(e).length&&e.hide().replaceAll(e.data("fancybox-placeholder")).data("fancybox-placeholder", -!1)}));break;case "image":e=a.tpl.image.replace(/\{href\}/g,g);break;case "swf":e='',h="",f.each(a.swf,function(a,b){e+='';h+=" "+a+'="'+b+'"'}),e+='"}u(e)&&e.parent().is(a.inner)||a.inner.append(e);b.trigger("beforeShow"); -a.inner.css("overflow","yes"===l?"scroll":"no"===l?"hidden":l);b._setDimension();b.reposition();b.isOpen=!1;b.coming=null;b.bindEvents();if(!b.isOpened)f(".fancybox-wrap").not(a.wrap).stop(!0).trigger("onReset").remove();else if(d.prevMethod)b.transitions[d.prevMethod]();b.transitions[b.isOpened?a.nextMethod:a.openMethod]();b._preloadImages()}},_setDimension:function(){var a=b.getViewport(),d=0,e=!1,c=!1,e=b.wrap,l=b.skin,g=b.inner,h=b.current,c=h.width,k=h.height,n=h.minWidth,v=h.minHeight,p=h.maxWidth, -q=h.maxHeight,t=h.scrolling,r=h.scrollOutside?h.scrollbarWidth:0,y=h.margin,z=m(y[1]+y[3]),s=m(y[0]+y[2]),w,A,u,D,B,G,C,E,I;e.add(l).add(g).width("auto").height("auto").removeClass("fancybox-tmp");y=m(l.outerWidth(!0)-l.width());w=m(l.outerHeight(!0)-l.height());A=z+y;u=s+w;D=F(c)?(a.w-A)*m(c)/100:c;B=F(k)?(a.h-u)*m(k)/100:k;if("iframe"===h.type){if(I=h.content,h.autoHeight&&1===I.data("ready"))try{I[0].contentWindow.document.location&&(g.width(D).height(9999),G=I.contents().find("body"),r&&G.css("overflow-x", -"hidden"),B=G.outerHeight(!0))}catch(H){}}else if(h.autoWidth||h.autoHeight)g.addClass("fancybox-tmp"),h.autoWidth||g.width(D),h.autoHeight||g.height(B),h.autoWidth&&(D=g.width()),h.autoHeight&&(B=g.height()),g.removeClass("fancybox-tmp");c=m(D);k=m(B);E=D/B;n=m(F(n)?m(n,"w")-A:n);p=m(F(p)?m(p,"w")-A:p);v=m(F(v)?m(v,"h")-u:v);q=m(F(q)?m(q,"h")-u:q);G=p;C=q;h.fitToView&&(p=Math.min(a.w-A,p),q=Math.min(a.h-u,q));A=a.w-z;s=a.h-s;h.aspectRatio?(c>p&&(c=p,k=m(c/E)),k>q&&(k=q,c=m(k*E)),cA||z>s)&&c>n&&k>v&&!(19p&&(c=p,k=m(c/E)),g.width(c).height(k),e.width(c+y),a=e.width(),z=e.height();else c=Math.max(n,Math.min(c,c-(a-A))),k=Math.max(v,Math.min(k,k-(z-s)));r&&"auto"===t&&kA||z>s)&&c>n&&k>v;c=h.aspectRatio?cv&&k
').appendTo(d&&d.lenth?d:"body");this.fixed=!1;a.fixed&&b.defaults.fixed&&(this.overlay.addClass("fancybox-overlay-fixed"),this.fixed=!0)},open:function(a){var d=this;a=f.extend({},this.defaults,a);this.overlay?this.overlay.unbind(".overlay").width("auto").height("auto"):this.create(a);this.fixed||(q.bind("resize.overlay",f.proxy(this.update,this)),this.update());a.closeClick&&this.overlay.bind("click.overlay", -function(a){if(f(a.target).hasClass("fancybox-overlay"))return b.isActive?b.close():d.close(),!1});this.overlay.css(a.css).show()},close:function(){q.unbind("resize.overlay");this.el.hasClass("fancybox-lock")&&(f(".fancybox-margin").removeClass("fancybox-margin"),this.el.removeClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));f(".fancybox-overlay").remove().hide();f.extend(this,{overlay:null,fixed:!1})},update:function(){var a="100%",b;this.overlay.width(a).height("100%"); -J?(b=Math.max(H.documentElement.offsetWidth,H.body.offsetWidth),p.width()>b&&(a=p.width())):p.width()>q.width()&&(a=p.width());this.overlay.width(a).height(p.height())},onReady:function(a,b){var e=this.overlay;f(".fancybox-overlay").stop(!0,!0);e||this.create(a);a.locked&&this.fixed&&b.fixed&&(b.locked=this.overlay.append(b.wrap),b.fixed=!1);!0===a.showEarly&&this.beforeShow.apply(this,arguments)},beforeShow:function(a,b){b.locked&&!this.el.hasClass("fancybox-lock")&&(!1!==this.fixPosition&&f("*").filter(function(){return"fixed"=== -f(this).css("position")&&!f(this).hasClass("fancybox-overlay")&&!f(this).hasClass("fancybox-wrap")}).addClass("fancybox-margin"),this.el.addClass("fancybox-margin"),this.scrollV=q.scrollTop(),this.scrollH=q.scrollLeft(),this.el.addClass("fancybox-lock"),q.scrollTop(this.scrollV).scrollLeft(this.scrollH));this.open(a)},onUpdate:function(){this.fixed||this.update()},afterClose:function(a){this.overlay&&!b.coming&&this.overlay.fadeOut(a.speedOut,f.proxy(this.close,this))}};b.helpers.title={defaults:{type:"float", -position:"bottom"},beforeShow:function(a){var d=b.current,e=d.title,c=a.type;f.isFunction(e)&&(e=e.call(d.element,d));if(r(e)&&""!==f.trim(e)){d=f('
'+e+"
");switch(c){case "inside":c=b.skin;break;case "outside":c=b.wrap;break;case "over":c=b.inner;break;default:c=b.skin,d.appendTo("body"),J&&d.width(d.width()),d.wrapInner(''),b.current.margin[2]+=Math.abs(m(d.css("margin-bottom")))}d["top"===a.position?"prependTo": -"appendTo"](c)}}};f.fn.fancybox=function(a){var d,e=f(this),c=this.selector||"",l=function(g){var h=f(this).blur(),k=d,l,m;g.ctrlKey||g.altKey||g.shiftKey||g.metaKey||h.is(".fancybox-wrap")||(l=a.groupAttr||"data-fancybox-group",m=h.attr(l),m||(l="rel",m=h.get(0)[l]),m&&""!==m&&"nofollow"!==m&&(h=c.length?f(c):e,h=h.filter("["+l+'="'+m+'"]'),k=h.index(this)),a.index=k,!1!==b.open(h,a)&&g.preventDefault())};a=a||{};d=a.index||0;c&&!1!==a.live?p.undelegate(c,"click.fb-start").delegate(c+":not('.fancybox-item, .fancybox-nav')", -"click.fb-start",l):e.unbind("click.fb-start").bind("click.fb-start",l);this.filter("[data-fancybox-start=1]").trigger("click");return this};p.ready(function(){var a,d;f.scrollbarWidth===w&&(f.scrollbarWidth=function(){var a=f('
').appendTo("body"),b=a.children(),b=b.innerWidth()-b.height(99).innerWidth();a.remove();return b});f.support.fixedPosition===w&&(f.support.fixedPosition=function(){var a=f('
').appendTo("body"), -b=20===a[0].offsetTop||15===a[0].offsetTop;a.remove();return b}());f.extend(b.defaults,{scrollbarWidth:f.scrollbarWidth(),fixed:f.support.fixedPosition,parent:f("body")});a=f(s).width();K.addClass("fancybox-lock-test");d=f(s).width();K.removeClass("fancybox-lock-test");f("").appendTo("head")})})(window,document,jQuery); \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/packages/fancyBox-master/sprite.psd b/mayan/apps/appearance/static/appearance/packages/fancyBox-master/sprite.psd deleted file mode 100644 index 6f2032db60b78d7858a42f3ce7c8578dfd5639fc..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 250491 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[a+this.length]:this[a]:d.call(this)},pushStack:function(a){var b=n.merge(this.constructor(),a);return b.prevObject=this,b.context=this.context,b},each:function(a,b){return n.each(this,a,b)},map:function(a){return this.pushStack(n.map(this,function(b,c){return a.call(b,c,b)}))},slice:function(){return this.pushStack(d.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(a){var b=this.length,c=+a+(0>a?b:0);return this.pushStack(c>=0&&b>c?[this[c]]:[])},end:function(){return this.prevObject||this.constructor(null)},push:f,sort:c.sort,splice:c.splice},n.extend=n.fn.extend=function(){var a,b,c,d,e,f,g=arguments[0]||{},h=1,i=arguments.length,j=!1;for("boolean"==typeof g&&(j=g,g=arguments[h]||{},h++),"object"==typeof g||n.isFunction(g)||(g={}),h===i&&(g=this,h--);i>h;h++)if(null!=(a=arguments[h]))for(b in a)c=g[b],d=a[b],g!==d&&(j&&d&&(n.isPlainObject(d)||(e=n.isArray(d)))?(e?(e=!1,f=c&&n.isArray(c)?c:[]):f=c&&n.isPlainObject(c)?c:{},g[b]=n.extend(j,f,d)):void 0!==d&&(g[b]=d));return g},n.extend({expando:"jQuery"+(m+Math.random()).replace(/\D/g,""),isReady:!0,error:function(a){throw new Error(a)},noop:function(){},isFunction:function(a){return"function"===n.type(a)},isArray:Array.isArray,isWindow:function(a){return null!=a&&a===a.window},isNumeric:function(a){return!n.isArray(a)&&a-parseFloat(a)+1>=0},isPlainObject:function(a){return"object"!==n.type(a)||a.nodeType||n.isWindow(a)?!1:a.constructor&&!j.call(a.constructor.prototype,"isPrototypeOf")?!1:!0},isEmptyObject:function(a){var b;for(b in a)return!1;return!0},type:function(a){return null==a?a+"":"object"==typeof a||"function"==typeof a?h[i.call(a)]||"object":typeof a},globalEval:function(a){var b,c=eval;a=n.trim(a),a&&(1===a.indexOf("use strict")?(b=l.createElement("script"),b.text=a,l.head.appendChild(b).parentNode.removeChild(b)):c(a))},camelCase:function(a){return a.replace(p,"ms-").replace(q,r)},nodeName:function(a,b){return a.nodeName&&a.nodeName.toLowerCase()===b.toLowerCase()},each:function(a,b,c){var d,e=0,f=a.length,g=s(a);if(c){if(g){for(;f>e;e++)if(d=b.apply(a[e],c),d===!1)break}else for(e in a)if(d=b.apply(a[e],c),d===!1)break}else if(g){for(;f>e;e++)if(d=b.call(a[e],e,a[e]),d===!1)break}else for(e in a)if(d=b.call(a[e],e,a[e]),d===!1)break;return a},trim:function(a){return null==a?"":(a+"").replace(o,"")},makeArray:function(a,b){var c=b||[];return null!=a&&(s(Object(a))?n.merge(c,"string"==typeof a?[a]:a):f.call(c,a)),c},inArray:function(a,b,c){return null==b?-1:g.call(b,a,c)},merge:function(a,b){for(var c=+b.length,d=0,e=a.length;c>d;d++)a[e++]=b[d];return a.length=e,a},grep:function(a,b,c){for(var d,e=[],f=0,g=a.length,h=!c;g>f;f++)d=!b(a[f],f),d!==h&&e.push(a[f]);return e},map:function(a,b,c){var d,f=0,g=a.length,h=s(a),i=[];if(h)for(;g>f;f++)d=b(a[f],f,c),null!=d&&i.push(d);else for(f in a)d=b(a[f],f,c),null!=d&&i.push(d);return e.apply([],i)},guid:1,proxy:function(a,b){var c,e,f;return"string"==typeof b&&(c=a[b],b=a,a=c),n.isFunction(a)?(e=d.call(arguments,2),f=function(){return a.apply(b||this,e.concat(d.call(arguments)))},f.guid=a.guid=a.guid||n.guid++,f):void 0},now:Date.now,support:k}),n.each("Boolean Number String Function Array Date RegExp Object Error".split(" "),function(a,b){h["[object "+b+"]"]=b.toLowerCase()});function s(a){var b="length"in a&&a.length,c=n.type(a);return"function"===c||n.isWindow(a)?!1:1===a.nodeType&&b?!0:"array"===c||0===b||"number"==typeof b&&b>0&&b-1 in a}var t=function(a){var b,c,d,e,f,g,h,i,j,k,l,m,n,o,p,q,r,s,t,u="sizzle"+1*new Date,v=a.document,w=0,x=0,y=ha(),z=ha(),A=ha(),B=function(a,b){return a===b&&(l=!0),0},C=1<<31,D={}.hasOwnProperty,E=[],F=E.pop,G=E.push,H=E.push,I=E.slice,J=function(a,b){for(var c=0,d=a.length;d>c;c++)if(a[c]===b)return c;return-1},K="checked|selected|async|autofocus|autoplay|controls|defer|disabled|hidden|ismap|loop|multiple|open|readonly|required|scoped",L="[\\x20\\t\\r\\n\\f]",M="(?:\\\\.|[\\w-]|[^\\x00-\\xa0])+",N=M.replace("w","w#"),O="\\["+L+"*("+M+")(?:"+L+"*([*^$|!~]?=)"+L+"*(?:'((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\"|("+N+"))|)"+L+"*\\]",P=":("+M+")(?:\\((('((?:\\\\.|[^\\\\'])*)'|\"((?:\\\\.|[^\\\\\"])*)\")|((?:\\\\.|[^\\\\()[\\]]|"+O+")*)|.*)\\)|)",Q=new RegExp(L+"+","g"),R=new RegExp("^"+L+"+|((?:^|[^\\\\])(?:\\\\.)*)"+L+"+$","g"),S=new RegExp("^"+L+"*,"+L+"*"),T=new RegExp("^"+L+"*([>+~]|"+L+")"+L+"*"),U=new RegExp("="+L+"*([^\\]'\"]*?)"+L+"*\\]","g"),V=new RegExp(P),W=new RegExp("^"+N+"$"),X={ID:new RegExp("^#("+M+")"),CLASS:new RegExp("^\\.("+M+")"),TAG:new RegExp("^("+M.replace("w","w*")+")"),ATTR:new RegExp("^"+O),PSEUDO:new RegExp("^"+P),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+L+"*(even|odd|(([+-]|)(\\d*)n|)"+L+"*(?:([+-]|)"+L+"*(\\d+)|))"+L+"*\\)|)","i"),bool:new RegExp("^(?:"+K+")$","i"),needsContext:new RegExp("^"+L+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+L+"*((?:-\\d)?\\d*)"+L+"*\\)|)(?=[^-]|$)","i")},Y=/^(?:input|select|textarea|button)$/i,Z=/^h\d$/i,$=/^[^{]+\{\s*\[native \w/,_=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,aa=/[+~]/,ba=/'|\\/g,ca=new RegExp("\\\\([\\da-f]{1,6}"+L+"?|("+L+")|.)","ig"),da=function(a,b,c){var d="0x"+b-65536;return d!==d||c?b:0>d?String.fromCharCode(d+65536):String.fromCharCode(d>>10|55296,1023&d|56320)},ea=function(){m()};try{H.apply(E=I.call(v.childNodes),v.childNodes),E[v.childNodes.length].nodeType}catch(fa){H={apply:E.length?function(a,b){G.apply(a,I.call(b))}:function(a,b){var c=a.length,d=0;while(a[c++]=b[d++]);a.length=c-1}}}function ga(a,b,d,e){var f,h,j,k,l,o,r,s,w,x;if((b?b.ownerDocument||b:v)!==n&&m(b),b=b||n,d=d||[],k=b.nodeType,"string"!=typeof a||!a||1!==k&&9!==k&&11!==k)return d;if(!e&&p){if(11!==k&&(f=_.exec(a)))if(j=f[1]){if(9===k){if(h=b.getElementById(j),!h||!h.parentNode)return d;if(h.id===j)return d.push(h),d}else if(b.ownerDocument&&(h=b.ownerDocument.getElementById(j))&&t(b,h)&&h.id===j)return d.push(h),d}else{if(f[2])return H.apply(d,b.getElementsByTagName(a)),d;if((j=f[3])&&c.getElementsByClassName)return H.apply(d,b.getElementsByClassName(j)),d}if(c.qsa&&(!q||!q.test(a))){if(s=r=u,w=b,x=1!==k&&a,1===k&&"object"!==b.nodeName.toLowerCase()){o=g(a),(r=b.getAttribute("id"))?s=r.replace(ba,"\\$&"):b.setAttribute("id",s),s="[id='"+s+"'] ",l=o.length;while(l--)o[l]=s+ra(o[l]);w=aa.test(a)&&pa(b.parentNode)||b,x=o.join(",")}if(x)try{return H.apply(d,w.querySelectorAll(x)),d}catch(y){}finally{r||b.removeAttribute("id")}}}return i(a.replace(R,"$1"),b,d,e)}function ha(){var a=[];function b(c,e){return a.push(c+" ")>d.cacheLength&&delete b[a.shift()],b[c+" "]=e}return b}function ia(a){return a[u]=!0,a}function ja(a){var b=n.createElement("div");try{return!!a(b)}catch(c){return!1}finally{b.parentNode&&b.parentNode.removeChild(b),b=null}}function ka(a,b){var c=a.split("|"),e=a.length;while(e--)d.attrHandle[c[e]]=b}function la(a,b){var c=b&&a,d=c&&1===a.nodeType&&1===b.nodeType&&(~b.sourceIndex||C)-(~a.sourceIndex||C);if(d)return d;if(c)while(c=c.nextSibling)if(c===b)return-1;return a?1:-1}function ma(a){return function(b){var c=b.nodeName.toLowerCase();return"input"===c&&b.type===a}}function na(a){return function(b){var c=b.nodeName.toLowerCase();return("input"===c||"button"===c)&&b.type===a}}function oa(a){return ia(function(b){return b=+b,ia(function(c,d){var e,f=a([],c.length,b),g=f.length;while(g--)c[e=f[g]]&&(c[e]=!(d[e]=c[e]))})})}function pa(a){return a&&"undefined"!=typeof a.getElementsByTagName&&a}c=ga.support={},f=ga.isXML=function(a){var b=a&&(a.ownerDocument||a).documentElement;return b?"HTML"!==b.nodeName:!1},m=ga.setDocument=function(a){var b,e,g=a?a.ownerDocument||a:v;return g!==n&&9===g.nodeType&&g.documentElement?(n=g,o=g.documentElement,e=g.defaultView,e&&e!==e.top&&(e.addEventListener?e.addEventListener("unload",ea,!1):e.attachEvent&&e.attachEvent("onunload",ea)),p=!f(g),c.attributes=ja(function(a){return a.className="i",!a.getAttribute("className")}),c.getElementsByTagName=ja(function(a){return a.appendChild(g.createComment("")),!a.getElementsByTagName("*").length}),c.getElementsByClassName=$.test(g.getElementsByClassName),c.getById=ja(function(a){return o.appendChild(a).id=u,!g.getElementsByName||!g.getElementsByName(u).length}),c.getById?(d.find.ID=function(a,b){if("undefined"!=typeof b.getElementById&&p){var c=b.getElementById(a);return c&&c.parentNode?[c]:[]}},d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){return a.getAttribute("id")===b}}):(delete d.find.ID,d.filter.ID=function(a){var b=a.replace(ca,da);return function(a){var c="undefined"!=typeof a.getAttributeNode&&a.getAttributeNode("id");return c&&c.value===b}}),d.find.TAG=c.getElementsByTagName?function(a,b){return"undefined"!=typeof b.getElementsByTagName?b.getElementsByTagName(a):c.qsa?b.querySelectorAll(a):void 0}:function(a,b){var c,d=[],e=0,f=b.getElementsByTagName(a);if("*"===a){while(c=f[e++])1===c.nodeType&&d.push(c);return d}return f},d.find.CLASS=c.getElementsByClassName&&function(a,b){return p?b.getElementsByClassName(a):void 0},r=[],q=[],(c.qsa=$.test(g.querySelectorAll))&&(ja(function(a){o.appendChild(a).innerHTML="",a.querySelectorAll("[msallowcapture^='']").length&&q.push("[*^$]="+L+"*(?:''|\"\")"),a.querySelectorAll("[selected]").length||q.push("\\["+L+"*(?:value|"+K+")"),a.querySelectorAll("[id~="+u+"-]").length||q.push("~="),a.querySelectorAll(":checked").length||q.push(":checked"),a.querySelectorAll("a#"+u+"+*").length||q.push(".#.+[+~]")}),ja(function(a){var b=g.createElement("input");b.setAttribute("type","hidden"),a.appendChild(b).setAttribute("name","D"),a.querySelectorAll("[name=d]").length&&q.push("name"+L+"*[*^$|!~]?="),a.querySelectorAll(":enabled").length||q.push(":enabled",":disabled"),a.querySelectorAll("*,:x"),q.push(",.*:")})),(c.matchesSelector=$.test(s=o.matches||o.webkitMatchesSelector||o.mozMatchesSelector||o.oMatchesSelector||o.msMatchesSelector))&&ja(function(a){c.disconnectedMatch=s.call(a,"div"),s.call(a,"[s!='']:x"),r.push("!=",P)}),q=q.length&&new RegExp(q.join("|")),r=r.length&&new RegExp(r.join("|")),b=$.test(o.compareDocumentPosition),t=b||$.test(o.contains)?function(a,b){var c=9===a.nodeType?a.documentElement:a,d=b&&b.parentNode;return a===d||!(!d||1!==d.nodeType||!(c.contains?c.contains(d):a.compareDocumentPosition&&16&a.compareDocumentPosition(d)))}:function(a,b){if(b)while(b=b.parentNode)if(b===a)return!0;return!1},B=b?function(a,b){if(a===b)return l=!0,0;var d=!a.compareDocumentPosition-!b.compareDocumentPosition;return d?d:(d=(a.ownerDocument||a)===(b.ownerDocument||b)?a.compareDocumentPosition(b):1,1&d||!c.sortDetached&&b.compareDocumentPosition(a)===d?a===g||a.ownerDocument===v&&t(v,a)?-1:b===g||b.ownerDocument===v&&t(v,b)?1:k?J(k,a)-J(k,b):0:4&d?-1:1)}:function(a,b){if(a===b)return l=!0,0;var c,d=0,e=a.parentNode,f=b.parentNode,h=[a],i=[b];if(!e||!f)return a===g?-1:b===g?1:e?-1:f?1:k?J(k,a)-J(k,b):0;if(e===f)return la(a,b);c=a;while(c=c.parentNode)h.unshift(c);c=b;while(c=c.parentNode)i.unshift(c);while(h[d]===i[d])d++;return d?la(h[d],i[d]):h[d]===v?-1:i[d]===v?1:0},g):n},ga.matches=function(a,b){return ga(a,null,null,b)},ga.matchesSelector=function(a,b){if((a.ownerDocument||a)!==n&&m(a),b=b.replace(U,"='$1']"),!(!c.matchesSelector||!p||r&&r.test(b)||q&&q.test(b)))try{var d=s.call(a,b);if(d||c.disconnectedMatch||a.document&&11!==a.document.nodeType)return d}catch(e){}return ga(b,n,null,[a]).length>0},ga.contains=function(a,b){return(a.ownerDocument||a)!==n&&m(a),t(a,b)},ga.attr=function(a,b){(a.ownerDocument||a)!==n&&m(a);var e=d.attrHandle[b.toLowerCase()],f=e&&D.call(d.attrHandle,b.toLowerCase())?e(a,b,!p):void 0;return void 0!==f?f:c.attributes||!p?a.getAttribute(b):(f=a.getAttributeNode(b))&&f.specified?f.value:null},ga.error=function(a){throw new Error("Syntax error, unrecognized expression: "+a)},ga.uniqueSort=function(a){var b,d=[],e=0,f=0;if(l=!c.detectDuplicates,k=!c.sortStable&&a.slice(0),a.sort(B),l){while(b=a[f++])b===a[f]&&(e=d.push(f));while(e--)a.splice(d[e],1)}return k=null,a},e=ga.getText=function(a){var b,c="",d=0,f=a.nodeType;if(f){if(1===f||9===f||11===f){if("string"==typeof a.textContent)return a.textContent;for(a=a.firstChild;a;a=a.nextSibling)c+=e(a)}else if(3===f||4===f)return a.nodeValue}else while(b=a[d++])c+=e(b);return c},d=ga.selectors={cacheLength:50,createPseudo:ia,match:X,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(a){return a[1]=a[1].replace(ca,da),a[3]=(a[3]||a[4]||a[5]||"").replace(ca,da),"~="===a[2]&&(a[3]=" "+a[3]+" "),a.slice(0,4)},CHILD:function(a){return a[1]=a[1].toLowerCase(),"nth"===a[1].slice(0,3)?(a[3]||ga.error(a[0]),a[4]=+(a[4]?a[5]+(a[6]||1):2*("even"===a[3]||"odd"===a[3])),a[5]=+(a[7]+a[8]||"odd"===a[3])):a[3]&&ga.error(a[0]),a},PSEUDO:function(a){var b,c=!a[6]&&a[2];return X.CHILD.test(a[0])?null:(a[3]?a[2]=a[4]||a[5]||"":c&&V.test(c)&&(b=g(c,!0))&&(b=c.indexOf(")",c.length-b)-c.length)&&(a[0]=a[0].slice(0,b),a[2]=c.slice(0,b)),a.slice(0,3))}},filter:{TAG:function(a){var b=a.replace(ca,da).toLowerCase();return"*"===a?function(){return!0}:function(a){return a.nodeName&&a.nodeName.toLowerCase()===b}},CLASS:function(a){var b=y[a+" "];return b||(b=new RegExp("(^|"+L+")"+a+"("+L+"|$)"))&&y(a,function(a){return b.test("string"==typeof a.className&&a.className||"undefined"!=typeof a.getAttribute&&a.getAttribute("class")||"")})},ATTR:function(a,b,c){return function(d){var e=ga.attr(d,a);return null==e?"!="===b:b?(e+="","="===b?e===c:"!="===b?e!==c:"^="===b?c&&0===e.indexOf(c):"*="===b?c&&e.indexOf(c)>-1:"$="===b?c&&e.slice(-c.length)===c:"~="===b?(" "+e.replace(Q," ")+" ").indexOf(c)>-1:"|="===b?e===c||e.slice(0,c.length+1)===c+"-":!1):!0}},CHILD:function(a,b,c,d,e){var f="nth"!==a.slice(0,3),g="last"!==a.slice(-4),h="of-type"===b;return 1===d&&0===e?function(a){return!!a.parentNode}:function(b,c,i){var j,k,l,m,n,o,p=f!==g?"nextSibling":"previousSibling",q=b.parentNode,r=h&&b.nodeName.toLowerCase(),s=!i&&!h;if(q){if(f){while(p){l=b;while(l=l[p])if(h?l.nodeName.toLowerCase()===r:1===l.nodeType)return!1;o=p="only"===a&&!o&&"nextSibling"}return!0}if(o=[g?q.firstChild:q.lastChild],g&&s){k=q[u]||(q[u]={}),j=k[a]||[],n=j[0]===w&&j[1],m=j[0]===w&&j[2],l=n&&q.childNodes[n];while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if(1===l.nodeType&&++m&&l===b){k[a]=[w,n,m];break}}else if(s&&(j=(b[u]||(b[u]={}))[a])&&j[0]===w)m=j[1];else while(l=++n&&l&&l[p]||(m=n=0)||o.pop())if((h?l.nodeName.toLowerCase()===r:1===l.nodeType)&&++m&&(s&&((l[u]||(l[u]={}))[a]=[w,m]),l===b))break;return m-=e,m===d||m%d===0&&m/d>=0}}},PSEUDO:function(a,b){var c,e=d.pseudos[a]||d.setFilters[a.toLowerCase()]||ga.error("unsupported pseudo: "+a);return e[u]?e(b):e.length>1?(c=[a,a,"",b],d.setFilters.hasOwnProperty(a.toLowerCase())?ia(function(a,c){var d,f=e(a,b),g=f.length;while(g--)d=J(a,f[g]),a[d]=!(c[d]=f[g])}):function(a){return e(a,0,c)}):e}},pseudos:{not:ia(function(a){var b=[],c=[],d=h(a.replace(R,"$1"));return d[u]?ia(function(a,b,c,e){var f,g=d(a,null,e,[]),h=a.length;while(h--)(f=g[h])&&(a[h]=!(b[h]=f))}):function(a,e,f){return b[0]=a,d(b,null,f,c),b[0]=null,!c.pop()}}),has:ia(function(a){return function(b){return ga(a,b).length>0}}),contains:ia(function(a){return a=a.replace(ca,da),function(b){return(b.textContent||b.innerText||e(b)).indexOf(a)>-1}}),lang:ia(function(a){return W.test(a||"")||ga.error("unsupported lang: "+a),a=a.replace(ca,da).toLowerCase(),function(b){var c;do if(c=p?b.lang:b.getAttribute("xml:lang")||b.getAttribute("lang"))return c=c.toLowerCase(),c===a||0===c.indexOf(a+"-");while((b=b.parentNode)&&1===b.nodeType);return!1}}),target:function(b){var c=a.location&&a.location.hash;return c&&c.slice(1)===b.id},root:function(a){return a===o},focus:function(a){return a===n.activeElement&&(!n.hasFocus||n.hasFocus())&&!!(a.type||a.href||~a.tabIndex)},enabled:function(a){return a.disabled===!1},disabled:function(a){return a.disabled===!0},checked:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&!!a.checked||"option"===b&&!!a.selected},selected:function(a){return a.parentNode&&a.parentNode.selectedIndex,a.selected===!0},empty:function(a){for(a=a.firstChild;a;a=a.nextSibling)if(a.nodeType<6)return!1;return!0},parent:function(a){return!d.pseudos.empty(a)},header:function(a){return Z.test(a.nodeName)},input:function(a){return Y.test(a.nodeName)},button:function(a){var b=a.nodeName.toLowerCase();return"input"===b&&"button"===a.type||"button"===b},text:function(a){var b;return"input"===a.nodeName.toLowerCase()&&"text"===a.type&&(null==(b=a.getAttribute("type"))||"text"===b.toLowerCase())},first:oa(function(){return[0]}),last:oa(function(a,b){return[b-1]}),eq:oa(function(a,b,c){return[0>c?c+b:c]}),even:oa(function(a,b){for(var c=0;b>c;c+=2)a.push(c);return a}),odd:oa(function(a,b){for(var c=1;b>c;c+=2)a.push(c);return a}),lt:oa(function(a,b,c){for(var d=0>c?c+b:c;--d>=0;)a.push(d);return a}),gt:oa(function(a,b,c){for(var d=0>c?c+b:c;++db;b++)d+=a[b].value;return d}function sa(a,b,c){var d=b.dir,e=c&&"parentNode"===d,f=x++;return b.first?function(b,c,f){while(b=b[d])if(1===b.nodeType||e)return a(b,c,f)}:function(b,c,g){var h,i,j=[w,f];if(g){while(b=b[d])if((1===b.nodeType||e)&&a(b,c,g))return!0}else while(b=b[d])if(1===b.nodeType||e){if(i=b[u]||(b[u]={}),(h=i[d])&&h[0]===w&&h[1]===f)return j[2]=h[2];if(i[d]=j,j[2]=a(b,c,g))return!0}}}function ta(a){return a.length>1?function(b,c,d){var e=a.length;while(e--)if(!a[e](b,c,d))return!1;return!0}:a[0]}function ua(a,b,c){for(var d=0,e=b.length;e>d;d++)ga(a,b[d],c);return c}function va(a,b,c,d,e){for(var f,g=[],h=0,i=a.length,j=null!=b;i>h;h++)(f=a[h])&&(!c||c(f,d,e))&&(g.push(f),j&&b.push(h));return g}function wa(a,b,c,d,e,f){return d&&!d[u]&&(d=wa(d)),e&&!e[u]&&(e=wa(e,f)),ia(function(f,g,h,i){var j,k,l,m=[],n=[],o=g.length,p=f||ua(b||"*",h.nodeType?[h]:h,[]),q=!a||!f&&b?p:va(p,m,a,h,i),r=c?e||(f?a:o||d)?[]:g:q;if(c&&c(q,r,h,i),d){j=va(r,n),d(j,[],h,i),k=j.length;while(k--)(l=j[k])&&(r[n[k]]=!(q[n[k]]=l))}if(f){if(e||a){if(e){j=[],k=r.length;while(k--)(l=r[k])&&j.push(q[k]=l);e(null,r=[],j,i)}k=r.length;while(k--)(l=r[k])&&(j=e?J(f,l):m[k])>-1&&(f[j]=!(g[j]=l))}}else r=va(r===g?r.splice(o,r.length):r),e?e(null,g,r,i):H.apply(g,r)})}function xa(a){for(var b,c,e,f=a.length,g=d.relative[a[0].type],h=g||d.relative[" "],i=g?1:0,k=sa(function(a){return a===b},h,!0),l=sa(function(a){return J(b,a)>-1},h,!0),m=[function(a,c,d){var e=!g&&(d||c!==j)||((b=c).nodeType?k(a,c,d):l(a,c,d));return b=null,e}];f>i;i++)if(c=d.relative[a[i].type])m=[sa(ta(m),c)];else{if(c=d.filter[a[i].type].apply(null,a[i].matches),c[u]){for(e=++i;f>e;e++)if(d.relative[a[e].type])break;return wa(i>1&&ta(m),i>1&&ra(a.slice(0,i-1).concat({value:" "===a[i-2].type?"*":""})).replace(R,"$1"),c,e>i&&xa(a.slice(i,e)),f>e&&xa(a=a.slice(e)),f>e&&ra(a))}m.push(c)}return ta(m)}function ya(a,b){var c=b.length>0,e=a.length>0,f=function(f,g,h,i,k){var l,m,o,p=0,q="0",r=f&&[],s=[],t=j,u=f||e&&d.find.TAG("*",k),v=w+=null==t?1:Math.random()||.1,x=u.length;for(k&&(j=g!==n&&g);q!==x&&null!=(l=u[q]);q++){if(e&&l){m=0;while(o=a[m++])if(o(l,g,h)){i.push(l);break}k&&(w=v)}c&&((l=!o&&l)&&p--,f&&r.push(l))}if(p+=q,c&&q!==p){m=0;while(o=b[m++])o(r,s,g,h);if(f){if(p>0)while(q--)r[q]||s[q]||(s[q]=F.call(i));s=va(s)}H.apply(i,s),k&&!f&&s.length>0&&p+b.length>1&&ga.uniqueSort(i)}return k&&(w=v,j=t),r};return c?ia(f):f}return h=ga.compile=function(a,b){var c,d=[],e=[],f=A[a+" "];if(!f){b||(b=g(a)),c=b.length;while(c--)f=xa(b[c]),f[u]?d.push(f):e.push(f);f=A(a,ya(e,d)),f.selector=a}return f},i=ga.select=function(a,b,e,f){var i,j,k,l,m,n="function"==typeof a&&a,o=!f&&g(a=n.selector||a);if(e=e||[],1===o.length){if(j=o[0]=o[0].slice(0),j.length>2&&"ID"===(k=j[0]).type&&c.getById&&9===b.nodeType&&p&&d.relative[j[1].type]){if(b=(d.find.ID(k.matches[0].replace(ca,da),b)||[])[0],!b)return e;n&&(b=b.parentNode),a=a.slice(j.shift().value.length)}i=X.needsContext.test(a)?0:j.length;while(i--){if(k=j[i],d.relative[l=k.type])break;if((m=d.find[l])&&(f=m(k.matches[0].replace(ca,da),aa.test(j[0].type)&&pa(b.parentNode)||b))){if(j.splice(i,1),a=f.length&&ra(j),!a)return H.apply(e,f),e;break}}}return(n||h(a,o))(f,b,!p,e,aa.test(a)&&pa(b.parentNode)||b),e},c.sortStable=u.split("").sort(B).join("")===u,c.detectDuplicates=!!l,m(),c.sortDetached=ja(function(a){return 1&a.compareDocumentPosition(n.createElement("div"))}),ja(function(a){return a.innerHTML="","#"===a.firstChild.getAttribute("href")})||ka("type|href|height|width",function(a,b,c){return c?void 0:a.getAttribute(b,"type"===b.toLowerCase()?1:2)}),c.attributes&&ja(function(a){return a.innerHTML="",a.firstChild.setAttribute("value",""),""===a.firstChild.getAttribute("value")})||ka("value",function(a,b,c){return c||"input"!==a.nodeName.toLowerCase()?void 0:a.defaultValue}),ja(function(a){return null==a.getAttribute("disabled")})||ka(K,function(a,b,c){var d;return c?void 0:a[b]===!0?b.toLowerCase():(d=a.getAttributeNode(b))&&d.specified?d.value:null}),ga}(a);n.find=t,n.expr=t.selectors,n.expr[":"]=n.expr.pseudos,n.unique=t.uniqueSort,n.text=t.getText,n.isXMLDoc=t.isXML,n.contains=t.contains;var u=n.expr.match.needsContext,v=/^<(\w+)\s*\/?>(?:<\/\1>|)$/,w=/^.[^:#\[\.,]*$/;function x(a,b,c){if(n.isFunction(b))return n.grep(a,function(a,d){return!!b.call(a,d,a)!==c});if(b.nodeType)return n.grep(a,function(a){return a===b!==c});if("string"==typeof b){if(w.test(b))return n.filter(b,a,c);b=n.filter(b,a)}return n.grep(a,function(a){return g.call(b,a)>=0!==c})}n.filter=function(a,b,c){var d=b[0];return c&&(a=":not("+a+")"),1===b.length&&1===d.nodeType?n.find.matchesSelector(d,a)?[d]:[]:n.find.matches(a,n.grep(b,function(a){return 1===a.nodeType}))},n.fn.extend({find:function(a){var b,c=this.length,d=[],e=this;if("string"!=typeof a)return this.pushStack(n(a).filter(function(){for(b=0;c>b;b++)if(n.contains(e[b],this))return!0}));for(b=0;c>b;b++)n.find(a,e[b],d);return d=this.pushStack(c>1?n.unique(d):d),d.selector=this.selector?this.selector+" "+a:a,d},filter:function(a){return this.pushStack(x(this,a||[],!1))},not:function(a){return this.pushStack(x(this,a||[],!0))},is:function(a){return!!x(this,"string"==typeof a&&u.test(a)?n(a):a||[],!1).length}});var y,z=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]*))$/,A=n.fn.init=function(a,b){var c,d;if(!a)return this;if("string"==typeof a){if(c="<"===a[0]&&">"===a[a.length-1]&&a.length>=3?[null,a,null]:z.exec(a),!c||!c[1]&&b)return!b||b.jquery?(b||y).find(a):this.constructor(b).find(a);if(c[1]){if(b=b instanceof n?b[0]:b,n.merge(this,n.parseHTML(c[1],b&&b.nodeType?b.ownerDocument||b:l,!0)),v.test(c[1])&&n.isPlainObject(b))for(c in b)n.isFunction(this[c])?this[c](b[c]):this.attr(c,b[c]);return this}return d=l.getElementById(c[2]),d&&d.parentNode&&(this.length=1,this[0]=d),this.context=l,this.selector=a,this}return a.nodeType?(this.context=this[0]=a,this.length=1,this):n.isFunction(a)?"undefined"!=typeof y.ready?y.ready(a):a(n):(void 0!==a.selector&&(this.selector=a.selector,this.context=a.context),n.makeArray(a,this))};A.prototype=n.fn,y=n(l);var B=/^(?:parents|prev(?:Until|All))/,C={children:!0,contents:!0,next:!0,prev:!0};n.extend({dir:function(a,b,c){var d=[],e=void 0!==c;while((a=a[b])&&9!==a.nodeType)if(1===a.nodeType){if(e&&n(a).is(c))break;d.push(a)}return d},sibling:function(a,b){for(var c=[];a;a=a.nextSibling)1===a.nodeType&&a!==b&&c.push(a);return c}}),n.fn.extend({has:function(a){var b=n(a,this),c=b.length;return this.filter(function(){for(var a=0;c>a;a++)if(n.contains(this,b[a]))return!0})},closest:function(a,b){for(var c,d=0,e=this.length,f=[],g=u.test(a)||"string"!=typeof a?n(a,b||this.context):0;e>d;d++)for(c=this[d];c&&c!==b;c=c.parentNode)if(c.nodeType<11&&(g?g.index(c)>-1:1===c.nodeType&&n.find.matchesSelector(c,a))){f.push(c);break}return this.pushStack(f.length>1?n.unique(f):f)},index:function(a){return a?"string"==typeof a?g.call(n(a),this[0]):g.call(this,a.jquery?a[0]:a):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(a,b){return this.pushStack(n.unique(n.merge(this.get(),n(a,b))))},addBack:function(a){return this.add(null==a?this.prevObject:this.prevObject.filter(a))}});function D(a,b){while((a=a[b])&&1!==a.nodeType);return a}n.each({parent:function(a){var b=a.parentNode;return b&&11!==b.nodeType?b:null},parents:function(a){return n.dir(a,"parentNode")},parentsUntil:function(a,b,c){return n.dir(a,"parentNode",c)},next:function(a){return D(a,"nextSibling")},prev:function(a){return D(a,"previousSibling")},nextAll:function(a){return n.dir(a,"nextSibling")},prevAll:function(a){return n.dir(a,"previousSibling")},nextUntil:function(a,b,c){return n.dir(a,"nextSibling",c)},prevUntil:function(a,b,c){return n.dir(a,"previousSibling",c)},siblings:function(a){return n.sibling((a.parentNode||{}).firstChild,a)},children:function(a){return n.sibling(a.firstChild)},contents:function(a){return a.contentDocument||n.merge([],a.childNodes)}},function(a,b){n.fn[a]=function(c,d){var e=n.map(this,b,c);return"Until"!==a.slice(-5)&&(d=c),d&&"string"==typeof d&&(e=n.filter(d,e)),this.length>1&&(C[a]||n.unique(e),B.test(a)&&e.reverse()),this.pushStack(e)}});var E=/\S+/g,F={};function G(a){var b=F[a]={};return n.each(a.match(E)||[],function(a,c){b[c]=!0}),b}n.Callbacks=function(a){a="string"==typeof a?F[a]||G(a):n.extend({},a);var b,c,d,e,f,g,h=[],i=!a.once&&[],j=function(l){for(b=a.memory&&l,c=!0,g=e||0,e=0,f=h.length,d=!0;h&&f>g;g++)if(h[g].apply(l[0],l[1])===!1&&a.stopOnFalse){b=!1;break}d=!1,h&&(i?i.length&&j(i.shift()):b?h=[]:k.disable())},k={add:function(){if(h){var c=h.length;!function g(b){n.each(b,function(b,c){var d=n.type(c);"function"===d?a.unique&&k.has(c)||h.push(c):c&&c.length&&"string"!==d&&g(c)})}(arguments),d?f=h.length:b&&(e=c,j(b))}return this},remove:function(){return h&&n.each(arguments,function(a,b){var c;while((c=n.inArray(b,h,c))>-1)h.splice(c,1),d&&(f>=c&&f--,g>=c&&g--)}),this},has:function(a){return a?n.inArray(a,h)>-1:!(!h||!h.length)},empty:function(){return h=[],f=0,this},disable:function(){return h=i=b=void 0,this},disabled:function(){return!h},lock:function(){return i=void 0,b||k.disable(),this},locked:function(){return!i},fireWith:function(a,b){return!h||c&&!i||(b=b||[],b=[a,b.slice?b.slice():b],d?i.push(b):j(b)),this},fire:function(){return k.fireWith(this,arguments),this},fired:function(){return!!c}};return k},n.extend({Deferred:function(a){var b=[["resolve","done",n.Callbacks("once memory"),"resolved"],["reject","fail",n.Callbacks("once memory"),"rejected"],["notify","progress",n.Callbacks("memory")]],c="pending",d={state:function(){return c},always:function(){return e.done(arguments).fail(arguments),this},then:function(){var a=arguments;return n.Deferred(function(c){n.each(b,function(b,f){var g=n.isFunction(a[b])&&a[b];e[f[1]](function(){var a=g&&g.apply(this,arguments);a&&n.isFunction(a.promise)?a.promise().done(c.resolve).fail(c.reject).progress(c.notify):c[f[0]+"With"](this===d?c.promise():this,g?[a]:arguments)})}),a=null}).promise()},promise:function(a){return null!=a?n.extend(a,d):d}},e={};return d.pipe=d.then,n.each(b,function(a,f){var g=f[2],h=f[3];d[f[1]]=g.add,h&&g.add(function(){c=h},b[1^a][2].disable,b[2][2].lock),e[f[0]]=function(){return e[f[0]+"With"](this===e?d:this,arguments),this},e[f[0]+"With"]=g.fireWith}),d.promise(e),a&&a.call(e,e),e},when:function(a){var b=0,c=d.call(arguments),e=c.length,f=1!==e||a&&n.isFunction(a.promise)?e:0,g=1===f?a:n.Deferred(),h=function(a,b,c){return function(e){b[a]=this,c[a]=arguments.length>1?d.call(arguments):e,c===i?g.notifyWith(b,c):--f||g.resolveWith(b,c)}},i,j,k;if(e>1)for(i=new Array(e),j=new Array(e),k=new Array(e);e>b;b++)c[b]&&n.isFunction(c[b].promise)?c[b].promise().done(h(b,k,c)).fail(g.reject).progress(h(b,j,i)):--f;return f||g.resolveWith(k,c),g.promise()}});var H;n.fn.ready=function(a){return n.ready.promise().done(a),this},n.extend({isReady:!1,readyWait:1,holdReady:function(a){a?n.readyWait++:n.ready(!0)},ready:function(a){(a===!0?--n.readyWait:n.isReady)||(n.isReady=!0,a!==!0&&--n.readyWait>0||(H.resolveWith(l,[n]),n.fn.triggerHandler&&(n(l).triggerHandler("ready"),n(l).off("ready"))))}});function I(){l.removeEventListener("DOMContentLoaded",I,!1),a.removeEventListener("load",I,!1),n.ready()}n.ready.promise=function(b){return H||(H=n.Deferred(),"complete"===l.readyState?setTimeout(n.ready):(l.addEventListener("DOMContentLoaded",I,!1),a.addEventListener("load",I,!1))),H.promise(b)},n.ready.promise();var J=n.access=function(a,b,c,d,e,f,g){var h=0,i=a.length,j=null==c;if("object"===n.type(c)){e=!0;for(h in c)n.access(a,b,h,c[h],!0,f,g)}else if(void 0!==d&&(e=!0,n.isFunction(d)||(g=!0),j&&(g?(b.call(a,d),b=null):(j=b,b=function(a,b,c){return j.call(n(a),c)})),b))for(;i>h;h++)b(a[h],c,g?d:d.call(a[h],h,b(a[h],c)));return e?a:j?b.call(a):i?b(a[0],c):f};n.acceptData=function(a){return 1===a.nodeType||9===a.nodeType||!+a.nodeType};function K(){Object.defineProperty(this.cache={},0,{get:function(){return{}}}),this.expando=n.expando+K.uid++}K.uid=1,K.accepts=n.acceptData,K.prototype={key:function(a){if(!K.accepts(a))return 0;var b={},c=a[this.expando];if(!c){c=K.uid++;try{b[this.expando]={value:c},Object.defineProperties(a,b)}catch(d){b[this.expando]=c,n.extend(a,b)}}return this.cache[c]||(this.cache[c]={}),c},set:function(a,b,c){var d,e=this.key(a),f=this.cache[e];if("string"==typeof b)f[b]=c;else if(n.isEmptyObject(f))n.extend(this.cache[e],b);else for(d in b)f[d]=b[d];return f},get:function(a,b){var c=this.cache[this.key(a)];return void 0===b?c:c[b]},access:function(a,b,c){var d;return void 0===b||b&&"string"==typeof b&&void 0===c?(d=this.get(a,b),void 0!==d?d:this.get(a,n.camelCase(b))):(this.set(a,b,c),void 0!==c?c:b)},remove:function(a,b){var c,d,e,f=this.key(a),g=this.cache[f];if(void 0===b)this.cache[f]={};else{n.isArray(b)?d=b.concat(b.map(n.camelCase)):(e=n.camelCase(b),b in g?d=[b,e]:(d=e,d=d in g?[d]:d.match(E)||[])),c=d.length;while(c--)delete g[d[c]]}},hasData:function(a){return!n.isEmptyObject(this.cache[a[this.expando]]||{})},discard:function(a){a[this.expando]&&delete this.cache[a[this.expando]]}};var L=new K,M=new K,N=/^(?:\{[\w\W]*\}|\[[\w\W]*\])$/,O=/([A-Z])/g;function P(a,b,c){var d;if(void 0===c&&1===a.nodeType)if(d="data-"+b.replace(O,"-$1").toLowerCase(),c=a.getAttribute(d),"string"==typeof c){try{c="true"===c?!0:"false"===c?!1:"null"===c?null:+c+""===c?+c:N.test(c)?n.parseJSON(c):c}catch(e){}M.set(a,b,c)}else c=void 0;return c}n.extend({hasData:function(a){return M.hasData(a)||L.hasData(a)},data:function(a,b,c){ -return M.access(a,b,c)},removeData:function(a,b){M.remove(a,b)},_data:function(a,b,c){return L.access(a,b,c)},_removeData:function(a,b){L.remove(a,b)}}),n.fn.extend({data:function(a,b){var c,d,e,f=this[0],g=f&&f.attributes;if(void 0===a){if(this.length&&(e=M.get(f),1===f.nodeType&&!L.get(f,"hasDataAttrs"))){c=g.length;while(c--)g[c]&&(d=g[c].name,0===d.indexOf("data-")&&(d=n.camelCase(d.slice(5)),P(f,d,e[d])));L.set(f,"hasDataAttrs",!0)}return e}return"object"==typeof a?this.each(function(){M.set(this,a)}):J(this,function(b){var c,d=n.camelCase(a);if(f&&void 0===b){if(c=M.get(f,a),void 0!==c)return c;if(c=M.get(f,d),void 0!==c)return c;if(c=P(f,d,void 0),void 0!==c)return c}else this.each(function(){var c=M.get(this,d);M.set(this,d,b),-1!==a.indexOf("-")&&void 0!==c&&M.set(this,a,b)})},null,b,arguments.length>1,null,!0)},removeData:function(a){return this.each(function(){M.remove(this,a)})}}),n.extend({queue:function(a,b,c){var d;return a?(b=(b||"fx")+"queue",d=L.get(a,b),c&&(!d||n.isArray(c)?d=L.access(a,b,n.makeArray(c)):d.push(c)),d||[]):void 0},dequeue:function(a,b){b=b||"fx";var c=n.queue(a,b),d=c.length,e=c.shift(),f=n._queueHooks(a,b),g=function(){n.dequeue(a,b)};"inprogress"===e&&(e=c.shift(),d--),e&&("fx"===b&&c.unshift("inprogress"),delete f.stop,e.call(a,g,f)),!d&&f&&f.empty.fire()},_queueHooks:function(a,b){var c=b+"queueHooks";return L.get(a,c)||L.access(a,c,{empty:n.Callbacks("once memory").add(function(){L.remove(a,[b+"queue",c])})})}}),n.fn.extend({queue:function(a,b){var c=2;return"string"!=typeof a&&(b=a,a="fx",c--),arguments.lengthx",k.noCloneChecked=!!b.cloneNode(!0).lastChild.defaultValue}();var U="undefined";k.focusinBubbles="onfocusin"in a;var V=/^key/,W=/^(?:mouse|pointer|contextmenu)|click/,X=/^(?:focusinfocus|focusoutblur)$/,Y=/^([^.]*)(?:\.(.+)|)$/;function Z(){return!0}function $(){return!1}function _(){try{return l.activeElement}catch(a){}}n.event={global:{},add:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.get(a);if(r){c.handler&&(f=c,c=f.handler,e=f.selector),c.guid||(c.guid=n.guid++),(i=r.events)||(i=r.events={}),(g=r.handle)||(g=r.handle=function(b){return typeof n!==U&&n.event.triggered!==b.type?n.event.dispatch.apply(a,arguments):void 0}),b=(b||"").match(E)||[""],j=b.length;while(j--)h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o&&(l=n.event.special[o]||{},o=(e?l.delegateType:l.bindType)||o,l=n.event.special[o]||{},k=n.extend({type:o,origType:q,data:d,handler:c,guid:c.guid,selector:e,needsContext:e&&n.expr.match.needsContext.test(e),namespace:p.join(".")},f),(m=i[o])||(m=i[o]=[],m.delegateCount=0,l.setup&&l.setup.call(a,d,p,g)!==!1||a.addEventListener&&a.addEventListener(o,g,!1)),l.add&&(l.add.call(a,k),k.handler.guid||(k.handler.guid=c.guid)),e?m.splice(m.delegateCount++,0,k):m.push(k),n.event.global[o]=!0)}},remove:function(a,b,c,d,e){var f,g,h,i,j,k,l,m,o,p,q,r=L.hasData(a)&&L.get(a);if(r&&(i=r.events)){b=(b||"").match(E)||[""],j=b.length;while(j--)if(h=Y.exec(b[j])||[],o=q=h[1],p=(h[2]||"").split(".").sort(),o){l=n.event.special[o]||{},o=(d?l.delegateType:l.bindType)||o,m=i[o]||[],h=h[2]&&new RegExp("(^|\\.)"+p.join("\\.(?:.*\\.|)")+"(\\.|$)"),g=f=m.length;while(f--)k=m[f],!e&&q!==k.origType||c&&c.guid!==k.guid||h&&!h.test(k.namespace)||d&&d!==k.selector&&("**"!==d||!k.selector)||(m.splice(f,1),k.selector&&m.delegateCount--,l.remove&&l.remove.call(a,k));g&&!m.length&&(l.teardown&&l.teardown.call(a,p,r.handle)!==!1||n.removeEvent(a,o,r.handle),delete i[o])}else for(o in i)n.event.remove(a,o+b[j],c,d,!0);n.isEmptyObject(i)&&(delete r.handle,L.remove(a,"events"))}},trigger:function(b,c,d,e){var f,g,h,i,k,m,o,p=[d||l],q=j.call(b,"type")?b.type:b,r=j.call(b,"namespace")?b.namespace.split("."):[];if(g=h=d=d||l,3!==d.nodeType&&8!==d.nodeType&&!X.test(q+n.event.triggered)&&(q.indexOf(".")>=0&&(r=q.split("."),q=r.shift(),r.sort()),k=q.indexOf(":")<0&&"on"+q,b=b[n.expando]?b:new n.Event(q,"object"==typeof b&&b),b.isTrigger=e?2:3,b.namespace=r.join("."),b.namespace_re=b.namespace?new RegExp("(^|\\.)"+r.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,b.result=void 0,b.target||(b.target=d),c=null==c?[b]:n.makeArray(c,[b]),o=n.event.special[q]||{},e||!o.trigger||o.trigger.apply(d,c)!==!1)){if(!e&&!o.noBubble&&!n.isWindow(d)){for(i=o.delegateType||q,X.test(i+q)||(g=g.parentNode);g;g=g.parentNode)p.push(g),h=g;h===(d.ownerDocument||l)&&p.push(h.defaultView||h.parentWindow||a)}f=0;while((g=p[f++])&&!b.isPropagationStopped())b.type=f>1?i:o.bindType||q,m=(L.get(g,"events")||{})[b.type]&&L.get(g,"handle"),m&&m.apply(g,c),m=k&&g[k],m&&m.apply&&n.acceptData(g)&&(b.result=m.apply(g,c),b.result===!1&&b.preventDefault());return b.type=q,e||b.isDefaultPrevented()||o._default&&o._default.apply(p.pop(),c)!==!1||!n.acceptData(d)||k&&n.isFunction(d[q])&&!n.isWindow(d)&&(h=d[k],h&&(d[k]=null),n.event.triggered=q,d[q](),n.event.triggered=void 0,h&&(d[k]=h)),b.result}},dispatch:function(a){a=n.event.fix(a);var b,c,e,f,g,h=[],i=d.call(arguments),j=(L.get(this,"events")||{})[a.type]||[],k=n.event.special[a.type]||{};if(i[0]=a,a.delegateTarget=this,!k.preDispatch||k.preDispatch.call(this,a)!==!1){h=n.event.handlers.call(this,a,j),b=0;while((f=h[b++])&&!a.isPropagationStopped()){a.currentTarget=f.elem,c=0;while((g=f.handlers[c++])&&!a.isImmediatePropagationStopped())(!a.namespace_re||a.namespace_re.test(g.namespace))&&(a.handleObj=g,a.data=g.data,e=((n.event.special[g.origType]||{}).handle||g.handler).apply(f.elem,i),void 0!==e&&(a.result=e)===!1&&(a.preventDefault(),a.stopPropagation()))}return k.postDispatch&&k.postDispatch.call(this,a),a.result}},handlers:function(a,b){var c,d,e,f,g=[],h=b.delegateCount,i=a.target;if(h&&i.nodeType&&(!a.button||"click"!==a.type))for(;i!==this;i=i.parentNode||this)if(i.disabled!==!0||"click"!==a.type){for(d=[],c=0;h>c;c++)f=b[c],e=f.selector+" ",void 0===d[e]&&(d[e]=f.needsContext?n(e,this).index(i)>=0:n.find(e,this,null,[i]).length),d[e]&&d.push(f);d.length&&g.push({elem:i,handlers:d})}return h]*)\/>/gi,ba=/<([\w:]+)/,ca=/<|&#?\w+;/,da=/<(?:script|style|link)/i,ea=/checked\s*(?:[^=]|=\s*.checked.)/i,fa=/^$|\/(?:java|ecma)script/i,ga=/^true\/(.*)/,ha=/^\s*\s*$/g,ia={option:[1,""],thead:[1,"
","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ia.optgroup=ia.option,ia.tbody=ia.tfoot=ia.colgroup=ia.caption=ia.thead,ia.th=ia.td;function ja(a,b){return n.nodeName(a,"table")&&n.nodeName(11!==b.nodeType?b:b.firstChild,"tr")?a.getElementsByTagName("tbody")[0]||a.appendChild(a.ownerDocument.createElement("tbody")):a}function ka(a){return a.type=(null!==a.getAttribute("type"))+"/"+a.type,a}function la(a){var b=ga.exec(a.type);return b?a.type=b[1]:a.removeAttribute("type"),a}function ma(a,b){for(var c=0,d=a.length;d>c;c++)L.set(a[c],"globalEval",!b||L.get(b[c],"globalEval"))}function na(a,b){var c,d,e,f,g,h,i,j;if(1===b.nodeType){if(L.hasData(a)&&(f=L.access(a),g=L.set(b,f),j=f.events)){delete g.handle,g.events={};for(e in j)for(c=0,d=j[e].length;d>c;c++)n.event.add(b,e,j[e][c])}M.hasData(a)&&(h=M.access(a),i=n.extend({},h),M.set(b,i))}}function oa(a,b){var c=a.getElementsByTagName?a.getElementsByTagName(b||"*"):a.querySelectorAll?a.querySelectorAll(b||"*"):[];return void 0===b||b&&n.nodeName(a,b)?n.merge([a],c):c}function pa(a,b){var c=b.nodeName.toLowerCase();"input"===c&&T.test(a.type)?b.checked=a.checked:("input"===c||"textarea"===c)&&(b.defaultValue=a.defaultValue)}n.extend({clone:function(a,b,c){var d,e,f,g,h=a.cloneNode(!0),i=n.contains(a.ownerDocument,a);if(!(k.noCloneChecked||1!==a.nodeType&&11!==a.nodeType||n.isXMLDoc(a)))for(g=oa(h),f=oa(a),d=0,e=f.length;e>d;d++)pa(f[d],g[d]);if(b)if(c)for(f=f||oa(a),g=g||oa(h),d=0,e=f.length;e>d;d++)na(f[d],g[d]);else na(a,h);return g=oa(h,"script"),g.length>0&&ma(g,!i&&oa(a,"script")),h},buildFragment:function(a,b,c,d){for(var e,f,g,h,i,j,k=b.createDocumentFragment(),l=[],m=0,o=a.length;o>m;m++)if(e=a[m],e||0===e)if("object"===n.type(e))n.merge(l,e.nodeType?[e]:e);else if(ca.test(e)){f=f||k.appendChild(b.createElement("div")),g=(ba.exec(e)||["",""])[1].toLowerCase(),h=ia[g]||ia._default,f.innerHTML=h[1]+e.replace(aa,"<$1>")+h[2],j=h[0];while(j--)f=f.lastChild;n.merge(l,f.childNodes),f=k.firstChild,f.textContent=""}else l.push(b.createTextNode(e));k.textContent="",m=0;while(e=l[m++])if((!d||-1===n.inArray(e,d))&&(i=n.contains(e.ownerDocument,e),f=oa(k.appendChild(e),"script"),i&&ma(f),c)){j=0;while(e=f[j++])fa.test(e.type||"")&&c.push(e)}return k},cleanData:function(a){for(var b,c,d,e,f=n.event.special,g=0;void 0!==(c=a[g]);g++){if(n.acceptData(c)&&(e=c[L.expando],e&&(b=L.cache[e]))){if(b.events)for(d in b.events)f[d]?n.event.remove(c,d):n.removeEvent(c,d,b.handle);L.cache[e]&&delete L.cache[e]}delete M.cache[c[M.expando]]}}}),n.fn.extend({text:function(a){return J(this,function(a){return void 0===a?n.text(this):this.empty().each(function(){(1===this.nodeType||11===this.nodeType||9===this.nodeType)&&(this.textContent=a)})},null,a,arguments.length)},append:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.appendChild(a)}})},prepend:function(){return this.domManip(arguments,function(a){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var b=ja(this,a);b.insertBefore(a,b.firstChild)}})},before:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this)})},after:function(){return this.domManip(arguments,function(a){this.parentNode&&this.parentNode.insertBefore(a,this.nextSibling)})},remove:function(a,b){for(var c,d=a?n.filter(a,this):this,e=0;null!=(c=d[e]);e++)b||1!==c.nodeType||n.cleanData(oa(c)),c.parentNode&&(b&&n.contains(c.ownerDocument,c)&&ma(oa(c,"script")),c.parentNode.removeChild(c));return this},empty:function(){for(var a,b=0;null!=(a=this[b]);b++)1===a.nodeType&&(n.cleanData(oa(a,!1)),a.textContent="");return this},clone:function(a,b){return a=null==a?!1:a,b=null==b?a:b,this.map(function(){return n.clone(this,a,b)})},html:function(a){return J(this,function(a){var b=this[0]||{},c=0,d=this.length;if(void 0===a&&1===b.nodeType)return b.innerHTML;if("string"==typeof a&&!da.test(a)&&!ia[(ba.exec(a)||["",""])[1].toLowerCase()]){a=a.replace(aa,"<$1>");try{for(;d>c;c++)b=this[c]||{},1===b.nodeType&&(n.cleanData(oa(b,!1)),b.innerHTML=a);b=0}catch(e){}}b&&this.empty().append(a)},null,a,arguments.length)},replaceWith:function(){var a=arguments[0];return this.domManip(arguments,function(b){a=this.parentNode,n.cleanData(oa(this)),a&&a.replaceChild(b,this)}),a&&(a.length||a.nodeType)?this:this.remove()},detach:function(a){return this.remove(a,!0)},domManip:function(a,b){a=e.apply([],a);var c,d,f,g,h,i,j=0,l=this.length,m=this,o=l-1,p=a[0],q=n.isFunction(p);if(q||l>1&&"string"==typeof p&&!k.checkClone&&ea.test(p))return this.each(function(c){var d=m.eq(c);q&&(a[0]=p.call(this,c,d.html())),d.domManip(a,b)});if(l&&(c=n.buildFragment(a,this[0].ownerDocument,!1,this),d=c.firstChild,1===c.childNodes.length&&(c=d),d)){for(f=n.map(oa(c,"script"),ka),g=f.length;l>j;j++)h=c,j!==o&&(h=n.clone(h,!0,!0),g&&n.merge(f,oa(h,"script"))),b.call(this[j],h,j);if(g)for(i=f[f.length-1].ownerDocument,n.map(f,la),j=0;g>j;j++)h=f[j],fa.test(h.type||"")&&!L.access(h,"globalEval")&&n.contains(i,h)&&(h.src?n._evalUrl&&n._evalUrl(h.src):n.globalEval(h.textContent.replace(ha,"")))}return this}}),n.each({appendTo:"append",prependTo:"prepend",insertBefore:"before",insertAfter:"after",replaceAll:"replaceWith"},function(a,b){n.fn[a]=function(a){for(var c,d=[],e=n(a),g=e.length-1,h=0;g>=h;h++)c=h===g?this:this.clone(!0),n(e[h])[b](c),f.apply(d,c.get());return this.pushStack(d)}});var qa,ra={};function sa(b,c){var d,e=n(c.createElement(b)).appendTo(c.body),f=a.getDefaultComputedStyle&&(d=a.getDefaultComputedStyle(e[0]))?d.display:n.css(e[0],"display");return e.detach(),f}function ta(a){var b=l,c=ra[a];return c||(c=sa(a,b),"none"!==c&&c||(qa=(qa||n("', + + // Preload iframe before displaying it + // This allows to calculate iframe content width and height + // (note: Due to "Same Origin Policy", you can't get cross domain data). + preload : true, + + // Custom CSS styling for iframe wrapping element + // You can use this to set custom iframe dimensions + css : {}, + + // Iframe tag attributes + attr : { + scrolling : 'auto' + } + + }, + + // Default content type if cannot be detected automatically + defaultType : 'image', + + // Open/close animation type + // Possible values: + // false - disable + // "zoom" - zoom images from/to thumbnail + // "fade" + // "zoom-in-out" + // + animationEffect : "zoom", + + // Duration in ms for open/close animation + animationDuration : 500, + + // Should image change opacity while zooming + // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios + zoomOpacity : "auto", + + // Transition effect between slides + // + // Possible values: + // false - disable + // "fade' + // "slide' + // "circular' + // "tube' + // "zoom-in-out' + // "rotate' + // + transitionEffect : "fade", + + // Duration in ms for transition animation + transitionDuration : 366, + + // Custom CSS class for slide element + slideClass : '', + + // Custom CSS class for layout + baseClass : '', + + // Base template for layout + baseTpl : + '', + + // Loading indicator template + spinnerTpl : '
', + + // Error message template + errorTpl : '

{{ERROR}}

', + + btnTpl : { + + download : '' + + '' + + '' + + '' + + '', + + zoom : '', + + close : '', + + // This small close button will be appended to your html/inline/ajax content by default, + // if "smallBtn" option is not set to false + smallBtn : '', + + // Arrows + arrowLeft : '', + + arrowRight : '' + }, + + // Container is injected into this element + parentEl : 'body', + + + // Focus handling + // ============== + + // Try to focus on the first focusable element after opening + autoFocus : false, + + // Put focus back to active element after closing + backFocus : true, + + // Do not let user to focus on element outside modal content + trapFocus : true, + + + // Module specific options + // ======================= + + fullScreen : { + autoStart : false, + }, + + // Set `touch: false` to disable dragging/swiping + touch : { + vertical : true, // Allow to drag content vertically + momentum : true // Continue movement after releasing mouse/touch when panning + }, + + // Hash value when initializing manually, + // set `false` to disable hash change + hash : null, + + // Customize or add new media types + // Example: + /* + media : { + youtube : { + params : { + autoplay : 0 + } + } + } + */ + media : {}, + + slideShow : { + autoStart : false, + speed : 4000 + }, + + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + }, + + // Use mousewheel to navigate gallery + // If 'auto' - enabled for images only + wheel : 'auto', + + // Callbacks + //========== + + // See Documentation/API/Events for more information + // Example: + /* + afterShow: function( instance, current ) { + console.info( 'Clicked element:' ); + console.info( current.opts.$orig ); + } + */ + + onInit : $.noop, // When instance has been initialized + + beforeLoad : $.noop, // Before the content of a slide is being loaded + afterLoad : $.noop, // When the content of a slide is done loading + + beforeShow : $.noop, // Before open animation starts + afterShow : $.noop, // When content is done loading and animating + + beforeClose : $.noop, // Before the instance attempts to close. Return false to cancel the close. + afterClose : $.noop, // After instance has been closed + + onActivate : $.noop, // When instance is brought to front + onDeactivate : $.noop, // When other instance has been activated + + + // Interaction + // =========== + + // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, + // each option can be string or method that returns value. + // + // Possible values: + // "close" - close instance + // "next" - move to next gallery item + // "nextOrClose" - move to next gallery item or close if gallery has only one item + // "toggleControls" - show/hide controls + // "zoom" - zoom image (if loaded) + // false - do nothing + + // Clicked on the content + clickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + + // Clicked on the slide + clickSlide : 'close', + + // Clicked on the background (backdrop) element + clickOutside : 'close', + + // Same as previous two, but for double click + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false, + + + // Custom options when mobile device is detected + // ============================================= + + mobile : { + idleTime : false, + margin : 0, + + clickContent : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : false; + }, + clickSlide : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : 'close'; + }, + dblclickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + dblclickSlide : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + } + }, + + + // Internationalization + // ============ + + lang : 'en', + i18n : { + 'en' : { + CLOSE : 'Close', + NEXT : 'Next', + PREV : 'Previous', + ERROR : 'The requested content cannot be loaded.
Please try again later.', + PLAY_START : 'Start slideshow', + PLAY_STOP : 'Pause slideshow', + FULL_SCREEN : 'Full screen', + THUMBS : 'Thumbnails', + DOWNLOAD : 'Download', + SHARE : 'Share', + ZOOM : 'Zoom' + }, + 'de' : { + CLOSE : 'Schliessen', + NEXT : 'Weiter', + PREV : 'Zurück', + ERROR : 'Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.', + PLAY_START : 'Diaschau starten', + PLAY_STOP : 'Diaschau beenden', + FULL_SCREEN : 'Vollbild', + THUMBS : 'Vorschaubilder', + DOWNLOAD : 'Herunterladen', + SHARE : 'Teilen', + ZOOM : 'Maßstab' + } + } + + }; + + // Few useful variables and methods + // ================================ + + var $W = $(window); + var $D = $(document); + + var called = 0; + + + // Check if an object is a jQuery object and not a native JavaScript object + // ======================================================================== + + var isQuery = function ( obj ) { + return obj && obj.hasOwnProperty && obj instanceof $; + }; + + + // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" + // =============================================================================== + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + // Detect the supported transition-end event property name + // ======================================================= + + var transitionEnd = (function () { + var t, el = document.createElement("fakeelement"); + + var transitions = { + "transition" : "transitionend", + "OTransition" : "oTransitionEnd", + "MozTransition" : "transitionend", + "WebkitTransition": "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined){ + return transitions[t]; + } + } + + return 'transitionend'; + })(); + + + // Force redraw on an element. + // This helps in cases where the browser doesn't redraw an updated element properly. + // ================================================================================= + + var forceRedraw = function( $el ) { + return ( $el && $el.length && $el[0].offsetHeight ); + }; + + + // Class definition + // ================ + + var FancyBox = function( content, opts, index ) { + var self = this; + + self.opts = $.extend( true, { index : index }, $.fancybox.defaults, opts || {} ); + + if ( $.fancybox.isMobile ) { + self.opts = $.extend( true, {}, self.opts, self.opts.mobile ); + } + + // Exclude buttons option from deep merging + if ( opts && $.isArray( opts.buttons ) ) { + self.opts.buttons = opts.buttons; + } + + self.id = self.opts.id || ++called; + self.group = []; + + self.currIndex = parseInt( self.opts.index, 10 ) || 0; + self.prevIndex = null; + + self.prevPos = null; + self.currPos = 0; + + self.firstRun = null; + + // Create group elements from original item collection + self.createGroup( content ); + + if ( !self.group.length ) { + return; + } + + // Save last active element and current scroll position + self.$lastFocus = $(document.activeElement).blur(); + + // Collection of gallery objects + self.slides = {}; + + self.init(); + }; + + $.extend(FancyBox.prototype, { + + // Create DOM structure + // ==================== + + init : function() { + var self = this, + firstItem = self.group[ self.currIndex ], + firstItemOpts = firstItem.opts, + scrollbarWidth = $.fancybox.scrollbarWidth, + $scrollDiv, + $container, + buttonStr; + + self.scrollTop = $D.scrollTop(); + self.scrollLeft = $D.scrollLeft(); + + + // Hide scrollbars + // =============== + + if ( !$.fancybox.getInstance() ) { + + $( 'body' ).addClass( 'fancybox-active' ); + + // iOS hack + if ( /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream ) { + + // iOS has problems for input elements inside fixed containers, + // the workaround is to apply `position: fixed` to `` element, + // unfortunately, this makes it lose the scrollbars and forces address bar to appear. + + if ( firstItem.type !== 'image' ) { + $( 'body' ).css( 'top', $( 'body' ).scrollTop() * -1 ).addClass( 'fancybox-iosfix' ); + } + + } else if ( !$.fancybox.isMobile && document.body.scrollHeight > window.innerHeight ) { + + if ( scrollbarWidth === undefined ) { + $scrollDiv = $('
').appendTo( 'body' ); + + scrollbarWidth = $.fancybox.scrollbarWidth = $scrollDiv[0].offsetWidth - $scrollDiv[0].clientWidth; + + $scrollDiv.remove(); + } + + $( 'head' ).append( '' ); + $( 'body' ).addClass( 'compensate-for-scrollbar' ); + } + } + + + // Build html markup and set references + // ==================================== + + // Build html code for buttons and insert into main template + buttonStr = ''; + + $.each( firstItemOpts.buttons, function( index, value ) { + buttonStr += ( firstItemOpts.btnTpl[ value ] || '' ); + }); + + // Create markup from base template, it will be initially hidden to + // avoid unnecessary work like painting while initializing is not complete + $container = $( + self.translate( self, + firstItemOpts.baseTpl + .replace( '\{\{buttons\}\}', buttonStr ) + .replace( '\{\{arrows\}\}', firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight ) + ) + ) + .attr( 'id', 'fancybox-container-' + self.id ) + .addClass( 'fancybox-is-hidden' ) + .addClass( firstItemOpts.baseClass ) + .data( 'FancyBox', self ) + .appendTo( firstItemOpts.parentEl ); + + // Create object holding references to jQuery wrapped nodes + self.$refs = { + container : $container + }; + + [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption', 'navigation' ].forEach(function(item) { + self.$refs[ item ] = $container.find( '.fancybox-' + item ); + }); + + self.trigger( 'onInit' ); + + // Enable events, deactive previous instances + self.activate(); + + // Build slides, load and reveal content + self.jumpTo( self.currIndex ); + }, + + + // Simple i18n support - replaces object keys found in template + // with corresponding values + // ============================================================ + + translate : function( obj, str ) { + var arr = obj.opts.i18n[ obj.opts.lang ]; + + return str.replace(/\{\{(\w+)\}\}/g, function(match, n) { + var value = arr[n]; + + if ( value === undefined ) { + return match; + } + + return value; + }); + }, + + // Create array of gally item objects + // Check if each object has valid type and content + // =============================================== + + createGroup : function ( content ) { + var self = this; + var items = $.makeArray( content ); + + $.each(items, function( i, item ) { + var obj = {}, + opts = {}, + $item, + type, + found, + src, + srcParts; + + // Step 1 - Make sure we have an object + // ==================================== + + if ( $.isPlainObject( item ) ) { + + // We probably have manual usage here, something like + // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) + + obj = item; + opts = item.opts || item; + + } else if ( $.type( item ) === 'object' && $( item ).length ) { + + // Here we probably have jQuery collection returned by some selector + $item = $( item ); + + opts = $item.data(); + opts = $.extend( {}, opts, opts.options || {} ); + + // Here we store clicked element + opts.$orig = $item; + + obj.src = opts.src || $item.attr( 'href' ); + + // Assume that simple syntax is used, for example: + // `$.fancybox.open( $("#test"), {} );` + if ( !obj.type && !obj.src ) { + obj.type = 'inline'; + obj.src = item; + } + + } else { + + // Assume we have a simple html code, for example: + // $.fancybox.open( '

Hi!

' ); + + obj = { + type : 'html', + src : item + '' + }; + + } + + // Each gallery object has full collection of options + obj.opts = $.extend( true, {}, self.opts, opts ); + + // Do not merge buttons array + if ( $.isArray( opts.buttons ) ) { + obj.opts.buttons = opts.buttons; + } + + + // Step 2 - Make sure we have content type, if not - try to guess + // ============================================================== + + type = obj.type || obj.opts.type; + src = obj.src || ''; + + if ( !type && src ) { + if ( src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ) { + type = 'image'; + + } else if ( src.match(/\.(pdf)((\?|#).*)?$/i) ) { + type = 'pdf'; + + } else if ( found = src.match(/\.(mp4|mov|ogv)((\?|#).*)?$/i) ) { + type = 'video'; + + if ( !obj.opts.videoFormat ) { + obj.opts.videoFormat = 'video/' + ( found[1] === 'ogv' ? 'ogg' : found[1] ); + } + + } else if ( src.charAt(0) === '#' ) { + type = 'inline'; + } + } + + if ( type ) { + obj.type = type; + + } else { + self.trigger( 'objectNeedsType', obj ); + } + + + // Step 3 - Some adjustments + // ========================= + + obj.index = self.group.length; + + // Check if $orig and $thumb objects exist + if ( obj.opts.$orig && !obj.opts.$orig.length ) { + delete obj.opts.$orig; + } + + if ( !obj.opts.$thumb && obj.opts.$orig ) { + obj.opts.$thumb = obj.opts.$orig.find( 'img:first' ); + } + + if ( obj.opts.$thumb && !obj.opts.$thumb.length ) { + delete obj.opts.$thumb; + } + + // "caption" is a "special" option, it can be used to customize caption per gallery item .. + if ( $.type( obj.opts.caption ) === 'function' ) { + obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] ); + } + + if ( $.type( self.opts.caption ) === 'function' ) { + obj.opts.caption = self.opts.caption.apply( item, [ self, obj ] ); + } + + // Make sure we have caption as a string or jQuery object + if ( !( obj.opts.caption instanceof $ ) ) { + obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + ''; + } + + // Check if url contains "filter" used to filter the content + // Example: "ajax.html #something" + if ( type === 'ajax' ) { + srcParts = src.split(/\s+/, 2); + + if ( srcParts.length > 1 ) { + obj.src = srcParts.shift(); + + obj.opts.filter = srcParts.shift(); + } + } + + if ( obj.opts.smallBtn == 'auto' ) { + + if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) { + obj.opts.toolbar = false; + obj.opts.smallBtn = true; + + } else { + obj.opts.smallBtn = false; + } + + } + + // If the type is "pdf", then simply load file into iframe + if ( type === 'pdf' ) { + obj.type = 'iframe'; + + obj.opts.iframe.preload = false; + } + + // Hide all buttons and disable interactivity for modal items + if ( obj.opts.modal ) { + + obj.opts = $.extend(true, obj.opts, { + // Remove buttons + infobar : 0, + toolbar : 0, + + smallBtn : 0, + + // Disable keyboard navigation + keyboard : 0, + + // Disable some modules + slideShow : 0, + fullScreen : 0, + thumbs : 0, + touch : 0, + + // Disable click event handlers + clickContent : false, + clickSlide : false, + clickOutside : false, + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false + }); + + } + + // Step 4 - Add processed object to group + // ====================================== + + self.group.push( obj ); + + }); + + }, + + + // Attach an event handler functions for: + // - navigation buttons + // - browser scrolling, resizing; + // - focusing + // - keyboard + // - detect idle + // ====================================== + + addEvents : function() { + var self = this; + + self.removeEvents(); + + // Make navigation elements clickable + self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.close( e ); + + }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.previous(); + + }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.next(); + + }).on( 'click.fb', '[data-fancybox-zoom]', function(e) { + // Click handler for zoom button + self[ self.isScaledDown() ? 'scaleToActual' : 'scaleToFit' ](); + }); + + + // Handle page scrolling and browser resizing + $W.on('orientationchange.fb resize.fb', function(e) { + + if ( e && e.originalEvent && e.originalEvent.type === "resize" ) { + + requestAFrame(function() { + self.update(); + }); + + } else { + + self.$refs.stage.hide(); + + setTimeout(function() { + self.$refs.stage.show(); + + self.update(); + }, 600); + + } + + }); + + // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal + // (a.k.a. "escaping the modal") + $D.on('focusin.fb', function(e) { + var instance = $.fancybox ? $.fancybox.getInstance() : null; + + if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) { + return; + } + + if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) { + e.stopPropagation(); + + instance.focus(); + + // Sometimes page gets scrolled, set it back + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + } + }); + + + // Enable keyboard navigation + $D.on('keydown.fb', function (e) { + var current = self.current, + keycode = e.keyCode || e.which; + + if ( !current || !current.opts.keyboard ) { + return; + } + + if ( $(e.target).is('input') || $(e.target).is('textarea') ) { + return; + } + + // Backspace and Esc keys + if ( keycode === 8 || keycode === 27 ) { + e.preventDefault(); + + self.close( e ); + + return; + } + + // Left arrow and Up arrow + if ( keycode === 37 || keycode === 38 ) { + e.preventDefault(); + + self.previous(); + + return; + } + + // Righ arrow and Down arrow + if ( keycode === 39 || keycode === 40 ) { + e.preventDefault(); + + self.next(); + + return; + } + + self.trigger('afterKeydown', e, keycode); + }); + + + // Hide controls after some inactivity period + if ( self.group[ self.currIndex ].opts.idleTime ) { + self.idleSecondsCounter = 0; + + $D.on('mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function(e) { + self.idleSecondsCounter = 0; + + if ( self.isIdle ) { + self.showControls(); + } + + self.isIdle = false; + }); + + self.idleInterval = window.setInterval(function() { + self.idleSecondsCounter++; + + if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime && !self.isDragging ) { + self.isIdle = true; + self.idleSecondsCounter = 0; + + self.hideControls(); + } + + }, 1000); + } + + }, + + + // Remove events added by the core + // =============================== + + removeEvents : function() { + var self = this; + + $W.off( 'orientationchange.fb resize.fb' ); + $D.off( 'focusin.fb keydown.fb .fb-idle' ); + + this.$refs.container.off( '.fb-close .fb-prev .fb-next' ); + + if ( self.idleInterval ) { + window.clearInterval( self.idleInterval ); + + self.idleInterval = null; + } + }, + + + // Change to previous gallery item + // =============================== + + previous : function( duration ) { + return this.jumpTo( this.currPos - 1, duration ); + }, + + + // Change to next gallery item + // =========================== + + next : function( duration ) { + return this.jumpTo( this.currPos + 1, duration ); + }, + + + // Switch to selected gallery item + // =============================== + + jumpTo : function ( pos, duration, slide ) { + var self = this, + firstRun, + loop, + current, + previous, + canvasWidth, + currentPos, + transitionProps; + + var groupLen = self.group.length; + + if ( self.isDragging || self.isClosing || ( self.isAnimating && self.firstRun ) ) { + return; + } + + pos = parseInt( pos, 10 ); + loop = self.current ? self.current.opts.loop : self.opts.loop; + + if ( !loop && ( pos < 0 || pos >= groupLen ) ) { + return false; + } + + firstRun = self.firstRun = ( self.firstRun === null ); + + if ( groupLen < 2 && !firstRun && !!self.isDragging ) { + return; + } + + previous = self.current; + + self.prevIndex = self.currIndex; + self.prevPos = self.currPos; + + // Create slides + current = self.createSlide( pos ); + + if ( groupLen > 1 ) { + if ( loop || current.index > 0 ) { + self.createSlide( pos - 1 ); + } + + if ( loop || current.index < groupLen - 1 ) { + self.createSlide( pos + 1 ); + } + } + + self.current = current; + self.currIndex = current.index; + self.currPos = current.pos; + + self.trigger( 'beforeShow', firstRun ); + + self.updateControls(); + + currentPos = $.fancybox.getTranslate( current.$slide ); + + current.isMoved = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' ); + current.forcedDuration = undefined; + + if ( $.isNumeric( duration ) ) { + current.forcedDuration = duration; + } else { + duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ]; + } + + duration = parseInt( duration, 10 ); + + // Fresh start - reveal container, current slide and start loading content + if ( firstRun ) { + + if ( current.opts.animationEffect && duration ) { + self.$refs.container.css( 'transition-duration', duration + 'ms' ); + } + + self.$refs.container.removeClass( 'fancybox-is-hidden' ); + + forceRedraw( self.$refs.container ); + + self.$refs.container.addClass( 'fancybox-is-open' ); + + // Make first slide visible (to display loading icon, if needed) + current.$slide.addClass( 'fancybox-slide--current' ); + + self.loadSlide( current ); + + self.preload( 'image' ); + + return; + } + + // Clean up + $.each(self.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + }); + + // Make current that slide is visible even if content is still loading + current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' ); + + // If slides have been dragged, animate them to correct position + if ( current.isMoved ) { + canvasWidth = Math.round( current.$slide.width() ); + + $.each(self.slides, function( index, slide ) { + var pos = slide.pos - current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ) + }, duration, function() { + + slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' ); + + if ( slide.pos === self.currPos ) { + current.isMoved = false; + + self.complete(); + } + }); + }); + + } else { + self.$refs.stage.children().removeAttr( 'style' ); + } + + // Start transition that reveals current content + // or wait when it will be loaded + + if ( current.isLoaded ) { + self.revealContent( current ); + + } else { + self.loadSlide( current ); + } + + self.preload( 'image' ); + + if ( previous.pos === current.pos ) { + return; + } + + // Handle previous slide + // ===================== + + transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' ); + + previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ); + + previous.isComplete = false; + + if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) { + return; + } + + if ( current.isMoved ) { + previous.$slide.addClass( transitionProps ); + + } else { + + transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect; + + $.fancybox.animate( previous.$slide, transitionProps, duration, function() { + previous.$slide.removeClass( transitionProps ).removeAttr( 'style' ); + }); + + } + + }, + + + // Create new "slide" element + // These are gallery items that are actually added to DOM + // ======================================================= + + createSlide : function( pos ) { + + var self = this; + var $slide; + var index; + + index = pos % self.group.length; + index = index < 0 ? self.group.length + index : index; + + if ( !self.slides[ pos ] && self.group[ index ] ) { + $slide = $('
').appendTo( self.$refs.stage ); + + self.slides[ pos ] = $.extend( true, {}, self.group[ index ], { + pos : pos, + $slide : $slide, + isLoaded : false, + }); + + self.updateSlide( self.slides[ pos ] ); + } + + return self.slides[ pos ]; + }, + + + // Scale image to the actual size of the image + // =========================================== + + scaleToActual : function( x, y, duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var imgPos, posX, posY, scaleX, scaleY; + + var canvasWidth = parseInt( current.$slide.width(), 10 ); + var canvasHeight = parseInt( current.$slide.height(), 10 ); + + var newImgWidth = current.width; + var newImgHeight = current.height; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + x = x === undefined ? canvasWidth * 0.5 : x; + y = y === undefined ? canvasHeight * 0.5 : y; + + imgPos = $.fancybox.getTranslate( $what ); + + scaleX = newImgWidth / imgPos.width; + scaleY = newImgHeight / imgPos.height; + + // Get center position for original image + posX = ( canvasWidth * 0.5 - newImgWidth * 0.5 ); + posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 ); + + // Make sure image does not move away from edges + if ( newImgWidth > canvasWidth ) { + posX = imgPos.left * scaleX - ( ( x * scaleX ) - x ); + + if ( posX > 0 ) { + posX = 0; + } + + if ( posX < canvasWidth - newImgWidth ) { + posX = canvasWidth - newImgWidth; + } + } + + if ( newImgHeight > canvasHeight) { + posY = imgPos.top * scaleY - ( ( y * scaleY ) - y ); + + if ( posY > 0 ) { + posY = 0; + } + + if ( posY < canvasHeight - newImgHeight ) { + posY = canvasHeight - newImgHeight; + } + } + + self.updateCursor( newImgWidth, newImgHeight ); + + $.fancybox.animate( $what, { + top : posY, + left : posX, + scaleX : scaleX, + scaleY : scaleY + }, duration || 330, function() { + self.isAnimating = false; + }); + + // Stop slideshow + if ( self.SlideShow && self.SlideShow.isActive ) { + self.SlideShow.stop(); + } + }, + + + // Scale image to fit inside parent element + // ======================================== + + scaleToFit : function( duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + var end; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + end = self.getFitPos( current ); + + self.updateCursor( end.width, end.height ); + + $.fancybox.animate( $what, { + top : end.top, + left : end.left, + scaleX : end.width / $what.width(), + scaleY : end.height / $what.height() + }, duration || 330, function() { + self.isAnimating = false; + }); + + }, + + // Calculate image size to fit inside viewport + // =========================================== + + getFitPos : function( slide ) { + var self = this; + var $what = slide.$content; + + var imgWidth = slide.width; + var imgHeight = slide.height; + + var margin = slide.opts.margin; + + var canvasWidth, canvasHeight, minRatio, width, height; + + if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) { + return false; + } + + // Convert "margin to CSS style: [ top, right, bottom, left ] + if ( $.type( margin ) === "number" ) { + margin = [ margin, margin ]; + } + + if ( margin.length == 2 ) { + margin = [ margin[0], margin[1], margin[0], margin[1] ]; + } + + // We can not use $slide width here, because it can have different diemensions while in transiton + canvasWidth = parseInt( self.$refs.stage.width(), 10 ) - ( margin[ 1 ] + margin[ 3 ] ); + canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] ); + + minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight ); + + width = Math.floor( minRatio * imgWidth ); + height = Math.floor( minRatio * imgHeight ); + + // Use floor rounding to make sure it really fits + return { + top : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ], + left : Math.floor( ( canvasWidth - width ) * 0.5 ) + margin[ 3 ], + width : width, + height : height + }; + + }, + + + // Update content size and position for all slides + // ============================================== + + update : function() { + var self = this; + + $.each( self.slides, function( key, slide ) { + self.updateSlide( slide ); + }); + }, + + + // Update slide content position and size + // ====================================== + + updateSlide : function( slide, duration ) { + var self = this, + $what = slide && slide.$content; + + if ( $what && ( slide.width || slide.height ) ) { + self.isAnimating = false; + + $.fancybox.stop( $what ); + + $.fancybox.setTranslate( $what, self.getFitPos( slide ) ); + + if ( slide.pos === self.currPos ) { + self.updateCursor(); + } + } + + slide.$slide.trigger( 'refresh' ); + + self.trigger( 'onUpdate', slide ); + + }, + + + // Horizontally center slide + // ========================= + + centerSlide : function( slide, duration ) { + var self = this, canvasWidth, pos; + + if ( self.current ) { + canvasWidth = Math.round( slide.$slide.width() ); + pos = slide.pos - self.current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ), + opacity : 1 + }, duration === undefined ? 0 : duration, null, false); + } + }, + + + // Update cursor style depending if content can be zoomed + // ====================================================== + + updateCursor : function( nextWidth, nextHeight ) { + + var self = this; + var isScaledDown; + + var $container = self.$refs.container.removeClass( 'fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut' ); + + if ( !self.current || self.isClosing ) { + return; + } + + if ( self.isZoomable() ) { + + $container.addClass( 'fancybox-is-zoomable' ); + + if ( nextWidth !== undefined && nextHeight !== undefined ) { + isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height; + + } else { + isScaledDown = self.isScaledDown(); + } + + if ( isScaledDown ) { + + // If image is scaled down, then, obviously, it can be zoomed to full size + $container.addClass( 'fancybox-can-zoomIn' ); + + } else { + + if ( self.current.opts.touch ) { + + // If image size ir largen than available available and touch module is not disable, + // then user can do panning + $container.addClass( 'fancybox-can-drag' ); + + } else { + $container.addClass( 'fancybox-can-zoomOut' ); + } + + } + + } else if ( self.current.opts.touch ) { + $container.addClass( 'fancybox-can-drag' ); + } + + }, + + + // Check if current slide is zoomable + // ================================== + + isZoomable : function() { + + var self = this; + + var current = self.current; + var fitPos; + + if ( !current || self.isClosing ) { + return; + } + + // Assume that slide is zoomable if + // - image is loaded successfuly + // - click action is "zoom" + // - actual size of the image is smaller than available area + if ( current.type === 'image' && current.isLoaded && !current.hasError && + ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) === "zoom" ) ) + ) { + + fitPos = self.getFitPos( current ); + + if ( current.width > fitPos.width || current.height > fitPos.height ) { + return true; + } + + } + + return false; + + }, + + + // Check if current image dimensions are smaller than actual + // ========================================================= + + isScaledDown : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = $.fancybox.getTranslate( $what ); + rez = rez.width < current.width || rez.height < current.height; + } + + return rez; + + }, + + + // Check if image dimensions exceed parent element + // =============================================== + + canPan : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = self.getFitPos( current ); + rez = Math.abs( $what.width() - rez.width ) > 1 || Math.abs( $what.height() - rez.height ) > 1; + } + + return rez; + + }, + + + // Load content into the slide + // =========================== + + loadSlide : function( slide ) { + + var self = this, type, $slide; + var ajaxLoad; + + if ( slide.isLoading ) { + return; + } + + if ( slide.isLoaded ) { + return; + } + + slide.isLoading = true; + + self.trigger( 'beforeLoad', slide ); + + type = slide.type; + $slide = slide.$slide; + + $slide + .off( 'refresh' ) + .trigger( 'onReset' ) + .addClass( 'fancybox-slide--' + ( type || 'unknown' ) ) + .addClass( slide.opts.slideClass ); + + // Create content depending on the type + + switch ( type ) { + + case 'image': + + self.setImage( slide ); + + break; + + case 'iframe': + + self.setIframe( slide ); + + break; + + case 'html': + + self.setContent( slide, slide.src || slide.content ); + + break; + + case 'inline': + + if ( $( slide.src ).length ) { + self.setContent( slide, $( slide.src ) ); + + } else { + self.setError( slide ); + } + + break; + + case 'ajax': + + self.showLoading( slide ); + + ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, { + url : slide.src, + success : function ( data, textStatus ) { + + if ( textStatus === 'success' ) { + self.setContent( slide, data ); + } + + }, + error : function ( jqXHR, textStatus ) { + + if ( jqXHR && textStatus !== 'abort' ) { + self.setError( slide ); + } + + } + })); + + $slide.one( 'onReset', function () { + ajaxLoad.abort(); + }); + + break; + + case 'video' : + + self.setContent( slide, + '' + ); + + break; + + default: + + self.setError( slide ); + + break; + + } + + return true; + + }, + + + // Use thumbnail image, if possible + // ================================ + + setImage : function( slide ) { + + var self = this; + var srcset = slide.opts.srcset || slide.opts.image.srcset; + + var found, temp, pxRatio, windowWidth; + + // If we have "srcset", then we need to find matching "src" value. + // This is necessary, because when you set an src attribute, the browser will preload the image + // before any javascript or even CSS is applied. + if ( srcset ) { + pxRatio = window.devicePixelRatio || 1; + windowWidth = window.innerWidth * pxRatio; + + temp = srcset.split(',').map(function ( el ) { + var ret = {}; + + el.trim().split(/\s+/).forEach(function ( el, i ) { + var value = parseInt( el.substring(0, el.length - 1), 10 ); + + if ( i === 0 ) { + return ( ret.url = el ); + } + + if ( value ) { + ret.value = value; + ret.postfix = el[ el.length - 1 ]; + } + + }); + + return ret; + }); + + // Sort by value + temp.sort(function (a, b) { + return a.value - b.value; + }); + + // Ok, now we have an array of all srcset values + for ( var j = 0; j < temp.length; j++ ) { + var el = temp[ j ]; + + if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) { + found = el; + break; + } + } + + // If not found, take the last one + if ( !found && temp.length ) { + found = temp[ temp.length - 1 ]; + } + + if ( found ) { + slide.src = found.url; + + // If we have default width/height values, we can calculate height for matching source + if ( slide.width && slide.height && found.postfix == 'w' ) { + slide.height = ( slide.width / slide.height ) * found.value; + slide.width = found.value; + } + } + } + + // This will be wrapper containing both ghost and actual image + slide.$content = $('
') + .addClass( 'fancybox-is-hidden' ) + .appendTo( slide.$slide ); + + + // If we have a thumbnail, we can display it while actual image is loading + // Users will not stare at black screen and actual image will appear gradually + if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) { + + slide.width = slide.opts.width; + slide.height = slide.opts.height; + + slide.$ghost = $('') + .one('error', function() { + + $(this).remove(); + + slide.$ghost = null; + + self.setBigImage( slide ); + + }) + .one('load', function() { + + self.afterLoad( slide ); + + self.setBigImage( slide ); + + }) + .addClass( 'fancybox-image' ) + .appendTo( slide.$content ) + .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) ); + + } else { + + self.setBigImage( slide ); + + } + + }, + + + // Create full-size image + // ====================== + + setBigImage : function ( slide ) { + var self = this; + var $img = $(''); + + slide.$image = $img + .one('error', function() { + + self.setError( slide ); + + }) + .one('load', function() { + + // Clear timeout that checks if loading icon needs to be displayed + clearTimeout( slide.timouts ); + + slide.timouts = null; + + if ( self.isClosing ) { + return; + } + + slide.width = slide.opts.width || this.naturalWidth; + slide.height = slide.opts.height || this.naturalHeight; + + if ( slide.opts.image.srcset ) { + $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset ); + } + + self.hideLoading( slide ); + + if ( slide.$ghost ) { + + slide.timouts = setTimeout(function() { + slide.timouts = null; + + slide.$ghost.hide(); + + }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) ); + + } else { + self.afterLoad( slide ); + } + + }) + .addClass( 'fancybox-image' ) + .attr('src', slide.src) + .appendTo( slide.$content ); + + if ( ( $img[0].complete || $img[0].readyState == "complete" ) && $img[0].naturalWidth && $img[0].naturalHeight ) { + $img.trigger( 'load' ); + + } else if( $img[0].error ) { + $img.trigger( 'error' ); + + } else { + + slide.timouts = setTimeout(function() { + if ( !$img[0].complete && !slide.hasError ) { + self.showLoading( slide ); + } + + }, 100); + + } + + }, + + + // Create iframe wrapper, iframe and bindings + // ========================================== + + setIframe : function( slide ) { + var self = this, + opts = slide.opts.iframe, + $slide = slide.$slide, + $iframe; + + slide.$content = $('
') + .css( opts.css ) + .appendTo( $slide ); + + $iframe = $( opts.tpl.replace(/\{rnd\}/g, new Date().getTime()) ) + .attr( opts.attr ) + .appendTo( slide.$content ); + + if ( opts.preload ) { + + self.showLoading( slide ); + + // Unfortunately, it is not always possible to determine if iframe is successfully loaded + // (due to browser security policy) + + $iframe.on('load.fb error.fb', function(e) { + this.isReady = 1; + + slide.$slide.trigger( 'refresh' ); + + self.afterLoad( slide ); + }); + + // Recalculate iframe content size + // =============================== + + $slide.on('refresh.fb', function() { + var $wrap = slide.$content, + frameWidth = opts.css.width, + frameHeight = opts.css.height, + scrollWidth, + $contents, + $body; + + if ( $iframe[0].isReady !== 1 ) { + return; + } + + // Check if content is accessible, + // it will fail if frame is not with the same origin + + try { + $contents = $iframe.contents(); + $body = $contents.find('body'); + + } catch (ignore) {} + + // Calculate dimensions for the wrapper + if ( $body && $body.length ) { + + if ( frameWidth === undefined ) { + scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth; + + frameWidth = Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) ); + frameWidth += $wrap.outerWidth() - $wrap.innerWidth(); + } + + if ( frameHeight === undefined ) { + frameHeight = Math.ceil( $body.outerHeight(true) ); + frameHeight += $wrap.outerHeight() - $wrap.innerHeight(); + } + + // Resize wrapper to fit iframe content + if ( frameWidth ) { + $wrap.width( frameWidth ); + } + + if ( frameHeight ) { + $wrap.height( frameHeight ); + } + } + + $wrap.removeClass( 'fancybox-is-hidden' ); + + }); + + } else { + + this.afterLoad( slide ); + + } + + $iframe.attr( 'src', slide.src ); + + if ( slide.opts.smallBtn === true ) { + slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) ); + } + + // Remove iframe if closing or changing gallery item + $slide.one( 'onReset', function () { + + // This helps IE not to throw errors when closing + try { + + $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' ); + + } catch ( ignore ) {} + + $( this ).empty(); + + slide.isLoaded = false; + + }); + + }, + + + // Wrap and append content to the slide + // ====================================== + + setContent : function ( slide, content ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + self.hideLoading( slide ); + + slide.$slide.empty(); + + if ( isQuery( content ) && content.parent().length ) { + + // If content is a jQuery object, then it will be moved to the slide. + // The placeholder is created so we will know where to put it back. + // If user is navigating gallery fast, then the content might be already inside fancyBox + // ===================================================================================== + + // Make sure content is not already moved to fancyBox + content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' ); + + // Create temporary element marking original place of the content + slide.$placeholder = $( '
' ).hide().insertAfter( content ); + + // Make sure content is visible + content.css('display', 'inline-block'); + + } else if ( !slide.hasError ) { + + // If content is just a plain text, try to convert it to html + if ( $.type( content ) === 'string' ) { + content = $('
').append( $.trim( content ) ).contents(); + + // If we have text node, then add wrapping element to make vertical alignment work + if ( content[0].nodeType === 3 ) { + content = $('
').html( content ); + } + } + + // If "filter" option is provided, then filter content + if ( slide.opts.filter ) { + content = $('
').html( content ).find( slide.opts.filter ); + } + + } + + slide.$slide.one('onReset', function () { + + // Pause all html5 video/audio + $( this ).find( 'video,audio' ).trigger( 'pause' ); + + // Put content back + if ( slide.$placeholder ) { + slide.$placeholder.after( content.hide() ).remove(); + + slide.$placeholder = null; + } + + // Remove custom close button + if ( slide.$smallBtn ) { + slide.$smallBtn.remove(); + + slide.$smallBtn = null; + } + + // Remove content and mark slide as not loaded + if ( !slide.hasError ) { + $(this).empty(); + + slide.isLoaded = false; + } + + }); + + slide.$content = $( content ).appendTo( slide.$slide ); + + this.afterLoad( slide ); + }, + + // Display error message + // ===================== + + setError : function ( slide ) { + + slide.hasError = true; + + slide.$slide.removeClass( 'fancybox-slide--' + slide.type ); + + this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) ); + + }, + + + // Show loading icon inside the slide + // ================================== + + showLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && !slide.$spinner ) { + slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide ); + } + + }, + + // Remove loading icon from the slide + // ================================== + + hideLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && slide.$spinner ) { + slide.$spinner.remove(); + + delete slide.$spinner; + } + + }, + + + // Adjustments after slide content has been loaded + // =============================================== + + afterLoad : function( slide ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + slide.isLoading = false; + slide.isLoaded = true; + + self.trigger( 'afterLoad', slide ); + + self.hideLoading( slide ); + + if ( slide.opts.smallBtn && !slide.$smallBtn ) { + slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content.filter('div,form').first() ); + } + + if ( slide.opts.protect && slide.$content && !slide.hasError ) { + + // Disable right click + slide.$content.on( 'contextmenu.fb', function( e ) { + if ( e.button == 2 ) { + e.preventDefault(); + } + + return true; + }); + + // Add fake element on top of the image + // This makes a bit harder for user to select image + if ( slide.type === 'image' ) { + $( '
' ).appendTo( slide.$content ); + } + + } + + self.revealContent( slide ); + + }, + + + // Make content visible + // This method is called right after content has been loaded or + // user navigates gallery and transition should start + // ============================================================ + + revealContent : function( slide ) { + + var self = this; + var $slide = slide.$slide; + + var effect, effectClassName, duration, opacity, end, start = false; + + effect = slide.opts[ self.firstRun ? 'animationEffect' : 'transitionEffect' ]; + duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ]; + + duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 ); + + if ( slide.isMoved || slide.pos !== self.currPos || !duration ) { + effect = false; + } + + // Check if can zoom + if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) { + effect = 'fade'; + } + + // Zoom animation + // ============== + + if ( effect === 'zoom' ) { + end = self.getFitPos( slide ); + + end.scaleX = end.width / start.width; + end.scaleY = end.height / start.height; + + delete end.width; + delete end.height; + + // Check if we need to animate opacity + opacity = slide.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1; + } + + if ( opacity ) { + start.opacity = 0.1; + end.opacity = 1; + } + + // Draw image at start position + $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start ); + + forceRedraw( slide.$content ); + + // Start animation + $.fancybox.animate( slide.$content, end, duration, function() { + self.complete(); + }); + + return; + } + + self.updateSlide( slide ); + + + // Simply show content + // =================== + + if ( !effect ) { + forceRedraw( $slide ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + return; + } + + $.fancybox.stop( $slide ); + + effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos >= self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect; + + $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + //Force reflow for CSS3 transitions + forceRedraw( $slide ); + + $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) { + $slide.removeClass( effectClassName ).removeAttr( 'style' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + }, true); + + }, + + + // Check if we can and have to zoom from thumbnail + //================================================ + + getThumbPos : function( slide ) { + + var self = this; + var rez = false; + + // Check if element is inside the viewport by at least 1 pixel + var isElementVisible = function( $el ) { + var element = $el[0]; + + var elementRect = element.getBoundingClientRect(); + var parentRects = []; + + var visibleInAllParents; + + while ( element.parentElement !== null ) { + if ( $(element.parentElement).css('overflow') === 'hidden' || $(element.parentElement).css('overflow') === 'auto' ) { + parentRects.push(element.parentElement.getBoundingClientRect()); + } + + element = element.parentElement; + } + + visibleInAllParents = parentRects.every(function(parentRect){ + var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left); + var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top); + + return visiblePixelX > 0 && visiblePixelY > 0; + }); + + return visibleInAllParents && + elementRect.bottom > 0 && elementRect.right > 0 && + elementRect.left < $(window).width() && elementRect.top < $(window).height(); + }; + + var $thumb = slide.opts.$thumb; + var thumbPos = $thumb ? $thumb.offset() : 0; + var slidePos; + + if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) { + slidePos = self.$refs.stage.offset(); + + rez = { + top : thumbPos.top - slidePos.top + parseFloat( $thumb.css( "border-top-width" ) || 0 ), + left : thumbPos.left - slidePos.left + parseFloat( $thumb.css( "border-left-width" ) || 0 ), + width : $thumb.width(), + height : $thumb.height(), + scaleX : 1, + scaleY : 1 + }; + } + + return rez; + }, + + + // Final adjustments after current gallery item is moved to position + // and it`s content is loaded + // ================================================================== + + complete : function() { + var self = this, + current = self.current, + slides = {}, + promise; + + if ( current.isMoved || !current.isLoaded || current.isComplete ) { + return; + } + + current.isComplete = true; + + current.$slide.siblings().trigger( 'onReset' ); + + self.preload( 'inline' ); + + // Trigger any CSS3 transiton inside the slide + forceRedraw( current.$slide ); + + current.$slide.addClass( 'fancybox-slide--complete' ); + + // Remove unnecessary slides + $.each( self.slides, function( key, slide ) { + if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) { + slides[ slide.pos ] = slide; + + } else if ( slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.off().remove(); + } + }); + + self.slides = slides; + + self.updateCursor(); + + self.trigger( 'afterShow' ); + + // Play first html5 video/audio + current.$slide.find( 'video,audio' ).first().trigger( 'play' ); + + // Try to focus on the first focusable element + if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) { + self.focus(); + } + + }, + + + // Preload next and previous slides + // ================================ + + preload : function( type ) { + var self = this, + next = self.slides[ self.currPos + 1 ], + prev = self.slides[ self.currPos - 1 ]; + + if ( next && next.type === type ) { + self.loadSlide( next ); + } + + if ( prev && prev.type === type ) { + self.loadSlide( prev ); + } + }, + + + // Try to find and focus on the first focusable element + // ==================================================== + + focus : function() { + var current = this.current; + var $el; + + if ( this.isClosing ) { + return; + } + + if ( current && current.isComplete ) { + + // Look for first input with autofocus attribute + $el = current.$slide.find('input[autofocus]:enabled:visible:first'); + + if ( !$el.length ) { + $el = current.$slide.find('button,:input,[tabindex],a').filter(':enabled:visible:first'); + } + } + + $el = $el && $el.length ? $el : this.$refs.container; + + $el.focus(); + }, + + + // Activates current instance - brings container to the front and enables keyboard, + // notifies other instances about deactivating + // ================================================================================= + + activate : function () { + var self = this; + + // Deactivate all instances + $( '.fancybox-container' ).each(function () { + var instance = $(this).data( 'FancyBox' ); + + // Skip self and closing instances + if (instance && instance.id !== self.id && !instance.isClosing) { + instance.trigger( 'onDeactivate' ); + + instance.removeEvents(); + + instance.isVisible = false; + } + + }); + + self.isVisible = true; + + if ( self.current || self.isIdle ) { + self.update(); + + self.updateControls(); + } + + self.trigger( 'onActivate' ); + + self.addEvents(); + }, + + + // Start closing procedure + // This will start "zoom-out" animation if needed and clean everything up afterwards + // ================================================================================= + + close : function( e, d ) { + + var self = this; + var current = self.current; + + var effect, duration; + var $what, opacity, start, end; + + var done = function() { + self.cleanUp( e ); + }; + + if ( self.isClosing ) { + return false; + } + + self.isClosing = true; + + // If beforeClose callback prevents closing, make sure content is centered + if ( self.trigger( 'beforeClose', e ) === false ) { + self.isClosing = false; + + requestAFrame(function() { + self.update(); + }); + + return false; + } + + // Remove all events + // If there are multiple instances, they will be set again by "activate" method + self.removeEvents(); + + if ( current.timouts ) { + clearTimeout( current.timouts ); + } + + $what = current.$content; + effect = current.opts.animationEffect; + duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 ); + + // Remove other slides + current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' ); + + current.$slide.siblings().trigger( 'onReset' ).remove(); + + // Trigger animations + if ( duration ) { + self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' ); + } + + // Clean up + self.hideLoading( current ); + + self.hideControls(); + + self.updateCursor(); + + // Check if possible to zoom-out + if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) { + effect = 'fade'; + } + + if ( effect === 'zoom' ) { + $.fancybox.stop( $what ); + + start = $.fancybox.getTranslate( $what ); + + start.width = start.width * start.scaleX; + start.height = start.height * start.scaleY; + + // Check if we need to animate opacity + opacity = current.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1; + } + + if ( opacity ) { + end.opacity = 0; + } + + start.scaleX = start.width / end.width; + start.scaleY = start.height / end.height; + + start.width = end.width; + start.height = end.height; + + $.fancybox.setTranslate( current.$content, start ); + + forceRedraw( current.$content ); + + $.fancybox.animate( current.$content, end, duration, done ); + + return true; + } + + if ( effect && duration ) { + + // If skip animation + if ( e === true ) { + setTimeout( done, duration ); + + } else { + $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done ); + } + + } else { + done(); + } + + return true; + }, + + + // Final adjustments after removing the instance + // ============================================= + + cleanUp : function( e ) { + var self = this, + $body = $( 'body' ), + instance, + offset; + + self.current.$slide.trigger( 'onReset' ); + + self.$refs.container.empty().remove(); + + self.trigger( 'afterClose', e ); + + // Place back focus + if ( self.$lastFocus && !!self.current.opts.backFocus ) { + self.$lastFocus.focus(); + } + + self.current = null; + + // Check if there are other instances + instance = $.fancybox.getInstance(); + + if ( instance ) { + instance.activate(); + + } else { + + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + + $body.removeClass( 'fancybox-active compensate-for-scrollbar' ); + + if ( $body.hasClass( 'fancybox-iosfix' ) ) { + offset = parseInt(document.body.style.top, 10); + + $body.removeClass( 'fancybox-iosfix' ).css( 'top', '' ).scrollTop( offset * -1 ); + } + + $( '#fancybox-style-noscroll' ).remove(); + + } + + }, + + + // Call callback and trigger an event + // ================================== + + trigger : function( name, slide ) { + var args = Array.prototype.slice.call(arguments, 1), + self = this, + obj = slide && slide.opts ? slide : self.current, + rez; + + if ( obj ) { + args.unshift( obj ); + + } else { + obj = self; + } + + args.unshift( self ); + + if ( $.isFunction( obj.opts[ name ] ) ) { + rez = obj.opts[ name ].apply( obj, args ); + } + + if ( rez === false ) { + return rez; + } + + if ( name === 'afterClose' || !self.$refs ) { + $D.trigger( name + '.fb', args ); + + } else { + self.$refs.container.trigger( name + '.fb', args ); + } + + }, + + + // Update infobar values, navigation button states and reveal caption + // ================================================================== + + updateControls : function ( force ) { + + var self = this; + + var current = self.current, + index = current.index, + caption = current.opts.caption, + $container = self.$refs.container, + $caption = self.$refs.caption; + + // Recalculate content dimensions + current.$slide.trigger( 'refresh' ); + + self.$caption = caption && caption.length ? $caption.html( caption ) : null; + + if ( !self.isHiddenControls && !self.isIdle ) { + self.showControls(); + } + + // Update info and navigation elements + $container.find('[data-fancybox-count]').html( self.group.length ); + $container.find('[data-fancybox-index]').html( index + 1 ); + + $container.find('[data-fancybox-prev]').prop( 'disabled', ( !current.opts.loop && index <= 0 ) ); + $container.find('[data-fancybox-next]').prop( 'disabled', ( !current.opts.loop && index >= self.group.length - 1 ) ); + + if ( current.type === 'image' ) { + + // Update download button source + $container.find('[data-fancybox-download]').attr( 'href', current.opts.image.src || current.src ).show(); + + } else { + $container.find('[data-fancybox-download],[data-fancybox-zoom]').hide(); + } + }, + + // Hide toolbar and caption + // ======================== + + hideControls : function () { + + this.isHiddenControls = true; + + this.$refs.container.removeClass( 'fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav' ); + + }, + + showControls : function() { + var self = this; + var opts = self.current ? self.current.opts : self.opts; + var $container = self.$refs.container; + + self.isHiddenControls = false; + self.idleSecondsCounter = 0; + + $container + .toggleClass( 'fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) ) + .toggleClass( 'fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) ) + .toggleClass( 'fancybox-show-nav', !!( opts.arrows && self.group.length > 1 ) ) + .toggleClass( 'fancybox-is-modal', !!opts.modal ); + + if ( self.$caption ) { + $container.addClass( 'fancybox-show-caption '); + + } else { + $container.removeClass( 'fancybox-show-caption' ); + } + + }, + + + // Toggle toolbar and caption + // ========================== + + toggleControls : function() { + if ( this.isHiddenControls ) { + this.showControls(); + + } else { + this.hideControls(); + } + + }, + + + }); + + + $.fancybox = { + + version : "3.2.10", + defaults : defaults, + + + // Get current instance and execute a command. + // + // Examples of usage: + // + // $instance = $.fancybox.getInstance(); + // $.fancybox.getInstance().jumpTo( 1 ); + // $.fancybox.getInstance( 'jumpTo', 1 ); + // $.fancybox.getInstance( function() { + // console.info( this.currIndex ); + // }); + // ====================================================== + + getInstance : function ( command ) { + var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data( 'FancyBox' ); + var args = Array.prototype.slice.call(arguments, 1); + + if ( instance instanceof FancyBox ) { + + if ( $.type( command ) === 'string' ) { + instance[ command ].apply( instance, args ); + + } else if ( $.type( command ) === 'function' ) { + command.apply( instance, args ); + } + + return instance; + } + + return false; + + }, + + + // Create new instance + // =================== + + open : function ( items, opts, index ) { + return new FancyBox( items, opts, index ); + }, + + + // Close current or all instances + // ============================== + + close : function ( all ) { + var instance = this.getInstance(); + + if ( instance ) { + instance.close(); + + // Try to find and close next instance + + if ( all === true ) { + this.close(); + } + } + + }, + + // Close instances and unbind all events + // ============================== + + destroy : function() { + + this.close( true ); + + $D.off( 'click.fb-start' ); + + }, + + + // Try to detect mobile devices + // ============================ + + isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), + + + // Detect if 'translate3d' support is available + // ============================================ + + use3d : (function() { + var div = document.createElement('div'); + + return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11); + }()), + + // Helper function to get current visual state of an element + // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] + // ===================================================================== + + getTranslate : function( $el ) { + var matrix; + + if ( !$el || !$el.length ) { + return false; + } + + matrix = $el.eq( 0 ).css('transform'); + + if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) { + matrix = matrix.split('(')[1]; + matrix = matrix.split(')')[0]; + matrix = matrix.split(','); + } else { + matrix = []; + } + + if ( matrix.length ) { + + // If IE + if ( matrix.length > 10 ) { + matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ]; + + } else { + matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]]; + } + + matrix = matrix.map(parseFloat); + + } else { + matrix = [ 0, 0, 1, 1 ]; + + var transRegex = /\.*translate\((.*)px,(.*)px\)/i; + var transRez = transRegex.exec( $el.eq( 0 ).attr('style') ); + + if ( transRez ) { + matrix[ 0 ] = parseFloat( transRez[2] ); + matrix[ 1 ] = parseFloat( transRez[1] ); + } + } + + return { + top : matrix[ 0 ], + left : matrix[ 1 ], + scaleX : matrix[ 2 ], + scaleY : matrix[ 3 ], + opacity : parseFloat( $el.css('opacity') ), + width : $el.width(), + height : $el.height() + }; + + }, + + + // Shortcut for setting "translate3d" properties for element + // Can set be used to set opacity, too + // ======================================================== + + setTranslate : function( $el, props ) { + var str = ''; + var css = {}; + + if ( !$el || !props ) { + return; + } + + if ( props.left !== undefined || props.top !== undefined ) { + str = ( props.left === undefined ? $el.position().left : props.left ) + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px'; + + if ( this.use3d ) { + str = 'translate3d(' + str + ', 0px)'; + + } else { + str = 'translate(' + str + ')'; + } + } + + if ( props.scaleX !== undefined && props.scaleY !== undefined ) { + str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')'; + } + + if ( str.length ) { + css.transform = str; + } + + if ( props.opacity !== undefined ) { + css.opacity = props.opacity; + } + + if ( props.width !== undefined ) { + css.width = props.width; + } + + if ( props.height !== undefined ) { + css.height = props.height; + } + + return $el.css( css ); + }, + + + // Simple CSS transition handler + // ============================= + + animate : function ( $el, to, duration, callback, leaveAnimationName ) { + if ( $.isFunction( duration ) ) { + callback = duration; + duration = null; + } + + if ( !$.isPlainObject( to ) ) { + $el.removeAttr( 'style' ); + } + + $el.on( transitionEnd, function(e) { + + // Skip events from child elements and z-index change + if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) { + return; + } + + $.fancybox.stop( $el ); + + if ( $.isPlainObject( to ) ) { + + if ( to.scaleX !== undefined && to.scaleY !== undefined ) { + $el.css( 'transition-duration', '' ); + + to.width = Math.round( $el.width() * to.scaleX ); + to.height = Math.round( $el.height() * to.scaleY ); + + to.scaleX = 1; + to.scaleY = 1; + + $.fancybox.setTranslate( $el, to ); + } + + if ( leaveAnimationName === false ) { + $el.removeAttr( 'style' ); + } + + } else if ( leaveAnimationName !== true ) { + $el.removeClass( to ); + } + + if ( $.isFunction( callback ) ) { + callback( e ); + } + + }); + + if ( $.isNumeric( duration ) ) { + $el.css( 'transition-duration', duration + 'ms' ); + } + + if ( $.isPlainObject( to ) ) { + $.fancybox.setTranslate( $el, to ); + + } else { + $el.addClass( to ); + } + + if ( to.scaleX && $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().addClass( 'fancybox-is-scaling' ); + } + + // Make sure that `transitionend` callback gets fired + $el.data("timer", setTimeout(function() { + $el.trigger( 'transitionend' ); + }, duration + 16)); + + }, + + stop : function( $el ) { + clearTimeout( $el.data("timer") ); + + $el.off( 'transitionend' ).css( 'transition-duration', '' ); + + if ( $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().removeClass( 'fancybox-is-scaling' ); + } + } + + }; + + + // Default click handler for "fancyboxed" links + // ============================================ + + function _run( e ) { + var $target = $( e.currentTarget ), + opts = e.data ? e.data.options : {}, + value = $target.attr( 'data-fancybox' ) || '', + index = 0, + items = []; + + // Avoid opening multiple times + if ( e.isDefaultPrevented() ) { + return; + } + + e.preventDefault(); + + // Get all related items and find index for clicked one + if ( value ) { + items = opts.selector ? $( opts.selector ) : ( e.data ? e.data.items : [] ); + items = items.length ? items.filter( '[data-fancybox="' + value + '"]' ) : $( '[data-fancybox="' + value + '"]' ); + + index = items.index( $target ); + + // Sometimes current item can not be found + // (for example, when slider clones items) + if ( index < 0 ) { + index = 0; + } + + } else { + items = [ $target ]; + } + + $.fancybox.open( items, opts, index ); + } + + + // Create a jQuery plugin + // ====================== + + $.fn.fancybox = function (options) { + var selector; + + options = options || {}; + selector = options.selector || false; + + if ( selector ) { + + $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, { + options : options + }, _run ); + + } else { + + this.off( 'click.fb-start' ).on( 'click.fb-start', { + items : this, + options : options + }, _run); + + } + + return this; + }; + + + // Self initializing plugin + // ======================== + + $D.on( 'click.fb-start', '[data-fancybox]', _run ); + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Media +// Adds additional media type support +// +// ========================================================================== +;(function ($) { + + 'use strict'; + + // Formats matching url to final form + + var format = function (url, rez, params) { + if ( !url ) { + return; + } + + params = params || ''; + + if ( $.type(params) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function (key, value) { + url = url.replace('$' + key, value || ''); + }); + + if (params.length) { + url += (url.indexOf('?') > 0 ? '&' : '?') + params; + } + + return url; + }; + + // Object containing properties for each media type + + var defaults = { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'transparent', + enablejsapi : 1, + html5 : 1 + }, + paramPlace : 8, + type : 'iframe', + url : '//www.youtube.com/embed/$4', + thumb : '//img.youtube.com/vi/$4/hqdefault.jpg' + }, + + vimeo : { + matcher : /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1, + api : 1 + }, + paramPlace : 3, + type : 'iframe', + url : '//player.vimeo.com/video/$2' + }, + + metacafe : { + matcher : /metacafe.com\/watch\/(\d+)\/(.*)?/, + type : 'iframe', + url : '//www.metacafe.com/embed/$1/?ap=1' + }, + + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'iframe', + url : '//www.dailymotion.com/embed/video/$1' + }, + + vine : { + matcher : /vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/, + type : 'iframe', + url : '//vine.co/v/$1/embed/simple' + }, + + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + + // Examples: + // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z + // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 + gmap_place : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\//, "&") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' ); + } + }, + + // Examples: + // https://www.google.com/maps/search/Empire+State+Building/ + // https://www.google.com/maps/search/?api=1&query=centurylink+field + // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 + gmap_search : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/maps?q=' + rez[5].replace('query=', 'q=').replace('api=1', '') + '&output=embed'; + } + } + }; + + $(document).on('objectNeedsType.fb', function (e, instance, item) { + + var url = item.src || '', + type = false, + media, + thumb, + rez, + params, + urlParams, + paramObj, + provider; + + media = $.extend( true, {}, defaults, item.opts.media ); + + // Look for any matching media type + $.each(media, function ( providerName, providerOpts ) { + rez = url.match( providerOpts.matcher ); + + if ( !rez ) { + return; + } + + type = providerOpts.type; + paramObj = {}; + + if ( providerOpts.paramPlace && rez[ providerOpts.paramPlace ] ) { + urlParams = rez[ providerOpts.paramPlace ]; + + if ( urlParams[ 0 ] == '?' ) { + urlParams = urlParams.substring(1); + } + + urlParams = urlParams.split('&'); + + for ( var m = 0; m < urlParams.length; ++m ) { + var p = urlParams[ m ].split('=', 2); + + if ( p.length == 2 ) { + paramObj[ p[0] ] = decodeURIComponent( p[1].replace(/\+/g, " ") ); + } + } + } + + params = $.extend( true, {}, providerOpts.params, item.opts[ providerName ], paramObj ); + + url = $.type( providerOpts.url ) === "function" ? providerOpts.url.call( this, rez, params, item ) : format( providerOpts.url, rez, params ); + thumb = $.type( providerOpts.thumb ) === "function" ? providerOpts.thumb.call( this, rez, params, item ) : format( providerOpts.thumb, rez ); + + if ( providerName === 'vimeo' ) { + url = url.replace('&%23', '#'); + } + + return false; + }); + + // If it is found, then change content type and update the url + + if ( type ) { + item.src = url; + item.type = type; + + if ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) { + item.opts.thumb = thumb; + } + + if ( type === 'iframe' ) { + $.extend(true, item.opts, { + iframe : { + preload : false, + attr : { + scrolling : "no" + } + } + }); + + item.contentProvider = provider; + + item.opts.slideClass += ' fancybox-slide--' + ( provider == 'gmap_place' || provider == 'gmap_search' ? 'map' : 'video' ); + } + + } else if ( url ) { + item.type = item.opts.defaultType; + } + + }); + +}( window.jQuery || jQuery )); + +// ========================================================================== +// +// Guestures +// Adds touch guestures, handles click and tap events +// +// ========================================================================== +;(function (window, document, $) { + 'use strict'; + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + var cancelAFrame = (function () { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function (id) { + window.clearTimeout(id); + }; + })(); + + var pointers = function( e ) { + var result = []; + + e = e.originalEvent || e || window.e; + e = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] ); + + for ( var key in e ) { + + if ( e[ key ].pageX ) { + result.push( { x : e[ key ].pageX, y : e[ key ].pageY } ); + + } else if ( e[ key ].clientX ) { + result.push( { x : e[ key ].clientX, y : e[ key ].clientY } ); + } + } + + return result; + }; + + var distance = function( point2, point1, what ) { + if ( !point1 || !point2 ) { + return 0; + } + + if ( what === 'x' ) { + return point2.x - point1.x; + + } else if ( what === 'y' ) { + return point2.y - point1.y; + } + + return Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) ); + }; + + var isClickable = function( $el ) { + if ( $el.is('a,area,button,[role="button"],input,label,select,summary,textarea') || $.isFunction( $el.get(0).onclick ) || $el.data('selectable') ) { + return true; + } + + // Check for attributes like data-fancybox-next or data-fancybox-close + for ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) { + if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) { + return true; + } + } + + return false; + }; + + var hasScrollbars = function( el ) { + var overflowY = window.getComputedStyle( el )['overflow-y']; + var overflowX = window.getComputedStyle( el )['overflow-x']; + + var vertical = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight; + var horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth; + + return vertical || horizontal; + }; + + var isScrollable = function ( $el ) { + var rez = false; + + while ( true ) { + rez = hasScrollbars( $el.get(0) ); + + if ( rez ) { + break; + } + + $el = $el.parent(); + + if ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) { + break; + } + } + + return rez; + }; + + + var Guestures = function ( instance ) { + var self = this; + + self.instance = instance; + + self.$bg = instance.$refs.bg; + self.$stage = instance.$refs.stage; + self.$container = instance.$refs.container; + + self.destroy(); + + self.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') ); + }; + + Guestures.prototype.destroy = function() { + this.$container.off( '.fb.touch' ); + }; + + Guestures.prototype.ontouchstart = function( e ) { + var self = this; + + var $target = $( e.target ); + var instance = self.instance; + var current = instance.current; + var $content = current.$content; + + var isTouchDevice = ( e.type == 'touchstart' ); + + // Do not respond to both (touch and mouse) events + if ( isTouchDevice ) { + self.$container.off( 'mousedown.fb.touch' ); + } + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Ignore taping on links, buttons, input elements + if ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) { + return; + } + + // Ignore clicks on the scrollbar + if ( !$target.is('img') && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Ignore clicks while zooming or closing + if ( !current || self.instance.isAnimating || self.instance.isClosing ) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + self.realPoints = self.startPoints = pointers( e ); + + if ( !self.startPoints ) { + return; + } + + e.stopPropagation(); + + self.startEvent = e; + + self.canTap = true; + self.$target = $target; + self.$content = $content; + self.opts = current.opts.touch; + + self.isPanning = false; + self.isSwiping = false; + self.isZooming = false; + self.isScrolling = false; + + self.sliderStartPos = self.sliderLastPos || { top: 0, left: 0 }; + self.contentStartPos = $.fancybox.getTranslate( self.$content ); + self.contentLastPos = null; + + self.startTime = new Date().getTime(); + self.distanceX = self.distanceY = self.distance = 0; + + self.canvasWidth = Math.round( current.$slide[0].clientWidth ); + self.canvasHeight = Math.round( current.$slide[0].clientHeight ); + + $(document) + .off( '.fb.touch' ) + .on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, "ontouchend")) + .on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch', $.proxy(self, "ontouchmove")); + + if ( $.fancybox.isMobile ) { + document.addEventListener('scroll', self.onscroll, true); + } + + if ( !(self.opts || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + + // Prevent image ghosting while dragging + if ( $target.is('img') ) { + e.preventDefault(); + } + + return; + } + + if ( !( $.fancybox.isMobile && ( isScrollable( $target ) || isScrollable( $target.parent() ) ) ) ) { + e.preventDefault(); + } + + if ( self.startPoints.length === 1 ) { + if ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) { + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '' ); + + self.isPanning = true; + + } else { + self.isSwiping = true; + } + + self.$container.addClass( 'fancybox-controls--isGrabbing' ); + } + + if ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) { + self.canTap = false; + self.isSwiping = false; + self.isPanning = false; + + self.isZooming = true; + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '' ); + + self.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft(); + self.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop(); + + self.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width; + self.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top ) / self.contentStartPos.height; + + self.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] ); + } + + }; + + Guestures.prototype.onscroll = function(e) { + self.isScrolling = true; + }; + + Guestures.prototype.ontouchmove = function( e ) { + var self = this, + $target = $(e.target); + + if ( self.isScrolling || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + self.canTap = false; + + return; + } + + self.newPoints = pointers( e ); + + if ( !( self.opts || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) { + return; + } + + if ( !(self.isSwiping && self.isSwiping === true) ) { + e.preventDefault(); + } + + self.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' ); + self.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' ); + + self.distance = distance( self.newPoints[0], self.startPoints[0] ) + + // Skip false ontouchmove events (Chrome) + if ( self.distance > 0 ) { + if ( self.isSwiping ) { + self.onSwipe(e); + + } else if ( self.isPanning ) { + self.onPan(); + + } else if ( self.isZooming ) { + self.onZoom(); + } + } + + }; + + Guestures.prototype.onSwipe = function(e) { + var self = this, + swiping = self.isSwiping, + left = self.sliderStartPos.left || 0, + angle; + + // If direction is not yet determined + if ( swiping === true ) { + + // We need at least 10px distance to correctly calculate an angle + if ( Math.abs( self.distance ) > 10 ) { + self.canTap = false; + + if ( self.instance.group.length < 2 && self.opts.vertical ) { + self.isSwiping = 'y'; + + } else if ( self.instance.isDragging || self.opts.vertical === false || ( self.opts.vertical === 'auto' && $( window ).width() > 800 ) ) { + self.isSwiping = 'x'; + + } else { + angle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI ); + + self.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x'; + } + + self.canTap = false; + + if ( self.isSwiping === 'y' && $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) { + self.isScrolling = true; + + return; + } + + self.instance.isDragging = self.isSwiping; + + // Reset points to avoid jumping, because we dropped first swipes to calculate the angle + self.startPoints = self.newPoints; + + $.each(self.instance.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.css( 'transition-duration', '' ); + + slide.inTransition = false; + + if ( slide.pos === self.instance.current.pos ) { + self.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left; + } + }); + + // Stop slideshow + if ( self.instance.SlideShow && self.instance.SlideShow.isActive ) { + self.instance.SlideShow.stop(); + } + } + + return; + } + + // Sticky edges + if ( swiping == 'x' ) { + if ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) { + left = left + Math.pow( self.distanceX, 0.8 ); + + } else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) { + left = left - Math.pow( -self.distanceX, 0.8 ); + + } else { + left = left + self.distanceX; + } + } + + self.sliderLastPos = { + top : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY, + left : left + }; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + + if ( self.sliderLastPos ) { + $.each(self.instance.slides, function( index, slide ) { + var pos = slide.pos - self.instance.currPos; + + $.fancybox.setTranslate( slide.$slide, { + top : self.sliderLastPos.top, + left : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter ) + }); + }); + + self.$container.addClass( 'fancybox-is-sliding' ); + } + + }); + + }; + + Guestures.prototype.onPan = function() { + var self = this; + + // Sometimes, when tapping causally, image can move a bit and that breaks double tapping + if ( distance( self.newPoints[0], self.realPoints[0] ) < ($.fancybox.isMobile ? 10 : 5) ) { + self.startPoints = self.newPoints; + return; + } + + self.canTap = false; + + self.contentLastPos = self.limitMovement(); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + }; + + // Make panning sticky to the edges + Guestures.prototype.limitMovement = function() { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + var distanceX = self.distanceX; + var distanceY = self.distanceY; + + var contentStartPos = self.contentStartPos; + + var currentOffsetX = contentStartPos.left; + var currentOffsetY = contentStartPos.top; + + var currentWidth = contentStartPos.width; + var currentHeight = contentStartPos.height; + + var minTranslateX, minTranslateY, + maxTranslateX, maxTranslateY, + newOffsetX, newOffsetY; + + if ( currentWidth > canvasWidth ) { + newOffsetX = currentOffsetX + distanceX; + + } else { + newOffsetX = currentOffsetX; + } + + newOffsetY = currentOffsetY + distanceY; + + // Slow down proportionally to traveled distance + minTranslateX = Math.max( 0, canvasWidth * 0.5 - currentWidth * 0.5 ); + minTranslateY = Math.max( 0, canvasHeight * 0.5 - currentHeight * 0.5 ); + + maxTranslateX = Math.min( canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5 ); + maxTranslateY = Math.min( canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5 ); + + if ( currentWidth > canvasWidth ) { + + // -> + if ( distanceX > 0 && newOffsetX > minTranslateX ) { + newOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0; + } + + // <- + if ( distanceX < 0 && newOffsetX < maxTranslateX ) { + newOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0; + } + + } + + if ( currentHeight > canvasHeight ) { + + // \/ + if ( distanceY > 0 && newOffsetY > minTranslateY ) { + newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0; + } + + // /\ + if ( distanceY < 0 && newOffsetY < maxTranslateY ) { + newOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0; + } + + } + + return { + top : newOffsetY, + left : newOffsetX, + scaleX : contentStartPos.scaleX, + scaleY : contentStartPos.scaleY + }; + + }; + + Guestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + if ( newWidth > canvasWidth ) { + newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; + newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; + + } else { + + // Center horizontally + newOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 ); + + } + + if ( newHeight > canvasHeight ) { + newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; + newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; + + } else { + + // Center vertically + newOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 ); + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + Guestures.prototype.onZoom = function() { + var self = this; + + // Calculate current distance between points to get pinch ratio and new width and height + + var currentWidth = self.contentStartPos.width; + var currentHeight = self.contentStartPos.height; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] ); + + var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; + + var newWidth = Math.floor( currentWidth * pinchRatio ); + var newHeight = Math.floor( currentHeight * pinchRatio ); + + // This is the translation due to pinch-zooming + var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; + var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; + + //Point between the two touches + + var centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft(); + var centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop(); + + // And this is the translation due to translation of the centerpoint + // between the two fingers + + var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; + var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; + + // The new offset is the old/current one plus the total translation + + var newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX ); + var newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY ); + + var newPos = { + top : newOffsetY, + left : newOffsetX, + scaleX : self.contentStartPos.scaleX * pinchRatio, + scaleY : self.contentStartPos.scaleY * pinchRatio + }; + + self.canTap = false; + + self.newWidth = newWidth; + self.newHeight = newHeight; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + + }; + + Guestures.prototype.ontouchend = function( e ) { + var self = this; + var dMs = Math.max( (new Date().getTime() ) - self.startTime, 1); + + var swiping = self.isSwiping; + var panning = self.isPanning; + var zooming = self.isZooming; + var scrolling = self.isScrolling; + + self.endPoints = pointers( e ); + + self.$container.removeClass( 'fancybox-controls--isGrabbing' ); + + $(document).off( '.fb.touch' ); + + document.removeEventListener('scroll', self.onscroll, true); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.isSwiping = false; + self.isPanning = false; + self.isZooming = false; + self.isScrolling = false; + + self.instance.isDragging = false; + + if ( self.canTap ) { + return self.onTap( e ); + } + + self.speed = 366; + + // Speed in px/ms + self.velocityX = self.distanceX / dMs * 0.5; + self.velocityY = self.distanceY / dMs * 0.5; + + self.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) ); + + if ( panning ) { + self.endPanning(); + + } else if ( zooming ) { + self.endZooming(); + + } else { + self.endSwiping( swiping, scrolling ); + } + + return; + }; + + Guestures.prototype.endSwiping = function( swiping, scrolling ) { + var self = this, + ret = false, + len = self.instance.group.length; + + self.sliderLastPos = null; + + // Close if swiped vertically / navigate if horizontally + if ( swiping == 'y' && !scrolling && Math.abs( self.distanceY ) > 50 ) { + + // Continue vertical movement + $.fancybox.animate( self.instance.current.$slide, { + top : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ), + opacity : 0 + }, 150 ); + + ret = self.instance.close( true, 300 ); + + } else if ( swiping == 'x' && self.distanceX > 50 && len > 1 ) { + ret = self.instance.previous( self.speedX ); + + } else if ( swiping == 'x' && self.distanceX < -50 && len > 1 ) { + ret = self.instance.next( self.speedX ); + } + + if ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) { + if ( scrolling || len < 2 ) { + self.instance.centerSlide( self.instance.current, 150 ); + } else { + self.instance.jumpTo( self.instance.current.index ); + } + } + + self.$container.removeClass( 'fancybox-is-sliding' ); + + }; + + // Limit panning from edges + // ======================== + + Guestures.prototype.endPanning = function() { + + var self = this; + var newOffsetX, newOffsetY, newPos; + + if ( !self.contentLastPos ) { + return; + } + + if ( self.opts.momentum === false ) { + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + } else { + + // Continue movement + newOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed ); + newOffsetY = self.contentLastPos.top + ( self.velocityY * self.speed ); + } + + newPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.width = self.contentStartPos.width; + newPos.height = self.contentStartPos.height; + + $.fancybox.animate( self.$content, newPos, 330 ); + }; + + + Guestures.prototype.endZooming = function() { + var self = this; + + var current = self.instance.current; + + var newOffsetX, newOffsetY, newPos, reset; + + var newWidth = self.newWidth; + var newHeight = self.newHeight; + + if ( !self.contentLastPos ) { + return; + } + + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + reset = { + top : newOffsetY, + left : newOffsetX, + width : newWidth, + height : newHeight, + scaleX : 1, + scaleY : 1 + }; + + // Reset scalex/scaleY values; this helps for perfomance and does not break animation + $.fancybox.setTranslate( self.$content, reset ); + + if ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) { + self.instance.scaleToFit( 150 ); + + } else if ( newWidth > current.width || newHeight > current.height ) { + self.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 ); + + } else { + + newPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight ); + + // Switch from scale() to width/height or animation will not work correctly + $.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) ); + + $.fancybox.animate( self.$content, newPos, 150 ); + } + + }; + + Guestures.prototype.onTap = function(e) { + var self = this; + var $target = $( e.target ); + + var instance = self.instance; + var current = instance.current; + + var endPoints = ( e && pointers( e ) ) || self.startPoints; + + var tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0; + var tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top : 0; + + var where; + + var process = function ( prefix ) { + + var action = current.opts[ prefix ]; + + if ( $.isFunction( action ) ) { + action = action.apply( instance, [ current, e ] ); + } + + if ( !action) { + return; + } + + switch ( action ) { + + case "close" : + + instance.close( self.startEvent ); + + break; + + case "toggleControls" : + + instance.toggleControls( true ); + + break; + + case "next" : + + instance.next(); + + break; + + case "nextOrClose" : + + if ( instance.group.length > 1 ) { + instance.next(); + + } else { + instance.close( self.startEvent ); + } + + break; + + case "zoom" : + + if ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) { + + if ( instance.canPan() ) { + instance.scaleToFit(); + + } else if ( instance.isScaledDown() ) { + instance.scaleToActual( tapX, tapY ); + + } else if ( instance.group.length < 2 ) { + instance.close( self.startEvent ); + } + } + + break; + } + + }; + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Skip if clicked on the scrollbar + if ( !$target.is('img') && tapX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Check where is clicked + if ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) { + where = 'Outside'; + + } else if ( $target.is( '.fancybox-slide' ) ) { + where = 'Slide'; + + } else if ( instance.current.$content && instance.current.$content.find( $target ).addBack().filter( $target ).length ) { + where = 'Content'; + + } else { + return; + } + + // Check if this is a double tap + if ( self.tapped ) { + + // Stop previously created single tap + clearTimeout( self.tapped ); + self.tapped = null; + + // Skip if distance between taps is too big + if ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 ) { + return this; + } + + // OK, now we assume that this is a double-tap + process( 'dblclick' + where ); + + } else { + + // Single tap will be processed if user has not clicked second time within 300ms + // or there is no need to wait for double-tap + self.tapX = tapX; + self.tapY = tapY; + + if ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) { + + self.tapped = setTimeout(function() { + self.tapped = null; + + process( 'click' + where ); + + }, 500); + + } else { + process( 'click' + where ); + } + + } + + return this; + }; + + $(document).on('onActivate.fb', function (e, instance) { + if ( instance && !instance.Guestures ) { + instance.Guestures = new Guestures( instance ); + } + }); + +}( window, document, window.jQuery || jQuery )); + +// ========================================================================== +// +// SlideShow +// Enables slideshow functionality +// +// Example of usage: +// $.fancybox.getInstance().SlideShow.start() +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + slideShow : + '' + }, + slideShow : { + autoStart : false, + speed : 3000 + } + }); + + var SlideShow = function( instance ) { + this.instance = instance; + this.init(); + }; + + $.extend( SlideShow.prototype, { + timer : null, + isActive : false, + $button : null, + + init : function() { + var self = this; + + self.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() { + self.toggle(); + }); + + if ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) { + self.$button.hide(); + } + }, + + set : function( force ) { + var self = this; + + // Check if reached last element + if ( self.instance && self.instance.current && (force === true || self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) { + self.timer = setTimeout(function() { + if ( self.isActive ) { + self.instance.jumpTo( (self.instance.currIndex + 1) % self.instance.group.length ); + } + + }, self.instance.current.opts.slideShow.speed); + + } else { + self.stop(); + self.instance.idleSecondsCounter = 0; + self.instance.showControls(); + } + }, + + clear : function() { + var self = this; + + clearTimeout( self.timer ); + + self.timer = null; + }, + + start : function() { + var self = this; + var current = self.instance.current; + + if ( current ) { + self.isActive = true; + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP ) + .removeClass( 'fancybox-button--play' ) + .addClass( 'fancybox-button--pause' ); + + self.set( true ); + } + }, + + stop : function() { + var self = this; + var current = self.instance.current; + + self.clear(); + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START ) + .removeClass( 'fancybox-button--pause' ) + .addClass( 'fancybox-button--play' ); + + self.isActive = false; + }, + + toggle : function() { + var self = this; + + if ( self.isActive ) { + self.stop(); + + } else { + self.start(); + } + } + + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + if ( instance && !instance.SlideShow ) { + instance.SlideShow = new SlideShow( instance ); + } + }, + + 'beforeShow.fb' : function(e, instance, current, firstRun) { + var SlideShow = instance && instance.SlideShow; + + if ( firstRun ) { + + if ( SlideShow && current.opts.slideShow.autoStart ) { + SlideShow.start(); + } + + } else if ( SlideShow && SlideShow.isActive ) { + SlideShow.clear(); + } + }, + + 'afterShow.fb' : function(e, instance, current) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + SlideShow.set(); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var SlideShow = instance && instance.SlideShow; + + // "P" or Spacebar + if ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) { + keypress.preventDefault(); + + SlideShow.toggle(); + } + }, + + 'beforeClose.fb onDeactivate.fb' : function(e, instance) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow ) { + SlideShow.stop(); + } + } + }); + + // Page Visibility API to pause slideshow when window is not active + $(document).on("visibilitychange", function() { + var instance = $.fancybox.getInstance(); + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + if ( document.hidden ) { + SlideShow.clear(); + + } else { + SlideShow.set(); + } + } + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// FullScreen +// Adds fullscreen functionality +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Collection of methods supported by user browser + var fn = (function () { + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // new WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var val; + var ret = {}; + var i, j; + + for ( i = 0; i < fnMap.length; i++ ) { + val = fnMap[ i ]; + + if ( val && val[ 1 ] in document ) { + for ( j = 0; j < val.length; j++ ) { + ret[ fnMap[ 0 ][ j ] ] = val[ j ]; + } + + return ret; + } + } + + return false; + })(); + + // If browser does not have Full Screen API, then simply unset default button template and stop + if ( !fn ) { + + if ( $ && $.fancybox ) { + $.fancybox.defaults.btnTpl.fullScreen = false; + } + + return; + } + + var FullScreen = { + + request : function ( elem ) { + + elem = elem || document.documentElement; + + elem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT ); + + }, + exit : function () { + + document[ fn.exitFullscreen ](); + + }, + toggle : function ( elem ) { + + elem = elem || document.documentElement; + + if ( this.isFullscreen() ) { + this.exit(); + + } else { + this.request( elem ); + } + + }, + isFullscreen : function() { + + return Boolean( document[ fn.fullscreenElement ] ); + + }, + enabled : function() { + + return Boolean( document[ fn.fullscreenEnabled ] ); + + } + }; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + fullScreen : + '' + }, + fullScreen : { + autoStart : false + } + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + var $container; + + if ( instance && instance.group[ instance.currIndex ].opts.fullScreen ) { + $container = instance.$refs.container; + + $container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) { + + e.stopPropagation(); + e.preventDefault(); + + FullScreen.toggle( $container[ 0 ] ); + + }); + + if ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) { + FullScreen.request( $container[ 0 ] ); + } + + // Expose API + instance.FullScreen = FullScreen; + + } else if ( instance ) { + instance.$refs.toolbar.find('[data-fancybox-fullscreen]').hide(); + } + + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + + // "P" or Spacebar + if ( instance && instance.FullScreen && keycode === 70 ) { + keypress.preventDefault(); + + instance.FullScreen.toggle( instance.$refs.container[ 0 ] ); + } + + }, + + 'beforeClose.fb' : function( instance ) { + if ( instance && instance.FullScreen ) { + FullScreen.exit(); + } + } + }); + + $(document).on(fn.fullscreenchange, function() { + var isFullscreen = FullScreen.isFullscreen(), + instance = $.fancybox.getInstance(); + + if ( instance ) { + + // If image is zooming, then force to stop and reposition properly + if ( instance.current && instance.current.type === 'image' && instance.isAnimating ) { + instance.current.$content.css( 'transition', 'none' ); + + instance.isAnimating = false; + + instance.update( true, true, 0 ); + } + + instance.trigger( 'onFullscreenChange', isFullscreen ); + + instance.$refs.container.toggleClass( 'fancybox-is-fullscreen', isFullscreen ); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Thumbs +// Displays thumbnails in a grid +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Make sure there are default values + $.fancybox.defaults = $.extend(true, { + btnTpl : { + thumbs : + '' + }, + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + } + }, $.fancybox.defaults); + + var FancyThumbs = function( instance ) { + this.init( instance ); + }; + + $.extend( FancyThumbs.prototype, { + + $button : null, + $grid : null, + $list : null, + isVisible : false, + isActive : false, + + init : function( instance ) { + var self = this; + + self.instance = instance; + + instance.Thumbs = self; + + // Enable thumbs if at least two group items have thumbnails + var first = instance.group[0], + second = instance.group[1]; + + self.opts = instance.group[ instance.currIndex ].opts.thumbs; + + self.$button = instance.$refs.toolbar.find( '[data-fancybox-thumbs]' ); + + if ( self.opts && first && second && ( + ( first.type == 'image' || first.opts.thumb || first.opts.$thumb ) && + ( second.type == 'image' || second.opts.thumb || second.opts.$thumb ) + )) { + + self.$button.show().on('click', function() { + self.toggle(); + }); + + self.isActive = true; + + } else { + self.$button.hide(); + } + }, + + create : function() { + var self = this, + instance = self.instance, + parentEl = self.opts.parentEl, + list, + src; + + self.$grid = $('
').appendTo( instance.$refs.container.find( parentEl ).addBack().filter( parentEl ) ); + + // Build list HTML + list = '
    '; + + $.each(instance.group, function( i, item ) { + src = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr( 'src' ) : null ); + + if ( !src && item.type === 'image' ) { + src = item.src; + } + + if ( src && src.length ) { + list += '
  • '; + } + }); + + list += '
'; + + self.$list = $( list ).appendTo( self.$grid ).on('click', 'li', function() { + instance.jumpTo( $(this).data('index') ); + }); + + self.$list.find( 'img' ).hide().one('load', function() { + var $parent = $(this).parent().removeClass( 'fancybox-thumbs-loading' ), + thumbWidth = $parent.outerWidth(), + thumbHeight = $parent.outerHeight(), + width, + height, + widthRatio, + heightRatio; + + width = this.naturalWidth || this.width; + height = this.naturalHeight || this.height; + + // Calculate thumbnail dimensions; center vertically and horizontally + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = width / heightRatio; + height = thumbHeight; + + } else { + width = thumbWidth; + height = height / widthRatio; + } + } + + $(this).css({ + width : Math.floor(width), + height : Math.floor(height), + 'margin-top' : height > thumbHeight ? ( Math.floor(thumbHeight * 0.3 - height * 0.3 ) ) : Math.floor(thumbHeight * 0.5 - height * 0.5 ), + 'margin-left' : Math.floor(thumbWidth * 0.5 - width * 0.5 ) + }).show(); + + }) + .each(function() { + this.src = $( this ).data( 'src' ); + }); + + if ( self.opts.axis === 'x' ) { + self.$list.width( parseInt( self.$grid.css("padding-right") ) + ( instance.group.length * self.$list.children().eq(0).outerWidth(true) ) + 'px' ); + } + }, + + focus : function( duration ) { + var self = this, + $list = self.$list, + thumb, + thumbPos; + + if ( self.instance.current ) { + thumb = $list.children() + .removeClass( 'fancybox-thumbs-active' ) + .filter('[data-index="' + self.instance.current.index + '"]') + .addClass('fancybox-thumbs-active'); + + thumbPos = thumb.position(); + + // Check if need to scroll to make current thumb visible + if ( self.opts.axis === 'y' && ( thumbPos.top < 0 || thumbPos.top > ( $list.height() - thumb.outerHeight() ) ) ) { + $list.stop().animate({ 'scrollTop' : $list.scrollTop() + thumbPos.top }, duration); + + } else if ( self.opts.axis === 'x' && ( + thumbPos.left < $list.parent().scrollLeft() || + thumbPos.left > ( $list.parent().scrollLeft() + ( $list.parent().width() - thumb.outerWidth() ) ) + ) + ) { + $list.parent().stop().animate({ 'scrollLeft' : thumbPos.left }, duration); + } + } + }, + + update : function() { + this.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible ); + + if ( this.isVisible ) { + if ( !this.$grid ) { + this.create(); + } + + this.instance.trigger( 'onThumbsShow' ); + + this.focus( 0 ); + + } else if ( this.$grid ) { + this.instance.trigger( 'onThumbsHide' ); + } + + // Update content position + this.instance.update(); + }, + + hide : function() { + this.isVisible = false; + this.update(); + }, + + show : function() { + this.isVisible = true; + this.update(); + }, + + toggle : function() { + this.isVisible = !this.isVisible; + this.update(); + } + }); + + $(document).on({ + + 'onInit.fb' : function(e, instance) { + var Thumbs; + + if ( instance && !instance.Thumbs ) { + Thumbs = new FancyThumbs( instance ); + + if ( Thumbs.isActive && Thumbs.opts.autoStart === true ) { + Thumbs.show(); + } + } + }, + + 'beforeShow.fb' : function(e, instance, item, firstRun) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible ) { + Thumbs.focus( firstRun ? 0 : 250 ); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var Thumbs = instance && instance.Thumbs; + + // "G" + if ( Thumbs && Thumbs.isActive && keycode === 71 ) { + keypress.preventDefault(); + + Thumbs.toggle(); + } + }, + + 'beforeClose.fb' : function( e, instance ) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false ) { + Thumbs.$grid.hide(); + } + } + + }); + +}(document, window.jQuery)); + +//// ========================================================================== +// +// Share +// Displays simple form for sharing current url +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + share : + '' + }, + share : { + tpl : + '
' + + '

{{SHARE}}

' + + '' + + '

' + + '
' + } + }); + + function escapeHtml(string) { + var entityMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/', + '`': '`', + '=': '=' + }; + + return String(string).replace(/[&<>"'`=\/]/g, function (s) { + return entityMap[s]; + }); + } + + $(document).on('click', '[data-fancybox-share]', function() { + var f = $.fancybox.getInstance(), + url, + tpl; + + if ( f ) { + url = f.current.opts.hash === false ? f.current.src : window.location; + tpl = f.current.opts.share.tpl + .replace( /\{\{media\}\}/g, f.current.type === 'image' ? encodeURIComponent( f.current.src ) : '' ) + .replace( /\{\{url\}\}/g, encodeURIComponent( url ) ) + .replace( /\{\{url_raw\}\}/g, escapeHtml( url ) ) + .replace( /\{\{descr\}\}/g, f.$caption ? encodeURIComponent( f.$caption.text() ) : '' ); + + $.fancybox.open({ + src : f.translate( f, tpl ), + type : 'html', + opts : { + animationEffect : "fade", + animationDuration : 250, + afterLoad : function(instance, current) { + // Opening links in a popup window + current.$content.find('.fancybox-share__links a').click(function() { + window.open(this.href, "Share", "width=550, height=450"); + return false; + }); + } + } + }); + } + + }); + +}( document, window.jQuery || jQuery )); + +// ========================================================================== +// +// Hash +// Enables linking to each modal +// +// ========================================================================== +;(function (document, window, $) { + 'use strict'; + + // Simple $.escapeSelector polyfill (for jQuery prior v3) + if ( !$.escapeSelector ) { + $.escapeSelector = function( sel ) { + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + } + + // Create new history entry only once + var shouldCreateHistory = true; + + // Variable containing last hash value set by fancyBox + // It will be used to determine if fancyBox needs to close after hash change is detected + var currentHash = null; + + // Throttling the history change + var timerID = null; + + // Get info about gallery name and current index from url + function parseUrl() { + var hash = window.location.hash.substr( 1 ); + var rez = hash.split( '-' ); + var index = rez.length > 1 && /^\+?\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1; + var gallery = rez.join( '-' ); + + // Index is starting from 1 + if ( index < 1 ) { + index = 1; + } + + return { + hash : hash, + index : index, + gallery : gallery + }; + } + + // Trigger click evnt on links to open new fancyBox instance + function triggerFromUrl( url ) { + var $el; + + if ( url.gallery !== '' ) { + + // If we can find element matching 'data-fancybox' atribute, then trigger click event for that .. + $el = $( "[data-fancybox='" + $.escapeSelector( url.gallery ) + "']" ).eq( url.index - 1 ); + + if ( !$el.length ) { + // .. if not, try finding element by ID + $el = $( "#" + $.escapeSelector( url.gallery ) + "" ); + } + + if ( $el.length ) { + shouldCreateHistory = false; + + $el.trigger( 'click' ); + } + + } + } + + // Get gallery name from current instance + function getGalleryID( instance ) { + var opts; + + if ( !instance ) { + return false; + } + + opts = instance.current ? instance.current.opts : instance.opts; + + return opts.hash || ( opts.$orig ? opts.$orig.data( 'fancybox' ) : '' ); + } + + // Start when DOM becomes ready + $(function() { + + // Check if user has disabled this module + if ( $.fancybox.defaults.hash === false ) { + return; + } + + // Update hash when opening/closing fancyBox + $(document).on({ + 'onInit.fb' : function( e, instance ) { + var url, gallery; + + if ( instance.group[ instance.currIndex ].opts.hash === false ) { + return; + } + + url = parseUrl(); + gallery = getGalleryID( instance ); + + // Make sure gallery start index matches index from hash + if ( gallery && url.gallery && gallery == url.gallery ) { + instance.currIndex = url.index - 1; + } + }, + + 'beforeShow.fb' : function( e, instance, current ) { + var gallery; + + if ( !current || current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + + // Update window hash + if ( gallery && gallery !== '' ) { + + if ( window.location.hash.indexOf( gallery ) < 0 ) { + instance.opts.origHash = window.location.hash; + } + + currentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' ); + + if ( 'replaceState' in window.history ) { + if ( timerID ) { + clearTimeout( timerID ); + } + + timerID = setTimeout(function() { + window.history[ shouldCreateHistory ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' + currentHash ); + + timerID = null; + + shouldCreateHistory = false; + + }, 300); + + } else { + window.location.hash = currentHash; + } + + } + + }, + + 'beforeClose.fb' : function( e, instance, current ) { + var gallery, origHash; + + if ( timerID ) { + clearTimeout( timerID ); + } + + if ( current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + origHash = instance && instance.opts.origHash ? instance.opts.origHash : ''; + + // Remove hash from location bar + if ( gallery && gallery !== '' ) { + + if ( 'replaceState' in history ) { + window.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash ); + + } else { + window.location.hash = origHash; + + // Keep original scroll position + $( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft ); + } + } + + currentHash = null; + } + }); + + // Check if need to close after url has changed + $(window).on('hashchange.fb', function() { + var url = parseUrl(); + + if ( $.fancybox.getInstance() ) { + if ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) { + currentHash = null; + + $.fancybox.close(); + } + + } else if ( url.gallery !== '' ) { + triggerFromUrl( url ); + } + }); + + // Check current hash and trigger click event on matching element to start fancyBox, if needed + setTimeout(function() { + triggerFromUrl( parseUrl() ); + }, 50); + }); + +}( document, window, window.jQuery || jQuery )); + +;(function (document, $) { + 'use strict'; + + var prevTime = new Date().getTime(); + + $(document).on({ + 'onInit.fb' : function( e, instance, current ) { + instance.$refs.stage.on('mousewheel DOMMouseScroll wheel MozMousePixelScroll', function(e) { + var current = instance.current, + currTime = new Date().getTime(); + + if ( instance.group.length < 1 || current.opts.wheel === false || ( current.opts.wheel === 'auto' && current.type !== 'image' ) ) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + if ( current.$slide.hasClass( 'fancybox-animated' ) ) { + return; + } + + e = e.originalEvent || e; + + if ( currTime - prevTime < 250 ) { + return; + } + + prevTime = currTime; + + instance[ ( -e.deltaY || -e.deltaX || e.wheelDelta || -e.detail ) < 0 ? 'next' : 'previous' ](); + + }); + } + }); + +}( document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.css new file mode 100644 index 0000000000..5d804a59b0 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.css @@ -0,0 +1 @@ +@charset "UTF-8";body.fancybox-active{overflow:hidden}body.fancybox-iosfix{position:fixed;left:0;right:0}.fancybox-is-hidden{position:absolute;top:-9999px;left:-9999px;visibility:hidden}.fancybox-container{position:fixed;top:0;left:0;width:100%;height:100%;z-index:99992;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-transform:translateZ(0);transform:translateZ(0);font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Roboto,Helvetica Neue,Arial,sans-serif}.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-stage{position:absolute;top:0;right:0;bottom:0;left:0}.fancybox-outer{overflow-y:auto;-webkit-overflow-scrolling:touch}.fancybox-bg{background:#1e1e1e;opacity:0;transition-duration:inherit;transition-property:opacity;transition-timing-function:cubic-bezier(.47,0,.74,.71)}.fancybox-is-open .fancybox-bg{opacity:.87;transition-timing-function:cubic-bezier(.22,.61,.36,1)}.fancybox-caption-wrap,.fancybox-infobar,.fancybox-toolbar{position:absolute;direction:ltr;z-index:99997;opacity:0;visibility:hidden;transition:opacity .25s,visibility 0s linear .25s;box-sizing:border-box}.fancybox-show-caption .fancybox-caption-wrap,.fancybox-show-infobar .fancybox-infobar,.fancybox-show-toolbar .fancybox-toolbar{opacity:1;visibility:visible;transition:opacity .25s,visibility 0s}.fancybox-infobar{top:0;left:0;font-size:13px;padding:0 10px;height:44px;min-width:44px;line-height:44px;color:#ccc;text-align:center;pointer-events:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;-webkit-touch-callout:none;-webkit-tap-highlight-color:transparent;-webkit-font-smoothing:subpixel-antialiased;mix-blend-mode:exclusion}.fancybox-toolbar{top:0;right:0;margin:0;padding:0}.fancybox-stage{overflow:hidden;direction:ltr;z-index:99994;-webkit-transform:translateZ(0)}.fancybox-is-closing .fancybox-stage{overflow:visible}.fancybox-slide{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;overflow:auto;outline:none;white-space:normal;box-sizing:border-box;text-align:center;z-index:99994;-webkit-overflow-scrolling:touch;display:none;-webkit-backface-visibility:hidden;backface-visibility:hidden;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.fancybox-slide:before{content:"";display:inline-block;vertical-align:middle;height:100%;width:0}.fancybox-is-sliding .fancybox-slide,.fancybox-slide--current,.fancybox-slide--next,.fancybox-slide--previous{display:block}.fancybox-slide--image{overflow:visible}.fancybox-slide--image:before{display:none}.fancybox-slide--video .fancybox-content,.fancybox-slide--video iframe{background:#000}.fancybox-slide--map .fancybox-content,.fancybox-slide--map iframe{background:#e5e3df}.fancybox-slide--next{z-index:99995}.fancybox-slide>*{display:inline-block;position:relative;padding:24px;margin:44px 0;border-width:0;vertical-align:middle;text-align:left;background-color:#fff;overflow:auto;box-sizing:border-box}.fancybox-slide>base,.fancybox-slide>link,.fancybox-slide>meta,.fancybox-slide>script,.fancybox-slide>style,.fancybox-slide>title{display:none}.fancybox-slide .fancybox-image-wrap{position:absolute;top:0;left:0;margin:0;padding:0;border:0;z-index:99995;background:transparent;cursor:default;overflow:visible;-webkit-transform-origin:top left;transform-origin:top left;background-size:100% 100%;background-repeat:no-repeat;-webkit-backface-visibility:hidden;backface-visibility:hidden;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;transition-property:opacity,-webkit-transform;transition-property:transform,opacity;transition-property:transform,opacity,-webkit-transform}.fancybox-can-zoomOut .fancybox-image-wrap{cursor:zoom-out}.fancybox-can-zoomIn .fancybox-image-wrap{cursor:zoom-in}.fancybox-can-drag .fancybox-image-wrap{cursor:-webkit-grab;cursor:grab}.fancybox-is-dragging .fancybox-image-wrap{cursor:-webkit-grabbing;cursor:grabbing}.fancybox-image,.fancybox-spaceball{position:absolute;top:0;left:0;width:100%;height:100%;margin:0;padding:0;border:0;max-width:none;max-height:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-spaceball{z-index:1}.fancybox-slide--iframe .fancybox-content{padding:0;width:80%;height:80%;max-width:calc(100% - 100px);max-height:calc(100% - 88px);overflow:visible;background:#fff}.fancybox-iframe{display:block;padding:0;border:0;height:100%}.fancybox-error,.fancybox-iframe{margin:0;width:100%;background:#fff}.fancybox-error{padding:40px;max-width:380px;cursor:default}.fancybox-error p{margin:0;padding:0;color:#444;font-size:16px;line-height:20px}.fancybox-button{box-sizing:border-box;display:inline-block;vertical-align:top;width:44px;height:44px;margin:0;padding:10px;border:0;border-radius:0;background:rgba(30,30,30,.6);transition:color .3s ease;cursor:pointer;outline:none}.fancybox-button,.fancybox-button:link,.fancybox-button:visited{color:#ccc}.fancybox-button:focus,.fancybox-button:hover{color:#fff}.fancybox-button[disabled]{color:#ccc;cursor:default;opacity:.6}.fancybox-button svg{display:block;position:relative;overflow:visible;shape-rendering:geometricPrecision}.fancybox-button svg path{fill:currentColor;stroke:currentColor;stroke-linejoin:round;stroke-width:3}.fancybox-button--share svg path{stroke-width:1}.fancybox-button--pause svg path:nth-child(1),.fancybox-button--play svg path:nth-child(2){display:none}.fancybox-button--zoom svg path{fill:transparent}.fancybox-navigation{display:none}.fancybox-show-nav .fancybox-navigation{display:block}.fancybox-navigation button{position:absolute;top:50%;margin:-50px 0 0;z-index:99997;background:transparent;width:60px;height:100px;padding:17px}.fancybox-navigation button:before{content:"";position:absolute;top:30px;right:10px;width:40px;height:40px;background:rgba(30,30,30,.6)}.fancybox-navigation .fancybox-button--arrow_left{left:0}.fancybox-navigation .fancybox-button--arrow_right{right:0}.fancybox-close-small{position:absolute;top:0;right:0;width:40px;height:40px;padding:0;margin:0;border:0;border-radius:0;background:transparent;z-index:10;cursor:pointer}.fancybox-close-small:after{content:"×";position:absolute;top:5px;right:5px;width:30px;height:30px;font:22px/30px Arial,Helvetica Neue,Helvetica,sans-serif;color:#888;font-weight:300;text-align:center;border-radius:50%;border-width:0;background-color:transparent;transition:background-color .25s;box-sizing:border-box;z-index:2}.fancybox-close-small:focus{outline:none}.fancybox-close-small:focus:after{outline:1px dotted #888}.fancybox-close-small:hover:after{color:#555;background:#eee}.fancybox-slide--iframe .fancybox-close-small,.fancybox-slide--image .fancybox-close-small{top:0;right:-40px}.fancybox-slide--iframe .fancybox-close-small:after,.fancybox-slide--image .fancybox-close-small:after{font-size:35px;color:#aaa}.fancybox-slide--iframe .fancybox-close-small:hover:after,.fancybox-slide--image .fancybox-close-small:hover:after{color:#fff;background:transparent}.fancybox-is-scaling .fancybox-close-small,.fancybox-is-zoomable.fancybox-can-drag .fancybox-close-small{display:none}.fancybox-caption-wrap{bottom:0;left:0;right:0;padding:60px 2vw 0;background:linear-gradient(180deg,transparent 0,rgba(0,0,0,.1) 20%,rgba(0,0,0,.2) 40%,rgba(0,0,0,.6) 80%,rgba(0,0,0,.8));pointer-events:none}.fancybox-caption{padding:30px 0;border-top:1px solid hsla(0,0%,100%,.4);font-size:14px;color:#fff;line-height:20px;-webkit-text-size-adjust:none}.fancybox-caption a,.fancybox-caption button,.fancybox-caption select{pointer-events:all;position:relative}.fancybox-caption a{color:#fff;text-decoration:underline}.fancybox-slide>.fancybox-loading{border:6px solid hsla(0,0%,39%,.4);border-top:6px solid hsla(0,0%,100%,.6);border-radius:100%;height:50px;width:50px;-webkit-animation:a .8s infinite linear;animation:a .8s infinite linear;background:transparent;position:absolute;top:50%;left:50%;margin-top:-30px;margin-left:-30px;z-index:99999}@-webkit-keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}@keyframes a{0%{-webkit-transform:rotate(0deg);transform:rotate(0deg)}to{-webkit-transform:rotate(359deg);transform:rotate(359deg)}}.fancybox-animated{transition-timing-function:cubic-bezier(0,0,.25,1)}.fancybox-fx-slide.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0);transform:translate3d(-100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0);transform:translate3d(100%,0,0);opacity:0}.fancybox-fx-slide.fancybox-slide--current{-webkit-transform:translateZ(0);transform:translateZ(0);opacity:1}.fancybox-fx-fade.fancybox-slide--next,.fancybox-fx-fade.fancybox-slide--previous{opacity:0;transition-timing-function:cubic-bezier(.19,1,.22,1)}.fancybox-fx-fade.fancybox-slide--current{opacity:1}.fancybox-fx-zoom-in-out.fancybox-slide--previous{-webkit-transform:scale3d(1.5,1.5,1.5);transform:scale3d(1.5,1.5,1.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--next{-webkit-transform:scale3d(.5,.5,.5);transform:scale3d(.5,.5,.5);opacity:0}.fancybox-fx-zoom-in-out.fancybox-slide--current{-webkit-transform:scaleX(1);transform:scaleX(1);opacity:1}.fancybox-fx-rotate.fancybox-slide--previous{-webkit-transform:rotate(-1turn);transform:rotate(-1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--next{-webkit-transform:rotate(1turn);transform:rotate(1turn);opacity:0}.fancybox-fx-rotate.fancybox-slide--current{-webkit-transform:rotate(0deg);transform:rotate(0deg);opacity:1}.fancybox-fx-circular.fancybox-slide--previous{-webkit-transform:scale3d(0,0,0) translate3d(-100%,0,0);transform:scale3d(0,0,0) translate3d(-100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--next{-webkit-transform:scale3d(0,0,0) translate3d(100%,0,0);transform:scale3d(0,0,0) translate3d(100%,0,0);opacity:0}.fancybox-fx-circular.fancybox-slide--current{-webkit-transform:scaleX(1) translateZ(0);transform:scaleX(1) translateZ(0);opacity:1}.fancybox-fx-tube.fancybox-slide--previous{-webkit-transform:translate3d(-100%,0,0) scale(.1) skew(-10deg);transform:translate3d(-100%,0,0) scale(.1) skew(-10deg)}.fancybox-fx-tube.fancybox-slide--next{-webkit-transform:translate3d(100%,0,0) scale(.1) skew(10deg);transform:translate3d(100%,0,0) scale(.1) skew(10deg)}.fancybox-fx-tube.fancybox-slide--current{-webkit-transform:translateZ(0) scale(1);transform:translateZ(0) scale(1)}.fancybox-share{padding:30px;border-radius:3px;background:#f4f4f4;max-width:90%;text-align:center}.fancybox-share h1{color:#222;margin:0 0 20px;font-size:35px;font-weight:700}.fancybox-share p{margin:0;padding:0}p.fancybox-share__links{margin-right:-10px}.fancybox-share__button{display:inline-block;text-decoration:none;margin:0 10px 10px 0;padding:0 15px;min-width:130px;border:0;border-radius:3px;background:#fff;white-space:nowrap;font-size:14px;font-weight:700;line-height:40px;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none;color:#fff;transition:all .2s}.fancybox-share__button:hover{text-decoration:none}.fancybox-share__button--fb{background:#3b5998}.fancybox-share__button--fb:hover{background:#344e86}.fancybox-share__button--pt{background:#bd081d}.fancybox-share__button--pt:hover{background:#aa0719}.fancybox-share__button--tw{background:#1da1f2}.fancybox-share__button--tw:hover{background:#0d95e8}.fancybox-share__button svg{position:relative;top:-1px;width:25px;height:25px;margin-right:7px;vertical-align:middle}.fancybox-share__button svg path{fill:#fff}.fancybox-share__input{box-sizing:border-box;width:100%;margin:10px 0 0;padding:10px 15px;background:transparent;color:#5d5b5b;font-size:14px;outline:none;border:0;border-bottom:2px solid #d7d7d7}.fancybox-thumbs{display:none;position:absolute;top:0;bottom:0;right:0;width:212px;margin:0;padding:2px 2px 4px;background:#fff;-webkit-tap-highlight-color:transparent;-webkit-overflow-scrolling:touch;-ms-overflow-style:-ms-autohiding-scrollbar;box-sizing:border-box;z-index:99995}.fancybox-thumbs-x{overflow-y:hidden;overflow-x:auto}.fancybox-show-thumbs .fancybox-thumbs{display:block}.fancybox-show-thumbs .fancybox-inner{right:212px}.fancybox-thumbs>ul{list-style:none;position:absolute;position:relative;width:100%;height:100%;margin:0;padding:0;overflow-x:hidden;overflow-y:auto;font-size:0;white-space:nowrap}.fancybox-thumbs-x>ul{overflow:hidden}.fancybox-thumbs-y>ul::-webkit-scrollbar{width:7px}.fancybox-thumbs-y>ul::-webkit-scrollbar-track{background:#fff;border-radius:10px;box-shadow:inset 0 0 6px rgba(0,0,0,.3)}.fancybox-thumbs-y>ul::-webkit-scrollbar-thumb{background:#2a2a2a;border-radius:10px}.fancybox-thumbs>ul>li{float:left;overflow:hidden;padding:0;margin:2px;width:100px;height:75px;max-width:calc(50% - 4px);max-height:calc(100% - 8px);position:relative;cursor:pointer;outline:none;-webkit-tap-highlight-color:transparent;-webkit-backface-visibility:hidden;backface-visibility:hidden;box-sizing:border-box}li.fancybox-thumbs-loading{background:rgba(0,0,0,.1)}.fancybox-thumbs>ul>li>img{position:absolute;top:0;left:0;max-width:none;max-height:none;-webkit-touch-callout:none;-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}.fancybox-thumbs>ul>li:before{content:"";position:absolute;top:0;right:0;bottom:0;left:0;border:4px solid #4ea7f9;z-index:99991;opacity:0;transition:all .2s cubic-bezier(.25,.46,.45,.94)}.fancybox-thumbs>ul>li.fancybox-thumbs-active:before{opacity:1}@media (max-width:800px){.fancybox-thumbs{width:110px}.fancybox-show-thumbs .fancybox-inner{right:110px}.fancybox-thumbs>ul>li{max-width:calc(100% - 10px)}} \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.js new file mode 100644 index 0000000000..8a0c3e77e1 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/dist/jquery.fancybox.min.js @@ -0,0 +1,12 @@ +// ================================================== +// fancyBox v3.2.10 +// +// Licensed GPLv3 for open source use +// or fancyBox Commercial License for commercial use +// +// http://fancyapps.com/fancybox/ +// Copyright 2017 fancyApps +// +// ================================================== +!function(t,e,n,o){"use strict";function i(t){var e=n(t.currentTarget),o=t.data?t.data.options:{},i=e.attr("data-fancybox")||"",a=0,s=[];t.isDefaultPrevented()||(t.preventDefault(),i?(s=o.selector?n(o.selector):t.data?t.data.items:[],s=s.length?s.filter('[data-fancybox="'+i+'"]'):n('[data-fancybox="'+i+'"]'),a=s.index(e),a<0&&(a=0)):s=[e],n.fancybox.open(s,o,a))}if(n){if(n.fn.fancybox)return void("console"in t&&console.log("fancyBox already initialized"));var a={loop:!1,margin:[44,0],gutter:50,keyboard:!0,arrows:!0,infobar:!0,toolbar:!0,buttons:["slideShow","fullScreen","thumbs","share","close"],idleTime:3,smallBtn:"auto",protect:!1,modal:!1,image:{preload:"auto"},ajax:{settings:{data:{fancybox:!0}}},iframe:{tpl:'',preload:!0,css:{},attr:{scrolling:"auto"}},defaultType:"image",animationEffect:"zoom",animationDuration:500,zoomOpacity:"auto",transitionEffect:"fade",transitionDuration:366,slideClass:"",baseClass:"",baseTpl:'',spinnerTpl:'
',errorTpl:'

{{ERROR}}

',btnTpl:{download:'',zoom:'',close:'',smallBtn:'',arrowLeft:'',arrowRight:''},parentEl:"body",autoFocus:!1,backFocus:!0,trapFocus:!0,fullScreen:{autoStart:!1},touch:{vertical:!0,momentum:!0},hash:null,media:{},slideShow:{autoStart:!1,speed:4e3},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"},wheel:"auto",onInit:n.noop,beforeLoad:n.noop,afterLoad:n.noop,beforeShow:n.noop,afterShow:n.noop,beforeClose:n.noop,afterClose:n.noop,onActivate:n.noop,onDeactivate:n.noop,clickContent:function(t,e){return"image"===t.type&&"zoom"},clickSlide:"close",clickOutside:"close",dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1,mobile:{idleTime:!1,margin:0,clickContent:function(t,e){return"image"===t.type&&"toggleControls"},clickSlide:function(t,e){return"image"===t.type?"toggleControls":"close"},dblclickContent:function(t,e){return"image"===t.type&&"zoom"},dblclickSlide:function(t,e){return"image"===t.type&&"zoom"}},lang:"en",i18n:{en:{CLOSE:"Close",NEXT:"Next",PREV:"Previous",ERROR:"The requested content cannot be loaded.
Please try again later.",PLAY_START:"Start slideshow",PLAY_STOP:"Pause slideshow",FULL_SCREEN:"Full screen",THUMBS:"Thumbnails",DOWNLOAD:"Download",SHARE:"Share",ZOOM:"Zoom"},de:{CLOSE:"Schliessen",NEXT:"Weiter",PREV:"Zurück",ERROR:"Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.",PLAY_START:"Diaschau starten",PLAY_STOP:"Diaschau beenden",FULL_SCREEN:"Vollbild",THUMBS:"Vorschaubilder",DOWNLOAD:"Herunterladen",SHARE:"Teilen",ZOOM:"Maßstab"}}},s=n(t),r=n(e),c=0,l=function(t){return t&&t.hasOwnProperty&&t instanceof n},u=function(){return t.requestAnimationFrame||t.webkitRequestAnimationFrame||t.mozRequestAnimationFrame||t.oRequestAnimationFrame||function(e){return t.setTimeout(e,1e3/60)}}(),d=function(){var t,n=e.createElement("fakeelement"),i={transition:"transitionend",OTransition:"oTransitionEnd",MozTransition:"transitionend",WebkitTransition:"webkitTransitionEnd"};for(t in i)if(n.style[t]!==o)return i[t];return"transitionend"}(),f=function(t){return t&&t.length&&t[0].offsetHeight},p=function(t,o,i){var a=this;a.opts=n.extend(!0,{index:i},n.fancybox.defaults,o||{}),n.fancybox.isMobile&&(a.opts=n.extend(!0,{},a.opts,a.opts.mobile)),o&&n.isArray(o.buttons)&&(a.opts.buttons=o.buttons),a.id=a.opts.id||++c,a.group=[],a.currIndex=parseInt(a.opts.index,10)||0,a.prevIndex=null,a.prevPos=null,a.currPos=0,a.firstRun=null,a.createGroup(t),a.group.length&&(a.$lastFocus=n(e.activeElement).blur(),a.slides={},a.init())};n.extend(p.prototype,{init:function(){var i,a,s,c=this,l=c.group[c.currIndex],u=l.opts,d=n.fancybox.scrollbarWidth;c.scrollTop=r.scrollTop(),c.scrollLeft=r.scrollLeft(),n.fancybox.getInstance()||(n("body").addClass("fancybox-active"),/iPad|iPhone|iPod/.test(navigator.userAgent)&&!t.MSStream?"image"!==l.type&&n("body").css("top",n("body").scrollTop()*-1).addClass("fancybox-iosfix"):!n.fancybox.isMobile&&e.body.scrollHeight>t.innerHeight&&(d===o&&(i=n('
').appendTo("body"),d=n.fancybox.scrollbarWidth=i[0].offsetWidth-i[0].clientWidth,i.remove()),n("head").append('"),n("body").addClass("compensate-for-scrollbar"))),s="",n.each(u.buttons,function(t,e){s+=u.btnTpl[e]||""}),a=n(c.translate(c,u.baseTpl.replace("{{buttons}}",s).replace("{{arrows}}",u.btnTpl.arrowLeft+u.btnTpl.arrowRight))).attr("id","fancybox-container-"+c.id).addClass("fancybox-is-hidden").addClass(u.baseClass).data("FancyBox",c).appendTo(u.parentEl),c.$refs={container:a},["bg","inner","infobar","toolbar","stage","caption","navigation"].forEach(function(t){c.$refs[t]=a.find(".fancybox-"+t)}),c.trigger("onInit"),c.activate(),c.jumpTo(c.currIndex)},translate:function(t,e){var n=t.opts.i18n[t.opts.lang];return e.replace(/\{\{(\w+)\}\}/g,function(t,e){var i=n[e];return i===o?t:i})},createGroup:function(t){var e=this,i=n.makeArray(t);n.each(i,function(t,i){var a,s,r,c,l,u={},d={};n.isPlainObject(i)?(u=i,d=i.opts||i):"object"===n.type(i)&&n(i).length?(a=n(i),d=a.data(),d=n.extend({},d,d.options||{}),d.$orig=a,u.src=d.src||a.attr("href"),u.type||u.src||(u.type="inline",u.src=i)):u={type:"html",src:i+""},u.opts=n.extend(!0,{},e.opts,d),n.isArray(d.buttons)&&(u.opts.buttons=d.buttons),s=u.type||u.opts.type,c=u.src||"",!s&&c&&(c.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i)?s="image":c.match(/\.(pdf)((\?|#).*)?$/i)?s="pdf":(r=c.match(/\.(mp4|mov|ogv)((\?|#).*)?$/i))?(s="video",u.opts.videoFormat||(u.opts.videoFormat="video/"+("ogv"===r[1]?"ogg":r[1]))):"#"===c.charAt(0)&&(s="inline")),s?u.type=s:e.trigger("objectNeedsType",u),u.index=e.group.length,u.opts.$orig&&!u.opts.$orig.length&&delete u.opts.$orig,!u.opts.$thumb&&u.opts.$orig&&(u.opts.$thumb=u.opts.$orig.find("img:first")),u.opts.$thumb&&!u.opts.$thumb.length&&delete u.opts.$thumb,"function"===n.type(u.opts.caption)&&(u.opts.caption=u.opts.caption.apply(i,[e,u])),"function"===n.type(e.opts.caption)&&(u.opts.caption=e.opts.caption.apply(i,[e,u])),u.opts.caption instanceof n||(u.opts.caption=u.opts.caption===o?"":u.opts.caption+""),"ajax"===s&&(l=c.split(/\s+/,2),l.length>1&&(u.src=l.shift(),u.opts.filter=l.shift())),"auto"==u.opts.smallBtn&&(n.inArray(s,["html","inline","ajax"])>-1?(u.opts.toolbar=!1,u.opts.smallBtn=!0):u.opts.smallBtn=!1),"pdf"===s&&(u.type="iframe",u.opts.iframe.preload=!1),u.opts.modal&&(u.opts=n.extend(!0,u.opts,{infobar:0,toolbar:0,smallBtn:0,keyboard:0,slideShow:0,fullScreen:0,thumbs:0,touch:0,clickContent:!1,clickSlide:!1,clickOutside:!1,dblclickContent:!1,dblclickSlide:!1,dblclickOutside:!1})),e.group.push(u)})},addEvents:function(){var o=this;o.removeEvents(),o.$refs.container.on("click.fb-close","[data-fancybox-close]",function(t){t.stopPropagation(),t.preventDefault(),o.close(t)}).on("click.fb-prev touchend.fb-prev","[data-fancybox-prev]",function(t){t.stopPropagation(),t.preventDefault(),o.previous()}).on("click.fb-next touchend.fb-next","[data-fancybox-next]",function(t){t.stopPropagation(),t.preventDefault(),o.next()}).on("click.fb","[data-fancybox-zoom]",function(t){o[o.isScaledDown()?"scaleToActual":"scaleToFit"]()}),s.on("orientationchange.fb resize.fb",function(t){t&&t.originalEvent&&"resize"===t.originalEvent.type?u(function(){o.update()}):(o.$refs.stage.hide(),setTimeout(function(){o.$refs.stage.show(),o.update()},600))}),r.on("focusin.fb",function(t){var i=n.fancybox?n.fancybox.getInstance():null;i.isClosing||!i.current||!i.current.opts.trapFocus||n(t.target).hasClass("fancybox-container")||n(t.target).is(e)||i&&"fixed"!==n(t.target).css("position")&&!i.$refs.container.has(t.target).length&&(t.stopPropagation(),i.focus(),s.scrollTop(o.scrollTop).scrollLeft(o.scrollLeft))}),r.on("keydown.fb",function(t){var e=o.current,i=t.keyCode||t.which;if(e&&e.opts.keyboard&&!n(t.target).is("input")&&!n(t.target).is("textarea"))return 8===i||27===i?(t.preventDefault(),void o.close(t)):37===i||38===i?(t.preventDefault(),void o.previous()):39===i||40===i?(t.preventDefault(),void o.next()):void o.trigger("afterKeydown",t,i)}),o.group[o.currIndex].opts.idleTime&&(o.idleSecondsCounter=0,r.on("mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle",function(t){o.idleSecondsCounter=0,o.isIdle&&o.showControls(),o.isIdle=!1}),o.idleInterval=t.setInterval(function(){o.idleSecondsCounter++,o.idleSecondsCounter>=o.group[o.currIndex].opts.idleTime&&!o.isDragging&&(o.isIdle=!0,o.idleSecondsCounter=0,o.hideControls())},1e3))},removeEvents:function(){var e=this;s.off("orientationchange.fb resize.fb"),r.off("focusin.fb keydown.fb .fb-idle"),this.$refs.container.off(".fb-close .fb-prev .fb-next"),e.idleInterval&&(t.clearInterval(e.idleInterval),e.idleInterval=null)},previous:function(t){return this.jumpTo(this.currPos-1,t)},next:function(t){return this.jumpTo(this.currPos+1,t)},jumpTo:function(t,e,i){var a,s,r,c,l,u,d,p=this,h=p.group.length;if(!(p.isDragging||p.isClosing||p.isAnimating&&p.firstRun)){if(t=parseInt(t,10),s=p.current?p.current.opts.loop:p.opts.loop,!s&&(t<0||t>=h))return!1;if(a=p.firstRun=null===p.firstRun,!(h<2&&!a&&p.isDragging)){if(c=p.current,p.prevIndex=p.currIndex,p.prevPos=p.currPos,r=p.createSlide(t),h>1&&((s||r.index>0)&&p.createSlide(t-1),(s||r.indexr.pos?"next":"previous"),c.$slide.removeClass("fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous"),c.isComplete=!1,e&&(r.isMoved||r.opts.transitionEffect)&&(r.isMoved?c.$slide.addClass(d):(d="fancybox-animated "+d+" fancybox-fx-"+r.opts.transitionEffect,n.fancybox.animate(c.$slide,d,e,function(){c.$slide.removeClass(d).removeAttr("style")}))))}}},createSlide:function(t){var e,o,i=this;return o=t%i.group.length,o=o<0?i.group.length+o:o,!i.slides[t]&&i.group[o]&&(e=n('
').appendTo(i.$refs.stage),i.slides[t]=n.extend(!0,{},i.group[o],{pos:t,$slide:e,isLoaded:!1}),i.updateSlide(i.slides[t])),i.slides[t]},scaleToActual:function(t,e,i){var a,s,r,c,l,u=this,d=u.current,f=d.$content,p=parseInt(d.$slide.width(),10),h=parseInt(d.$slide.height(),10),g=d.width,b=d.height;"image"!=d.type||d.hasError||!f||u.isAnimating||(n.fancybox.stop(f),u.isAnimating=!0,t=t===o?.5*p:t,e=e===o?.5*h:e,a=n.fancybox.getTranslate(f),c=g/a.width,l=b/a.height,s=.5*p-.5*g,r=.5*h-.5*b,g>p&&(s=a.left*c-(t*c-t),s>0&&(s=0),sh&&(r=a.top*l-(e*l-e),r>0&&(r=0),rt.width||o.height>t.height))},isScaledDown:function(){var t=this,e=t.current,o=e.$content,i=!1;return o&&(i=n.fancybox.getTranslate(o),i=i.width1||Math.abs(n.height()-o.height)>1),o},loadSlide:function(t){var e,o,i,a=this;if(!t.isLoading&&!t.isLoaded){switch(t.isLoading=!0,a.trigger("beforeLoad",t),e=t.type,o=t.$slide,o.off("refresh").trigger("onReset").addClass("fancybox-slide--"+(e||"unknown")).addClass(t.opts.slideClass),e){case"image":a.setImage(t);break;case"iframe":a.setIframe(t);break;case"html":a.setContent(t,t.src||t.content);break;case"inline":n(t.src).length?a.setContent(t,n(t.src)):a.setError(t);break;case"ajax":a.showLoading(t),i=n.ajax(n.extend({},t.opts.ajax.settings,{url:t.src,success:function(e,n){"success"===n&&a.setContent(t,e)},error:function(e,n){e&&"abort"!==n&&a.setError(t)}})),o.one("onReset",function(){i.abort()});break;case"video":a.setContent(t,'");break;default:a.setError(t)}return!0}},setImage:function(e){var o,i,a,s,r=this,c=e.opts.srcset||e.opts.image.srcset;if(c){a=t.devicePixelRatio||1,s=t.innerWidth*a,i=c.split(",").map(function(t){var e={};return t.trim().split(/\s+/).forEach(function(t,n){var o=parseInt(t.substring(0,t.length-1),10);return 0===n?e.url=t:void(o&&(e.value=o,e.postfix=t[t.length-1]))}),e}),i.sort(function(t,e){return t.value-e.value});for(var l=0;l=s||"x"===u.postfix&&u.value>=a){o=u;break}}!o&&i.length&&(o=i[i.length-1]),o&&(e.src=o.url,e.width&&e.height&&"w"==o.postfix&&(e.height=e.width/e.height*o.value,e.width=o.value))}e.$content=n('
').addClass("fancybox-is-hidden").appendTo(e.$slide),e.opts.preload!==!1&&e.opts.width&&e.opts.height&&(e.opts.thumb||e.opts.$thumb)?(e.width=e.opts.width,e.height=e.opts.height,e.$ghost=n("").one("error",function(){n(this).remove(),e.$ghost=null,r.setBigImage(e)}).one("load",function(){r.afterLoad(e),r.setBigImage(e)}).addClass("fancybox-image").appendTo(e.$content).attr("src",e.opts.thumb||e.opts.$thumb.attr("src"))):r.setBigImage(e)},setBigImage:function(t){var e=this,o=n("");t.$image=o.one("error",function(){e.setError(t)}).one("load",function(){clearTimeout(t.timouts),t.timouts=null,e.isClosing||(t.width=t.opts.width||this.naturalWidth,t.height=t.opts.height||this.naturalHeight,t.opts.image.srcset&&o.attr("sizes","100vw").attr("srcset",t.opts.image.srcset),e.hideLoading(t),t.$ghost?t.timouts=setTimeout(function(){t.timouts=null,t.$ghost.hide()},Math.min(300,Math.max(1e3,t.height/1600))):e.afterLoad(t))}).addClass("fancybox-image").attr("src",t.src).appendTo(t.$content),(o[0].complete||"complete"==o[0].readyState)&&o[0].naturalWidth&&o[0].naturalHeight?o.trigger("load"):o[0].error?o.trigger("error"):t.timouts=setTimeout(function(){o[0].complete||t.hasError||e.showLoading(t)},100)},setIframe:function(t){var e,i=this,a=t.opts.iframe,s=t.$slide;t.$content=n('
').css(a.css).appendTo(s),e=n(a.tpl.replace(/\{rnd\}/g,(new Date).getTime())).attr(a.attr).appendTo(t.$content),a.preload?(i.showLoading(t),e.on("load.fb error.fb",function(e){this.isReady=1,t.$slide.trigger("refresh"),i.afterLoad(t)}),s.on("refresh.fb",function(){var n,i,s,r=t.$content,c=a.css.width,l=a.css.height;if(1===e[0].isReady){try{i=e.contents(),s=i.find("body")}catch(t){}s&&s.length&&(c===o&&(n=e[0].contentWindow.document.documentElement.scrollWidth,c=Math.ceil(s.outerWidth(!0)+(r.width()-n)),c+=r.outerWidth()-r.innerWidth()),l===o&&(l=Math.ceil(s.outerHeight(!0)),l+=r.outerHeight()-r.innerHeight()),c&&r.width(c),l&&r.height(l)),r.removeClass("fancybox-is-hidden")}})):this.afterLoad(t),e.attr("src",t.src),t.opts.smallBtn===!0&&t.$content.prepend(i.translate(t,t.opts.btnTpl.smallBtn)),s.one("onReset",function(){try{n(this).find("iframe").hide().attr("src","//about:blank")}catch(t){}n(this).empty(),t.isLoaded=!1})},setContent:function(t,e){var o=this;o.isClosing||(o.hideLoading(t),t.$slide.empty(),l(e)&&e.parent().length?(e.parent(".fancybox-slide--inline").trigger("onReset"),t.$placeholder=n("
").hide().insertAfter(e),e.css("display","inline-block")):t.hasError||("string"===n.type(e)&&(e=n("
").append(n.trim(e)).contents(),3===e[0].nodeType&&(e=n("
").html(e))),t.opts.filter&&(e=n("
").html(e).find(t.opts.filter))),t.$slide.one("onReset",function(){n(this).find("video,audio").trigger("pause"),t.$placeholder&&(t.$placeholder.after(e.hide()).remove(),t.$placeholder=null),t.$smallBtn&&(t.$smallBtn.remove(),t.$smallBtn=null),t.hasError||(n(this).empty(),t.isLoaded=!1)}),t.$content=n(e).appendTo(t.$slide),this.afterLoad(t))},setError:function(t){t.hasError=!0,t.$slide.removeClass("fancybox-slide--"+t.type),this.setContent(t,this.translate(t,t.opts.errorTpl))},showLoading:function(t){var e=this;t=t||e.current,t&&!t.$spinner&&(t.$spinner=n(e.opts.spinnerTpl).appendTo(t.$slide))},hideLoading:function(t){var e=this;t=t||e.current,t&&t.$spinner&&(t.$spinner.remove(),delete t.$spinner)},afterLoad:function(t){var e=this;e.isClosing||(t.isLoading=!1,t.isLoaded=!0,e.trigger("afterLoad",t),e.hideLoading(t),t.opts.smallBtn&&!t.$smallBtn&&(t.$smallBtn=n(e.translate(t,t.opts.btnTpl.smallBtn)).appendTo(t.$content.filter("div,form").first())),t.opts.protect&&t.$content&&!t.hasError&&(t.$content.on("contextmenu.fb",function(t){return 2==t.button&&t.preventDefault(),!0}),"image"===t.type&&n('
').appendTo(t.$content)),e.revealContent(t))},revealContent:function(t){var e,i,a,s,r,c=this,l=t.$slide,u=!1;return e=t.opts[c.firstRun?"animationEffect":"transitionEffect"],a=t.opts[c.firstRun?"animationDuration":"transitionDuration"],a=parseInt(t.forcedDuration===o?a:t.forcedDuration,10),!t.isMoved&&t.pos===c.currPos&&a||(e=!1),"zoom"!==e||t.pos===c.currPos&&a&&"image"===t.type&&!t.hasError&&(u=c.getThumbPos(t))||(e="fade"),"zoom"===e?(r=c.getFitPos(t),r.scaleX=r.width/u.width,r.scaleY=r.height/u.height,delete r.width,delete r.height,s=t.opts.zoomOpacity,"auto"==s&&(s=Math.abs(t.width/t.height-u.width/u.height)>.1),s&&(u.opacity=.1,r.opacity=1),n.fancybox.setTranslate(t.$content.removeClass("fancybox-is-hidden"),u),f(t.$content),void n.fancybox.animate(t.$content,r,a,function(){c.complete()})):(c.updateSlide(t),e?(n.fancybox.stop(l),i="fancybox-animated fancybox-slide--"+(t.pos>=c.prevPos?"next":"previous")+" fancybox-fx-"+e,l.removeAttr("style").removeClass("fancybox-slide--current fancybox-slide--next fancybox-slide--previous").addClass(i),t.$content.removeClass("fancybox-is-hidden"),f(l),void n.fancybox.animate(l,"fancybox-slide--current",a,function(e){l.removeClass(i).removeAttr("style"),t.pos===c.currPos&&c.complete()},!0)):(f(l),t.$content.removeClass("fancybox-is-hidden"),void(t.pos===c.currPos&&c.complete())))},getThumbPos:function(o){var i,a=this,s=!1,r=function(e){for(var o,i=e[0],a=i.getBoundingClientRect(),s=[];null!==i.parentElement;)"hidden"!==n(i.parentElement).css("overflow")&&"auto"!==n(i.parentElement).css("overflow")||s.push(i.parentElement.getBoundingClientRect()),i=i.parentElement;return o=s.every(function(t){var e=Math.min(a.right,t.right)-Math.max(a.left,t.left),n=Math.min(a.bottom,t.bottom)-Math.max(a.top,t.top);return e>0&&n>0}),o&&a.bottom>0&&a.right>0&&a.left=t.currPos-1&&o.pos<=t.currPos+1?i[o.pos]=o:o&&(n.fancybox.stop(o.$slide),o.$slide.off().remove())}),t.slides=i,t.updateCursor(),t.trigger("afterShow"),o.$slide.find("video,audio").first().trigger("play"),(n(e.activeElement).is("[disabled]")||o.opts.autoFocus&&"image"!=o.type&&"iframe"!==o.type)&&t.focus())},preload:function(t){var e=this,n=e.slides[e.currPos+1],o=e.slides[e.currPos-1];n&&n.type===t&&e.loadSlide(n),o&&o.type===t&&e.loadSlide(o)},focus:function(){var t,e=this.current;this.isClosing||(e&&e.isComplete&&(t=e.$slide.find("input[autofocus]:enabled:visible:first"),t.length||(t=e.$slide.find("button,:input,[tabindex],a").filter(":enabled:visible:first"))),t=t&&t.length?t:this.$refs.container,t.focus())},activate:function(){var t=this;n(".fancybox-container").each(function(){var e=n(this).data("FancyBox");e&&e.id!==t.id&&!e.isClosing&&(e.trigger("onDeactivate"),e.removeEvents(),e.isVisible=!1)}),t.isVisible=!0,(t.current||t.isIdle)&&(t.update(),t.updateControls()),t.trigger("onActivate"),t.addEvents()},close:function(t,e){var o,i,a,s,r,c,l=this,p=l.current,h=function(){l.cleanUp(t)};return!l.isClosing&&(l.isClosing=!0,l.trigger("beforeClose",t)===!1?(l.isClosing=!1,u(function(){l.update()}),!1):(l.removeEvents(),p.timouts&&clearTimeout(p.timouts),a=p.$content,o=p.opts.animationEffect,i=n.isNumeric(e)?e:o?p.opts.animationDuration:0,p.$slide.off(d).removeClass("fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated"),p.$slide.siblings().trigger("onReset").remove(),i&&l.$refs.container.removeClass("fancybox-is-open").addClass("fancybox-is-closing"),l.hideLoading(p),l.hideControls(),l.updateCursor(),"zoom"!==o||t!==!0&&a&&i&&"image"===p.type&&!p.hasError&&(c=l.getThumbPos(p))||(o="fade"),"zoom"===o?(n.fancybox.stop(a),r=n.fancybox.getTranslate(a),r.width=r.width*r.scaleX,r.height=r.height*r.scaleY,s=p.opts.zoomOpacity,"auto"==s&&(s=Math.abs(p.width/p.height-c.width/c.height)>.1),s&&(c.opacity=0),r.scaleX=r.width/c.width,r.scaleY=r.height/c.height,r.width=c.width,r.height=c.height,n.fancybox.setTranslate(p.$content,r),f(p.$content),n.fancybox.animate(p.$content,c,i,h),!0):(o&&i?t===!0?setTimeout(h,i):n.fancybox.animate(p.$slide.removeClass("fancybox-slide--current"),"fancybox-animated fancybox-slide--previous fancybox-fx-"+o,i,h):h(),!0)))},cleanUp:function(t){var o,i,a=this,r=n("body");a.current.$slide.trigger("onReset"),a.$refs.container.empty().remove(),a.trigger("afterClose",t),a.$lastFocus&&a.current.opts.backFocus&&a.$lastFocus.focus(),a.current=null,o=n.fancybox.getInstance(),o?o.activate():(s.scrollTop(a.scrollTop).scrollLeft(a.scrollLeft),r.removeClass("fancybox-active compensate-for-scrollbar"),r.hasClass("fancybox-iosfix")&&(i=parseInt(e.body.style.top,10),r.removeClass("fancybox-iosfix").css("top","").scrollTop(i*-1)),n("#fancybox-style-noscroll").remove())},trigger:function(t,e){var o,i=Array.prototype.slice.call(arguments,1),a=this,s=e&&e.opts?e:a.current;return s?i.unshift(s):s=a,i.unshift(a),n.isFunction(s.opts[t])&&(o=s.opts[t].apply(s,i)),o===!1?o:void("afterClose"!==t&&a.$refs?a.$refs.container.trigger(t+".fb",i):r.trigger(t+".fb",i))},updateControls:function(t){var e=this,n=e.current,o=n.index,i=n.opts.caption,a=e.$refs.container,s=e.$refs.caption;n.$slide.trigger("refresh"),e.$caption=i&&i.length?s.html(i):null,e.isHiddenControls||e.isIdle||e.showControls(),a.find("[data-fancybox-count]").html(e.group.length),a.find("[data-fancybox-index]").html(o+1),a.find("[data-fancybox-prev]").prop("disabled",!n.opts.loop&&o<=0),a.find("[data-fancybox-next]").prop("disabled",!n.opts.loop&&o>=e.group.length-1),"image"===n.type?a.find("[data-fancybox-download]").attr("href",n.opts.image.src||n.src).show():a.find("[data-fancybox-download],[data-fancybox-zoom]").hide()},hideControls:function(){this.isHiddenControls=!0,this.$refs.container.removeClass("fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav")},showControls:function(){var t=this,e=t.current?t.current.opts:t.opts,n=t.$refs.container;t.isHiddenControls=!1,t.idleSecondsCounter=0,n.toggleClass("fancybox-show-toolbar",!(!e.toolbar||!e.buttons)).toggleClass("fancybox-show-infobar",!!(e.infobar&&t.group.length>1)).toggleClass("fancybox-show-nav",!!(e.arrows&&t.group.length>1)).toggleClass("fancybox-is-modal",!!e.modal),t.$caption?n.addClass("fancybox-show-caption "):n.removeClass("fancybox-show-caption")},toggleControls:function(){this.isHiddenControls?this.showControls():this.hideControls()}}),n.fancybox={version:"3.2.10",defaults:a,getInstance:function(t){var e=n('.fancybox-container:not(".fancybox-is-closing"):last').data("FancyBox"),o=Array.prototype.slice.call(arguments,1);return e instanceof p&&("string"===n.type(t)?e[t].apply(e,o):"function"===n.type(t)&&t.apply(e,o),e)},open:function(t,e,n){return new p(t,e,n)},close:function(t){var e=this.getInstance();e&&(e.close(),t===!0&&this.close())},destroy:function(){this.close(!0),r.off("click.fb-start")},isMobile:e.createTouch!==o&&/Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent),use3d:function(){var n=e.createElement("div");return t.getComputedStyle&&t.getComputedStyle(n).getPropertyValue("transform")&&!(e.documentMode&&e.documentMode<11)}(),getTranslate:function(t){var e;if(!t||!t.length)return!1;if(e=t.eq(0).css("transform"),e&&e.indexOf("matrix")!==-1?(e=e.split("(")[1],e=e.split(")")[0],e=e.split(",")):e=[],e.length)e=e.length>10?[e[13],e[12],e[0],e[5]]:[e[5],e[4],e[0],e[3]],e=e.map(parseFloat);else{e=[0,0,1,1];var n=/\.*translate\((.*)px,(.*)px\)/i,o=n.exec(t.eq(0).attr("style"));o&&(e[0]=parseFloat(o[2]),e[1]=parseFloat(o[1]))}return{top:e[0],left:e[1],scaleX:e[2],scaleY:e[3],opacity:parseFloat(t.css("opacity")),width:t.width(),height:t.height()}},setTranslate:function(t,e){var n="",i={};if(t&&e)return e.left===o&&e.top===o||(n=(e.left===o?t.position().left:e.left)+"px, "+(e.top===o?t.position().top:e.top)+"px",n=this.use3d?"translate3d("+n+", 0px)":"translate("+n+")"),e.scaleX!==o&&e.scaleY!==o&&(n=(n.length?n+" ":"")+"scale("+e.scaleX+", "+e.scaleY+")"),n.length&&(i.transform=n),e.opacity!==o&&(i.opacity=e.opacity),e.width!==o&&(i.width=e.width),e.height!==o&&(i.height=e.height),t.css(i)},animate:function(t,e,i,a,s){n.isFunction(i)&&(a=i,i=null),n.isPlainObject(e)||t.removeAttr("style"),t.on(d,function(i){(!i||!i.originalEvent||t.is(i.originalEvent.target)&&"z-index"!=i.originalEvent.propertyName)&&(n.fancybox.stop(t),n.isPlainObject(e)?(e.scaleX!==o&&e.scaleY!==o&&(t.css("transition-duration",""),e.width=Math.round(t.width()*e.scaleX),e.height=Math.round(t.height()*e.scaleY),e.scaleX=1,e.scaleY=1,n.fancybox.setTranslate(t,e)),s===!1&&t.removeAttr("style")):s!==!0&&t.removeClass(e),n.isFunction(a)&&a(i))}),n.isNumeric(i)&&t.css("transition-duration",i+"ms"),n.isPlainObject(e)?n.fancybox.setTranslate(t,e):t.addClass(e),e.scaleX&&t.hasClass("fancybox-image-wrap")&&t.parent().addClass("fancybox-is-scaling"),t.data("timer",setTimeout(function(){t.trigger("transitionend")},i+16))},stop:function(t){clearTimeout(t.data("timer")),t.off("transitionend").css("transition-duration",""),t.hasClass("fancybox-image-wrap")&&t.parent().removeClass("fancybox-is-scaling")}},n.fn.fancybox=function(t){var e;return t=t||{},e=t.selector||!1,e?n("body").off("click.fb-start",e).on("click.fb-start",e,{options:t},i):this.off("click.fb-start").on("click.fb-start",{items:this,options:t},i),this},r.on("click.fb-start","[data-fancybox]",i)}}(window,document,window.jQuery||jQuery),function(t){"use strict";var e=function(e,n,o){if(e)return o=o||"","object"===t.type(o)&&(o=t.param(o,!0)),t.each(n,function(t,n){e=e.replace("$"+t,n||"")}),o.length&&(e+=(e.indexOf("?")>0?"&":"?")+o),e},n={youtube:{matcher:/(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i,params:{autoplay:1,autohide:1,fs:1,rel:0,hd:1,wmode:"transparent",enablejsapi:1,html5:1},paramPlace:8,type:"iframe",url:"//www.youtube.com/embed/$4",thumb:"//img.youtube.com/vi/$4/hqdefault.jpg" +},vimeo:{matcher:/^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/,params:{autoplay:1,hd:1,show_title:1,show_byline:1,show_portrait:0,fullscreen:1,api:1},paramPlace:3,type:"iframe",url:"//player.vimeo.com/video/$2"},metacafe:{matcher:/metacafe.com\/watch\/(\d+)\/(.*)?/,type:"iframe",url:"//www.metacafe.com/embed/$1/?ap=1"},dailymotion:{matcher:/dailymotion.com\/video\/(.*)\/?(.*)/,params:{additionalInfos:0,autoStart:1},type:"iframe",url:"//www.dailymotion.com/embed/video/$1"},vine:{matcher:/vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/,type:"iframe",url:"//vine.co/v/$1/embed/simple"},instagram:{matcher:/(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i,type:"image",url:"//$1/p/$2/media/?size=l"},gmap_place:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/?ll="+(t[9]?t[9]+"&z="+Math.floor(t[10])+(t[12]?t[12].replace(/^\//,"&"):""):t[12])+"&output="+(t[12]&&t[12].indexOf("layer=c")>0?"svembed":"embed")}},gmap_search:{matcher:/(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i,type:"iframe",url:function(t){return"//maps.google."+t[2]+"/maps?q="+t[5].replace("query=","q=").replace("api=1","")+"&output=embed"}}};t(document).on("objectNeedsType.fb",function(o,i,a){var s,r,c,l,u,d,f,p=a.src||"",h=!1;s=t.extend(!0,{},n,a.opts.media),t.each(s,function(n,o){if(c=p.match(o.matcher)){if(h=o.type,d={},o.paramPlace&&c[o.paramPlace]){u=c[o.paramPlace],"?"==u[0]&&(u=u.substring(1)),u=u.split("&");for(var i=0;ie.clientHeight,a=("scroll"===o||"auto"===o)&&e.scrollWidth>e.clientWidth;return i||a},l=function(t){for(var e=!1;;){if(e=c(t.get(0)))break;if(t=t.parent(),!t.length||t.hasClass("fancybox-stage")||t.is("body"))break}return e},u=function(t){var e=this;e.instance=t,e.$bg=t.$refs.bg,e.$stage=t.$refs.stage,e.$container=t.$refs.container,e.destroy(),e.$container.on("touchstart.fb.touch mousedown.fb.touch",n.proxy(e,"ontouchstart"))};u.prototype.destroy=function(){this.$container.off(".fb.touch")},u.prototype.ontouchstart=function(o){var i=this,c=n(o.target),u=i.instance,d=u.current,f=d.$content,p="touchstart"==o.type;if(p&&i.$container.off("mousedown.fb.touch"),(!o.originalEvent||2!=o.originalEvent.button)&&c.length&&!r(c)&&!r(c.parent())&&(c.is("img")||!(o.originalEvent.clientX>c[0].clientWidth+c.offset().left))){if(!d||i.instance.isAnimating||i.instance.isClosing)return o.stopPropagation(),void o.preventDefault();if(i.realPoints=i.startPoints=a(o),i.startPoints){if(o.stopPropagation(),i.startEvent=o,i.canTap=!0,i.$target=c,i.$content=f,i.opts=d.opts.touch,i.isPanning=!1,i.isSwiping=!1,i.isZooming=!1,i.isScrolling=!1,i.sliderStartPos=i.sliderLastPos||{top:0,left:0},i.contentStartPos=n.fancybox.getTranslate(i.$content),i.contentLastPos=null,i.startTime=(new Date).getTime(),i.distanceX=i.distanceY=i.distance=0,i.canvasWidth=Math.round(d.$slide[0].clientWidth),i.canvasHeight=Math.round(d.$slide[0].clientHeight),n(e).off(".fb.touch").on(p?"touchend.fb.touch touchcancel.fb.touch":"mouseup.fb.touch mouseleave.fb.touch",n.proxy(i,"ontouchend")).on(p?"touchmove.fb.touch":"mousemove.fb.touch",n.proxy(i,"ontouchmove")),n.fancybox.isMobile&&e.addEventListener("scroll",i.onscroll,!0),!i.opts&&!u.canPan()||!c.is(i.$stage)&&!i.$stage.find(c).length)return void(c.is("img")&&o.preventDefault());n.fancybox.isMobile&&(l(c)||l(c.parent()))||o.preventDefault(),1===i.startPoints.length&&("image"===d.type&&(i.contentStartPos.width>i.canvasWidth+1||i.contentStartPos.height>i.canvasHeight+1)?(n.fancybox.stop(i.$content),i.$content.css("transition-duration",""),i.isPanning=!0):i.isSwiping=!0,i.$container.addClass("fancybox-controls--isGrabbing")),2!==i.startPoints.length||u.isAnimating||d.hasError||"image"!==d.type||!d.isLoaded&&!d.$ghost||(i.canTap=!1,i.isSwiping=!1,i.isPanning=!1,i.isZooming=!0,n.fancybox.stop(i.$content),i.$content.css("transition-duration",""),i.centerPointStartX=.5*(i.startPoints[0].x+i.startPoints[1].x)-n(t).scrollLeft(),i.centerPointStartY=.5*(i.startPoints[0].y+i.startPoints[1].y)-n(t).scrollTop(),i.percentageOfImageAtPinchPointX=(i.centerPointStartX-i.contentStartPos.left)/i.contentStartPos.width,i.percentageOfImageAtPinchPointY=(i.centerPointStartY-i.contentStartPos.top)/i.contentStartPos.height,i.startDistanceBetweenFingers=s(i.startPoints[0],i.startPoints[1]))}}},u.prototype.onscroll=function(t){self.isScrolling=!0},u.prototype.ontouchmove=function(t){var e=this,o=n(t.target);return e.isScrolling||!o.is(e.$stage)&&!e.$stage.find(o).length?void(e.canTap=!1):(e.newPoints=a(t),void((e.opts||e.instance.canPan())&&e.newPoints&&e.newPoints.length&&(e.isSwiping&&e.isSwiping===!0||t.preventDefault(),e.distanceX=s(e.newPoints[0],e.startPoints[0],"x"),e.distanceY=s(e.newPoints[0],e.startPoints[0],"y"),e.distance=s(e.newPoints[0],e.startPoints[0]),e.distance>0&&(e.isSwiping?e.onSwipe(t):e.isPanning?e.onPan():e.isZooming&&e.onZoom()))))},u.prototype.onSwipe=function(e){var a,s=this,r=s.isSwiping,c=s.sliderStartPos.left||0;if(r!==!0)"x"==r&&(s.distanceX>0&&(s.instance.group.length<2||0===s.instance.current.index&&!s.instance.current.opts.loop)?c+=Math.pow(s.distanceX,.8):s.distanceX<0&&(s.instance.group.length<2||s.instance.current.index===s.instance.group.length-1&&!s.instance.current.opts.loop)?c-=Math.pow(-s.distanceX,.8):c+=s.distanceX),s.sliderLastPos={top:"x"==r?0:s.sliderStartPos.top+s.distanceY,left:c},s.requestId&&(i(s.requestId),s.requestId=null),s.requestId=o(function(){s.sliderLastPos&&(n.each(s.instance.slides,function(t,e){var o=e.pos-s.instance.currPos;n.fancybox.setTranslate(e.$slide,{top:s.sliderLastPos.top,left:s.sliderLastPos.left+o*s.canvasWidth+o*e.opts.gutter})}),s.$container.addClass("fancybox-is-sliding"))});else if(Math.abs(s.distance)>10){if(s.canTap=!1,s.instance.group.length<2&&s.opts.vertical?s.isSwiping="y":s.instance.isDragging||s.opts.vertical===!1||"auto"===s.opts.vertical&&n(t).width()>800?s.isSwiping="x":(a=Math.abs(180*Math.atan2(s.distanceY,s.distanceX)/Math.PI),s.isSwiping=a>45&&a<135?"y":"x"),s.canTap=!1,"y"===s.isSwiping&&n.fancybox.isMobile&&(l(s.$target)||l(s.$target.parent())))return void(s.isScrolling=!0);s.instance.isDragging=s.isSwiping,s.startPoints=s.newPoints,n.each(s.instance.slides,function(t,e){n.fancybox.stop(e.$slide),e.$slide.css("transition-duration",""),e.inTransition=!1,e.pos===s.instance.current.pos&&(s.sliderStartPos.left=n.fancybox.getTranslate(e.$slide).left)}),s.instance.SlideShow&&s.instance.SlideShow.isActive&&s.instance.SlideShow.stop()}},u.prototype.onPan=function(){var t=this;return s(t.newPoints[0],t.realPoints[0])<(n.fancybox.isMobile?10:5)?void(t.startPoints=t.newPoints):(t.canTap=!1,t.contentLastPos=t.limitMovement(),t.requestId&&(i(t.requestId),t.requestId=null),void(t.requestId=o(function(){n.fancybox.setTranslate(t.$content,t.contentLastPos)})))},u.prototype.limitMovement=function(){var t,e,n,o,i,a,s=this,r=s.canvasWidth,c=s.canvasHeight,l=s.distanceX,u=s.distanceY,d=s.contentStartPos,f=d.left,p=d.top,h=d.width,g=d.height;return i=h>r?f+l:f,a=p+u,t=Math.max(0,.5*r-.5*h),e=Math.max(0,.5*c-.5*g),n=Math.min(r-h,.5*r-.5*h),o=Math.min(c-g,.5*c-.5*g),h>r&&(l>0&&i>t&&(i=t-1+Math.pow(-t+f+l,.8)||0),l<0&&ic&&(u>0&&a>e&&(a=e-1+Math.pow(-e+p+u,.8)||0),u<0&&aa?(t=t>0?0:t,t=ts?(e=e>0?0:e,e=e50?(n.fancybox.animate(o.instance.current.$slide,{top:o.sliderStartPos.top+o.distanceY+150*o.velocityY,opacity:0},150),i=o.instance.close(!0,300)):"x"==t&&o.distanceX>50&&a>1?i=o.instance.previous(o.speedX):"x"==t&&o.distanceX<-50&&a>1&&(i=o.instance.next(o.speedX)),i!==!1||"x"!=t&&"y"!=t||(e||a<2?o.instance.centerSlide(o.instance.current,150):o.instance.jumpTo(o.instance.current.index)),o.$container.removeClass("fancybox-is-sliding")},u.prototype.endPanning=function(){var t,e,o,i=this;i.contentLastPos&&(i.opts.momentum===!1?(t=i.contentLastPos.left,e=i.contentLastPos.top):(t=i.contentLastPos.left+i.velocityX*i.speed,e=i.contentLastPos.top+i.velocityY*i.speed),o=i.limitPosition(t,e,i.contentStartPos.width,i.contentStartPos.height),o.width=i.contentStartPos.width,o.height=i.contentStartPos.height,n.fancybox.animate(i.$content,o,330))},u.prototype.endZooming=function(){var t,e,o,i,a=this,s=a.instance.current,r=a.newWidth,c=a.newHeight;a.contentLastPos&&(t=a.contentLastPos.left,e=a.contentLastPos.top,i={top:e,left:t,width:r,height:c,scaleX:1,scaleY:1},n.fancybox.setTranslate(a.$content,i),rs.width||c>s.height?a.instance.scaleToActual(a.centerPointStartX,a.centerPointStartY,150):(o=a.limitPosition(t,e,r,c),n.fancybox.setTranslate(a.content,n.fancybox.getTranslate(a.$content)),n.fancybox.animate(a.$content,o,150)))},u.prototype.onTap=function(t){var e,o=this,i=n(t.target),s=o.instance,r=s.current,c=t&&a(t)||o.startPoints,l=c[0]?c[0].x-o.$stage.offset().left:0,u=c[0]?c[0].y-o.$stage.offset().top:0,d=function(e){var i=r.opts[e];if(n.isFunction(i)&&(i=i.apply(s,[r,t])),i)switch(i){case"close":s.close(o.startEvent);break;case"toggleControls":s.toggleControls(!0);break;case"next":s.next();break;case"nextOrClose":s.group.length>1?s.next():s.close(o.startEvent);break;case"zoom":"image"==r.type&&(r.isLoaded||r.$ghost)&&(s.canPan()?s.scaleToFit():s.isScaledDown()?s.scaleToActual(l,u):s.group.length<2&&s.close(o.startEvent))}};if((!t.originalEvent||2!=t.originalEvent.button)&&(i.is("img")||!(l>i[0].clientWidth+i.offset().left))){if(i.is(".fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container"))e="Outside";else if(i.is(".fancybox-slide"))e="Slide";else{if(!s.current.$content||!s.current.$content.find(i).addBack().filter(i).length)return;e="Content"}if(o.tapped){if(clearTimeout(o.tapped),o.tapped=null,Math.abs(l-o.tapX)>50||Math.abs(u-o.tapY)>50)return this;d("dblclick"+e)}else o.tapX=l,o.tapY=u,r.opts["dblclick"+e]&&r.opts["dblclick"+e]!==r.opts["click"+e]?o.tapped=setTimeout(function(){o.tapped=null,d("click"+e)},500):d("click"+e);return this}},n(e).on("onActivate.fb",function(t,e){e&&!e.Guestures&&(e.Guestures=new u(e))})}(window,document,window.jQuery||jQuery),function(t,e){"use strict";e.extend(!0,e.fancybox.defaults,{btnTpl:{slideShow:''},slideShow:{autoStart:!1,speed:3e3}});var n=function(t){this.instance=t,this.init()};e.extend(n.prototype,{timer:null,isActive:!1,$button:null,init:function(){var t=this;t.$button=t.instance.$refs.toolbar.find("[data-fancybox-play]").on("click",function(){t.toggle()}),(t.instance.group.length<2||!t.instance.group[t.instance.currIndex].opts.slideShow)&&t.$button.hide()},set:function(t){var e=this;e.instance&&e.instance.current&&(t===!0||e.instance.current.opts.loop||e.instance.currIndex'},fullScreen:{autoStart:!1}}),e(t).on({"onInit.fb":function(t,e){var n;e&&e.group[e.currIndex].opts.fullScreen?(n=e.$refs.container,n.on("click.fb-fullscreen","[data-fancybox-fullscreen]",function(t){t.stopPropagation(),t.preventDefault(),o.toggle(n[0])}),e.opts.fullScreen&&e.opts.fullScreen.autoStart===!0&&o.request(n[0]),e.FullScreen=o):e&&e.$refs.toolbar.find("[data-fancybox-fullscreen]").hide()},"afterKeydown.fb":function(t,e,n,o,i){e&&e.FullScreen&&70===i&&(o.preventDefault(),e.FullScreen.toggle(e.$refs.container[0]))},"beforeClose.fb":function(t){t&&t.FullScreen&&o.exit()}}),e(t).on(n.fullscreenchange,function(){var t=o.isFullscreen(),n=e.fancybox.getInstance();n&&(n.current&&"image"===n.current.type&&n.isAnimating&&(n.current.$content.css("transition","none"),n.isAnimating=!1,n.update(!0,!0,0)),n.trigger("onFullscreenChange",t),n.$refs.container.toggleClass("fancybox-is-fullscreen",t))})}(document,window.jQuery||jQuery),function(t,e){"use strict";e.fancybox.defaults=e.extend(!0,{btnTpl:{thumbs:''},thumbs:{autoStart:!1,hideOnClose:!0,parentEl:".fancybox-container",axis:"y"}},e.fancybox.defaults);var n=function(t){this.init(t)};e.extend(n.prototype,{$button:null,$grid:null,$list:null,isVisible:!1,isActive:!1,init:function(t){var e=this;e.instance=t,t.Thumbs=e;var n=t.group[0],o=t.group[1];e.opts=t.group[t.currIndex].opts.thumbs,e.$button=t.$refs.toolbar.find("[data-fancybox-thumbs]"),e.opts&&n&&o&&("image"==n.type||n.opts.thumb||n.opts.$thumb)&&("image"==o.type||o.opts.thumb||o.opts.$thumb)?(e.$button.show().on("click",function(){e.toggle()}),e.isActive=!0):e.$button.hide()},create:function(){var t,n,o=this,i=o.instance,a=o.opts.parentEl;o.$grid=e('
').appendTo(i.$refs.container.find(a).addBack().filter(a)),t="
    ",e.each(i.group,function(e,o){n=o.opts.thumb||(o.opts.$thumb?o.opts.$thumb.attr("src"):null),n||"image"!==o.type||(n=o.src),n&&n.length&&(t+='
  • ')}),t+="
",o.$list=e(t).appendTo(o.$grid).on("click","li",function(){i.jumpTo(e(this).data("index"))}),o.$list.find("img").hide().one("load",function(){var t,n,o,i,a=e(this).parent().removeClass("fancybox-thumbs-loading"),s=a.outerWidth(),r=a.outerHeight();t=this.naturalWidth||this.width,n=this.naturalHeight||this.height,o=t/s,i=n/r,o>=1&&i>=1&&(o>i?(t/=i,n=r):(t=s,n/=o)),e(this).css({width:Math.floor(t),height:Math.floor(n),"margin-top":n>r?Math.floor(.3*r-.3*n):Math.floor(.5*r-.5*n),"margin-left":Math.floor(.5*s-.5*t)}).show()}).each(function(){this.src=e(this).data("src")}),"x"===o.opts.axis&&o.$list.width(parseInt(o.$grid.css("padding-right"))+i.group.length*o.$list.children().eq(0).outerWidth(!0)+"px")},focus:function(t){var e,n,o=this,i=o.$list;o.instance.current&&(e=i.children().removeClass("fancybox-thumbs-active").filter('[data-index="'+o.instance.current.index+'"]').addClass("fancybox-thumbs-active"),n=e.position(),"y"===o.opts.axis&&(n.top<0||n.top>i.height()-e.outerHeight())?i.stop().animate({scrollTop:i.scrollTop()+n.top},t):"x"===o.opts.axis&&(n.lefti.parent().scrollLeft()+(i.parent().width()-e.outerWidth()))&&i.parent().stop().animate({scrollLeft:n.left},t))},update:function(){this.instance.$refs.container.toggleClass("fancybox-show-thumbs",this.isVisible),this.isVisible?(this.$grid||this.create(),this.instance.trigger("onThumbsShow"),this.focus(0)):this.$grid&&this.instance.trigger("onThumbsHide"),this.instance.update()},hide:function(){this.isVisible=!1,this.update()},show:function(){this.isVisible=!0,this.update()},toggle:function(){this.isVisible=!this.isVisible,this.update()}}),e(t).on({"onInit.fb":function(t,e){var o;e&&!e.Thumbs&&(o=new n(e),o.isActive&&o.opts.autoStart===!0&&o.show())},"beforeShow.fb":function(t,e,n,o){var i=e&&e.Thumbs;i&&i.isVisible&&i.focus(o?0:250)},"afterKeydown.fb":function(t,e,n,o,i){var a=e&&e.Thumbs;a&&a.isActive&&71===i&&(o.preventDefault(),a.toggle())},"beforeClose.fb":function(t,e){var n=e&&e.Thumbs;n&&n.isVisible&&n.opts.hideOnClose!==!1&&n.$grid.hide()}})}(document,window.jQuery),function(t,e){"use strict";function n(t){var e={"&":"&","<":"<",">":">",'"':""","'":"'","/":"/","`":"`","=":"="};return String(t).replace(/[&<>"'`=\/]/g,function(t){return e[t]})}e.extend(!0,e.fancybox.defaults,{btnTpl:{share:''},share:{tpl:''}}),e(t).on("click","[data-fancybox-share]",function(){var t,o,i=e.fancybox.getInstance();i&&(t=i.current.opts.hash===!1?i.current.src:window.location,o=i.current.opts.share.tpl.replace(/\{\{media\}\}/g,"image"===i.current.type?encodeURIComponent(i.current.src):"").replace(/\{\{url\}\}/g,encodeURIComponent(t)).replace(/\{\{url_raw\}\}/g,n(t)).replace(/\{\{descr\}\}/g,i.$caption?encodeURIComponent(i.$caption.text()):""),e.fancybox.open({src:i.translate(i,o),type:"html",opts:{animationEffect:"fade",animationDuration:250,afterLoad:function(t,e){e.$content.find(".fancybox-share__links a").click(function(){return window.open(this.href,"Share","width=550, height=450"),!1})}}}))})}(document,window.jQuery||jQuery),function(t,e,n){"use strict";function o(){var t=e.location.hash.substr(1),n=t.split("-"),o=n.length>1&&/^\+?\d+$/.test(n[n.length-1])?parseInt(n.pop(-1),10)||1:1,i=n.join("-");return o<1&&(o=1),{hash:t,index:o,gallery:i}}function i(t){var e;""!==t.gallery&&(e=n("[data-fancybox='"+n.escapeSelector(t.gallery)+"']").eq(t.index-1),e.length||(e=n("#"+n.escapeSelector(t.gallery))),e.length&&(s=!1,e.trigger("click")))}function a(t){var e;return!!t&&(e=t.current?t.current.opts:t.opts,e.hash||(e.$orig?e.$orig.data("fancybox"):""))}n.escapeSelector||(n.escapeSelector=function(t){var e=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g,n=function(t,e){return e?"\0"===t?"�":t.slice(0,-1)+"\\"+t.charCodeAt(t.length-1).toString(16)+" ":"\\"+t};return(t+"").replace(e,n)});var s=!0,r=null,c=null;n(function(){n.fancybox.defaults.hash!==!1&&(n(t).on({"onInit.fb":function(t,e){var n,i;e.group[e.currIndex].opts.hash!==!1&&(n=o(),i=a(e),i&&n.gallery&&i==n.gallery&&(e.currIndex=n.index-1))},"beforeShow.fb":function(n,o,i){var l;i&&i.opts.hash!==!1&&(l=a(o),l&&""!==l&&(e.location.hash.indexOf(l)<0&&(o.opts.origHash=e.location.hash),r=l+(o.group.length>1?"-"+(i.index+1):""),"replaceState"in e.history?(c&&clearTimeout(c),c=setTimeout(function(){e.history[s?"pushState":"replaceState"]({},t.title,e.location.pathname+e.location.search+"#"+r),c=null,s=!1},300)):e.location.hash=r))},"beforeClose.fb":function(o,i,s){var l,u;c&&clearTimeout(c),s.opts.hash!==!1&&(l=a(i),u=i&&i.opts.origHash?i.opts.origHash:"",l&&""!==l&&("replaceState"in history?e.history.replaceState({},t.title,e.location.pathname+e.location.search+u):(e.location.hash=u,n(e).scrollTop(i.scrollTop).scrollLeft(i.scrollLeft))),r=null)}}),n(e).on("hashchange.fb",function(){var t=o();n.fancybox.getInstance()?!r||r===t.gallery+"-"+t.index||1===t.index&&r==t.gallery||(r=null,n.fancybox.close()):""!==t.gallery&&i(t)}),setTimeout(function(){i(o())},50))})}(document,window,window.jQuery||jQuery),function(t,e){"use strict";var n=(new Date).getTime();e(t).on({"onInit.fb":function(t,e,o){e.$refs.stage.on("mousewheel DOMMouseScroll wheel MozMousePixelScroll",function(t){var o=e.current,i=(new Date).getTime();e.group.length<1||o.opts.wheel===!1||"auto"===o.opts.wheel&&"image"!==o.type||(t.preventDefault(),t.stopPropagation(),o.$slide.hasClass("fancybox-animated")||(t=t.originalEvent||t,i-n<250||(n=i,e[(-t.deltaY||-t.deltaX||t.wheelDelta||-t.detail)<0?"next":"previous"]())))})}})}(document,window.jQuery||jQuery); \ No newline at end of file diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/docs/index.html b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/docs/index.html new file mode 100644 index 0000000000..2fed9f45b6 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/docs/index.html @@ -0,0 +1,1909 @@ + + + + fancyBox - touch enabled, responsive and fully customizable lightbox script + + + + + + + + + + + + +
+
+

fancyBox3 Documentation

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

Introduction

+ +

+ fancyBox is a JavaScript library used to present images, videos and any html content in an elegant way. + It has all features you would expect - touch enabled, responsive and fully customizable. +

+ +

+ +

+ Dependencies +

+ +

+ jQuery 3+ is preferred, but fancyBox works with jQuery 1.9.1+ and jQuery 2+ +

+ +

Important

+ +

+ If you experience issues with image zooming, then update jQuery to the latest (at least v3.2.1). +

+ +

Compatibility

+ +

+ fancyBox includes support for touch gestures and even supports pinch gestures for zooming. + It is perfectly suited for both mobile and desktop browsers. +

+ +

+ fancyBox has been tested in following browsers/devices: +

+ +
    +
  • Chrome
  • +
  • Firefox
  • +
  • IE10/11
  • +
  • Edge
  • +
  • iOS Safari
  • +
  • Nexus 7 Chrome
  • +
+ +

Setup

+ +

+ You can install fancyBox by linking .css and .js to your html file. + + Make sure you also load the jQuery library. + Below is a basic HTML template to use as an example: +

+ +
<!DOCTYPE html>
+<html>
+<head>
+	<meta charset="utf-8">
+	<title>My page</title>
+
+	<!-- CSS -->
+	<link rel="stylesheet" type="text/css" href="jquery.fancybox.min.css">
+</head>
+<body>
+
+	<!-- Your HTML content goes here -->
+
+	<!-- JS -->
+	<script src="//code.jquery.com/jquery-3.2.1.min.js"></script>
+	<script src="jquery.fancybox.min.js"></script>
+</body>
+</html>
+
+ +

Important

+ +
    +
  • Make sure you add the jQuery library first
  • +
  • If you already have jQuery on your page, you shouldn't include it second time
  • +
  • Do not include both fancybox.js and fancybox.min.js files
  • +
  • + Some functionality (ajax, iframes, etc) will not work + when you're opening local file directly on your browser, + the code must be running on a web server +
  • +
+ +

Download fancyBox

+ +

+ You can download the latest version of fancyBox on GitHub. +
+ Or just link directly to fancyBox files on cdnjs - https://cdnjs.com/libraries/fancybox. +

+ + +

Package Managers

+ +

+ fancyBox can also be installed via Bower or npm. +

+ +
# NPM
+npm install @fancyapps/fancybox --save
+
+# Bower
+bower install fancybox --save
+
+ + + +

How to Use

+ +

Initialize with data attributes

+ +

+ The most basic way to use fancyBox is by adding the data-fancybox attribute to a link. + A caption can be added using the data-caption attribute. Example: +

+ +
<a href="image.jpg" data-fancybox data-caption="My caption">
+	<img src="thumbnail.jpg" alt="" />
+</a>
+ +

+ View demo on CodePen +

+ +

+ If you choose this method, default settings will be applied. + See Options section for examples how to customize by changing defaults or using data-options attribute. +

+ +

Initialize with JavaScript

+ +

+ Select elements with a jQuery selector and call the fancybox method: +

+ +
<script type="text/javascript">
+	$("[data-fancybox]").fancybox({
+		// Options will go here
+	});
+</script>
+ +

+ View demo on CodePen +

+ +

+ Using this method, click event handler is attached only to the currently selected elements. +
+ To attach click event listener for elements that exist now or in the future, use selector option. Example: +

+ +
$().fancybox({
+  selector : '[data-fancybox="images"]',
+  loop     : true
+});
+ +

+ View demo on CodePen +

+ +

Manual calling of fancyBox

+ +

+ fancyBox can be activated at any point within Javascript and therefore does not necessarily need a trigger element. + + Example of displaying a simple message: +

+ +
$.fancybox.open('<div class="message"><h2>Hello!</h2><p>You are awesome!</p></div>');
+ +

+ View demo on CodePen +

+ +

+ See API section for more information and examples. +

+ +

Grouping

+ +

+ If you have a group of items, you can use the same attribute data-fancybox value for each of them to create a gallery. + Each group should have a unique value: +

+ +
<a href="image_1.jpg" data-fancybox="group" data-caption="Caption #1">
+	<img src="thumbnail_1.jpg" alt="" />
+</a>
+
+<a href="image_2.jpg" data-fancybox="group" data-caption="Caption #2">
+	<img src="thumbnail_2.jpg" alt="" />
+</a>
+
+ +

+ View demo on CodePen +

+ +

Important

+ +

+ fancyBox attempts to automatically detect the type of content based on the given url. + + If it cannot be detected, the type can also be set manually using data-type attribute: + +

<a href="images.php?id=123" data-type="image" data-caption="Caption">
+	Show image
+</a>
+

+ + + + +

Media types

+ + +

Images

+ +

+ The standard way of using fancyBox is with a number of thumbnail images that link to larger images: +

+ +
<a href="image.jpg" data-fancybox="images" data-caption="My caption">
+	<img src="thumbnail.jpg" alt="" />
+</a>
+ +

+ View demo on CodePen +

+ +

+ By default, fancyBox fully preloads an image before displaying it. + You can choose to display the image right away. + It will render and show the full size image while the data is being received. + To do so, some attributes are necessary: +

+ +
    +
  • data-width - the real width of the image
  • +
  • data-height - the real height of the image
  • +
+ +
<a href="image.jpg" data-fancybox="images" data-width="2048" data-height="1365">
+    <img src="thumbnail.jpg" />
+</a>
+

+ View demo on CodePen +

+ +

+ fancyBox supports "scrset" so I can display different images based on viewport width. You can use this to improve download times for mobile users and over time save bandwidth. + Example: +

+ +
<a href="medium.jpg" data-fancybox="images" data-srcset="large.jpg 1600w, medium.jpg 1200w, small.jpg 640w">
+	<img src="thumbnail.jpg" />
+</a>
+

+ View demo on CodePen +

+ +

+ It is also possible to protect images from downloading by right-click. + While this does not protect from truly determined users, it should discourage the vast majority from ripping off your files. +

+ +
$('[data-fancybox]').fancybox({
+	protect: true
+});
+ +

+ View demo on CodePen +

+ +

Inline HTML

+ +

+ For inline content, create a hidden element with unique id: +

+ +
<div style="display: none;" id="hidden-content">
+	<h2>Hello</h2>
+	<p>You are awesome.</p>
+</div>
+ +

+ And then simply create a link having data-src attribute that matches ID of the element you want to open (preceded by a hash mark (#); in this example - #hidden-content): +

+ +
<a data-fancybox data-src="#hidden-content" href="javascript:;">
+	Trigger the fancyBox
+</a>
+

+ View demo on CodePen +

+ +

+ The script will append small close button (if you have not disabled by smallBtn:false) + and will not apply any styles except for centering. Therefore you can easily set custom dimensions using CSS. +

+ +

Ajax

+ +

+ To load content via AJAX, you need to add a data-type="ajax" attribute to your link: +

+ +
<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" href="javascript:;">
+	AJAX content
+</a>
+

+ View demo on CodePen +

+ +

+ Additionally it is possible to define a selector with the data-filter attribute to show only a part of the response. The selector can be any string, that is a valid jQuery selector: +

+ +
<a data-fancybox data-type="ajax" data-src="my_page.com/path/to/ajax/" data-filter="#two" href="javascript:;">
+	AJAX content
+</a>
+
+

+ View demo on CodePen +

+ +

Iframe

+ +

+ If the content can be shown on a page, and placement in an iframe is not blocked by script or security configuration of that page, + it can be presented in a fancyBox: +

+ +
<a data-fancybox data-type="iframe" data-src="http://codepen.io/fancyapps/full/jyEGGG/" href="javascript:;">
+	Webpage
+</a>
+
+<a data-fancybox data-type="iframe" data-src="https://mozilla.github.io/pdf.js/web/viewer.html" href="javascript:;">
+	Sample PDF
+</a>
+
+

+ View demo on CodePen +

+ + +

+ To access and control fancyBox in parent window from inside an iframe: +

+ +
// Adjust iframe height according to the contents
+parent.jQuery.fancybox.getInstance().update();
+
+// Close current fancyBox instance
+parent.jQuery.fancybox.getInstance().close();
+ + +

+ Iframe dimensions can be controlled by CSS: +

+ +
.fancybox-slide--iframe .fancybox-content {
+	width  : 800px;
+	height : 600px;
+	max-width  : 80%;
+	max-height : 80%;
+	margin: 0;
+}
+ + +

+ These CSS rules can be overridden by JS, if needed: +

+ +
$("[data-fancybox]").fancybox({
+	iframe : {
+		css : {
+			width : '600px'
+		}
+	}
+});
+ + +

+ If you have not disabled iframe preloading (using preload option), then the script will atempt to + calculate content dimensions and will adjust width/height of iframe to fit with content in it. + Keep in mind, that due to same origin policy, + there are some limitations. +

+ +

+ This example will disable iframe preloading and will display small close button next to iframe instead of the toolbar: +

+ +
$('[data-fancybox]').fancybox({
+	toolbar  : false,
+	smallBtn : true,
+	iframe : {
+		preload : false
+	}
+})
+
+

+ View demo on CodePen +

+ + + +

Embedding

+ +

+ Supported sites can be used with fancyBox by just providing the page URL: +

+ +
<a data-fancybox href="https://www.youtube.com/watch?v=_sI_Ps7JSEk">
+  YouTube video
+</a>
+
+<a data-fancybox href="https://vimeo.com/191947042">
+  Vimeo video
+</a>
+
+<a data-fancybox href="https://www.google.com/maps/search/Empire+State+Building/">
+	Google Map
+</a>
+
+<a data-fancybox href="https://www.instagram.com/p/BNXYW8-goPI/?taken-by=jamesrelfdyer" data-caption="<span title=&quot;Edited&quot;>balloon rides at dawn ✨🎈<br>was such a magical experience floating over napa valley as the golden light hit the hills.<br><a href=&quot;https://www.instagram.com/jamesrelfdyer/&quot;>@jamesrelfdyer</a></span>">
+	Instagram photo
+</a>
+

+ View demo on CodePen +

+ +

Video dimensions

+ +

+ Resize video display with the following CSS: +

+ +
.fancybox-slide--video .fancybox-content {
+	width  : 800px;
+	height : 600px;
+	max-width  : 80%;
+	max-height : 80%;
+}
+

+ View demo on CodePen +

+ +

+ Obviously, you can choose any size you like, any combination with min/max values. +
+ Aspect ratio lock for videos is not implemented yet, but if you wish, you can use this snippet. +

+ + + +

Video parameters

+ +

+ Controlling a video via URL parameters: +

+ +
<a data-fancybox href="https://www.youtube.com/watch?v=_sI_Ps7JSEk&amp;autoplay=1&amp;rel=0&amp;controls=0&amp;showinfo=0">
+  YouTube video - hide controls and info
+</a>
+
+<a data-fancybox href="https://vimeo.com/191947042?color=f00">
+  Vimeo video - custom color
+</a>
+

+ View demo on CodePen +

+ + +

+ Via JavaScript: +

+ +
$('[data-fancybox]').fancybox({
+	youtube : {
+		controls : 0,
+		showinfo : 0
+	},
+	vimeo : {
+		color : 'f00'
+	}
+});
+

+ View demo on CodePen +

+ + +

Options

+ +

+ Quick reference for all default options as defined in the source: +

+ +
var defaults = {
+
+    // Enable infinite gallery navigation
+    loop : false,
+
+    // Space around image, ignored if zoomed-in or viewport width is smaller than 800px
+    margin : [44, 0],
+
+    // Horizontal space between slides
+    gutter : 50,
+
+    // Enable keyboard navigation
+    keyboard : true,
+
+    // Should display navigation arrows at the screen edges
+    arrows : true,
+
+    // Should display infobar (counter and arrows at the top)
+    infobar : true,
+
+    // Should display toolbar (buttons at the top)
+    toolbar : true,
+
+    // What buttons should appear in the top right corner.
+    // Buttons will be created using templates from `btnTpl` option
+    // and they will be placed into toolbar (class="fancybox-toolbar"` element)
+    buttons : [
+        'slideShow',
+        'fullScreen',
+        'thumbs',
+        'share',
+        //'download',
+        //'zoom',
+        'close'
+    ],
+
+    // Detect "idle" time in seconds
+    idleTime : 3,
+
+    // Should display buttons at top right corner of the content
+    // If 'auto' - they will be created for content having type 'html', 'inline' or 'ajax'
+    // Use template from `btnTpl.smallBtn` for customization
+    smallBtn : 'auto',
+
+    // Disable right-click and use simple image protection for images
+    protect : false,
+
+    // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc
+    modal : false,
+
+    image : {
+
+        // Wait for images to load before displaying
+        // Requires predefined image dimensions
+        // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found
+        preload : "auto"
+
+    },
+
+    ajax : {
+
+        // Object containing settings for ajax request
+        settings : {
+
+            // This helps to indicate that request comes from the modal
+            // Feel free to change naming
+            data : {
+                fancybox : true
+            }
+        }
+
+    },
+
+    iframe : {
+
+        // Iframe template
+        tpl : '<iframe id="fancybox-frame{rnd}" name="fancybox-frame{rnd}" class="fancybox-iframe" frameborder="0" vspace="0" hspace="0" webkitAllowFullScreen mozallowfullscreen allowFullScreen allowtransparency="true" src=""></iframe>',
+
+        // Preload iframe before displaying it
+        // This allows to calculate iframe content width and height
+        // (note: Due to "Same Origin Policy", you can't get cross domain data).
+        preload : true,
+
+        // Custom CSS styling for iframe wrapping element
+        // You can use this to set custom iframe dimensions
+        css : {},
+
+        // Iframe tag attributes
+        attr : {
+            scrolling : 'auto'
+        }
+
+    },
+
+    // Default content type if cannot be detected automatically
+    defaultType : 'image',
+
+    // Open/close animation type
+    // Possible values:
+    //   false            - disable
+    //   "zoom"           - zoom images from/to thumbnail
+    //   "fade"
+    //   "zoom-in-out"
+    //
+    animationEffect : "zoom",
+
+    // Duration in ms for open/close animation
+    animationDuration : 500,
+
+    // Should image change opacity while zooming
+    // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios
+    zoomOpacity : "auto",
+
+    // Transition effect between slides
+    //
+    // Possible values:
+    //   false            - disable
+    //   "fade'
+    //   "slide'
+    //   "circular'
+    //   "tube'
+    //   "zoom-in-out'
+    //   "rotate'
+    //
+    transitionEffect : "fade",
+
+    // Duration in ms for transition animation
+    transitionDuration : 366,
+
+    // Custom CSS class for slide element
+    slideClass : '',
+
+    // Custom CSS class for layout
+    baseClass : '',
+
+    // Base template for layout
+    baseTpl	:
+        '<div class="fancybox-container" role="dialog" tabindex="-1">' +
+            '<div class="fancybox-bg"></div>' +
+            '<div class="fancybox-inner">' +
+                '<div class="fancybox-infobar">' +
+                    '<span data-fancybox-index></span>&nbsp;/&nbsp;<span data-fancybox-count></span>' +
+                '</div>' +
+                '<div class="fancybox-toolbar">{{buttons}}</div>' +
+                '<div class="fancybox-navigation">{{arrows}}</div>' +
+                '<div class="fancybox-stage"></div>' +
+                '<div class="fancybox-caption-wrap"><div class="fancybox-caption"></div></div>' +
+            '</div>' +
+        '</div>',
+
+    // Loading indicator template
+    spinnerTpl : '<div class="fancybox-loading"></div>',
+
+    // Error message template
+    errorTpl : '<div class="fancybox-error"><p>{{ERROR}}<p></div>',
+
+    btnTpl : {
+
+        download : '<a download data-fancybox-download class="fancybox-button fancybox-button--download" title="{{DOWNLOAD}}">' +
+                    '<svg viewBox="0 0 40 40">' +
+                        '<path d="M20,23 L20,8 L20,23 L13,16 L20,23 L27,16 L20,23 M26,28 L13,28 L27,28 L14,28" />' +
+                    '</svg>' +
+                '</a>',
+
+        zoom : '<button data-fancybox-zoom class="fancybox-button fancybox-button--zoom" title="{{ZOOM}}">' +
+                    '<svg viewBox="0 0 40 40">' +
+                        '<path d="M 18,17 m-8,0 a 8,8 0 1,0 16,0 a 8,8 0 1,0 -16,0 M25,23 L31,29 L25,23" />' +
+                    '</svg>' +
+                '</button>',
+
+        close : '<button data-fancybox-close class="fancybox-button fancybox-button--close" title="{{CLOSE}}">' +
+                    '<svg viewBox="0 0 40 40">' +
+                        '<path d="M10,10 L30,30 M30,10 L10,30" />' +
+                    '</svg>' +
+                '</button>',
+
+        // This small close button will be appended to your html/inline/ajax content by default,
+        // if "smallBtn" option is not set to false
+        smallBtn   : '<button data-fancybox-close class="fancybox-close-small" title="{{CLOSE}}"></button>',
+
+        // Arrows
+        arrowLeft : '<button data-fancybox-prev class="fancybox-button fancybox-button--arrow_left" title="{{PREV}}">' +
+                        '<svg viewBox="0 0 40 40">' +
+                          '<path d="M10,20 L30,20 L10,20 L18,28 L10,20 L18,12 L10,20"></path>' +
+                        '</svg>' +
+                      '</button>',
+
+        arrowRight : '<button data-fancybox-next class="fancybox-button fancybox-button--arrow_right" title="{{NEXT}}">' +
+                      '<svg viewBox="0 0 40 40">' +
+                        '<path d="M30,20 L10,20 L30,20 L22,28 L30,20 L22,12 L30,20"></path>' +
+                      '</svg>' +
+                    '</button>'
+    },
+
+    // Container is injected into this element
+    parentEl : 'body',
+
+
+    // Focus handling
+    // ==============
+
+    // Try to focus on the first focusable element after opening
+    autoFocus : false,
+
+    // Put focus back to active element after closing
+    backFocus : true,
+
+    // Do not let user to focus on element outside modal content
+    trapFocus : true,
+
+
+    // Module specific options
+    // =======================
+
+    fullScreen : {
+        autoStart : false,
+    },
+
+    // Set `touch: false` to disable dragging/swiping
+    touch : {
+        vertical : true,  // Allow to drag content vertically
+        momentum : true   // Continue movement after releasing mouse/touch when panning
+    },
+
+    // Hash value when initializing manually,
+    // set `false` to disable hash change
+    hash : null,
+
+    // Customize or add new media types
+    // Example:
+    /*
+    media : {
+        youtube : {
+            params : {
+                autoplay : 0
+            }
+        }
+    }
+    */
+    media : {},
+
+    slideShow : {
+        autoStart : false,
+        speed     : 4000
+    },
+
+    thumbs : {
+        autoStart   : false,                  // Display thumbnails on opening
+        hideOnClose : true,                   // Hide thumbnail grid when closing animation starts
+        parentEl    : '.fancybox-container',  // Container is injected into this element
+        axis        : 'y'                     // Vertical (y) or horizontal (x) scrolling
+    },
+
+    // Use mousewheel to navigate gallery
+    // If 'auto' - enabled for images only
+    wheel : 'auto',
+
+    // Callbacks
+    //==========
+
+    // See Documentation/API/Events for more information
+    // Example:
+    /*
+        afterShow: function( instance, current ) {
+             console.info( 'Clicked element:' );
+             console.info( current.opts.$orig );
+        }
+    */
+
+    onInit       : $.noop,  // When instance has been initialized
+
+    beforeLoad   : $.noop,  // Before the content of a slide is being loaded
+    afterLoad    : $.noop,  // When the content of a slide is done loading
+
+    beforeShow   : $.noop,  // Before open animation starts
+    afterShow    : $.noop,  // When content is done loading and animating
+
+    beforeClose  : $.noop,  // Before the instance attempts to close. Return false to cancel the close.
+    afterClose   : $.noop,  // After instance has been closed
+
+    onActivate   : $.noop,  // When instance is brought to front
+    onDeactivate : $.noop,  // When other instance has been activated
+
+
+    // Interaction
+    // ===========
+
+    // Use options below to customize taken action when user clicks or double clicks on the fancyBox area,
+    // each option can be string or method that returns value.
+    //
+    // Possible values:
+    //   "close"           - close instance
+    //   "next"            - move to next gallery item
+    //   "nextOrClose"     - move to next gallery item or close if gallery has only one item
+    //   "toggleControls"  - show/hide controls
+    //   "zoom"            - zoom image (if loaded)
+    //   false             - do nothing
+
+    // Clicked on the content
+    clickContent : function( current, event ) {
+        return current.type === 'image' ? 'zoom' : false;
+    },
+
+    // Clicked on the slide
+    clickSlide : 'close',
+
+    // Clicked on the background (backdrop) element
+    clickOutside : 'close',
+
+    // Same as previous two, but for double click
+    dblclickContent : false,
+    dblclickSlide   : false,
+    dblclickOutside : false,
+
+
+    // Custom options when mobile device is detected
+    // =============================================
+
+    mobile : {
+        idleTime : false,
+        margin   : 0,
+
+        clickContent : function( current, event ) {
+            return current.type === 'image' ? 'toggleControls' : false;
+        },
+        clickSlide : function( current, event ) {
+            return current.type === 'image' ? 'toggleControls' : 'close';
+        },
+        dblclickContent : function( current, event ) {
+            return current.type === 'image' ? 'zoom' : false;
+        },
+        dblclickSlide : function( current, event ) {
+            return current.type === 'image' ? 'zoom' : false;
+        }
+    },
+
+
+    // Internationalization
+    // ============
+
+    lang : 'en',
+    i18n : {
+        'en' : {
+            CLOSE       : 'Close',
+            NEXT        : 'Next',
+            PREV        : 'Previous',
+            ERROR       : 'The requested content cannot be loaded. <br/> Please try again later.',
+            PLAY_START  : 'Start slideshow',
+            PLAY_STOP   : 'Pause slideshow',
+            FULL_SCREEN : 'Full screen',
+            THUMBS      : 'Thumbnails',
+            DOWNLOAD    : 'Download',
+            SHARE       : 'Share',
+            ZOOM        : 'Zoom'
+        },
+        'de' : {
+            CLOSE       : 'Schliessen',
+            NEXT        : 'Weiter',
+            PREV        : 'Zurück',
+            ERROR       : 'Die angeforderten Daten konnten nicht geladen werden. <br/> Bitte versuchen Sie es später nochmal.',
+            PLAY_START  : 'Diaschau starten',
+            PLAY_STOP   : 'Diaschau beenden',
+            FULL_SCREEN : 'Vollbild',
+            THUMBS      : 'Vorschaubilder',
+            DOWNLOAD    : 'Herunterladen',
+            SHARE       : 'Teilen',
+            ZOOM        : 'Maßstab'
+        }
+    }
+
+};
+
+ + +

+ Set instance options by passing a valid object to fancybox() method: +

+ +
$("[data-fancybox]").fancybox({
+	thumbs : {
+		autoStart : true
+	}
+});
+ + +

+ Plugin options / defaults are exposed in $.fancybox.defaults namespace so you can easily adjust them globally: + +

+ +
$.fancybox.defaults.animationEffect = "fade";
+ +

+ Custom options for each element individually can be set by adding a data-options + attribute to the element. + + This attribute should contain the properly formatted JSON object: +

+ +
<a data-fancybox data-options='{"caption" : "My caption", "src" : "https://codepen.io/about/", "type" : "iframe"}' href="javascript:;" class="btn">
+	Open external page
+</a>
+
+

+ View demo on CodePen +

+ + + + +

API

+ +

+ The fancyBox API offers a couple of methods to control fancyBox. + + This gives you the ability to extend the plugin and to integrate it with other web application components. +

+ +

Core methods

+ +

+ Core methods are methods which affect/handle instances: +

+ + +
// Close only the currently active or all fancyBox instances
+$.fancybox.close( true );
+
+// Open the fancyBox right away
+$.fancybox.open( items, opts, index );
+
+ + +

+ Gallery items can be collection of jQuery objects or array containing plain objects. This can be used, for example, to create custom click event. +

+ +
var $links = $('.fancybox');
+
+$links.on('click', function() {
+
+	$.fancybox.open( $links, {
+		// Custom options
+	}, $links.index( this ) );
+
+	return false;
+});
+ + + + +

+ When creating group objects manually, each item should follow this pattern: +

+ +
{
+	src  : '' // Source of the content
+	type : '' // Content type: image|inline|ajax|iframe|html (optional)
+	opts : {} // Object containing item options (optional)
+}
+
+ + +

+ Example of opening image gallery programmatically: +

+ +
$.fancybox.open([
+	{
+		src  : '1_b.jpg',
+		opts : {
+			caption : 'First caption'
+		}
+	},
+	{
+		src  : '2_b.jpg',
+		opts : {
+			caption : 'Second caption'
+		}
+	}
+], {
+	loop : false
+});
+

+ View demo on CodePen +

+ +

+ It is also possible to pass only one object. Example of opening inline content: +

+ +
$.fancybox.open({
+	src  : '#hidden-content',
+	type : 'inline',
+	opts : {
+		afterShow : function( instance, current ) {
+			console.info( 'done!' );
+		}
+	}
+});
+
+

+ View demo on CodePen +

+ +

+ If you wish to display some html content (for example, a message), then you can use a simpler syntax. + It is advised to use a wrapper around your content. +

+ +
$.fancybox.open('<div class="message"><h2>Hello!</h2><p>You are awesome!</p></div>');
+

+ View demo on CodePen +

+ + + +

Instance methods

+ +

+ In order to use these methods, you need an instance of the plugin's object. +

+ +
var instance = $.fancybox.open(
+	// Your content and options
+);
+ +

+ Get reference to currently active instance: +

+ +
var instance = $.fancybox.getInstance();
+ +

+ The first argument of the callback is reference to instance: +

+ +
$("[data-fancybox]").fancybox({
+	afterShow : function( instance, current ) {
+		console.info( instance );
+	}
+});
+

+ Once you have a reference to fancyBox instance the following methods are available: +

+ + +
// Go to next gallery item
+instance.next( duration );
+
+// Go to previous gallery item
+instance.previous( duration );
+
+// Switch to selected gallery item
+instance.jumpTo( index, duration );
+
+// Check if current image dimensions are smaller than actual
+instance.isScaledDown();
+
+// Scale image to the actual size of the image
+instance.scaleToActual( x, y, duration );
+
+// Check if image dimensions exceed parent element
+instance.canPan();
+
+// Scale image to fit inside parent element
+instance.scaleToFit( duration );
+
+// Update position and content of all slides
+instance.update();
+
+// Update slide position and scale content to fit
+instance.updateSlide( slide );
+
+// Update infobar values, navigation button states and reveal caption
+instance.updateControls( force );
+
+// Load custom content into the slide
+instance.setContent( slide, content );
+
+// Show loading icon inside the slide
+instance.showLoading( slide );
+
+// Remove loading icon from the slide
+instance.hideLoading( slide );
+
+// Try to find and focus on the first focusable element
+instance.focus();
+
+// Activates current instance, brings it to the front
+instance.activate();
+
+// Close instance
+instance.close();
+
+ + +

+ You can also do something like this: +

+ +
$.fancybox.getInstance().jumpTo(1);
+ +

+ or simply: +

+ +
$.fancybox.getInstance('jumpTo', 1);
+ + + + +

Events

+ +

+ fancyBox fires several events: +

+ +
beforeLoad   : Before the content of a slide is being loaded
+afterLoad    : When the content of a slide is done loading
+
+beforeShow   : Before open animation starts
+afterShow    : When content is done loading and animating
+
+beforeClose  : Before the instance attempts to close. Return false to cancel the close.
+afterClose   : After instance has been closed
+
+onInit       : When instance has been initialized
+onActivate   : When instance is brought to front
+onDeactivate : When other instance has been activated
+ + +

+ Event callbacks can be set as function properties of the options object passed to fancyBox initialization function: +

+ +
<script type="text/javascript">
+	$("[data-fancybox]").fancybox({
+		afterShow: function( instance, slide ) {
+
+			// Tip: Each event passes useful information within the event object:
+
+			// Object containing references to interface elements
+			// (background, buttons, caption, etc)
+			// console.info( instance.$refs );
+
+			// Current slide options
+			// console.info( slide.opts );
+
+			// Clicked element
+			// console.info( slide.opts.$orig );
+
+			// Reference to DOM element of the slide
+			// console.info( slide.$slide );
+
+		}
+	});
+</script>
+ +

+ Each callback receives two parameters - current fancyBox instance and current gallery object, if exists. +

+ +

+ It is also possible to attach event handler for all instances. + To prevent interfering with other scripts, these events have been namespaced to .fb. + These handlers receive 3 parameters - event, current fancyBox instance and current gallery object. +

+

+ Here is an example of binding to the afterShow event: +

+ +
$(document).on('afterShow.fb', function( e, instance, slide ) {
+	// Your code goes here
+});
+ + +

+ If you wish to prevent closing of the modal (for example, after form submit), you can use beforeClose + callback. Simply return false: +

+ +
beforeClose : function( instance, current, e ) {
+	if ( $('#my-field').val() == '' ) {
+		return false;
+	}
+}
+
+ +

Modules

+ +

+ fancyBox code is split into several files (modules) that extend core functionality. + You can build your own fancyBox version by excluding unnecessary modules, if needed. + Each one has their own js and/or css files. +

+ +

+ Some modules can be customized and controlled programmatically. + List of all possible options: +

+ +
fullScreen : {
+	autoStart : false,
+},
+
+touch : {
+	vertical : true,  // Allow to drag content vertically
+	momentum : true   // Continuous movement when panning
+},
+
+// Hash value when initializing manually,
+// set `false` to disable hash change
+hash : null,
+
+// Customize or add new media types
+// Example:
+/*
+media : {
+	youtube : {
+		params : {
+			autoplay : 0
+		}
+	}
+}
+*/
+media : {},
+
+slideShow : {
+	autoStart : false,
+	speed     : 4000
+},
+
+thumbs : {
+	autoStart   : false,                  // Display thumbnails on opening
+	hideOnClose : true,                   // Hide thumbnail grid when closing animation starts
+	parentEl    : '.fancybox-container',  // Container is injected into this element
+	axis        : 'y'                     // Vertical (y) or horizontal (x) scrolling
+}
+
+
+ +

+ Example (show thumbnails on start): +

+ +
$('[data-fancybox="images"]').fancybox({
+	thumbs : {
+		autoStart : true
+	}
+})
+

+ View demo on CodePen +

+ +

+ If you would inspect fancyBox instance object, you would find that same keys ar captialized - these are references for each module object. + Also, you would notice that fancyBox uses common naming convention to prefix jQuery objects with $. +

+ +

+ This is how you, for example, can access thumbnail grid element: +

+ +
$.fancybox.getInstance().Thumbs.$grid
+ +

+ This example shows how to call method that toggles thumbnails: +

+ +
$.fancybox.getInstance().Thumbs.toggle();
+ +

+ List of available methods: +

+ +
Thumbs.focus()
+Thumbs.update();
+Thumbs.hide();
+Thumbs.show();
+Thumbs.toggle();
+
+FullScreen.request( elem );
+FullScreen.exit();
+FullScreen.toggle( elem );
+FullScreen.isFullscreen();
+FullScreen.enabled();
+
+SlideShow.start();
+SlideShow.stop();
+SlideShow.toggle();
+
+ +

+ If you wish to disable hash module, use this snippet (after including JS file): +

+ +
$.fancybox.defaults.hash = false;
+ + +
+ +
+ +

FAQ

+ +

1. Opening/closing causes fixed element to jump

+ +

+ Simply add compensate-for-scrollbar CSS class to your fixed positioned elements. + Example of using Bootstrap navbar component: +

+ +
<nav class="navbar navbar-inverse navbar-fixed-top compensate-for-scrollbar">
+	<div class="container">
+		..
+	</div>
+</nav>
+ +

+ View demo on CodePen +

+ +

+ The script measures width of the scrollbar and creates compensate-for-scrollbar CSS class + that uses this value for margin-right property. + Therefore, if your element has width:100%, you should positon it using left and right properties instead. Example: +

+ +
.navbar {
+	position: fixed;
+	top: 0;
+	left: 0;
+	right: 0;
+}
+ +

2. How to customize caption

+ +

+ You can use caption option that accepts a function and is called for each group element. Example of appending image download link: +

+ +
$( '[data-fancybox="images"]' ).fancybox({
+    caption : function( instance, item ) {
+        var caption = $(this).data('caption') || '';
+
+        if ( item.type === 'image' ) {
+            caption = (caption.length ? caption + '<br />' : '') + '<a href="' + item.src + '">Download image</a>' ;
+        }
+
+        return caption;
+    }
+});
+

+ View demo on CodePen +

+ + +

+ Add current image index and image count (the total number of images in the gallery) right in the caption: +

+ +
$( '[data-fancybox="images"]' ).fancybox({
+    infobar : false,
+    caption : function( instance, item ) {
+        var caption = $(this).data('caption') || '';
+
+        return ( caption.length ? caption + '<br />' : '' ) + 'Image <span data-fancybox-index></span> of <span data-fancybox-count></span>';
+    }
+});
+

+ View demo on CodePen +

+ + + +

+ Inside caption method, this refers to the clicked element. Example of using different source for caption: +

+ +
$( '[data-fancybox]' ).fancybox({
+	caption : function( instance, item ) {
+		return $(this).find('figcaption').html();
+	}
+});
+

+ View demo on CodePen +

+ + +

3. How to create custom button in the toolbar

+ +

+ Example of creating reusable button: +

+ +
// Create template for the button
+$.fancybox.defaults.btnTpl.fb = '<button data-fancybox-fb class="fancybox-button fancybox-button--fb" title="Facebook">' +
+    '<svg viewBox="0 0 24 24">' +
+        '<path d="M22.676 0H1.324C.594 0 0 .593 0 1.324v21.352C0 23.408.593 24 1.324 24h11.494v-9.294h-3.13v-3.62h3.13V8.41c0-3.1 1.894-4.785 4.66-4.785 1.324 0 2.463.097 2.795.14v3.24h-1.92c-1.5 0-1.793.722-1.793 1.772v2.31h3.584l-.465 3.63h-3.12V24h6.115c.733 0 1.325-.592 1.325-1.324V1.324C24 .594 23.408 0 22.676 0"/>' +
+    '</svg>' +
+'</button>';
+
+// Make button clickable using event delegation
+$('body').on('click', '[data-fancybox-fb]', function() {
+  window.open("https://www.facebook.com/sharer/sharer.php?u="+encodeURIComponent(window.location.href)+"&t="+encodeURIComponent(document.title), '','left=0,top=0,width=600,height=300,menubar=no,toolbar=no,resizable=yes,scrollbars=yes');
+});
+
+// Customize buttons
+$( '[data-fancybox="images"]' ).fancybox({
+  buttons : [
+    'fb',
+    'close'
+  ]
+});
+ +

+ View demo on CodePen +

+ +

4. How to reposition thumbnail grid

+ +

+ There is currenty no JS option to change thumbnail grid position. + But fancyBox is designed so that you can use CSS to change position or dimension for each block + (e.g., content area, caption or thumbnail grid). + This gives you freedom to completely change the look and feel of the modal window, if needed. + + View demo on CodePen +

+ +

5. How to disable touch gestures/swiping

+ +

+ When you want to make your content selectable or clickable, you have two options: +

+ +
    +
  • + disable touch gestures completely by setting touch:false +
  • +
  • + add data-selectable="true" attribute to your html element +
  • +
+ +

+ View demo on CodePen +

+ + +
+ + +
+ + + + + + diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/gulpfile.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/gulpfile.js new file mode 100644 index 0000000000..fa900f9fb2 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/gulpfile.js @@ -0,0 +1,67 @@ +var gulp = require('gulp'), + livereload = require('gulp-livereload'), + concat = require('gulp-concat'), + uglify = require('gulp-uglify'), + rename = require('gulp-rename'), + cssnano = require('gulp-cssnano'), + sass = require('gulp-sass'), + autoprefixer = require('gulp-autoprefixer'), + header = require('gulp-header'), + replace = require('gulp-replace'), + gutil = require('gulp-util'); + +var pkg = require('./package.json'); +var banner = ['// ==================================================', + '// fancyBox v${pkg.version}', + '//', + '// Licensed GPLv3 for open source use', + '// or fancyBox Commercial License for commercial use', + '//', + '// http://fancyapps.com/fancybox/', + '// Copyright ${new Date().getFullYear()} fancyApps', + '//', + '// ==================================================', + ''].join('\n'); + +// Concatenate & Minify JS + +gulp.task('scripts', function() { + return gulp.src([ + 'src/js/core.js', + 'src/js/media.js', + 'src/js/guestures.js', + 'src/js/slideshow.js', + 'src/js/fullscreen.js', + 'src/js/thumbs.js', + 'src/js/hash.js', + 'src/js/wheel.js' + ]) + .pipe(concat('jquery.fancybox.js')) + .pipe(replace(/({fancybox-version})/g, pkg.version)) + .pipe(header(banner, { pkg : pkg } )) + .pipe(gulp.dest('dist')) + .pipe(rename({suffix: '.min'})) + .pipe(uglify()) + .pipe(header(banner, { pkg : pkg } )) + .pipe(gulp.dest('dist')); + }); + + +// Compile CSS + +gulp.task('css', function() { + return gulp.src('src/css/*.css') // Gets all files src/css + .pipe(sass()) + .pipe(autoprefixer({ + browsers: ['last 5 versions'], + cascade: false + })) + .pipe(concat('jquery.fancybox.css')) + .pipe(gulp.dest('dist')) + .pipe(rename({suffix: '.min'})) + .pipe(cssnano({zindex: false})) + .pipe(gulp.dest('dist')); +}); + +// Default Task +gulp.task('default', ['scripts', 'css']); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/package.json b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/package.json new file mode 100644 index 0000000000..ad8943c175 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/package.json @@ -0,0 +1,51 @@ +{ + "name": "@fancyapps/fancybox", + "description": "Touch enabled, responsive and fully customizable jQuery lightbox script", + "version": "3.2.10", + "homepage": "http://fancyapps.com/fancybox/", + "main": "./dist/jquery.fancybox.js", + "author": "fancyApps", + "license": "GPL-3.0", + "repository": { + "type": "git", + "url": "git+https://github.com/fancyapps/fancybox.git" + }, + "peerDependencies": { + "jquery": ">=1.9.0" + }, + "devDependencies": { + "del": "^2.2.2", + "gulp": "^3.9.1", + "gulp-autoprefixer": "^3.1.1", + "gulp-concat": "^2.6.1", + "gulp-cssnano": "^2.1.2", + "gulp-header": "^1.8.8", + "gulp-jshint": "^2.0.4", + "gulp-livereload": "^3.8.1", + "gulp-notify": "^2.2.0", + "gulp-rename": "^1.2.2", + "gulp-replace": "^0.5.4", + "gulp-sass": "^3.0.0", + "gulp-uglify": "^2.0.0", + "gulp-util": "^3.0.8", + "jshint": "^2.9.4" + }, + "keywords": [ + "touch", + "responsive", + "lightbox", + "fancybox", + "gallery", + "jQuery", + "plugin" + ], + "bugs": { + "url": "https://github.com/fancyapps/fancybox/issues" + }, + "directories": { + "doc": "docs" + }, + "scripts": { + "test": "echo \"Error: no test specified\" && exit 1" + } +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/core.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/core.css new file mode 100644 index 0000000000..a89c022dbe --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/core.css @@ -0,0 +1,619 @@ +body.fancybox-active { + overflow: hidden; +} + +body.fancybox-iosfix { + position: fixed; + left: 0; + right: 0; +} + +.fancybox-is-hidden { + position: absolute; + top: -9999px; + left: -9999px; + visibility: hidden; +} + +.fancybox-container { + position: fixed; + top: 0; + left: 0; + width: 100%; + height: 100%; + z-index: 99992; + -webkit-tap-highlight-color: rgba(0,0,0,0); + backface-visibility: hidden; + transform: translateZ(0); + font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol"; +} + +.fancybox-outer, +.fancybox-inner, +.fancybox-bg, +.fancybox-stage { + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; +} + +.fancybox-outer { + overflow-y: auto; + -webkit-overflow-scrolling: touch; +} + +.fancybox-bg { + background: rgb(30,30,30); + opacity: 0; + transition-duration: inherit; + transition-property: opacity; + transition-timing-function: cubic-bezier(.47,0,.74,.71); +} + +.fancybox-is-open .fancybox-bg { + opacity: 0.87; + transition-timing-function: cubic-bezier(.22,.61,.36,1); +} + +.fancybox-infobar, +.fancybox-toolbar, +.fancybox-caption-wrap { + position: absolute; + direction: ltr; + z-index: 99997; + opacity: 0; + visibility: hidden; + transition: opacity .25s, visibility 0s linear .25s; + box-sizing: border-box; +} + +.fancybox-show-infobar .fancybox-infobar, +.fancybox-show-toolbar .fancybox-toolbar, +.fancybox-show-caption .fancybox-caption-wrap { + opacity: 1; + visibility: visible; + transition: opacity .25s, visibility 0s; +} + +.fancybox-infobar { + top: 0; + left: 0; + font-size: 13px; + padding: 0 10px; + height: 44px; + min-width: 44px; + line-height: 44px; + color: #ccc; + text-align: center; + pointer-events: none; + user-select: none; + -webkit-touch-callout: none; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-font-smoothing: subpixel-antialiased; + mix-blend-mode: exclusion; +} + +.fancybox-toolbar { + top: 0; + right: 0; + margin: 0; + padding: 0; +} + +.fancybox-stage { + overflow: hidden; + direction: ltr; + z-index: 99994; + -webkit-transform: translate3d(0, 0, 0); +} + +.fancybox-is-closing .fancybox-stage { + overflow: visible; +} + +.fancybox-slide { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow: auto; + outline: none; + white-space: normal; + box-sizing: border-box; + text-align: center; + z-index: 99994; + -webkit-overflow-scrolling: touch; + display: none; + backface-visibility: hidden; + transition-property: transform, opacity; +} + +.fancybox-slide::before { + content: ''; + display: inline-block; + vertical-align: middle; + height: 100%; + width: 0; +} + +.fancybox-is-sliding .fancybox-slide, +.fancybox-slide--previous, +.fancybox-slide--current, +.fancybox-slide--next { + display: block; +} + +.fancybox-slide--image { + overflow: visible; +} + +.fancybox-slide--image::before { + display: none; +} + +.fancybox-slide--video .fancybox-content, +.fancybox-slide--video iframe { + background: #000; +} + +.fancybox-slide--map .fancybox-content, +.fancybox-slide--map iframe { + background: #E5E3DF; +} + +.fancybox-slide--next { + z-index: 99995; +} + +.fancybox-slide > * { + display: inline-block; + position: relative; + padding: 24px; + margin: 44px 0 44px; + border-width: 0; + vertical-align: middle; + text-align: left; + background-color: #fff; + overflow: auto; + box-sizing: border-box; +} + +.fancybox-slide > title, +.fancybox-slide > style, +.fancybox-slide > meta, +.fancybox-slide > link, +.fancybox-slide > script, +.fancybox-slide > base { + display: none; +} + +.fancybox-slide .fancybox-image-wrap { + position: absolute; + top: 0; + left: 0; + margin: 0; + padding: 0; + border: 0; + z-index: 99995; + background: transparent; + cursor: default; + overflow: visible; + transform-origin: top left; + background-size: 100% 100%; + background-repeat: no-repeat; + backface-visibility: hidden; + user-select: none; + transition-property: transform, opacity; +} + +.fancybox-can-zoomOut .fancybox-image-wrap { + cursor: zoom-out; +} + +.fancybox-can-zoomIn .fancybox-image-wrap { + cursor: zoom-in; +} + +.fancybox-can-drag .fancybox-image-wrap { + cursor: grab; +} + +.fancybox-is-dragging .fancybox-image-wrap { + cursor: grabbing; +} + +.fancybox-image, +.fancybox-spaceball { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + border: 0; + max-width: none; + max-height: none; + user-select: none; +} + + .fancybox-spaceball { + z-index: 1; +} + +.fancybox-slide--iframe .fancybox-content { + padding: 0; + width: 80%; + height: 80%; + max-width: calc(100% - 100px); + max-height: calc(100% - 88px); + overflow: visible; + background: #fff; +} + +.fancybox-iframe { + display: block; + margin: 0; + padding: 0; + border: 0; + width: 100%; + height: 100%; + background: #fff; +} + +.fancybox-error { + margin: 0; + padding: 40px; + width: 100%; + max-width: 380px; + background: #fff; + cursor: default; +} + +.fancybox-error p { + margin: 0; + padding: 0; + color: #444; + font-size: 16px; + line-height: 20px; +} + + +/* Buttons */ + +.fancybox-button { + box-sizing: border-box; + display: inline-block; + vertical-align: top; + width: 44px; + height: 44px; + margin: 0; + padding: 10px; + border: 0; + border-radius: 0; + background: rgba(30,30,30,0.6); + transition: color .3s ease; + cursor: pointer; + outline: none; +} + +.fancybox-button, +.fancybox-button:visited, +.fancybox-button:link { + color: #ccc; +} + +.fancybox-button:focus, +.fancybox-button:hover { + color: #fff; +} + +.fancybox-button[disabled] { + color: #ccc; + cursor: default; + opacity: 0.6; +} + +.fancybox-button svg { + display: block; + position: relative; + overflow: visible; + shape-rendering: geometricPrecision; +} + +.fancybox-button svg path { + fill: currentColor; + stroke: currentColor; + stroke-linejoin: round; + stroke-width: 3; +} + +.fancybox-button--share svg path { + stroke-width: 1; +} + +.fancybox-button--play svg path:nth-child(2) { + display: none; +} + +.fancybox-button--pause svg path:nth-child(1) { + display: none; +} + +.fancybox-button--zoom svg path { + fill: transparent; +} + + +/* Navigation arrows */ + +.fancybox-navigation { + display: none; +} + +.fancybox-show-nav .fancybox-navigation { + display: block; +} + +.fancybox-navigation button { + position: absolute; + top: 50%; + margin: -50px 0 0 0; + z-index: 99997; + background: transparent; + width: 60px; + height: 100px; + padding: 17px; +} + +.fancybox-navigation button:before { + content: ""; + position: absolute; + top: 30px; + right: 10px; + width: 40px; + height: 40px; + background: rgba(30,30,30,0.6); +} + +.fancybox-navigation .fancybox-button--arrow_left { + left: 0; +} + +.fancybox-navigation .fancybox-button--arrow_right { + right: 0; +} + +/* Close button on the top right corner of html content */ + +.fancybox-close-small { + position: absolute; + top: 0; + right: 0; + width: 40px; + height: 40px; + padding: 0; + margin: 0; + border: 0; + border-radius: 0; + background: transparent; + z-index: 10; + cursor: pointer; +} + +.fancybox-close-small:after { + content: '×'; + position: absolute; + top : 5px; + right: 5px; + width: 30px; + height: 30px; + font: 22px/30px Arial,"Helvetica Neue",Helvetica,sans-serif; + color: #888; + font-weight: 300; + text-align: center; + border-radius: 50%; + border-width: 0; + background-color: transparent; + transition: background-color .25s; + box-sizing: border-box; + z-index: 2; +} + +.fancybox-close-small:focus { + outline: none; +} + +.fancybox-close-small:focus:after { + outline: 1px dotted #888; +} + +.fancybox-close-small:hover:after { + color: #555; + background: #eee; +} + +.fancybox-slide--image .fancybox-close-small, +.fancybox-slide--iframe .fancybox-close-small { + top: 0; + right: -40px; +} + +.fancybox-slide--image .fancybox-close-small:after, +.fancybox-slide--iframe .fancybox-close-small:after { + font-size: 35px; + color: #aaa; +} + +.fancybox-slide--image .fancybox-close-small:hover:after, +.fancybox-slide--iframe .fancybox-close-small:hover:after { + color: #fff; + background: transparent; +} + +.fancybox-is-scaling .fancybox-close-small, +.fancybox-is-zoomable.fancybox-can-drag .fancybox-close-small { + display: none; +} + +/* Caption */ + +.fancybox-caption-wrap { + bottom: 0; + left: 0; + right: 0; + padding: 60px 2vw 0 2vw; + background: linear-gradient(to bottom, rgba(0,0,0,0) 0%, rgba(0,0,0,0.1) 20%, rgba(0,0,0,0.2) 40%,rgba(0,0,0,0.6) 80%, rgba(0,0,0,0.8) 100%); + pointer-events: none; +} + +.fancybox-caption { + padding: 30px 0; + border-top: 1px solid rgba(255,255,255,0.4); + font-size: 14px; + color: #fff; + line-height: 20px; + -webkit-text-size-adjust: none; +} + +.fancybox-caption a, +.fancybox-caption button, +.fancybox-caption select { + pointer-events: all; + position: relative; /* Fix IE11 */ +} + +.fancybox-caption a { + color: #fff; + text-decoration: underline; +} + + +/* Loading indicator */ + +.fancybox-slide > .fancybox-loading { + border: 6px solid rgba(100, 100, 100, .4); + border-top: 6px solid rgba(255, 255, 255, .6); + border-radius: 100%; + height: 50px; + width: 50px; + animation: fancybox-rotate .8s infinite linear; + background: transparent; + position: absolute; + top: 50%; + left: 50%; + margin-top: -30px; + margin-left: -30px; + z-index: 99999; +} + +@keyframes fancybox-rotate { + from { transform: rotate( 0deg ); } + to { transform: rotate( 359deg ); } +} + + +/* Transition effects */ + +.fancybox-animated { + transition-timing-function: cubic-bezier(0, 0, 0.25, 1); +} + +/* transitionEffect: slide */ + +.fancybox-fx-slide.fancybox-slide--previous { + transform: translate3d(-100%, 0, 0); + opacity: 0; +} + +.fancybox-fx-slide.fancybox-slide--next { + transform: translate3d(100%, 0, 0); + opacity: 0; +} + +.fancybox-fx-slide.fancybox-slide--current { + transform: translate3d(0, 0, 0); + opacity: 1; +} + +/* transitionEffect: fade */ + +.fancybox-fx-fade.fancybox-slide--previous, +.fancybox-fx-fade.fancybox-slide--next { + opacity: 0; + transition-timing-function: cubic-bezier(.19,1,.22,1); +} + +.fancybox-fx-fade.fancybox-slide--current { + opacity: 1; +} + +/* transitionEffect: zoom-in-out */ + +.fancybox-fx-zoom-in-out.fancybox-slide--previous { + transform: scale3d(1.5, 1.5, 1.5); + opacity: 0; +} + +.fancybox-fx-zoom-in-out.fancybox-slide--next { + transform: scale3d(0.5, 0.5, 0.5); + opacity: 0; +} + +.fancybox-fx-zoom-in-out.fancybox-slide--current { + transform: scale3d(1, 1, 1); + opacity: 1; +} + +/* transitionEffect: rotate */ + +.fancybox-fx-rotate.fancybox-slide--previous { + transform: rotate(-360deg); + opacity: 0; +} + +.fancybox-fx-rotate.fancybox-slide--next { + transform: rotate(360deg); + opacity: 0; +} + +.fancybox-fx-rotate.fancybox-slide--current { + transform: rotate(0deg); + opacity: 1; +} + +/* transitionEffect: circular */ + +.fancybox-fx-circular.fancybox-slide--previous { + transform: scale3d(0, 0, 0) translate3d(-100%, 0, 0); + opacity: 0; +} + +.fancybox-fx-circular.fancybox-slide--next { + transform: scale3d(0, 0, 0) translate3d(100%, 0, 0); + opacity: 0; +} + +.fancybox-fx-circular.fancybox-slide--current { + transform: scale3d(1, 1, 1) translate3d(0, 0, 0); + opacity: 1; +} + +/* transitionEffect: tube */ + +.fancybox-fx-tube.fancybox-slide--previous { + transform: translate3d(-100%, 0, 0) scale(0.1) skew(-10deg); +} + +.fancybox-fx-tube.fancybox-slide--next { + transform: translate3d(100%, 0, 0) scale(0.1) skew(10deg); +} + +.fancybox-fx-tube.fancybox-slide--current { + transform: translate3d(0, 0, 0) scale(1); +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/fullscreen.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/fullscreen.css new file mode 100644 index 0000000000..a4bd316f31 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/fullscreen.css @@ -0,0 +1,11 @@ + +/* Fullscreen */ + +.fancybox-button--fullscreen::before { + width: 15px; + height: 11px; + left: calc(50% - 7px); + top: calc(50% - 6px); + border: 2px solid; + background: none; +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/share.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/share.css new file mode 100644 index 0000000000..6a87afa811 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/share.css @@ -0,0 +1,97 @@ +/* Share */ + +.fancybox-share { + padding: 30px; + border-radius: 3px; + background: #f4f4f4; + max-width: 90%; + text-align: center; +} + +.fancybox-share h1 { + color: #222; + margin: 0 0 20px 0; + font-size: 35px; + font-weight: 700; +} + +.fancybox-share p { + margin: 0; + padding: 0; +} + +p.fancybox-share__links { + margin-right: -10px; +} + +.fancybox-share__button { + display: inline-block; + text-decoration: none; + margin: 0 10px 10px 0; + padding: 0 15px; + min-width: 130px; + border: 0; + border-radius: 3px; + background: #fff; + white-space: nowrap; + font-size: 14px; + font-weight: 700; + line-height: 40px; + user-select: none; + color: #fff; + transition: all .2s; +} + +.fancybox-share__button:hover { + text-decoration: none; +} + +.fancybox-share__button--fb { + background: #3b5998; +} + +.fancybox-share__button--fb:hover { + background: #344e86; +} + +.fancybox-share__button--pt { + background: #bd081d; +} + +.fancybox-share__button--pt:hover { + background: #aa0719; +} + +.fancybox-share__button--tw { + background: #1da1f2; +} + +.fancybox-share__button--tw:hover { + background: #0d95e8; +} + +.fancybox-share__button svg { + position: relative; + top: -1px; + width: 25px; + height: 25px; + margin-right: 7px; + vertical-align: middle; +} + +.fancybox-share__button svg path { + fill: #fff; +} + +.fancybox-share__input { + box-sizing: border-box; + width: 100%; + margin: 10px 0 0 0; + padding: 10px 15px; + background: transparent; + color: #5d5b5b; + font-size: 14px; + outline: none; + border: 0; + border-bottom: 2px solid #d7d7d7; +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/slideshow.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/slideshow.css new file mode 100644 index 0000000000..b663619bb3 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/slideshow.css @@ -0,0 +1,26 @@ +/* Slideshow button */ + +.fancybox-button--play {} + +.fancybox-button--play::before, +.fancybox-button--pause::before { + top: calc(50% - 6px); + left: calc(50% - 4px); + background: transparent; +} + +.fancybox-button--play::before { + width: 0; + height: 0; + border-top: 6px inset transparent; + border-bottom: 6px inset transparent; + border-left: 10px solid; + border-radius: 1px; +} + +.fancybox-button--pause::before { + width: 7px; + height: 11px; + border-style: solid; + border-width: 0 2px 0 2px; +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/thumbs.css b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/thumbs.css new file mode 100644 index 0000000000..23386240ae --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/css/thumbs.css @@ -0,0 +1,128 @@ + +/* Thumbs */ + +.fancybox-thumbs { + display: none; + position: absolute; + top: 0; + bottom: 0; + right: 0; + width: 212px; + margin: 0; + padding: 2px 2px 4px 2px; + background: #fff; + -webkit-tap-highlight-color: rgba(0,0,0,0); + -webkit-overflow-scrolling: touch; + -ms-overflow-style: -ms-autohiding-scrollbar; + box-sizing: border-box; + z-index: 99995; +} + +.fancybox-thumbs-x { + overflow-y: hidden; + overflow-x: auto; +} + +.fancybox-show-thumbs .fancybox-thumbs { + display: block; +} + +.fancybox-show-thumbs .fancybox-inner { + right: 212px; +} + +.fancybox-thumbs > ul { + list-style: none; + position: absolute; + position: relative; + width: 100%; + height: 100%; + margin: 0; + padding: 0; + overflow-x: hidden; + overflow-y: auto; + font-size: 0; + white-space: nowrap; +} + +.fancybox-thumbs-x > ul { + overflow : hidden; +} + +.fancybox-thumbs-y > ul::-webkit-scrollbar { + width: 7px; +} + +.fancybox-thumbs-y > ul::-webkit-scrollbar-track { + background: #fff; + border-radius: 10px; + box-shadow: inset 0 0 6px rgba(0,0,0,0.3); +} + +.fancybox-thumbs-y > ul::-webkit-scrollbar-thumb { + background: #2a2a2a; + border-radius: 10px; +} + +.fancybox-thumbs > ul > li { + float: left; + overflow: hidden; + padding: 0; + margin: 2px; + width: 100px; + height: 75px; + max-width: calc(50% - 4px); + max-height: calc(100% - 8px); + position: relative; + cursor: pointer; + outline: none; + -webkit-tap-highlight-color: transparent; + backface-visibility: hidden; + box-sizing: border-box; +} + +li.fancybox-thumbs-loading { + background: rgba(0,0,0,0.1); +} + +.fancybox-thumbs > ul > li > img { + position: absolute; + top: 0; + left: 0; + max-width: none; + max-height: none; + -webkit-touch-callout: none; + user-select: none; +} + +.fancybox-thumbs > ul > li:before { + content: ''; + position: absolute; + top: 0; + right: 0; + bottom: 0; + left: 0; + border: 4px solid #4ea7f9; + z-index: 99991; + opacity: 0; + transition: all 0.2s cubic-bezier(.25,.46,.45,.94); +} + +.fancybox-thumbs > ul > li.fancybox-thumbs-active:before { + opacity: 1; +} + +/* Styling for Small-Screen Devices */ +@media all and (max-width: 800px) { + .fancybox-thumbs { + width: 110px; + } + + .fancybox-show-thumbs .fancybox-inner { + right: 110px; + } + + .fancybox-thumbs > ul > li { + max-width: calc(100% - 10px); + } +} diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/core.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/core.js new file mode 100644 index 0000000000..712b814c7f --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/core.js @@ -0,0 +1,3097 @@ +;(function (window, document, $, undefined) { + 'use strict'; + + // If there's no jQuery, fancyBox can't work + // ========================================= + + if ( !$ ) { + return; + } + + // Check if fancyBox is already initialized + // ======================================== + + if ( $.fn.fancybox ) { + + if ( 'console' in window ) { + console.log( 'fancyBox already initialized' ); + } + + return; + } + + // Private default settings + // ======================== + + var defaults = { + + // Enable infinite gallery navigation + loop : false, + + // Space around image, ignored if zoomed-in or viewport width is smaller than 800px + margin : [44, 0], + + // Horizontal space between slides + gutter : 50, + + // Enable keyboard navigation + keyboard : true, + + // Should display navigation arrows at the screen edges + arrows : true, + + // Should display infobar (counter and arrows at the top) + infobar : true, + + // Should display toolbar (buttons at the top) + toolbar : true, + + // What buttons should appear in the top right corner. + // Buttons will be created using templates from `btnTpl` option + // and they will be placed into toolbar (class="fancybox-toolbar"` element) + buttons : [ + 'slideShow', + 'fullScreen', + 'thumbs', + 'share', + //'download', + //'zoom', + 'close' + ], + + // Detect "idle" time in seconds + idleTime : 3, + + // Should display buttons at top right corner of the content + // If 'auto' - they will be created for content having type 'html', 'inline' or 'ajax' + // Use template from `btnTpl.smallBtn` for customization + smallBtn : 'auto', + + // Disable right-click and use simple image protection for images + protect : false, + + // Shortcut to make content "modal" - disable keyboard navigtion, hide buttons, etc + modal : false, + + image : { + + // Wait for images to load before displaying + // Requires predefined image dimensions + // If 'auto' - will zoom in thumbnail if 'width' and 'height' attributes are found + preload : "auto" + + }, + + ajax : { + + // Object containing settings for ajax request + settings : { + + // This helps to indicate that request comes from the modal + // Feel free to change naming + data : { + fancybox : true + } + } + + }, + + iframe : { + + // Iframe template + tpl : '', + + // Preload iframe before displaying it + // This allows to calculate iframe content width and height + // (note: Due to "Same Origin Policy", you can't get cross domain data). + preload : true, + + // Custom CSS styling for iframe wrapping element + // You can use this to set custom iframe dimensions + css : {}, + + // Iframe tag attributes + attr : { + scrolling : 'auto' + } + + }, + + // Default content type if cannot be detected automatically + defaultType : 'image', + + // Open/close animation type + // Possible values: + // false - disable + // "zoom" - zoom images from/to thumbnail + // "fade" + // "zoom-in-out" + // + animationEffect : "zoom", + + // Duration in ms for open/close animation + animationDuration : 500, + + // Should image change opacity while zooming + // If opacity is "auto", then opacity will be changed if image and thumbnail have different aspect ratios + zoomOpacity : "auto", + + // Transition effect between slides + // + // Possible values: + // false - disable + // "fade' + // "slide' + // "circular' + // "tube' + // "zoom-in-out' + // "rotate' + // + transitionEffect : "fade", + + // Duration in ms for transition animation + transitionDuration : 366, + + // Custom CSS class for slide element + slideClass : '', + + // Custom CSS class for layout + baseClass : '', + + // Base template for layout + baseTpl : + '', + + // Loading indicator template + spinnerTpl : '
', + + // Error message template + errorTpl : '

{{ERROR}}

', + + btnTpl : { + + download : '' + + '' + + '' + + '' + + '', + + zoom : '', + + close : '', + + // This small close button will be appended to your html/inline/ajax content by default, + // if "smallBtn" option is not set to false + smallBtn : '', + + // Arrows + arrowLeft : '', + + arrowRight : '' + }, + + // Container is injected into this element + parentEl : 'body', + + + // Focus handling + // ============== + + // Try to focus on the first focusable element after opening + autoFocus : false, + + // Put focus back to active element after closing + backFocus : true, + + // Do not let user to focus on element outside modal content + trapFocus : true, + + + // Module specific options + // ======================= + + fullScreen : { + autoStart : false, + }, + + // Set `touch: false` to disable dragging/swiping + touch : { + vertical : true, // Allow to drag content vertically + momentum : true // Continue movement after releasing mouse/touch when panning + }, + + // Hash value when initializing manually, + // set `false` to disable hash change + hash : null, + + // Customize or add new media types + // Example: + /* + media : { + youtube : { + params : { + autoplay : 0 + } + } + } + */ + media : {}, + + slideShow : { + autoStart : false, + speed : 4000 + }, + + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + }, + + // Use mousewheel to navigate gallery + // If 'auto' - enabled for images only + wheel : 'auto', + + // Callbacks + //========== + + // See Documentation/API/Events for more information + // Example: + /* + afterShow: function( instance, current ) { + console.info( 'Clicked element:' ); + console.info( current.opts.$orig ); + } + */ + + onInit : $.noop, // When instance has been initialized + + beforeLoad : $.noop, // Before the content of a slide is being loaded + afterLoad : $.noop, // When the content of a slide is done loading + + beforeShow : $.noop, // Before open animation starts + afterShow : $.noop, // When content is done loading and animating + + beforeClose : $.noop, // Before the instance attempts to close. Return false to cancel the close. + afterClose : $.noop, // After instance has been closed + + onActivate : $.noop, // When instance is brought to front + onDeactivate : $.noop, // When other instance has been activated + + + // Interaction + // =========== + + // Use options below to customize taken action when user clicks or double clicks on the fancyBox area, + // each option can be string or method that returns value. + // + // Possible values: + // "close" - close instance + // "next" - move to next gallery item + // "nextOrClose" - move to next gallery item or close if gallery has only one item + // "toggleControls" - show/hide controls + // "zoom" - zoom image (if loaded) + // false - do nothing + + // Clicked on the content + clickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + + // Clicked on the slide + clickSlide : 'close', + + // Clicked on the background (backdrop) element + clickOutside : 'close', + + // Same as previous two, but for double click + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false, + + + // Custom options when mobile device is detected + // ============================================= + + mobile : { + idleTime : false, + margin : 0, + + clickContent : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : false; + }, + clickSlide : function( current, event ) { + return current.type === 'image' ? 'toggleControls' : 'close'; + }, + dblclickContent : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + }, + dblclickSlide : function( current, event ) { + return current.type === 'image' ? 'zoom' : false; + } + }, + + + // Internationalization + // ============ + + lang : 'en', + i18n : { + 'en' : { + CLOSE : 'Close', + NEXT : 'Next', + PREV : 'Previous', + ERROR : 'The requested content cannot be loaded.
Please try again later.', + PLAY_START : 'Start slideshow', + PLAY_STOP : 'Pause slideshow', + FULL_SCREEN : 'Full screen', + THUMBS : 'Thumbnails', + DOWNLOAD : 'Download', + SHARE : 'Share', + ZOOM : 'Zoom' + }, + 'de' : { + CLOSE : 'Schliessen', + NEXT : 'Weiter', + PREV : 'Zurück', + ERROR : 'Die angeforderten Daten konnten nicht geladen werden.
Bitte versuchen Sie es später nochmal.', + PLAY_START : 'Diaschau starten', + PLAY_STOP : 'Diaschau beenden', + FULL_SCREEN : 'Vollbild', + THUMBS : 'Vorschaubilder', + DOWNLOAD : 'Herunterladen', + SHARE : 'Teilen', + ZOOM : 'Maßstab' + } + } + + }; + + // Few useful variables and methods + // ================================ + + var $W = $(window); + var $D = $(document); + + var called = 0; + + + // Check if an object is a jQuery object and not a native JavaScript object + // ======================================================================== + + var isQuery = function ( obj ) { + return obj && obj.hasOwnProperty && obj instanceof $; + }; + + + // Handle multiple browsers for "requestAnimationFrame" and "cancelAnimationFrame" + // =============================================================================== + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + + // Detect the supported transition-end event property name + // ======================================================= + + var transitionEnd = (function () { + var t, el = document.createElement("fakeelement"); + + var transitions = { + "transition" : "transitionend", + "OTransition" : "oTransitionEnd", + "MozTransition" : "transitionend", + "WebkitTransition": "webkitTransitionEnd" + }; + + for (t in transitions) { + if (el.style[t] !== undefined){ + return transitions[t]; + } + } + + return 'transitionend'; + })(); + + + // Force redraw on an element. + // This helps in cases where the browser doesn't redraw an updated element properly. + // ================================================================================= + + var forceRedraw = function( $el ) { + return ( $el && $el.length && $el[0].offsetHeight ); + }; + + + // Class definition + // ================ + + var FancyBox = function( content, opts, index ) { + var self = this; + + self.opts = $.extend( true, { index : index }, $.fancybox.defaults, opts || {} ); + + if ( $.fancybox.isMobile ) { + self.opts = $.extend( true, {}, self.opts, self.opts.mobile ); + } + + // Exclude buttons option from deep merging + if ( opts && $.isArray( opts.buttons ) ) { + self.opts.buttons = opts.buttons; + } + + self.id = self.opts.id || ++called; + self.group = []; + + self.currIndex = parseInt( self.opts.index, 10 ) || 0; + self.prevIndex = null; + + self.prevPos = null; + self.currPos = 0; + + self.firstRun = null; + + // Create group elements from original item collection + self.createGroup( content ); + + if ( !self.group.length ) { + return; + } + + // Save last active element and current scroll position + self.$lastFocus = $(document.activeElement).blur(); + + // Collection of gallery objects + self.slides = {}; + + self.init(); + }; + + $.extend(FancyBox.prototype, { + + // Create DOM structure + // ==================== + + init : function() { + var self = this, + firstItem = self.group[ self.currIndex ], + firstItemOpts = firstItem.opts, + scrollbarWidth = $.fancybox.scrollbarWidth, + $scrollDiv, + $container, + buttonStr; + + self.scrollTop = $D.scrollTop(); + self.scrollLeft = $D.scrollLeft(); + + + // Hide scrollbars + // =============== + + if ( !$.fancybox.getInstance() ) { + + $( 'body' ).addClass( 'fancybox-active' ); + + // iOS hack + if ( /iPad|iPhone|iPod/.test(navigator.userAgent) && !window.MSStream ) { + + // iOS has problems for input elements inside fixed containers, + // the workaround is to apply `position: fixed` to `` element, + // unfortunately, this makes it lose the scrollbars and forces address bar to appear. + + if ( firstItem.type !== 'image' ) { + $( 'body' ).css( 'top', $( 'body' ).scrollTop() * -1 ).addClass( 'fancybox-iosfix' ); + } + + } else if ( !$.fancybox.isMobile && document.body.scrollHeight > window.innerHeight ) { + + if ( scrollbarWidth === undefined ) { + $scrollDiv = $('
').appendTo( 'body' ); + + scrollbarWidth = $.fancybox.scrollbarWidth = $scrollDiv[0].offsetWidth - $scrollDiv[0].clientWidth; + + $scrollDiv.remove(); + } + + $( 'head' ).append( '' ); + $( 'body' ).addClass( 'compensate-for-scrollbar' ); + } + } + + + // Build html markup and set references + // ==================================== + + // Build html code for buttons and insert into main template + buttonStr = ''; + + $.each( firstItemOpts.buttons, function( index, value ) { + buttonStr += ( firstItemOpts.btnTpl[ value ] || '' ); + }); + + // Create markup from base template, it will be initially hidden to + // avoid unnecessary work like painting while initializing is not complete + $container = $( + self.translate( self, + firstItemOpts.baseTpl + .replace( '\{\{buttons\}\}', buttonStr ) + .replace( '\{\{arrows\}\}', firstItemOpts.btnTpl.arrowLeft + firstItemOpts.btnTpl.arrowRight ) + ) + ) + .attr( 'id', 'fancybox-container-' + self.id ) + .addClass( 'fancybox-is-hidden' ) + .addClass( firstItemOpts.baseClass ) + .data( 'FancyBox', self ) + .appendTo( firstItemOpts.parentEl ); + + // Create object holding references to jQuery wrapped nodes + self.$refs = { + container : $container + }; + + [ 'bg', 'inner', 'infobar', 'toolbar', 'stage', 'caption', 'navigation' ].forEach(function(item) { + self.$refs[ item ] = $container.find( '.fancybox-' + item ); + }); + + self.trigger( 'onInit' ); + + // Enable events, deactive previous instances + self.activate(); + + // Build slides, load and reveal content + self.jumpTo( self.currIndex ); + }, + + + // Simple i18n support - replaces object keys found in template + // with corresponding values + // ============================================================ + + translate : function( obj, str ) { + var arr = obj.opts.i18n[ obj.opts.lang ]; + + return str.replace(/\{\{(\w+)\}\}/g, function(match, n) { + var value = arr[n]; + + if ( value === undefined ) { + return match; + } + + return value; + }); + }, + + // Create array of gally item objects + // Check if each object has valid type and content + // =============================================== + + createGroup : function ( content ) { + var self = this; + var items = $.makeArray( content ); + + $.each(items, function( i, item ) { + var obj = {}, + opts = {}, + $item, + type, + found, + src, + srcParts; + + // Step 1 - Make sure we have an object + // ==================================== + + if ( $.isPlainObject( item ) ) { + + // We probably have manual usage here, something like + // $.fancybox.open( [ { src : "image.jpg", type : "image" } ] ) + + obj = item; + opts = item.opts || item; + + } else if ( $.type( item ) === 'object' && $( item ).length ) { + + // Here we probably have jQuery collection returned by some selector + $item = $( item ); + + opts = $item.data(); + opts = $.extend( {}, opts, opts.options || {} ); + + // Here we store clicked element + opts.$orig = $item; + + obj.src = opts.src || $item.attr( 'href' ); + + // Assume that simple syntax is used, for example: + // `$.fancybox.open( $("#test"), {} );` + if ( !obj.type && !obj.src ) { + obj.type = 'inline'; + obj.src = item; + } + + } else { + + // Assume we have a simple html code, for example: + // $.fancybox.open( '

Hi!

' ); + + obj = { + type : 'html', + src : item + '' + }; + + } + + // Each gallery object has full collection of options + obj.opts = $.extend( true, {}, self.opts, opts ); + + // Do not merge buttons array + if ( $.isArray( opts.buttons ) ) { + obj.opts.buttons = opts.buttons; + } + + + // Step 2 - Make sure we have content type, if not - try to guess + // ============================================================== + + type = obj.type || obj.opts.type; + src = obj.src || ''; + + if ( !type && src ) { + if ( src.match(/(^data:image\/[a-z0-9+\/=]*,)|(\.(jp(e|g|eg)|gif|png|bmp|webp|svg|ico)((\?|#).*)?$)/i) ) { + type = 'image'; + + } else if ( src.match(/\.(pdf)((\?|#).*)?$/i) ) { + type = 'pdf'; + + } else if ( found = src.match(/\.(mp4|mov|ogv)((\?|#).*)?$/i) ) { + type = 'video'; + + if ( !obj.opts.videoFormat ) { + obj.opts.videoFormat = 'video/' + ( found[1] === 'ogv' ? 'ogg' : found[1] ); + } + + } else if ( src.charAt(0) === '#' ) { + type = 'inline'; + } + } + + if ( type ) { + obj.type = type; + + } else { + self.trigger( 'objectNeedsType', obj ); + } + + + // Step 3 - Some adjustments + // ========================= + + obj.index = self.group.length; + + // Check if $orig and $thumb objects exist + if ( obj.opts.$orig && !obj.opts.$orig.length ) { + delete obj.opts.$orig; + } + + if ( !obj.opts.$thumb && obj.opts.$orig ) { + obj.opts.$thumb = obj.opts.$orig.find( 'img:first' ); + } + + if ( obj.opts.$thumb && !obj.opts.$thumb.length ) { + delete obj.opts.$thumb; + } + + // "caption" is a "special" option, it can be used to customize caption per gallery item .. + if ( $.type( obj.opts.caption ) === 'function' ) { + obj.opts.caption = obj.opts.caption.apply( item, [ self, obj ] ); + } + + if ( $.type( self.opts.caption ) === 'function' ) { + obj.opts.caption = self.opts.caption.apply( item, [ self, obj ] ); + } + + // Make sure we have caption as a string or jQuery object + if ( !( obj.opts.caption instanceof $ ) ) { + obj.opts.caption = obj.opts.caption === undefined ? '' : obj.opts.caption + ''; + } + + // Check if url contains "filter" used to filter the content + // Example: "ajax.html #something" + if ( type === 'ajax' ) { + srcParts = src.split(/\s+/, 2); + + if ( srcParts.length > 1 ) { + obj.src = srcParts.shift(); + + obj.opts.filter = srcParts.shift(); + } + } + + if ( obj.opts.smallBtn == 'auto' ) { + + if ( $.inArray( type, ['html', 'inline', 'ajax'] ) > -1 ) { + obj.opts.toolbar = false; + obj.opts.smallBtn = true; + + } else { + obj.opts.smallBtn = false; + } + + } + + // If the type is "pdf", then simply load file into iframe + if ( type === 'pdf' ) { + obj.type = 'iframe'; + + obj.opts.iframe.preload = false; + } + + // Hide all buttons and disable interactivity for modal items + if ( obj.opts.modal ) { + + obj.opts = $.extend(true, obj.opts, { + // Remove buttons + infobar : 0, + toolbar : 0, + + smallBtn : 0, + + // Disable keyboard navigation + keyboard : 0, + + // Disable some modules + slideShow : 0, + fullScreen : 0, + thumbs : 0, + touch : 0, + + // Disable click event handlers + clickContent : false, + clickSlide : false, + clickOutside : false, + dblclickContent : false, + dblclickSlide : false, + dblclickOutside : false + }); + + } + + // Step 4 - Add processed object to group + // ====================================== + + self.group.push( obj ); + + }); + + }, + + + // Attach an event handler functions for: + // - navigation buttons + // - browser scrolling, resizing; + // - focusing + // - keyboard + // - detect idle + // ====================================== + + addEvents : function() { + var self = this; + + self.removeEvents(); + + // Make navigation elements clickable + self.$refs.container.on('click.fb-close', '[data-fancybox-close]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.close( e ); + + }).on( 'click.fb-prev touchend.fb-prev', '[data-fancybox-prev]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.previous(); + + }).on( 'click.fb-next touchend.fb-next', '[data-fancybox-next]', function(e) { + e.stopPropagation(); + e.preventDefault(); + + self.next(); + + }).on( 'click.fb', '[data-fancybox-zoom]', function(e) { + // Click handler for zoom button + self[ self.isScaledDown() ? 'scaleToActual' : 'scaleToFit' ](); + }); + + + // Handle page scrolling and browser resizing + $W.on('orientationchange.fb resize.fb', function(e) { + + if ( e && e.originalEvent && e.originalEvent.type === "resize" ) { + + requestAFrame(function() { + self.update(); + }); + + } else { + + self.$refs.stage.hide(); + + setTimeout(function() { + self.$refs.stage.show(); + + self.update(); + }, 600); + + } + + }); + + // Trap keyboard focus inside of the modal, so the user does not accidentally tab outside of the modal + // (a.k.a. "escaping the modal") + $D.on('focusin.fb', function(e) { + var instance = $.fancybox ? $.fancybox.getInstance() : null; + + if ( instance.isClosing || !instance.current || !instance.current.opts.trapFocus || $( e.target ).hasClass( 'fancybox-container' ) || $( e.target ).is( document ) ) { + return; + } + + if ( instance && $( e.target ).css( 'position' ) !== 'fixed' && !instance.$refs.container.has( e.target ).length ) { + e.stopPropagation(); + + instance.focus(); + + // Sometimes page gets scrolled, set it back + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + } + }); + + + // Enable keyboard navigation + $D.on('keydown.fb', function (e) { + var current = self.current, + keycode = e.keyCode || e.which; + + if ( !current || !current.opts.keyboard ) { + return; + } + + if ( $(e.target).is('input') || $(e.target).is('textarea') ) { + return; + } + + // Backspace and Esc keys + if ( keycode === 8 || keycode === 27 ) { + e.preventDefault(); + + self.close( e ); + + return; + } + + // Left arrow and Up arrow + if ( keycode === 37 || keycode === 38 ) { + e.preventDefault(); + + self.previous(); + + return; + } + + // Righ arrow and Down arrow + if ( keycode === 39 || keycode === 40 ) { + e.preventDefault(); + + self.next(); + + return; + } + + self.trigger('afterKeydown', e, keycode); + }); + + + // Hide controls after some inactivity period + if ( self.group[ self.currIndex ].opts.idleTime ) { + self.idleSecondsCounter = 0; + + $D.on('mousemove.fb-idle mouseleave.fb-idle mousedown.fb-idle touchstart.fb-idle touchmove.fb-idle scroll.fb-idle keydown.fb-idle', function(e) { + self.idleSecondsCounter = 0; + + if ( self.isIdle ) { + self.showControls(); + } + + self.isIdle = false; + }); + + self.idleInterval = window.setInterval(function() { + self.idleSecondsCounter++; + + if ( self.idleSecondsCounter >= self.group[ self.currIndex ].opts.idleTime && !self.isDragging ) { + self.isIdle = true; + self.idleSecondsCounter = 0; + + self.hideControls(); + } + + }, 1000); + } + + }, + + + // Remove events added by the core + // =============================== + + removeEvents : function() { + var self = this; + + $W.off( 'orientationchange.fb resize.fb' ); + $D.off( 'focusin.fb keydown.fb .fb-idle' ); + + this.$refs.container.off( '.fb-close .fb-prev .fb-next' ); + + if ( self.idleInterval ) { + window.clearInterval( self.idleInterval ); + + self.idleInterval = null; + } + }, + + + // Change to previous gallery item + // =============================== + + previous : function( duration ) { + return this.jumpTo( this.currPos - 1, duration ); + }, + + + // Change to next gallery item + // =========================== + + next : function( duration ) { + return this.jumpTo( this.currPos + 1, duration ); + }, + + + // Switch to selected gallery item + // =============================== + + jumpTo : function ( pos, duration, slide ) { + var self = this, + firstRun, + loop, + current, + previous, + canvasWidth, + currentPos, + transitionProps; + + var groupLen = self.group.length; + + if ( self.isDragging || self.isClosing || ( self.isAnimating && self.firstRun ) ) { + return; + } + + pos = parseInt( pos, 10 ); + loop = self.current ? self.current.opts.loop : self.opts.loop; + + if ( !loop && ( pos < 0 || pos >= groupLen ) ) { + return false; + } + + firstRun = self.firstRun = ( self.firstRun === null ); + + if ( groupLen < 2 && !firstRun && !!self.isDragging ) { + return; + } + + previous = self.current; + + self.prevIndex = self.currIndex; + self.prevPos = self.currPos; + + // Create slides + current = self.createSlide( pos ); + + if ( groupLen > 1 ) { + if ( loop || current.index > 0 ) { + self.createSlide( pos - 1 ); + } + + if ( loop || current.index < groupLen - 1 ) { + self.createSlide( pos + 1 ); + } + } + + self.current = current; + self.currIndex = current.index; + self.currPos = current.pos; + + self.trigger( 'beforeShow', firstRun ); + + self.updateControls(); + + currentPos = $.fancybox.getTranslate( current.$slide ); + + current.isMoved = ( currentPos.left !== 0 || currentPos.top !== 0 ) && !current.$slide.hasClass( 'fancybox-animated' ); + current.forcedDuration = undefined; + + if ( $.isNumeric( duration ) ) { + current.forcedDuration = duration; + } else { + duration = current.opts[ firstRun ? 'animationDuration' : 'transitionDuration' ]; + } + + duration = parseInt( duration, 10 ); + + // Fresh start - reveal container, current slide and start loading content + if ( firstRun ) { + + if ( current.opts.animationEffect && duration ) { + self.$refs.container.css( 'transition-duration', duration + 'ms' ); + } + + self.$refs.container.removeClass( 'fancybox-is-hidden' ); + + forceRedraw( self.$refs.container ); + + self.$refs.container.addClass( 'fancybox-is-open' ); + + // Make first slide visible (to display loading icon, if needed) + current.$slide.addClass( 'fancybox-slide--current' ); + + self.loadSlide( current ); + + self.preload( 'image' ); + + return; + } + + // Clean up + $.each(self.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + }); + + // Make current that slide is visible even if content is still loading + current.$slide.removeClass( 'fancybox-slide--next fancybox-slide--previous' ).addClass( 'fancybox-slide--current' ); + + // If slides have been dragged, animate them to correct position + if ( current.isMoved ) { + canvasWidth = Math.round( current.$slide.width() ); + + $.each(self.slides, function( index, slide ) { + var pos = slide.pos - current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ) + }, duration, function() { + + slide.$slide.removeAttr('style').removeClass( 'fancybox-slide--next fancybox-slide--previous' ); + + if ( slide.pos === self.currPos ) { + current.isMoved = false; + + self.complete(); + } + }); + }); + + } else { + self.$refs.stage.children().removeAttr( 'style' ); + } + + // Start transition that reveals current content + // or wait when it will be loaded + + if ( current.isLoaded ) { + self.revealContent( current ); + + } else { + self.loadSlide( current ); + } + + self.preload( 'image' ); + + if ( previous.pos === current.pos ) { + return; + } + + // Handle previous slide + // ===================== + + transitionProps = 'fancybox-slide--' + ( previous.pos > current.pos ? 'next' : 'previous' ); + + previous.$slide.removeClass( 'fancybox-slide--complete fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ); + + previous.isComplete = false; + + if ( !duration || ( !current.isMoved && !current.opts.transitionEffect ) ) { + return; + } + + if ( current.isMoved ) { + previous.$slide.addClass( transitionProps ); + + } else { + + transitionProps = 'fancybox-animated ' + transitionProps + ' fancybox-fx-' + current.opts.transitionEffect; + + $.fancybox.animate( previous.$slide, transitionProps, duration, function() { + previous.$slide.removeClass( transitionProps ).removeAttr( 'style' ); + }); + + } + + }, + + + // Create new "slide" element + // These are gallery items that are actually added to DOM + // ======================================================= + + createSlide : function( pos ) { + + var self = this; + var $slide; + var index; + + index = pos % self.group.length; + index = index < 0 ? self.group.length + index : index; + + if ( !self.slides[ pos ] && self.group[ index ] ) { + $slide = $('
').appendTo( self.$refs.stage ); + + self.slides[ pos ] = $.extend( true, {}, self.group[ index ], { + pos : pos, + $slide : $slide, + isLoaded : false, + }); + + self.updateSlide( self.slides[ pos ] ); + } + + return self.slides[ pos ]; + }, + + + // Scale image to the actual size of the image + // =========================================== + + scaleToActual : function( x, y, duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var imgPos, posX, posY, scaleX, scaleY; + + var canvasWidth = parseInt( current.$slide.width(), 10 ); + var canvasHeight = parseInt( current.$slide.height(), 10 ); + + var newImgWidth = current.width; + var newImgHeight = current.height; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + x = x === undefined ? canvasWidth * 0.5 : x; + y = y === undefined ? canvasHeight * 0.5 : y; + + imgPos = $.fancybox.getTranslate( $what ); + + scaleX = newImgWidth / imgPos.width; + scaleY = newImgHeight / imgPos.height; + + // Get center position for original image + posX = ( canvasWidth * 0.5 - newImgWidth * 0.5 ); + posY = ( canvasHeight * 0.5 - newImgHeight * 0.5 ); + + // Make sure image does not move away from edges + if ( newImgWidth > canvasWidth ) { + posX = imgPos.left * scaleX - ( ( x * scaleX ) - x ); + + if ( posX > 0 ) { + posX = 0; + } + + if ( posX < canvasWidth - newImgWidth ) { + posX = canvasWidth - newImgWidth; + } + } + + if ( newImgHeight > canvasHeight) { + posY = imgPos.top * scaleY - ( ( y * scaleY ) - y ); + + if ( posY > 0 ) { + posY = 0; + } + + if ( posY < canvasHeight - newImgHeight ) { + posY = canvasHeight - newImgHeight; + } + } + + self.updateCursor( newImgWidth, newImgHeight ); + + $.fancybox.animate( $what, { + top : posY, + left : posX, + scaleX : scaleX, + scaleY : scaleY + }, duration || 330, function() { + self.isAnimating = false; + }); + + // Stop slideshow + if ( self.SlideShow && self.SlideShow.isActive ) { + self.SlideShow.stop(); + } + }, + + + // Scale image to fit inside parent element + // ======================================== + + scaleToFit : function( duration ) { + + var self = this; + + var current = self.current; + var $what = current.$content; + var end; + + if ( !( current.type == 'image' && !current.hasError) || !$what || self.isAnimating ) { + return; + } + + $.fancybox.stop( $what ); + + self.isAnimating = true; + + end = self.getFitPos( current ); + + self.updateCursor( end.width, end.height ); + + $.fancybox.animate( $what, { + top : end.top, + left : end.left, + scaleX : end.width / $what.width(), + scaleY : end.height / $what.height() + }, duration || 330, function() { + self.isAnimating = false; + }); + + }, + + // Calculate image size to fit inside viewport + // =========================================== + + getFitPos : function( slide ) { + var self = this; + var $what = slide.$content; + + var imgWidth = slide.width; + var imgHeight = slide.height; + + var margin = slide.opts.margin; + + var canvasWidth, canvasHeight, minRatio, width, height; + + if ( !$what || !$what.length || ( !imgWidth && !imgHeight) ) { + return false; + } + + // Convert "margin to CSS style: [ top, right, bottom, left ] + if ( $.type( margin ) === "number" ) { + margin = [ margin, margin ]; + } + + if ( margin.length == 2 ) { + margin = [ margin[0], margin[1], margin[0], margin[1] ]; + } + + // We can not use $slide width here, because it can have different diemensions while in transiton + canvasWidth = parseInt( self.$refs.stage.width(), 10 ) - ( margin[ 1 ] + margin[ 3 ] ); + canvasHeight = parseInt( self.$refs.stage.height(), 10 ) - ( margin[ 0 ] + margin[ 2 ] ); + + minRatio = Math.min(1, canvasWidth / imgWidth, canvasHeight / imgHeight ); + + width = Math.floor( minRatio * imgWidth ); + height = Math.floor( minRatio * imgHeight ); + + // Use floor rounding to make sure it really fits + return { + top : Math.floor( ( canvasHeight - height ) * 0.5 ) + margin[ 0 ], + left : Math.floor( ( canvasWidth - width ) * 0.5 ) + margin[ 3 ], + width : width, + height : height + }; + + }, + + + // Update content size and position for all slides + // ============================================== + + update : function() { + var self = this; + + $.each( self.slides, function( key, slide ) { + self.updateSlide( slide ); + }); + }, + + + // Update slide content position and size + // ====================================== + + updateSlide : function( slide, duration ) { + var self = this, + $what = slide && slide.$content; + + if ( $what && ( slide.width || slide.height ) ) { + self.isAnimating = false; + + $.fancybox.stop( $what ); + + $.fancybox.setTranslate( $what, self.getFitPos( slide ) ); + + if ( slide.pos === self.currPos ) { + self.updateCursor(); + } + } + + slide.$slide.trigger( 'refresh' ); + + self.trigger( 'onUpdate', slide ); + + }, + + + // Horizontally center slide + // ========================= + + centerSlide : function( slide, duration ) { + var self = this, canvasWidth, pos; + + if ( self.current ) { + canvasWidth = Math.round( slide.$slide.width() ); + pos = slide.pos - self.current.pos; + + $.fancybox.animate( slide.$slide, { + top : 0, + left : ( pos * canvasWidth ) + ( pos * slide.opts.gutter ), + opacity : 1 + }, duration === undefined ? 0 : duration, null, false); + } + }, + + + // Update cursor style depending if content can be zoomed + // ====================================================== + + updateCursor : function( nextWidth, nextHeight ) { + + var self = this; + var isScaledDown; + + var $container = self.$refs.container.removeClass( 'fancybox-is-zoomable fancybox-can-zoomIn fancybox-can-drag fancybox-can-zoomOut' ); + + if ( !self.current || self.isClosing ) { + return; + } + + if ( self.isZoomable() ) { + + $container.addClass( 'fancybox-is-zoomable' ); + + if ( nextWidth !== undefined && nextHeight !== undefined ) { + isScaledDown = nextWidth < self.current.width && nextHeight < self.current.height; + + } else { + isScaledDown = self.isScaledDown(); + } + + if ( isScaledDown ) { + + // If image is scaled down, then, obviously, it can be zoomed to full size + $container.addClass( 'fancybox-can-zoomIn' ); + + } else { + + if ( self.current.opts.touch ) { + + // If image size ir largen than available available and touch module is not disable, + // then user can do panning + $container.addClass( 'fancybox-can-drag' ); + + } else { + $container.addClass( 'fancybox-can-zoomOut' ); + } + + } + + } else if ( self.current.opts.touch ) { + $container.addClass( 'fancybox-can-drag' ); + } + + }, + + + // Check if current slide is zoomable + // ================================== + + isZoomable : function() { + + var self = this; + + var current = self.current; + var fitPos; + + if ( !current || self.isClosing ) { + return; + } + + // Assume that slide is zoomable if + // - image is loaded successfuly + // - click action is "zoom" + // - actual size of the image is smaller than available area + if ( current.type === 'image' && current.isLoaded && !current.hasError && + ( current.opts.clickContent === 'zoom' || ( $.isFunction( current.opts.clickContent ) && current.opts.clickContent( current ) === "zoom" ) ) + ) { + + fitPos = self.getFitPos( current ); + + if ( current.width > fitPos.width || current.height > fitPos.height ) { + return true; + } + + } + + return false; + + }, + + + // Check if current image dimensions are smaller than actual + // ========================================================= + + isScaledDown : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = $.fancybox.getTranslate( $what ); + rez = rez.width < current.width || rez.height < current.height; + } + + return rez; + + }, + + + // Check if image dimensions exceed parent element + // =============================================== + + canPan : function() { + + var self = this; + + var current = self.current; + var $what = current.$content; + + var rez = false; + + if ( $what ) { + rez = self.getFitPos( current ); + rez = Math.abs( $what.width() - rez.width ) > 1 || Math.abs( $what.height() - rez.height ) > 1; + } + + return rez; + + }, + + + // Load content into the slide + // =========================== + + loadSlide : function( slide ) { + + var self = this, type, $slide; + var ajaxLoad; + + if ( slide.isLoading ) { + return; + } + + if ( slide.isLoaded ) { + return; + } + + slide.isLoading = true; + + self.trigger( 'beforeLoad', slide ); + + type = slide.type; + $slide = slide.$slide; + + $slide + .off( 'refresh' ) + .trigger( 'onReset' ) + .addClass( 'fancybox-slide--' + ( type || 'unknown' ) ) + .addClass( slide.opts.slideClass ); + + // Create content depending on the type + + switch ( type ) { + + case 'image': + + self.setImage( slide ); + + break; + + case 'iframe': + + self.setIframe( slide ); + + break; + + case 'html': + + self.setContent( slide, slide.src || slide.content ); + + break; + + case 'inline': + + if ( $( slide.src ).length ) { + self.setContent( slide, $( slide.src ) ); + + } else { + self.setError( slide ); + } + + break; + + case 'ajax': + + self.showLoading( slide ); + + ajaxLoad = $.ajax( $.extend( {}, slide.opts.ajax.settings, { + url : slide.src, + success : function ( data, textStatus ) { + + if ( textStatus === 'success' ) { + self.setContent( slide, data ); + } + + }, + error : function ( jqXHR, textStatus ) { + + if ( jqXHR && textStatus !== 'abort' ) { + self.setError( slide ); + } + + } + })); + + $slide.one( 'onReset', function () { + ajaxLoad.abort(); + }); + + break; + + case 'video' : + + self.setContent( slide, + '' + ); + + break; + + default: + + self.setError( slide ); + + break; + + } + + return true; + + }, + + + // Use thumbnail image, if possible + // ================================ + + setImage : function( slide ) { + + var self = this; + var srcset = slide.opts.srcset || slide.opts.image.srcset; + + var found, temp, pxRatio, windowWidth; + + // If we have "srcset", then we need to find matching "src" value. + // This is necessary, because when you set an src attribute, the browser will preload the image + // before any javascript or even CSS is applied. + if ( srcset ) { + pxRatio = window.devicePixelRatio || 1; + windowWidth = window.innerWidth * pxRatio; + + temp = srcset.split(',').map(function ( el ) { + var ret = {}; + + el.trim().split(/\s+/).forEach(function ( el, i ) { + var value = parseInt( el.substring(0, el.length - 1), 10 ); + + if ( i === 0 ) { + return ( ret.url = el ); + } + + if ( value ) { + ret.value = value; + ret.postfix = el[ el.length - 1 ]; + } + + }); + + return ret; + }); + + // Sort by value + temp.sort(function (a, b) { + return a.value - b.value; + }); + + // Ok, now we have an array of all srcset values + for ( var j = 0; j < temp.length; j++ ) { + var el = temp[ j ]; + + if ( ( el.postfix === 'w' && el.value >= windowWidth ) || ( el.postfix === 'x' && el.value >= pxRatio ) ) { + found = el; + break; + } + } + + // If not found, take the last one + if ( !found && temp.length ) { + found = temp[ temp.length - 1 ]; + } + + if ( found ) { + slide.src = found.url; + + // If we have default width/height values, we can calculate height for matching source + if ( slide.width && slide.height && found.postfix == 'w' ) { + slide.height = ( slide.width / slide.height ) * found.value; + slide.width = found.value; + } + } + } + + // This will be wrapper containing both ghost and actual image + slide.$content = $('
') + .addClass( 'fancybox-is-hidden' ) + .appendTo( slide.$slide ); + + + // If we have a thumbnail, we can display it while actual image is loading + // Users will not stare at black screen and actual image will appear gradually + if ( slide.opts.preload !== false && slide.opts.width && slide.opts.height && ( slide.opts.thumb || slide.opts.$thumb ) ) { + + slide.width = slide.opts.width; + slide.height = slide.opts.height; + + slide.$ghost = $('') + .one('error', function() { + + $(this).remove(); + + slide.$ghost = null; + + self.setBigImage( slide ); + + }) + .one('load', function() { + + self.afterLoad( slide ); + + self.setBigImage( slide ); + + }) + .addClass( 'fancybox-image' ) + .appendTo( slide.$content ) + .attr( 'src', slide.opts.thumb || slide.opts.$thumb.attr( 'src' ) ); + + } else { + + self.setBigImage( slide ); + + } + + }, + + + // Create full-size image + // ====================== + + setBigImage : function ( slide ) { + var self = this; + var $img = $(''); + + slide.$image = $img + .one('error', function() { + + self.setError( slide ); + + }) + .one('load', function() { + + // Clear timeout that checks if loading icon needs to be displayed + clearTimeout( slide.timouts ); + + slide.timouts = null; + + if ( self.isClosing ) { + return; + } + + slide.width = slide.opts.width || this.naturalWidth; + slide.height = slide.opts.height || this.naturalHeight; + + if ( slide.opts.image.srcset ) { + $img.attr( 'sizes', '100vw' ).attr( 'srcset', slide.opts.image.srcset ); + } + + self.hideLoading( slide ); + + if ( slide.$ghost ) { + + slide.timouts = setTimeout(function() { + slide.timouts = null; + + slide.$ghost.hide(); + + }, Math.min( 300, Math.max( 1000, slide.height / 1600 ) ) ); + + } else { + self.afterLoad( slide ); + } + + }) + .addClass( 'fancybox-image' ) + .attr('src', slide.src) + .appendTo( slide.$content ); + + if ( ( $img[0].complete || $img[0].readyState == "complete" ) && $img[0].naturalWidth && $img[0].naturalHeight ) { + $img.trigger( 'load' ); + + } else if( $img[0].error ) { + $img.trigger( 'error' ); + + } else { + + slide.timouts = setTimeout(function() { + if ( !$img[0].complete && !slide.hasError ) { + self.showLoading( slide ); + } + + }, 100); + + } + + }, + + + // Create iframe wrapper, iframe and bindings + // ========================================== + + setIframe : function( slide ) { + var self = this, + opts = slide.opts.iframe, + $slide = slide.$slide, + $iframe; + + slide.$content = $('
') + .css( opts.css ) + .appendTo( $slide ); + + $iframe = $( opts.tpl.replace(/\{rnd\}/g, new Date().getTime()) ) + .attr( opts.attr ) + .appendTo( slide.$content ); + + if ( opts.preload ) { + + self.showLoading( slide ); + + // Unfortunately, it is not always possible to determine if iframe is successfully loaded + // (due to browser security policy) + + $iframe.on('load.fb error.fb', function(e) { + this.isReady = 1; + + slide.$slide.trigger( 'refresh' ); + + self.afterLoad( slide ); + }); + + // Recalculate iframe content size + // =============================== + + $slide.on('refresh.fb', function() { + var $wrap = slide.$content, + frameWidth = opts.css.width, + frameHeight = opts.css.height, + scrollWidth, + $contents, + $body; + + if ( $iframe[0].isReady !== 1 ) { + return; + } + + // Check if content is accessible, + // it will fail if frame is not with the same origin + + try { + $contents = $iframe.contents(); + $body = $contents.find('body'); + + } catch (ignore) {} + + // Calculate dimensions for the wrapper + if ( $body && $body.length ) { + + if ( frameWidth === undefined ) { + scrollWidth = $iframe[0].contentWindow.document.documentElement.scrollWidth; + + frameWidth = Math.ceil( $body.outerWidth(true) + ( $wrap.width() - scrollWidth ) ); + frameWidth += $wrap.outerWidth() - $wrap.innerWidth(); + } + + if ( frameHeight === undefined ) { + frameHeight = Math.ceil( $body.outerHeight(true) ); + frameHeight += $wrap.outerHeight() - $wrap.innerHeight(); + } + + // Resize wrapper to fit iframe content + if ( frameWidth ) { + $wrap.width( frameWidth ); + } + + if ( frameHeight ) { + $wrap.height( frameHeight ); + } + } + + $wrap.removeClass( 'fancybox-is-hidden' ); + + }); + + } else { + + this.afterLoad( slide ); + + } + + $iframe.attr( 'src', slide.src ); + + if ( slide.opts.smallBtn === true ) { + slide.$content.prepend( self.translate( slide, slide.opts.btnTpl.smallBtn ) ); + } + + // Remove iframe if closing or changing gallery item + $slide.one( 'onReset', function () { + + // This helps IE not to throw errors when closing + try { + + $( this ).find( 'iframe' ).hide().attr( 'src', '//about:blank' ); + + } catch ( ignore ) {} + + $( this ).empty(); + + slide.isLoaded = false; + + }); + + }, + + + // Wrap and append content to the slide + // ====================================== + + setContent : function ( slide, content ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + self.hideLoading( slide ); + + slide.$slide.empty(); + + if ( isQuery( content ) && content.parent().length ) { + + // If content is a jQuery object, then it will be moved to the slide. + // The placeholder is created so we will know where to put it back. + // If user is navigating gallery fast, then the content might be already inside fancyBox + // ===================================================================================== + + // Make sure content is not already moved to fancyBox + content.parent( '.fancybox-slide--inline' ).trigger( 'onReset' ); + + // Create temporary element marking original place of the content + slide.$placeholder = $( '
' ).hide().insertAfter( content ); + + // Make sure content is visible + content.css('display', 'inline-block'); + + } else if ( !slide.hasError ) { + + // If content is just a plain text, try to convert it to html + if ( $.type( content ) === 'string' ) { + content = $('
').append( $.trim( content ) ).contents(); + + // If we have text node, then add wrapping element to make vertical alignment work + if ( content[0].nodeType === 3 ) { + content = $('
').html( content ); + } + } + + // If "filter" option is provided, then filter content + if ( slide.opts.filter ) { + content = $('
').html( content ).find( slide.opts.filter ); + } + + } + + slide.$slide.one('onReset', function () { + + // Pause all html5 video/audio + $( this ).find( 'video,audio' ).trigger( 'pause' ); + + // Put content back + if ( slide.$placeholder ) { + slide.$placeholder.after( content.hide() ).remove(); + + slide.$placeholder = null; + } + + // Remove custom close button + if ( slide.$smallBtn ) { + slide.$smallBtn.remove(); + + slide.$smallBtn = null; + } + + // Remove content and mark slide as not loaded + if ( !slide.hasError ) { + $(this).empty(); + + slide.isLoaded = false; + } + + }); + + slide.$content = $( content ).appendTo( slide.$slide ); + + this.afterLoad( slide ); + }, + + // Display error message + // ===================== + + setError : function ( slide ) { + + slide.hasError = true; + + slide.$slide.removeClass( 'fancybox-slide--' + slide.type ); + + this.setContent( slide, this.translate( slide, slide.opts.errorTpl ) ); + + }, + + + // Show loading icon inside the slide + // ================================== + + showLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && !slide.$spinner ) { + slide.$spinner = $( self.opts.spinnerTpl ).appendTo( slide.$slide ); + } + + }, + + // Remove loading icon from the slide + // ================================== + + hideLoading : function( slide ) { + + var self = this; + + slide = slide || self.current; + + if ( slide && slide.$spinner ) { + slide.$spinner.remove(); + + delete slide.$spinner; + } + + }, + + + // Adjustments after slide content has been loaded + // =============================================== + + afterLoad : function( slide ) { + + var self = this; + + if ( self.isClosing ) { + return; + } + + slide.isLoading = false; + slide.isLoaded = true; + + self.trigger( 'afterLoad', slide ); + + self.hideLoading( slide ); + + if ( slide.opts.smallBtn && !slide.$smallBtn ) { + slide.$smallBtn = $( self.translate( slide, slide.opts.btnTpl.smallBtn ) ).appendTo( slide.$content.filter('div,form').first() ); + } + + if ( slide.opts.protect && slide.$content && !slide.hasError ) { + + // Disable right click + slide.$content.on( 'contextmenu.fb', function( e ) { + if ( e.button == 2 ) { + e.preventDefault(); + } + + return true; + }); + + // Add fake element on top of the image + // This makes a bit harder for user to select image + if ( slide.type === 'image' ) { + $( '
' ).appendTo( slide.$content ); + } + + } + + self.revealContent( slide ); + + }, + + + // Make content visible + // This method is called right after content has been loaded or + // user navigates gallery and transition should start + // ============================================================ + + revealContent : function( slide ) { + + var self = this; + var $slide = slide.$slide; + + var effect, effectClassName, duration, opacity, end, start = false; + + effect = slide.opts[ self.firstRun ? 'animationEffect' : 'transitionEffect' ]; + duration = slide.opts[ self.firstRun ? 'animationDuration' : 'transitionDuration' ]; + + duration = parseInt( slide.forcedDuration === undefined ? duration : slide.forcedDuration, 10 ); + + if ( slide.isMoved || slide.pos !== self.currPos || !duration ) { + effect = false; + } + + // Check if can zoom + if ( effect === 'zoom' && !( slide.pos === self.currPos && duration && slide.type === 'image' && !slide.hasError && ( start = self.getThumbPos( slide ) ) ) ) { + effect = 'fade'; + } + + // Zoom animation + // ============== + + if ( effect === 'zoom' ) { + end = self.getFitPos( slide ); + + end.scaleX = end.width / start.width; + end.scaleY = end.height / start.height; + + delete end.width; + delete end.height; + + // Check if we need to animate opacity + opacity = slide.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( slide.width / slide.height - start.width / start.height ) > 0.1; + } + + if ( opacity ) { + start.opacity = 0.1; + end.opacity = 1; + } + + // Draw image at start position + $.fancybox.setTranslate( slide.$content.removeClass( 'fancybox-is-hidden' ), start ); + + forceRedraw( slide.$content ); + + // Start animation + $.fancybox.animate( slide.$content, end, duration, function() { + self.complete(); + }); + + return; + } + + self.updateSlide( slide ); + + + // Simply show content + // =================== + + if ( !effect ) { + forceRedraw( $slide ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + return; + } + + $.fancybox.stop( $slide ); + + effectClassName = 'fancybox-animated fancybox-slide--' + ( slide.pos >= self.prevPos ? 'next' : 'previous' ) + ' fancybox-fx-' + effect; + + $slide.removeAttr( 'style' ).removeClass( 'fancybox-slide--current fancybox-slide--next fancybox-slide--previous' ).addClass( effectClassName ); + + slide.$content.removeClass( 'fancybox-is-hidden' ); + + //Force reflow for CSS3 transitions + forceRedraw( $slide ); + + $.fancybox.animate( $slide, 'fancybox-slide--current', duration, function(e) { + $slide.removeClass( effectClassName ).removeAttr( 'style' ); + + if ( slide.pos === self.currPos ) { + self.complete(); + } + + }, true); + + }, + + + // Check if we can and have to zoom from thumbnail + //================================================ + + getThumbPos : function( slide ) { + + var self = this; + var rez = false; + + // Check if element is inside the viewport by at least 1 pixel + var isElementVisible = function( $el ) { + var element = $el[0]; + + var elementRect = element.getBoundingClientRect(); + var parentRects = []; + + var visibleInAllParents; + + while ( element.parentElement !== null ) { + if ( $(element.parentElement).css('overflow') === 'hidden' || $(element.parentElement).css('overflow') === 'auto' ) { + parentRects.push(element.parentElement.getBoundingClientRect()); + } + + element = element.parentElement; + } + + visibleInAllParents = parentRects.every(function(parentRect){ + var visiblePixelX = Math.min(elementRect.right, parentRect.right) - Math.max(elementRect.left, parentRect.left); + var visiblePixelY = Math.min(elementRect.bottom, parentRect.bottom) - Math.max(elementRect.top, parentRect.top); + + return visiblePixelX > 0 && visiblePixelY > 0; + }); + + return visibleInAllParents && + elementRect.bottom > 0 && elementRect.right > 0 && + elementRect.left < $(window).width() && elementRect.top < $(window).height(); + }; + + var $thumb = slide.opts.$thumb; + var thumbPos = $thumb ? $thumb.offset() : 0; + var slidePos; + + if ( thumbPos && $thumb[0].ownerDocument === document && isElementVisible( $thumb ) ) { + slidePos = self.$refs.stage.offset(); + + rez = { + top : thumbPos.top - slidePos.top + parseFloat( $thumb.css( "border-top-width" ) || 0 ), + left : thumbPos.left - slidePos.left + parseFloat( $thumb.css( "border-left-width" ) || 0 ), + width : $thumb.width(), + height : $thumb.height(), + scaleX : 1, + scaleY : 1 + }; + } + + return rez; + }, + + + // Final adjustments after current gallery item is moved to position + // and it`s content is loaded + // ================================================================== + + complete : function() { + var self = this, + current = self.current, + slides = {}, + promise; + + if ( current.isMoved || !current.isLoaded || current.isComplete ) { + return; + } + + current.isComplete = true; + + current.$slide.siblings().trigger( 'onReset' ); + + self.preload( 'inline' ); + + // Trigger any CSS3 transiton inside the slide + forceRedraw( current.$slide ); + + current.$slide.addClass( 'fancybox-slide--complete' ); + + // Remove unnecessary slides + $.each( self.slides, function( key, slide ) { + if ( slide.pos >= self.currPos - 1 && slide.pos <= self.currPos + 1 ) { + slides[ slide.pos ] = slide; + + } else if ( slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.off().remove(); + } + }); + + self.slides = slides; + + self.updateCursor(); + + self.trigger( 'afterShow' ); + + // Play first html5 video/audio + current.$slide.find( 'video,audio' ).first().trigger( 'play' ); + + // Try to focus on the first focusable element + if ( $( document.activeElement ).is( '[disabled]' ) || ( current.opts.autoFocus && !( current.type == 'image' || current.type === 'iframe' ) ) ) { + self.focus(); + } + + }, + + + // Preload next and previous slides + // ================================ + + preload : function( type ) { + var self = this, + next = self.slides[ self.currPos + 1 ], + prev = self.slides[ self.currPos - 1 ]; + + if ( next && next.type === type ) { + self.loadSlide( next ); + } + + if ( prev && prev.type === type ) { + self.loadSlide( prev ); + } + }, + + + // Try to find and focus on the first focusable element + // ==================================================== + + focus : function() { + var current = this.current; + var $el; + + if ( this.isClosing ) { + return; + } + + if ( current && current.isComplete ) { + + // Look for first input with autofocus attribute + $el = current.$slide.find('input[autofocus]:enabled:visible:first'); + + if ( !$el.length ) { + $el = current.$slide.find('button,:input,[tabindex],a').filter(':enabled:visible:first'); + } + } + + $el = $el && $el.length ? $el : this.$refs.container; + + $el.focus(); + }, + + + // Activates current instance - brings container to the front and enables keyboard, + // notifies other instances about deactivating + // ================================================================================= + + activate : function () { + var self = this; + + // Deactivate all instances + $( '.fancybox-container' ).each(function () { + var instance = $(this).data( 'FancyBox' ); + + // Skip self and closing instances + if (instance && instance.id !== self.id && !instance.isClosing) { + instance.trigger( 'onDeactivate' ); + + instance.removeEvents(); + + instance.isVisible = false; + } + + }); + + self.isVisible = true; + + if ( self.current || self.isIdle ) { + self.update(); + + self.updateControls(); + } + + self.trigger( 'onActivate' ); + + self.addEvents(); + }, + + + // Start closing procedure + // This will start "zoom-out" animation if needed and clean everything up afterwards + // ================================================================================= + + close : function( e, d ) { + + var self = this; + var current = self.current; + + var effect, duration; + var $what, opacity, start, end; + + var done = function() { + self.cleanUp( e ); + }; + + if ( self.isClosing ) { + return false; + } + + self.isClosing = true; + + // If beforeClose callback prevents closing, make sure content is centered + if ( self.trigger( 'beforeClose', e ) === false ) { + self.isClosing = false; + + requestAFrame(function() { + self.update(); + }); + + return false; + } + + // Remove all events + // If there are multiple instances, they will be set again by "activate" method + self.removeEvents(); + + if ( current.timouts ) { + clearTimeout( current.timouts ); + } + + $what = current.$content; + effect = current.opts.animationEffect; + duration = $.isNumeric( d ) ? d : ( effect ? current.opts.animationDuration : 0 ); + + // Remove other slides + current.$slide.off( transitionEnd ).removeClass( 'fancybox-slide--complete fancybox-slide--next fancybox-slide--previous fancybox-animated' ); + + current.$slide.siblings().trigger( 'onReset' ).remove(); + + // Trigger animations + if ( duration ) { + self.$refs.container.removeClass( 'fancybox-is-open' ).addClass( 'fancybox-is-closing' ); + } + + // Clean up + self.hideLoading( current ); + + self.hideControls(); + + self.updateCursor(); + + // Check if possible to zoom-out + if ( effect === 'zoom' && !( e !== true && $what && duration && current.type === 'image' && !current.hasError && ( end = self.getThumbPos( current ) ) ) ) { + effect = 'fade'; + } + + if ( effect === 'zoom' ) { + $.fancybox.stop( $what ); + + start = $.fancybox.getTranslate( $what ); + + start.width = start.width * start.scaleX; + start.height = start.height * start.scaleY; + + // Check if we need to animate opacity + opacity = current.opts.zoomOpacity; + + if ( opacity == 'auto' ) { + opacity = Math.abs( current.width / current.height - end.width / end.height ) > 0.1; + } + + if ( opacity ) { + end.opacity = 0; + } + + start.scaleX = start.width / end.width; + start.scaleY = start.height / end.height; + + start.width = end.width; + start.height = end.height; + + $.fancybox.setTranslate( current.$content, start ); + + forceRedraw( current.$content ); + + $.fancybox.animate( current.$content, end, duration, done ); + + return true; + } + + if ( effect && duration ) { + + // If skip animation + if ( e === true ) { + setTimeout( done, duration ); + + } else { + $.fancybox.animate( current.$slide.removeClass( 'fancybox-slide--current' ), 'fancybox-animated fancybox-slide--previous fancybox-fx-' + effect, duration, done ); + } + + } else { + done(); + } + + return true; + }, + + + // Final adjustments after removing the instance + // ============================================= + + cleanUp : function( e ) { + var self = this, + $body = $( 'body' ), + instance, + offset; + + self.current.$slide.trigger( 'onReset' ); + + self.$refs.container.empty().remove(); + + self.trigger( 'afterClose', e ); + + // Place back focus + if ( self.$lastFocus && !!self.current.opts.backFocus ) { + self.$lastFocus.focus(); + } + + self.current = null; + + // Check if there are other instances + instance = $.fancybox.getInstance(); + + if ( instance ) { + instance.activate(); + + } else { + + $W.scrollTop( self.scrollTop ).scrollLeft( self.scrollLeft ); + + $body.removeClass( 'fancybox-active compensate-for-scrollbar' ); + + if ( $body.hasClass( 'fancybox-iosfix' ) ) { + offset = parseInt(document.body.style.top, 10); + + $body.removeClass( 'fancybox-iosfix' ).css( 'top', '' ).scrollTop( offset * -1 ); + } + + $( '#fancybox-style-noscroll' ).remove(); + + } + + }, + + + // Call callback and trigger an event + // ================================== + + trigger : function( name, slide ) { + var args = Array.prototype.slice.call(arguments, 1), + self = this, + obj = slide && slide.opts ? slide : self.current, + rez; + + if ( obj ) { + args.unshift( obj ); + + } else { + obj = self; + } + + args.unshift( self ); + + if ( $.isFunction( obj.opts[ name ] ) ) { + rez = obj.opts[ name ].apply( obj, args ); + } + + if ( rez === false ) { + return rez; + } + + if ( name === 'afterClose' || !self.$refs ) { + $D.trigger( name + '.fb', args ); + + } else { + self.$refs.container.trigger( name + '.fb', args ); + } + + }, + + + // Update infobar values, navigation button states and reveal caption + // ================================================================== + + updateControls : function ( force ) { + + var self = this; + + var current = self.current, + index = current.index, + caption = current.opts.caption, + $container = self.$refs.container, + $caption = self.$refs.caption; + + // Recalculate content dimensions + current.$slide.trigger( 'refresh' ); + + self.$caption = caption && caption.length ? $caption.html( caption ) : null; + + if ( !self.isHiddenControls && !self.isIdle ) { + self.showControls(); + } + + // Update info and navigation elements + $container.find('[data-fancybox-count]').html( self.group.length ); + $container.find('[data-fancybox-index]').html( index + 1 ); + + $container.find('[data-fancybox-prev]').prop( 'disabled', ( !current.opts.loop && index <= 0 ) ); + $container.find('[data-fancybox-next]').prop( 'disabled', ( !current.opts.loop && index >= self.group.length - 1 ) ); + + if ( current.type === 'image' ) { + + // Update download button source + $container.find('[data-fancybox-download]').attr( 'href', current.opts.image.src || current.src ).show(); + + } else { + $container.find('[data-fancybox-download],[data-fancybox-zoom]').hide(); + } + }, + + // Hide toolbar and caption + // ======================== + + hideControls : function () { + + this.isHiddenControls = true; + + this.$refs.container.removeClass( 'fancybox-show-infobar fancybox-show-toolbar fancybox-show-caption fancybox-show-nav' ); + + }, + + showControls : function() { + var self = this; + var opts = self.current ? self.current.opts : self.opts; + var $container = self.$refs.container; + + self.isHiddenControls = false; + self.idleSecondsCounter = 0; + + $container + .toggleClass( 'fancybox-show-toolbar', !!( opts.toolbar && opts.buttons ) ) + .toggleClass( 'fancybox-show-infobar', !!( opts.infobar && self.group.length > 1 ) ) + .toggleClass( 'fancybox-show-nav', !!( opts.arrows && self.group.length > 1 ) ) + .toggleClass( 'fancybox-is-modal', !!opts.modal ); + + if ( self.$caption ) { + $container.addClass( 'fancybox-show-caption '); + + } else { + $container.removeClass( 'fancybox-show-caption' ); + } + + }, + + + // Toggle toolbar and caption + // ========================== + + toggleControls : function() { + if ( this.isHiddenControls ) { + this.showControls(); + + } else { + this.hideControls(); + } + + }, + + + }); + + + $.fancybox = { + + version : "{fancybox-version}", + defaults : defaults, + + + // Get current instance and execute a command. + // + // Examples of usage: + // + // $instance = $.fancybox.getInstance(); + // $.fancybox.getInstance().jumpTo( 1 ); + // $.fancybox.getInstance( 'jumpTo', 1 ); + // $.fancybox.getInstance( function() { + // console.info( this.currIndex ); + // }); + // ====================================================== + + getInstance : function ( command ) { + var instance = $('.fancybox-container:not(".fancybox-is-closing"):last').data( 'FancyBox' ); + var args = Array.prototype.slice.call(arguments, 1); + + if ( instance instanceof FancyBox ) { + + if ( $.type( command ) === 'string' ) { + instance[ command ].apply( instance, args ); + + } else if ( $.type( command ) === 'function' ) { + command.apply( instance, args ); + } + + return instance; + } + + return false; + + }, + + + // Create new instance + // =================== + + open : function ( items, opts, index ) { + return new FancyBox( items, opts, index ); + }, + + + // Close current or all instances + // ============================== + + close : function ( all ) { + var instance = this.getInstance(); + + if ( instance ) { + instance.close(); + + // Try to find and close next instance + + if ( all === true ) { + this.close(); + } + } + + }, + + // Close instances and unbind all events + // ============================== + + destroy : function() { + + this.close( true ); + + $D.off( 'click.fb-start' ); + + }, + + + // Try to detect mobile devices + // ============================ + + isMobile : document.createTouch !== undefined && /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini/i.test(navigator.userAgent), + + + // Detect if 'translate3d' support is available + // ============================================ + + use3d : (function() { + var div = document.createElement('div'); + + return window.getComputedStyle && window.getComputedStyle( div ).getPropertyValue('transform') && !(document.documentMode && document.documentMode < 11); + }()), + + // Helper function to get current visual state of an element + // returns array[ top, left, horizontal-scale, vertical-scale, opacity ] + // ===================================================================== + + getTranslate : function( $el ) { + var matrix; + + if ( !$el || !$el.length ) { + return false; + } + + matrix = $el.eq( 0 ).css('transform'); + + if ( matrix && matrix.indexOf( 'matrix' ) !== -1 ) { + matrix = matrix.split('(')[1]; + matrix = matrix.split(')')[0]; + matrix = matrix.split(','); + } else { + matrix = []; + } + + if ( matrix.length ) { + + // If IE + if ( matrix.length > 10 ) { + matrix = [ matrix[13], matrix[12], matrix[0], matrix[5] ]; + + } else { + matrix = [ matrix[5], matrix[4], matrix[0], matrix[3]]; + } + + matrix = matrix.map(parseFloat); + + } else { + matrix = [ 0, 0, 1, 1 ]; + + var transRegex = /\.*translate\((.*)px,(.*)px\)/i; + var transRez = transRegex.exec( $el.eq( 0 ).attr('style') ); + + if ( transRez ) { + matrix[ 0 ] = parseFloat( transRez[2] ); + matrix[ 1 ] = parseFloat( transRez[1] ); + } + } + + return { + top : matrix[ 0 ], + left : matrix[ 1 ], + scaleX : matrix[ 2 ], + scaleY : matrix[ 3 ], + opacity : parseFloat( $el.css('opacity') ), + width : $el.width(), + height : $el.height() + }; + + }, + + + // Shortcut for setting "translate3d" properties for element + // Can set be used to set opacity, too + // ======================================================== + + setTranslate : function( $el, props ) { + var str = ''; + var css = {}; + + if ( !$el || !props ) { + return; + } + + if ( props.left !== undefined || props.top !== undefined ) { + str = ( props.left === undefined ? $el.position().left : props.left ) + 'px, ' + ( props.top === undefined ? $el.position().top : props.top ) + 'px'; + + if ( this.use3d ) { + str = 'translate3d(' + str + ', 0px)'; + + } else { + str = 'translate(' + str + ')'; + } + } + + if ( props.scaleX !== undefined && props.scaleY !== undefined ) { + str = (str.length ? str + ' ' : '') + 'scale(' + props.scaleX + ', ' + props.scaleY + ')'; + } + + if ( str.length ) { + css.transform = str; + } + + if ( props.opacity !== undefined ) { + css.opacity = props.opacity; + } + + if ( props.width !== undefined ) { + css.width = props.width; + } + + if ( props.height !== undefined ) { + css.height = props.height; + } + + return $el.css( css ); + }, + + + // Simple CSS transition handler + // ============================= + + animate : function ( $el, to, duration, callback, leaveAnimationName ) { + if ( $.isFunction( duration ) ) { + callback = duration; + duration = null; + } + + if ( !$.isPlainObject( to ) ) { + $el.removeAttr( 'style' ); + } + + $el.on( transitionEnd, function(e) { + + // Skip events from child elements and z-index change + if ( e && e.originalEvent && ( !$el.is( e.originalEvent.target ) || e.originalEvent.propertyName == 'z-index' ) ) { + return; + } + + $.fancybox.stop( $el ); + + if ( $.isPlainObject( to ) ) { + + if ( to.scaleX !== undefined && to.scaleY !== undefined ) { + $el.css( 'transition-duration', '' ); + + to.width = Math.round( $el.width() * to.scaleX ); + to.height = Math.round( $el.height() * to.scaleY ); + + to.scaleX = 1; + to.scaleY = 1; + + $.fancybox.setTranslate( $el, to ); + } + + if ( leaveAnimationName === false ) { + $el.removeAttr( 'style' ); + } + + } else if ( leaveAnimationName !== true ) { + $el.removeClass( to ); + } + + if ( $.isFunction( callback ) ) { + callback( e ); + } + + }); + + if ( $.isNumeric( duration ) ) { + $el.css( 'transition-duration', duration + 'ms' ); + } + + if ( $.isPlainObject( to ) ) { + $.fancybox.setTranslate( $el, to ); + + } else { + $el.addClass( to ); + } + + if ( to.scaleX && $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().addClass( 'fancybox-is-scaling' ); + } + + // Make sure that `transitionend` callback gets fired + $el.data("timer", setTimeout(function() { + $el.trigger( 'transitionend' ); + }, duration + 16)); + + }, + + stop : function( $el ) { + clearTimeout( $el.data("timer") ); + + $el.off( 'transitionend' ).css( 'transition-duration', '' ); + + if ( $el.hasClass( 'fancybox-image-wrap' ) ) { + $el.parent().removeClass( 'fancybox-is-scaling' ); + } + } + + }; + + + // Default click handler for "fancyboxed" links + // ============================================ + + function _run( e ) { + var $target = $( e.currentTarget ), + opts = e.data ? e.data.options : {}, + value = $target.attr( 'data-fancybox' ) || '', + index = 0, + items = []; + + // Avoid opening multiple times + if ( e.isDefaultPrevented() ) { + return; + } + + e.preventDefault(); + + // Get all related items and find index for clicked one + if ( value ) { + items = opts.selector ? $( opts.selector ) : ( e.data ? e.data.items : [] ); + items = items.length ? items.filter( '[data-fancybox="' + value + '"]' ) : $( '[data-fancybox="' + value + '"]' ); + + index = items.index( $target ); + + // Sometimes current item can not be found + // (for example, when slider clones items) + if ( index < 0 ) { + index = 0; + } + + } else { + items = [ $target ]; + } + + $.fancybox.open( items, opts, index ); + } + + + // Create a jQuery plugin + // ====================== + + $.fn.fancybox = function (options) { + var selector; + + options = options || {}; + selector = options.selector || false; + + if ( selector ) { + + $( 'body' ).off( 'click.fb-start', selector ).on( 'click.fb-start', selector, { + options : options + }, _run ); + + } else { + + this.off( 'click.fb-start' ).on( 'click.fb-start', { + items : this, + options : options + }, _run); + + } + + return this; + }; + + + // Self initializing plugin + // ======================== + + $D.on( 'click.fb-start', '[data-fancybox]', _run ); + +}( window, document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/fullscreen.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/fullscreen.js new file mode 100644 index 0000000000..27143ef609 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/fullscreen.js @@ -0,0 +1,210 @@ +// ========================================================================== +// +// FullScreen +// Adds fullscreen functionality +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Collection of methods supported by user browser + var fn = (function () { + + var fnMap = [ + [ + 'requestFullscreen', + 'exitFullscreen', + 'fullscreenElement', + 'fullscreenEnabled', + 'fullscreenchange', + 'fullscreenerror' + ], + // new WebKit + [ + 'webkitRequestFullscreen', + 'webkitExitFullscreen', + 'webkitFullscreenElement', + 'webkitFullscreenEnabled', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + // old WebKit (Safari 5.1) + [ + 'webkitRequestFullScreen', + 'webkitCancelFullScreen', + 'webkitCurrentFullScreenElement', + 'webkitCancelFullScreen', + 'webkitfullscreenchange', + 'webkitfullscreenerror' + + ], + [ + 'mozRequestFullScreen', + 'mozCancelFullScreen', + 'mozFullScreenElement', + 'mozFullScreenEnabled', + 'mozfullscreenchange', + 'mozfullscreenerror' + ], + [ + 'msRequestFullscreen', + 'msExitFullscreen', + 'msFullscreenElement', + 'msFullscreenEnabled', + 'MSFullscreenChange', + 'MSFullscreenError' + ] + ]; + + var val; + var ret = {}; + var i, j; + + for ( i = 0; i < fnMap.length; i++ ) { + val = fnMap[ i ]; + + if ( val && val[ 1 ] in document ) { + for ( j = 0; j < val.length; j++ ) { + ret[ fnMap[ 0 ][ j ] ] = val[ j ]; + } + + return ret; + } + } + + return false; + })(); + + // If browser does not have Full Screen API, then simply unset default button template and stop + if ( !fn ) { + + if ( $ && $.fancybox ) { + $.fancybox.defaults.btnTpl.fullScreen = false; + } + + return; + } + + var FullScreen = { + + request : function ( elem ) { + + elem = elem || document.documentElement; + + elem[ fn.requestFullscreen ]( elem.ALLOW_KEYBOARD_INPUT ); + + }, + exit : function () { + + document[ fn.exitFullscreen ](); + + }, + toggle : function ( elem ) { + + elem = elem || document.documentElement; + + if ( this.isFullscreen() ) { + this.exit(); + + } else { + this.request( elem ); + } + + }, + isFullscreen : function() { + + return Boolean( document[ fn.fullscreenElement ] ); + + }, + enabled : function() { + + return Boolean( document[ fn.fullscreenEnabled ] ); + + } + }; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + fullScreen : + '' + }, + fullScreen : { + autoStart : false + } + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + var $container; + + if ( instance && instance.group[ instance.currIndex ].opts.fullScreen ) { + $container = instance.$refs.container; + + $container.on('click.fb-fullscreen', '[data-fancybox-fullscreen]', function(e) { + + e.stopPropagation(); + e.preventDefault(); + + FullScreen.toggle( $container[ 0 ] ); + + }); + + if ( instance.opts.fullScreen && instance.opts.fullScreen.autoStart === true ) { + FullScreen.request( $container[ 0 ] ); + } + + // Expose API + instance.FullScreen = FullScreen; + + } else if ( instance ) { + instance.$refs.toolbar.find('[data-fancybox-fullscreen]').hide(); + } + + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + + // "P" or Spacebar + if ( instance && instance.FullScreen && keycode === 70 ) { + keypress.preventDefault(); + + instance.FullScreen.toggle( instance.$refs.container[ 0 ] ); + } + + }, + + 'beforeClose.fb' : function( instance ) { + if ( instance && instance.FullScreen ) { + FullScreen.exit(); + } + } + }); + + $(document).on(fn.fullscreenchange, function() { + var isFullscreen = FullScreen.isFullscreen(), + instance = $.fancybox.getInstance(); + + if ( instance ) { + + // If image is zooming, then force to stop and reposition properly + if ( instance.current && instance.current.type === 'image' && instance.isAnimating ) { + instance.current.$content.css( 'transition', 'none' ); + + instance.isAnimating = false; + + instance.update( true, true, 0 ); + } + + instance.trigger( 'onFullscreenChange', isFullscreen ); + + instance.$refs.container.toggleClass( 'fancybox-is-fullscreen', isFullscreen ); + } + + }); + +}( document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/guestures.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/guestures.js new file mode 100644 index 0000000000..cc113fe033 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/guestures.js @@ -0,0 +1,919 @@ +// ========================================================================== +// +// Guestures +// Adds touch guestures, handles click and tap events +// +// ========================================================================== +;(function (window, document, $) { + 'use strict'; + + var requestAFrame = (function () { + return window.requestAnimationFrame || + window.webkitRequestAnimationFrame || + window.mozRequestAnimationFrame || + window.oRequestAnimationFrame || + // if all else fails, use setTimeout + function (callback) { + return window.setTimeout(callback, 1000 / 60); + }; + })(); + + var cancelAFrame = (function () { + return window.cancelAnimationFrame || + window.webkitCancelAnimationFrame || + window.mozCancelAnimationFrame || + window.oCancelAnimationFrame || + function (id) { + window.clearTimeout(id); + }; + })(); + + var pointers = function( e ) { + var result = []; + + e = e.originalEvent || e || window.e; + e = e.touches && e.touches.length ? e.touches : ( e.changedTouches && e.changedTouches.length ? e.changedTouches : [ e ] ); + + for ( var key in e ) { + + if ( e[ key ].pageX ) { + result.push( { x : e[ key ].pageX, y : e[ key ].pageY } ); + + } else if ( e[ key ].clientX ) { + result.push( { x : e[ key ].clientX, y : e[ key ].clientY } ); + } + } + + return result; + }; + + var distance = function( point2, point1, what ) { + if ( !point1 || !point2 ) { + return 0; + } + + if ( what === 'x' ) { + return point2.x - point1.x; + + } else if ( what === 'y' ) { + return point2.y - point1.y; + } + + return Math.sqrt( Math.pow( point2.x - point1.x, 2 ) + Math.pow( point2.y - point1.y, 2 ) ); + }; + + var isClickable = function( $el ) { + if ( $el.is('a,area,button,[role="button"],input,label,select,summary,textarea') || $.isFunction( $el.get(0).onclick ) || $el.data('selectable') ) { + return true; + } + + // Check for attributes like data-fancybox-next or data-fancybox-close + for ( var i = 0, atts = $el[0].attributes, n = atts.length; i < n; i++ ) { + if ( atts[i].nodeName.substr(0, 14) === 'data-fancybox-' ) { + return true; + } + } + + return false; + }; + + var hasScrollbars = function( el ) { + var overflowY = window.getComputedStyle( el )['overflow-y']; + var overflowX = window.getComputedStyle( el )['overflow-x']; + + var vertical = (overflowY === 'scroll' || overflowY === 'auto') && el.scrollHeight > el.clientHeight; + var horizontal = (overflowX === 'scroll' || overflowX === 'auto') && el.scrollWidth > el.clientWidth; + + return vertical || horizontal; + }; + + var isScrollable = function ( $el ) { + var rez = false; + + while ( true ) { + rez = hasScrollbars( $el.get(0) ); + + if ( rez ) { + break; + } + + $el = $el.parent(); + + if ( !$el.length || $el.hasClass( 'fancybox-stage' ) || $el.is( 'body' ) ) { + break; + } + } + + return rez; + }; + + + var Guestures = function ( instance ) { + var self = this; + + self.instance = instance; + + self.$bg = instance.$refs.bg; + self.$stage = instance.$refs.stage; + self.$container = instance.$refs.container; + + self.destroy(); + + self.$container.on( 'touchstart.fb.touch mousedown.fb.touch', $.proxy(self, 'ontouchstart') ); + }; + + Guestures.prototype.destroy = function() { + this.$container.off( '.fb.touch' ); + }; + + Guestures.prototype.ontouchstart = function( e ) { + var self = this; + + var $target = $( e.target ); + var instance = self.instance; + var current = instance.current; + var $content = current.$content; + + var isTouchDevice = ( e.type == 'touchstart' ); + + // Do not respond to both (touch and mouse) events + if ( isTouchDevice ) { + self.$container.off( 'mousedown.fb.touch' ); + } + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Ignore taping on links, buttons, input elements + if ( !$target.length || isClickable( $target ) || isClickable( $target.parent() ) ) { + return; + } + + // Ignore clicks on the scrollbar + if ( !$target.is('img') && e.originalEvent.clientX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Ignore clicks while zooming or closing + if ( !current || self.instance.isAnimating || self.instance.isClosing ) { + e.stopPropagation(); + e.preventDefault(); + + return; + } + + self.realPoints = self.startPoints = pointers( e ); + + if ( !self.startPoints ) { + return; + } + + e.stopPropagation(); + + self.startEvent = e; + + self.canTap = true; + self.$target = $target; + self.$content = $content; + self.opts = current.opts.touch; + + self.isPanning = false; + self.isSwiping = false; + self.isZooming = false; + self.isScrolling = false; + + self.sliderStartPos = self.sliderLastPos || { top: 0, left: 0 }; + self.contentStartPos = $.fancybox.getTranslate( self.$content ); + self.contentLastPos = null; + + self.startTime = new Date().getTime(); + self.distanceX = self.distanceY = self.distance = 0; + + self.canvasWidth = Math.round( current.$slide[0].clientWidth ); + self.canvasHeight = Math.round( current.$slide[0].clientHeight ); + + $(document) + .off( '.fb.touch' ) + .on( isTouchDevice ? 'touchend.fb.touch touchcancel.fb.touch' : 'mouseup.fb.touch mouseleave.fb.touch', $.proxy(self, "ontouchend")) + .on( isTouchDevice ? 'touchmove.fb.touch' : 'mousemove.fb.touch', $.proxy(self, "ontouchmove")); + + if ( $.fancybox.isMobile ) { + document.addEventListener('scroll', self.onscroll, true); + } + + if ( !(self.opts || instance.canPan() ) || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + + // Prevent image ghosting while dragging + if ( $target.is('img') ) { + e.preventDefault(); + } + + return; + } + + if ( !( $.fancybox.isMobile && ( isScrollable( $target ) || isScrollable( $target.parent() ) ) ) ) { + e.preventDefault(); + } + + if ( self.startPoints.length === 1 ) { + if ( current.type === 'image' && ( self.contentStartPos.width > self.canvasWidth + 1 || self.contentStartPos.height > self.canvasHeight + 1 ) ) { + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '' ); + + self.isPanning = true; + + } else { + self.isSwiping = true; + } + + self.$container.addClass( 'fancybox-controls--isGrabbing' ); + } + + if ( self.startPoints.length === 2 && !instance.isAnimating && !current.hasError && current.type === 'image' && ( current.isLoaded || current.$ghost ) ) { + self.canTap = false; + self.isSwiping = false; + self.isPanning = false; + + self.isZooming = true; + + $.fancybox.stop( self.$content ); + + self.$content.css( 'transition-duration', '' ); + + self.centerPointStartX = ( ( self.startPoints[0].x + self.startPoints[1].x ) * 0.5 ) - $(window).scrollLeft(); + self.centerPointStartY = ( ( self.startPoints[0].y + self.startPoints[1].y ) * 0.5 ) - $(window).scrollTop(); + + self.percentageOfImageAtPinchPointX = ( self.centerPointStartX - self.contentStartPos.left ) / self.contentStartPos.width; + self.percentageOfImageAtPinchPointY = ( self.centerPointStartY - self.contentStartPos.top ) / self.contentStartPos.height; + + self.startDistanceBetweenFingers = distance( self.startPoints[0], self.startPoints[1] ); + } + + }; + + Guestures.prototype.onscroll = function(e) { + self.isScrolling = true; + }; + + Guestures.prototype.ontouchmove = function( e ) { + var self = this, + $target = $(e.target); + + if ( self.isScrolling || !( $target.is( self.$stage ) || self.$stage.find( $target ).length ) ) { + self.canTap = false; + + return; + } + + self.newPoints = pointers( e ); + + if ( !( self.opts || self.instance.canPan() ) || !self.newPoints || !self.newPoints.length ) { + return; + } + + if ( !(self.isSwiping && self.isSwiping === true) ) { + e.preventDefault(); + } + + self.distanceX = distance( self.newPoints[0], self.startPoints[0], 'x' ); + self.distanceY = distance( self.newPoints[0], self.startPoints[0], 'y' ); + + self.distance = distance( self.newPoints[0], self.startPoints[0] ) + + // Skip false ontouchmove events (Chrome) + if ( self.distance > 0 ) { + if ( self.isSwiping ) { + self.onSwipe(e); + + } else if ( self.isPanning ) { + self.onPan(); + + } else if ( self.isZooming ) { + self.onZoom(); + } + } + + }; + + Guestures.prototype.onSwipe = function(e) { + var self = this, + swiping = self.isSwiping, + left = self.sliderStartPos.left || 0, + angle; + + // If direction is not yet determined + if ( swiping === true ) { + + // We need at least 10px distance to correctly calculate an angle + if ( Math.abs( self.distance ) > 10 ) { + self.canTap = false; + + if ( self.instance.group.length < 2 && self.opts.vertical ) { + self.isSwiping = 'y'; + + } else if ( self.instance.isDragging || self.opts.vertical === false || ( self.opts.vertical === 'auto' && $( window ).width() > 800 ) ) { + self.isSwiping = 'x'; + + } else { + angle = Math.abs( Math.atan2( self.distanceY, self.distanceX ) * 180 / Math.PI ); + + self.isSwiping = ( angle > 45 && angle < 135 ) ? 'y' : 'x'; + } + + self.canTap = false; + + if ( self.isSwiping === 'y' && $.fancybox.isMobile && ( isScrollable( self.$target ) || isScrollable( self.$target.parent() ) ) ) { + self.isScrolling = true; + + return; + } + + self.instance.isDragging = self.isSwiping; + + // Reset points to avoid jumping, because we dropped first swipes to calculate the angle + self.startPoints = self.newPoints; + + $.each(self.instance.slides, function( index, slide ) { + $.fancybox.stop( slide.$slide ); + + slide.$slide.css( 'transition-duration', '' ); + + slide.inTransition = false; + + if ( slide.pos === self.instance.current.pos ) { + self.sliderStartPos.left = $.fancybox.getTranslate( slide.$slide ).left; + } + }); + + // Stop slideshow + if ( self.instance.SlideShow && self.instance.SlideShow.isActive ) { + self.instance.SlideShow.stop(); + } + } + + return; + } + + // Sticky edges + if ( swiping == 'x' ) { + if ( self.distanceX > 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === 0 && !self.instance.current.opts.loop ) ) ) { + left = left + Math.pow( self.distanceX, 0.8 ); + + } else if ( self.distanceX < 0 && ( self.instance.group.length < 2 || ( self.instance.current.index === self.instance.group.length - 1 && !self.instance.current.opts.loop ) ) ) { + left = left - Math.pow( -self.distanceX, 0.8 ); + + } else { + left = left + self.distanceX; + } + } + + self.sliderLastPos = { + top : swiping == 'x' ? 0 : self.sliderStartPos.top + self.distanceY, + left : left + }; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + + if ( self.sliderLastPos ) { + $.each(self.instance.slides, function( index, slide ) { + var pos = slide.pos - self.instance.currPos; + + $.fancybox.setTranslate( slide.$slide, { + top : self.sliderLastPos.top, + left : self.sliderLastPos.left + ( pos * self.canvasWidth ) + ( pos * slide.opts.gutter ) + }); + }); + + self.$container.addClass( 'fancybox-is-sliding' ); + } + + }); + + }; + + Guestures.prototype.onPan = function() { + var self = this; + + // Sometimes, when tapping causally, image can move a bit and that breaks double tapping + if ( distance( self.newPoints[0], self.realPoints[0] ) < ($.fancybox.isMobile ? 10 : 5) ) { + self.startPoints = self.newPoints; + return; + } + + self.canTap = false; + + self.contentLastPos = self.limitMovement(); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + }; + + // Make panning sticky to the edges + Guestures.prototype.limitMovement = function() { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + var distanceX = self.distanceX; + var distanceY = self.distanceY; + + var contentStartPos = self.contentStartPos; + + var currentOffsetX = contentStartPos.left; + var currentOffsetY = contentStartPos.top; + + var currentWidth = contentStartPos.width; + var currentHeight = contentStartPos.height; + + var minTranslateX, minTranslateY, + maxTranslateX, maxTranslateY, + newOffsetX, newOffsetY; + + if ( currentWidth > canvasWidth ) { + newOffsetX = currentOffsetX + distanceX; + + } else { + newOffsetX = currentOffsetX; + } + + newOffsetY = currentOffsetY + distanceY; + + // Slow down proportionally to traveled distance + minTranslateX = Math.max( 0, canvasWidth * 0.5 - currentWidth * 0.5 ); + minTranslateY = Math.max( 0, canvasHeight * 0.5 - currentHeight * 0.5 ); + + maxTranslateX = Math.min( canvasWidth - currentWidth, canvasWidth * 0.5 - currentWidth * 0.5 ); + maxTranslateY = Math.min( canvasHeight - currentHeight, canvasHeight * 0.5 - currentHeight * 0.5 ); + + if ( currentWidth > canvasWidth ) { + + // -> + if ( distanceX > 0 && newOffsetX > minTranslateX ) { + newOffsetX = minTranslateX - 1 + Math.pow( -minTranslateX + currentOffsetX + distanceX, 0.8 ) || 0; + } + + // <- + if ( distanceX < 0 && newOffsetX < maxTranslateX ) { + newOffsetX = maxTranslateX + 1 - Math.pow( maxTranslateX - currentOffsetX - distanceX, 0.8 ) || 0; + } + + } + + if ( currentHeight > canvasHeight ) { + + // \/ + if ( distanceY > 0 && newOffsetY > minTranslateY ) { + newOffsetY = minTranslateY - 1 + Math.pow(-minTranslateY + currentOffsetY + distanceY, 0.8 ) || 0; + } + + // /\ + if ( distanceY < 0 && newOffsetY < maxTranslateY ) { + newOffsetY = maxTranslateY + 1 - Math.pow ( maxTranslateY - currentOffsetY - distanceY, 0.8 ) || 0; + } + + } + + return { + top : newOffsetY, + left : newOffsetX, + scaleX : contentStartPos.scaleX, + scaleY : contentStartPos.scaleY + }; + + }; + + Guestures.prototype.limitPosition = function( newOffsetX, newOffsetY, newWidth, newHeight ) { + var self = this; + + var canvasWidth = self.canvasWidth; + var canvasHeight = self.canvasHeight; + + if ( newWidth > canvasWidth ) { + newOffsetX = newOffsetX > 0 ? 0 : newOffsetX; + newOffsetX = newOffsetX < canvasWidth - newWidth ? canvasWidth - newWidth : newOffsetX; + + } else { + + // Center horizontally + newOffsetX = Math.max( 0, canvasWidth / 2 - newWidth / 2 ); + + } + + if ( newHeight > canvasHeight ) { + newOffsetY = newOffsetY > 0 ? 0 : newOffsetY; + newOffsetY = newOffsetY < canvasHeight - newHeight ? canvasHeight - newHeight : newOffsetY; + + } else { + + // Center vertically + newOffsetY = Math.max( 0, canvasHeight / 2 - newHeight / 2 ); + + } + + return { + top : newOffsetY, + left : newOffsetX + }; + + }; + + Guestures.prototype.onZoom = function() { + var self = this; + + // Calculate current distance between points to get pinch ratio and new width and height + + var currentWidth = self.contentStartPos.width; + var currentHeight = self.contentStartPos.height; + + var currentOffsetX = self.contentStartPos.left; + var currentOffsetY = self.contentStartPos.top; + + var endDistanceBetweenFingers = distance( self.newPoints[0], self.newPoints[1] ); + + var pinchRatio = endDistanceBetweenFingers / self.startDistanceBetweenFingers; + + var newWidth = Math.floor( currentWidth * pinchRatio ); + var newHeight = Math.floor( currentHeight * pinchRatio ); + + // This is the translation due to pinch-zooming + var translateFromZoomingX = (currentWidth - newWidth) * self.percentageOfImageAtPinchPointX; + var translateFromZoomingY = (currentHeight - newHeight) * self.percentageOfImageAtPinchPointY; + + //Point between the two touches + + var centerPointEndX = ((self.newPoints[0].x + self.newPoints[1].x) / 2) - $(window).scrollLeft(); + var centerPointEndY = ((self.newPoints[0].y + self.newPoints[1].y) / 2) - $(window).scrollTop(); + + // And this is the translation due to translation of the centerpoint + // between the two fingers + + var translateFromTranslatingX = centerPointEndX - self.centerPointStartX; + var translateFromTranslatingY = centerPointEndY - self.centerPointStartY; + + // The new offset is the old/current one plus the total translation + + var newOffsetX = currentOffsetX + ( translateFromZoomingX + translateFromTranslatingX ); + var newOffsetY = currentOffsetY + ( translateFromZoomingY + translateFromTranslatingY ); + + var newPos = { + top : newOffsetY, + left : newOffsetX, + scaleX : self.contentStartPos.scaleX * pinchRatio, + scaleY : self.contentStartPos.scaleY * pinchRatio + }; + + self.canTap = false; + + self.newWidth = newWidth; + self.newHeight = newHeight; + + self.contentLastPos = newPos; + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.requestId = requestAFrame(function() { + $.fancybox.setTranslate( self.$content, self.contentLastPos ); + }); + + }; + + Guestures.prototype.ontouchend = function( e ) { + var self = this; + var dMs = Math.max( (new Date().getTime() ) - self.startTime, 1); + + var swiping = self.isSwiping; + var panning = self.isPanning; + var zooming = self.isZooming; + var scrolling = self.isScrolling; + + self.endPoints = pointers( e ); + + self.$container.removeClass( 'fancybox-controls--isGrabbing' ); + + $(document).off( '.fb.touch' ); + + document.removeEventListener('scroll', self.onscroll, true); + + if ( self.requestId ) { + cancelAFrame( self.requestId ); + + self.requestId = null; + } + + self.isSwiping = false; + self.isPanning = false; + self.isZooming = false; + self.isScrolling = false; + + self.instance.isDragging = false; + + if ( self.canTap ) { + return self.onTap( e ); + } + + self.speed = 366; + + // Speed in px/ms + self.velocityX = self.distanceX / dMs * 0.5; + self.velocityY = self.distanceY / dMs * 0.5; + + self.speedX = Math.max( self.speed * 0.5, Math.min( self.speed * 1.5, ( 1 / Math.abs( self.velocityX ) ) * self.speed ) ); + + if ( panning ) { + self.endPanning(); + + } else if ( zooming ) { + self.endZooming(); + + } else { + self.endSwiping( swiping, scrolling ); + } + + return; + }; + + Guestures.prototype.endSwiping = function( swiping, scrolling ) { + var self = this, + ret = false, + len = self.instance.group.length; + + self.sliderLastPos = null; + + // Close if swiped vertically / navigate if horizontally + if ( swiping == 'y' && !scrolling && Math.abs( self.distanceY ) > 50 ) { + + // Continue vertical movement + $.fancybox.animate( self.instance.current.$slide, { + top : self.sliderStartPos.top + self.distanceY + ( self.velocityY * 150 ), + opacity : 0 + }, 150 ); + + ret = self.instance.close( true, 300 ); + + } else if ( swiping == 'x' && self.distanceX > 50 && len > 1 ) { + ret = self.instance.previous( self.speedX ); + + } else if ( swiping == 'x' && self.distanceX < -50 && len > 1 ) { + ret = self.instance.next( self.speedX ); + } + + if ( ret === false && ( swiping == 'x' || swiping == 'y' ) ) { + if ( scrolling || len < 2 ) { + self.instance.centerSlide( self.instance.current, 150 ); + } else { + self.instance.jumpTo( self.instance.current.index ); + } + } + + self.$container.removeClass( 'fancybox-is-sliding' ); + + }; + + // Limit panning from edges + // ======================== + + Guestures.prototype.endPanning = function() { + + var self = this; + var newOffsetX, newOffsetY, newPos; + + if ( !self.contentLastPos ) { + return; + } + + if ( self.opts.momentum === false ) { + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + } else { + + // Continue movement + newOffsetX = self.contentLastPos.left + ( self.velocityX * self.speed ); + newOffsetY = self.contentLastPos.top + ( self.velocityY * self.speed ); + } + + newPos = self.limitPosition( newOffsetX, newOffsetY, self.contentStartPos.width, self.contentStartPos.height ); + + newPos.width = self.contentStartPos.width; + newPos.height = self.contentStartPos.height; + + $.fancybox.animate( self.$content, newPos, 330 ); + }; + + + Guestures.prototype.endZooming = function() { + var self = this; + + var current = self.instance.current; + + var newOffsetX, newOffsetY, newPos, reset; + + var newWidth = self.newWidth; + var newHeight = self.newHeight; + + if ( !self.contentLastPos ) { + return; + } + + newOffsetX = self.contentLastPos.left; + newOffsetY = self.contentLastPos.top; + + reset = { + top : newOffsetY, + left : newOffsetX, + width : newWidth, + height : newHeight, + scaleX : 1, + scaleY : 1 + }; + + // Reset scalex/scaleY values; this helps for perfomance and does not break animation + $.fancybox.setTranslate( self.$content, reset ); + + if ( newWidth < self.canvasWidth && newHeight < self.canvasHeight ) { + self.instance.scaleToFit( 150 ); + + } else if ( newWidth > current.width || newHeight > current.height ) { + self.instance.scaleToActual( self.centerPointStartX, self.centerPointStartY, 150 ); + + } else { + + newPos = self.limitPosition( newOffsetX, newOffsetY, newWidth, newHeight ); + + // Switch from scale() to width/height or animation will not work correctly + $.fancybox.setTranslate( self.content, $.fancybox.getTranslate( self.$content ) ); + + $.fancybox.animate( self.$content, newPos, 150 ); + } + + }; + + Guestures.prototype.onTap = function(e) { + var self = this; + var $target = $( e.target ); + + var instance = self.instance; + var current = instance.current; + + var endPoints = ( e && pointers( e ) ) || self.startPoints; + + var tapX = endPoints[0] ? endPoints[0].x - self.$stage.offset().left : 0; + var tapY = endPoints[0] ? endPoints[0].y - self.$stage.offset().top : 0; + + var where; + + var process = function ( prefix ) { + + var action = current.opts[ prefix ]; + + if ( $.isFunction( action ) ) { + action = action.apply( instance, [ current, e ] ); + } + + if ( !action) { + return; + } + + switch ( action ) { + + case "close" : + + instance.close( self.startEvent ); + + break; + + case "toggleControls" : + + instance.toggleControls( true ); + + break; + + case "next" : + + instance.next(); + + break; + + case "nextOrClose" : + + if ( instance.group.length > 1 ) { + instance.next(); + + } else { + instance.close( self.startEvent ); + } + + break; + + case "zoom" : + + if ( current.type == 'image' && ( current.isLoaded || current.$ghost ) ) { + + if ( instance.canPan() ) { + instance.scaleToFit(); + + } else if ( instance.isScaledDown() ) { + instance.scaleToActual( tapX, tapY ); + + } else if ( instance.group.length < 2 ) { + instance.close( self.startEvent ); + } + } + + break; + } + + }; + + // Ignore right click + if ( e.originalEvent && e.originalEvent.button == 2 ) { + return; + } + + // Skip if clicked on the scrollbar + if ( !$target.is('img') && tapX > $target[0].clientWidth + $target.offset().left ) { + return; + } + + // Check where is clicked + if ( $target.is( '.fancybox-bg,.fancybox-inner,.fancybox-outer,.fancybox-container' ) ) { + where = 'Outside'; + + } else if ( $target.is( '.fancybox-slide' ) ) { + where = 'Slide'; + + } else if ( instance.current.$content && instance.current.$content.find( $target ).addBack().filter( $target ).length ) { + where = 'Content'; + + } else { + return; + } + + // Check if this is a double tap + if ( self.tapped ) { + + // Stop previously created single tap + clearTimeout( self.tapped ); + self.tapped = null; + + // Skip if distance between taps is too big + if ( Math.abs( tapX - self.tapX ) > 50 || Math.abs( tapY - self.tapY ) > 50 ) { + return this; + } + + // OK, now we assume that this is a double-tap + process( 'dblclick' + where ); + + } else { + + // Single tap will be processed if user has not clicked second time within 300ms + // or there is no need to wait for double-tap + self.tapX = tapX; + self.tapY = tapY; + + if ( current.opts[ 'dblclick' + where ] && current.opts[ 'dblclick' + where ] !== current.opts[ 'click' + where ] ) { + + self.tapped = setTimeout(function() { + self.tapped = null; + + process( 'click' + where ); + + }, 500); + + } else { + process( 'click' + where ); + } + + } + + return this; + }; + + $(document).on('onActivate.fb', function (e, instance) { + if ( instance && !instance.Guestures ) { + instance.Guestures = new Guestures( instance ); + } + }); + +}( window, document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/hash.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/hash.js new file mode 100644 index 0000000000..42287006d5 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/hash.js @@ -0,0 +1,218 @@ +// ========================================================================== +// +// Hash +// Enables linking to each modal +// +// ========================================================================== +;(function (document, window, $) { + 'use strict'; + + // Simple $.escapeSelector polyfill (for jQuery prior v3) + if ( !$.escapeSelector ) { + $.escapeSelector = function( sel ) { + var rcssescape = /([\0-\x1f\x7f]|^-?\d)|^-$|[^\x80-\uFFFF\w-]/g; + var fcssescape = function( ch, asCodePoint ) { + if ( asCodePoint ) { + // U+0000 NULL becomes U+FFFD REPLACEMENT CHARACTER + if ( ch === "\0" ) { + return "\uFFFD"; + } + + // Control characters and (dependent upon position) numbers get escaped as code points + return ch.slice( 0, -1 ) + "\\" + ch.charCodeAt( ch.length - 1 ).toString( 16 ) + " "; + } + + // Other potentially-special ASCII characters get backslash-escaped + return "\\" + ch; + }; + + return ( sel + "" ).replace( rcssescape, fcssescape ); + }; + } + + // Create new history entry only once + var shouldCreateHistory = true; + + // Variable containing last hash value set by fancyBox + // It will be used to determine if fancyBox needs to close after hash change is detected + var currentHash = null; + + // Throttling the history change + var timerID = null; + + // Get info about gallery name and current index from url + function parseUrl() { + var hash = window.location.hash.substr( 1 ); + var rez = hash.split( '-' ); + var index = rez.length > 1 && /^\+?\d+$/.test( rez[ rez.length - 1 ] ) ? parseInt( rez.pop( -1 ), 10 ) || 1 : 1; + var gallery = rez.join( '-' ); + + // Index is starting from 1 + if ( index < 1 ) { + index = 1; + } + + return { + hash : hash, + index : index, + gallery : gallery + }; + } + + // Trigger click evnt on links to open new fancyBox instance + function triggerFromUrl( url ) { + var $el; + + if ( url.gallery !== '' ) { + + // If we can find element matching 'data-fancybox' atribute, then trigger click event for that .. + $el = $( "[data-fancybox='" + $.escapeSelector( url.gallery ) + "']" ).eq( url.index - 1 ); + + if ( !$el.length ) { + // .. if not, try finding element by ID + $el = $( "#" + $.escapeSelector( url.gallery ) + "" ); + } + + if ( $el.length ) { + shouldCreateHistory = false; + + $el.trigger( 'click' ); + } + + } + } + + // Get gallery name from current instance + function getGalleryID( instance ) { + var opts; + + if ( !instance ) { + return false; + } + + opts = instance.current ? instance.current.opts : instance.opts; + + return opts.hash || ( opts.$orig ? opts.$orig.data( 'fancybox' ) : '' ); + } + + // Start when DOM becomes ready + $(function() { + + // Check if user has disabled this module + if ( $.fancybox.defaults.hash === false ) { + return; + } + + // Update hash when opening/closing fancyBox + $(document).on({ + 'onInit.fb' : function( e, instance ) { + var url, gallery; + + if ( instance.group[ instance.currIndex ].opts.hash === false ) { + return; + } + + url = parseUrl(); + gallery = getGalleryID( instance ); + + // Make sure gallery start index matches index from hash + if ( gallery && url.gallery && gallery == url.gallery ) { + instance.currIndex = url.index - 1; + } + }, + + 'beforeShow.fb' : function( e, instance, current ) { + var gallery; + + if ( !current || current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + + // Update window hash + if ( gallery && gallery !== '' ) { + + if ( window.location.hash.indexOf( gallery ) < 0 ) { + instance.opts.origHash = window.location.hash; + } + + currentHash = gallery + ( instance.group.length > 1 ? '-' + ( current.index + 1 ) : '' ); + + if ( 'replaceState' in window.history ) { + if ( timerID ) { + clearTimeout( timerID ); + } + + timerID = setTimeout(function() { + window.history[ shouldCreateHistory ? 'pushState' : 'replaceState' ]( {} , document.title, window.location.pathname + window.location.search + '#' + currentHash ); + + timerID = null; + + shouldCreateHistory = false; + + }, 300); + + } else { + window.location.hash = currentHash; + } + + } + + }, + + 'beforeClose.fb' : function( e, instance, current ) { + var gallery, origHash; + + if ( timerID ) { + clearTimeout( timerID ); + } + + if ( current.opts.hash === false ) { + return; + } + + gallery = getGalleryID( instance ); + origHash = instance && instance.opts.origHash ? instance.opts.origHash : ''; + + // Remove hash from location bar + if ( gallery && gallery !== '' ) { + + if ( 'replaceState' in history ) { + window.history.replaceState( {} , document.title, window.location.pathname + window.location.search + origHash ); + + } else { + window.location.hash = origHash; + + // Keep original scroll position + $( window ).scrollTop( instance.scrollTop ).scrollLeft( instance.scrollLeft ); + } + } + + currentHash = null; + } + }); + + // Check if need to close after url has changed + $(window).on('hashchange.fb', function() { + var url = parseUrl(); + + if ( $.fancybox.getInstance() ) { + if ( currentHash && currentHash !== url.gallery + '-' + url.index && !( url.index === 1 && currentHash == url.gallery ) ) { + currentHash = null; + + $.fancybox.close(); + } + + } else if ( url.gallery !== '' ) { + triggerFromUrl( url ); + } + }); + + // Check current hash and trigger click event on matching element to start fancyBox, if needed + setTimeout(function() { + triggerFromUrl( parseUrl() ); + }, 50); + }); + +}( document, window, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/media.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/media.js new file mode 100644 index 0000000000..5c3820bc38 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/media.js @@ -0,0 +1,211 @@ +// ========================================================================== +// +// Media +// Adds additional media type support +// +// ========================================================================== +;(function ($) { + + 'use strict'; + + // Formats matching url to final form + + var format = function (url, rez, params) { + if ( !url ) { + return; + } + + params = params || ''; + + if ( $.type(params) === "object" ) { + params = $.param(params, true); + } + + $.each(rez, function (key, value) { + url = url.replace('$' + key, value || ''); + }); + + if (params.length) { + url += (url.indexOf('?') > 0 ? '&' : '?') + params; + } + + return url; + }; + + // Object containing properties for each media type + + var defaults = { + youtube : { + matcher : /(youtube\.com|youtu\.be|youtube\-nocookie\.com)\/(watch\?(.*&)?v=|v\/|u\/|embed\/?)?(videoseries\?list=(.*)|[\w-]{11}|\?listType=(.*)&list=(.*))(.*)/i, + params : { + autoplay : 1, + autohide : 1, + fs : 1, + rel : 0, + hd : 1, + wmode : 'transparent', + enablejsapi : 1, + html5 : 1 + }, + paramPlace : 8, + type : 'iframe', + url : '//www.youtube.com/embed/$4', + thumb : '//img.youtube.com/vi/$4/hqdefault.jpg' + }, + + vimeo : { + matcher : /^.+vimeo.com\/(.*\/)?([\d]+)(.*)?/, + params : { + autoplay : 1, + hd : 1, + show_title : 1, + show_byline : 1, + show_portrait : 0, + fullscreen : 1, + api : 1 + }, + paramPlace : 3, + type : 'iframe', + url : '//player.vimeo.com/video/$2' + }, + + metacafe : { + matcher : /metacafe.com\/watch\/(\d+)\/(.*)?/, + type : 'iframe', + url : '//www.metacafe.com/embed/$1/?ap=1' + }, + + dailymotion : { + matcher : /dailymotion.com\/video\/(.*)\/?(.*)/, + params : { + additionalInfos : 0, + autoStart : 1 + }, + type : 'iframe', + url : '//www.dailymotion.com/embed/video/$1' + }, + + vine : { + matcher : /vine.co\/v\/([a-zA-Z0-9\?\=\-]+)/, + type : 'iframe', + url : '//vine.co/v/$1/embed/simple' + }, + + instagram : { + matcher : /(instagr\.am|instagram\.com)\/p\/([a-zA-Z0-9_\-]+)\/?/i, + type : 'image', + url : '//$1/p/$2/media/?size=l' + }, + + // Examples: + // http://maps.google.com/?ll=48.857995,2.294297&spn=0.007666,0.021136&t=m&z=16 + // https://www.google.com/maps/@37.7852006,-122.4146355,14.65z + // https://www.google.com/maps/place/Googleplex/@37.4220041,-122.0833494,17z/data=!4m5!3m4!1s0x0:0x6c296c66619367e0!8m2!3d37.4219998!4d-122.0840572 + gmap_place : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(((maps\/(place\/(.*)\/)?\@(.*),(\d+.?\d+?)z))|(\?ll=))(.*)?/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/?ll=' + ( rez[9] ? rez[9] + '&z=' + Math.floor( rez[10] ) + ( rez[12] ? rez[12].replace(/^\//, "&") : '' ) : rez[12] ) + '&output=' + ( rez[12] && rez[12].indexOf('layer=c') > 0 ? 'svembed' : 'embed' ); + } + }, + + // Examples: + // https://www.google.com/maps/search/Empire+State+Building/ + // https://www.google.com/maps/search/?api=1&query=centurylink+field + // https://www.google.com/maps/search/?api=1&query=47.5951518,-122.3316393 + gmap_search : { + matcher : /(maps\.)?google\.([a-z]{2,3}(\.[a-z]{2})?)\/(maps\/search\/)(.*)/i, + type : 'iframe', + url : function (rez) { + return '//maps.google.' + rez[2] + '/maps?q=' + rez[5].replace('query=', 'q=').replace('api=1', '') + '&output=embed'; + } + } + }; + + $(document).on('objectNeedsType.fb', function (e, instance, item) { + + var url = item.src || '', + type = false, + media, + thumb, + rez, + params, + urlParams, + paramObj, + provider; + + media = $.extend( true, {}, defaults, item.opts.media ); + + // Look for any matching media type + $.each(media, function ( providerName, providerOpts ) { + rez = url.match( providerOpts.matcher ); + + if ( !rez ) { + return; + } + + type = providerOpts.type; + paramObj = {}; + + if ( providerOpts.paramPlace && rez[ providerOpts.paramPlace ] ) { + urlParams = rez[ providerOpts.paramPlace ]; + + if ( urlParams[ 0 ] == '?' ) { + urlParams = urlParams.substring(1); + } + + urlParams = urlParams.split('&'); + + for ( var m = 0; m < urlParams.length; ++m ) { + var p = urlParams[ m ].split('=', 2); + + if ( p.length == 2 ) { + paramObj[ p[0] ] = decodeURIComponent( p[1].replace(/\+/g, " ") ); + } + } + } + + params = $.extend( true, {}, providerOpts.params, item.opts[ providerName ], paramObj ); + + url = $.type( providerOpts.url ) === "function" ? providerOpts.url.call( this, rez, params, item ) : format( providerOpts.url, rez, params ); + thumb = $.type( providerOpts.thumb ) === "function" ? providerOpts.thumb.call( this, rez, params, item ) : format( providerOpts.thumb, rez ); + + if ( providerName === 'vimeo' ) { + url = url.replace('&%23', '#'); + } + + return false; + }); + + // If it is found, then change content type and update the url + + if ( type ) { + item.src = url; + item.type = type; + + if ( !item.opts.thumb && !( item.opts.$thumb && item.opts.$thumb.length ) ) { + item.opts.thumb = thumb; + } + + if ( type === 'iframe' ) { + $.extend(true, item.opts, { + iframe : { + preload : false, + attr : { + scrolling : "no" + } + } + }); + + item.contentProvider = provider; + + item.opts.slideClass += ' fancybox-slide--' + ( provider == 'gmap_place' || provider == 'gmap_search' ? 'map' : 'video' ); + } + + } else if ( url ) { + item.type = item.opts.defaultType; + } + + }); + +}( window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/share.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/share.js new file mode 100644 index 0000000000..789284739e --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/share.js @@ -0,0 +1,91 @@ +//// ========================================================================== +// +// Share +// Displays simple form for sharing current url +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + share : + '' + }, + share : { + tpl : + '
' + + '

{{SHARE}}

' + + '' + + '

' + + '
' + } + }); + + function escapeHtml(string) { + var entityMap = { + '&': '&', + '<': '<', + '>': '>', + '"': '"', + "'": ''', + '/': '/', + '`': '`', + '=': '=' + }; + + return String(string).replace(/[&<>"'`=\/]/g, function (s) { + return entityMap[s]; + }); + } + + $(document).on('click', '[data-fancybox-share]', function() { + var f = $.fancybox.getInstance(), + url, + tpl; + + if ( f ) { + url = f.current.opts.hash === false ? f.current.src : window.location; + tpl = f.current.opts.share.tpl + .replace( /\{\{media\}\}/g, f.current.type === 'image' ? encodeURIComponent( f.current.src ) : '' ) + .replace( /\{\{url\}\}/g, encodeURIComponent( url ) ) + .replace( /\{\{url_raw\}\}/g, escapeHtml( url ) ) + .replace( /\{\{descr\}\}/g, f.$caption ? encodeURIComponent( f.$caption.text() ) : '' ); + + $.fancybox.open({ + src : f.translate( f, tpl ), + type : 'html', + opts : { + animationEffect : "fade", + animationDuration : 250, + afterLoad : function(instance, current) { + // Opening links in a popup window + current.$content.find('.fancybox-share__links a').click(function() { + window.open(this.href, "Share", "width=550, height=450"); + return false; + }); + } + } + }); + } + + }); + +}( document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/slideshow.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/slideshow.js new file mode 100644 index 0000000000..f044912529 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/slideshow.js @@ -0,0 +1,185 @@ +// ========================================================================== +// +// SlideShow +// Enables slideshow functionality +// +// Example of usage: +// $.fancybox.getInstance().SlideShow.start() +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + $.extend(true, $.fancybox.defaults, { + btnTpl : { + slideShow : + '' + }, + slideShow : { + autoStart : false, + speed : 3000 + } + }); + + var SlideShow = function( instance ) { + this.instance = instance; + this.init(); + }; + + $.extend( SlideShow.prototype, { + timer : null, + isActive : false, + $button : null, + + init : function() { + var self = this; + + self.$button = self.instance.$refs.toolbar.find('[data-fancybox-play]').on('click', function() { + self.toggle(); + }); + + if ( self.instance.group.length < 2 || !self.instance.group[ self.instance.currIndex ].opts.slideShow ) { + self.$button.hide(); + } + }, + + set : function( force ) { + var self = this; + + // Check if reached last element + if ( self.instance && self.instance.current && (force === true || self.instance.current.opts.loop || self.instance.currIndex < self.instance.group.length - 1 )) { + self.timer = setTimeout(function() { + if ( self.isActive ) { + self.instance.jumpTo( (self.instance.currIndex + 1) % self.instance.group.length ); + } + + }, self.instance.current.opts.slideShow.speed); + + } else { + self.stop(); + self.instance.idleSecondsCounter = 0; + self.instance.showControls(); + } + }, + + clear : function() { + var self = this; + + clearTimeout( self.timer ); + + self.timer = null; + }, + + start : function() { + var self = this; + var current = self.instance.current; + + if ( current ) { + self.isActive = true; + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_STOP ) + .removeClass( 'fancybox-button--play' ) + .addClass( 'fancybox-button--pause' ); + + self.set( true ); + } + }, + + stop : function() { + var self = this; + var current = self.instance.current; + + self.clear(); + + self.$button + .attr( 'title', current.opts.i18n[ current.opts.lang ].PLAY_START ) + .removeClass( 'fancybox-button--pause' ) + .addClass( 'fancybox-button--play' ); + + self.isActive = false; + }, + + toggle : function() { + var self = this; + + if ( self.isActive ) { + self.stop(); + + } else { + self.start(); + } + } + + }); + + $(document).on({ + 'onInit.fb' : function(e, instance) { + if ( instance && !instance.SlideShow ) { + instance.SlideShow = new SlideShow( instance ); + } + }, + + 'beforeShow.fb' : function(e, instance, current, firstRun) { + var SlideShow = instance && instance.SlideShow; + + if ( firstRun ) { + + if ( SlideShow && current.opts.slideShow.autoStart ) { + SlideShow.start(); + } + + } else if ( SlideShow && SlideShow.isActive ) { + SlideShow.clear(); + } + }, + + 'afterShow.fb' : function(e, instance, current) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + SlideShow.set(); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var SlideShow = instance && instance.SlideShow; + + // "P" or Spacebar + if ( SlideShow && current.opts.slideShow && ( keycode === 80 || keycode === 32 ) && !$(document.activeElement).is( 'button,a,input' ) ) { + keypress.preventDefault(); + + SlideShow.toggle(); + } + }, + + 'beforeClose.fb onDeactivate.fb' : function(e, instance) { + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow ) { + SlideShow.stop(); + } + } + }); + + // Page Visibility API to pause slideshow when window is not active + $(document).on("visibilitychange", function() { + var instance = $.fancybox.getInstance(); + var SlideShow = instance && instance.SlideShow; + + if ( SlideShow && SlideShow.isActive ) { + if ( document.hidden ) { + SlideShow.clear(); + + } else { + SlideShow.set(); + } + } + }); + +}( document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/thumbs.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/thumbs.js new file mode 100644 index 0000000000..4d38c1e466 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/thumbs.js @@ -0,0 +1,252 @@ +// ========================================================================== +// +// Thumbs +// Displays thumbnails in a grid +// +// ========================================================================== +;(function (document, $) { + 'use strict'; + + // Make sure there are default values + $.fancybox.defaults = $.extend(true, { + btnTpl : { + thumbs : + '' + }, + thumbs : { + autoStart : false, // Display thumbnails on opening + hideOnClose : true, // Hide thumbnail grid when closing animation starts + parentEl : '.fancybox-container', // Container is injected into this element + axis : 'y' // Vertical (y) or horizontal (x) scrolling + } + }, $.fancybox.defaults); + + var FancyThumbs = function( instance ) { + this.init( instance ); + }; + + $.extend( FancyThumbs.prototype, { + + $button : null, + $grid : null, + $list : null, + isVisible : false, + isActive : false, + + init : function( instance ) { + var self = this; + + self.instance = instance; + + instance.Thumbs = self; + + // Enable thumbs if at least two group items have thumbnails + var first = instance.group[0], + second = instance.group[1]; + + self.opts = instance.group[ instance.currIndex ].opts.thumbs; + + self.$button = instance.$refs.toolbar.find( '[data-fancybox-thumbs]' ); + + if ( self.opts && first && second && ( + ( first.type == 'image' || first.opts.thumb || first.opts.$thumb ) && + ( second.type == 'image' || second.opts.thumb || second.opts.$thumb ) + )) { + + self.$button.show().on('click', function() { + self.toggle(); + }); + + self.isActive = true; + + } else { + self.$button.hide(); + } + }, + + create : function() { + var self = this, + instance = self.instance, + parentEl = self.opts.parentEl, + list, + src; + + self.$grid = $('
').appendTo( instance.$refs.container.find( parentEl ).addBack().filter( parentEl ) ); + + // Build list HTML + list = '
    '; + + $.each(instance.group, function( i, item ) { + src = item.opts.thumb || ( item.opts.$thumb ? item.opts.$thumb.attr( 'src' ) : null ); + + if ( !src && item.type === 'image' ) { + src = item.src; + } + + if ( src && src.length ) { + list += '
  • '; + } + }); + + list += '
'; + + self.$list = $( list ).appendTo( self.$grid ).on('click', 'li', function() { + instance.jumpTo( $(this).data('index') ); + }); + + self.$list.find( 'img' ).hide().one('load', function() { + var $parent = $(this).parent().removeClass( 'fancybox-thumbs-loading' ), + thumbWidth = $parent.outerWidth(), + thumbHeight = $parent.outerHeight(), + width, + height, + widthRatio, + heightRatio; + + width = this.naturalWidth || this.width; + height = this.naturalHeight || this.height; + + // Calculate thumbnail dimensions; center vertically and horizontally + widthRatio = width / thumbWidth; + heightRatio = height / thumbHeight; + + if (widthRatio >= 1 && heightRatio >= 1) { + if (widthRatio > heightRatio) { + width = width / heightRatio; + height = thumbHeight; + + } else { + width = thumbWidth; + height = height / widthRatio; + } + } + + $(this).css({ + width : Math.floor(width), + height : Math.floor(height), + 'margin-top' : height > thumbHeight ? ( Math.floor(thumbHeight * 0.3 - height * 0.3 ) ) : Math.floor(thumbHeight * 0.5 - height * 0.5 ), + 'margin-left' : Math.floor(thumbWidth * 0.5 - width * 0.5 ) + }).show(); + + }) + .each(function() { + this.src = $( this ).data( 'src' ); + }); + + if ( self.opts.axis === 'x' ) { + self.$list.width( parseInt( self.$grid.css("padding-right") ) + ( instance.group.length * self.$list.children().eq(0).outerWidth(true) ) + 'px' ); + } + }, + + focus : function( duration ) { + var self = this, + $list = self.$list, + thumb, + thumbPos; + + if ( self.instance.current ) { + thumb = $list.children() + .removeClass( 'fancybox-thumbs-active' ) + .filter('[data-index="' + self.instance.current.index + '"]') + .addClass('fancybox-thumbs-active'); + + thumbPos = thumb.position(); + + // Check if need to scroll to make current thumb visible + if ( self.opts.axis === 'y' && ( thumbPos.top < 0 || thumbPos.top > ( $list.height() - thumb.outerHeight() ) ) ) { + $list.stop().animate({ 'scrollTop' : $list.scrollTop() + thumbPos.top }, duration); + + } else if ( self.opts.axis === 'x' && ( + thumbPos.left < $list.parent().scrollLeft() || + thumbPos.left > ( $list.parent().scrollLeft() + ( $list.parent().width() - thumb.outerWidth() ) ) + ) + ) { + $list.parent().stop().animate({ 'scrollLeft' : thumbPos.left }, duration); + } + } + }, + + update : function() { + this.instance.$refs.container.toggleClass( 'fancybox-show-thumbs', this.isVisible ); + + if ( this.isVisible ) { + if ( !this.$grid ) { + this.create(); + } + + this.instance.trigger( 'onThumbsShow' ); + + this.focus( 0 ); + + } else if ( this.$grid ) { + this.instance.trigger( 'onThumbsHide' ); + } + + // Update content position + this.instance.update(); + }, + + hide : function() { + this.isVisible = false; + this.update(); + }, + + show : function() { + this.isVisible = true; + this.update(); + }, + + toggle : function() { + this.isVisible = !this.isVisible; + this.update(); + } + }); + + $(document).on({ + + 'onInit.fb' : function(e, instance) { + var Thumbs; + + if ( instance && !instance.Thumbs ) { + Thumbs = new FancyThumbs( instance ); + + if ( Thumbs.isActive && Thumbs.opts.autoStart === true ) { + Thumbs.show(); + } + } + }, + + 'beforeShow.fb' : function(e, instance, item, firstRun) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible ) { + Thumbs.focus( firstRun ? 0 : 250 ); + } + }, + + 'afterKeydown.fb' : function(e, instance, current, keypress, keycode) { + var Thumbs = instance && instance.Thumbs; + + // "G" + if ( Thumbs && Thumbs.isActive && keycode === 71 ) { + keypress.preventDefault(); + + Thumbs.toggle(); + } + }, + + 'beforeClose.fb' : function( e, instance ) { + var Thumbs = instance && instance.Thumbs; + + if ( Thumbs && Thumbs.isVisible && Thumbs.opts.hideOnClose !== false ) { + Thumbs.$grid.hide(); + } + } + + }); + +}(document, window.jQuery)); diff --git a/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/wheel.js b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/wheel.js new file mode 100644 index 0000000000..199ada58d5 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/fancybox-master/src/js/wheel.js @@ -0,0 +1,37 @@ +;(function (document, $) { + 'use strict'; + + var prevTime = new Date().getTime(); + + $(document).on({ + 'onInit.fb' : function( e, instance, current ) { + instance.$refs.stage.on('mousewheel DOMMouseScroll wheel MozMousePixelScroll', function(e) { + var current = instance.current, + currTime = new Date().getTime(); + + if ( instance.group.length < 1 || current.opts.wheel === false || ( current.opts.wheel === 'auto' && current.type !== 'image' ) ) { + return; + } + + e.preventDefault(); + e.stopPropagation(); + + if ( current.$slide.hasClass( 'fancybox-animated' ) ) { + return; + } + + e = e.originalEvent || e; + + if ( currTime - prevTime < 250 ) { + return; + } + + prevTime = currTime; + + instance[ ( -e.deltaY || -e.deltaX || e.wheelDelta || -e.detail ) < 0 ? 'next' : 'previous' ](); + + }); + } + }); + +}( document, window.jQuery || jQuery )); diff --git a/mayan/apps/appearance/static/appearance/vendors/jquery-3.3.1.min.js b/mayan/apps/appearance/static/appearance/vendors/jquery-3.3.1.min.js new file mode 100644 index 0000000000..4d9b3a2587 --- /dev/null +++ b/mayan/apps/appearance/static/appearance/vendors/jquery-3.3.1.min.js @@ -0,0 +1,2 @@ +/*! jQuery v3.3.1 | (c) JS Foundation and other contributors | jquery.org/license */ +!function(e,t){"use strict";"object"==typeof module&&"object"==typeof module.exports?module.exports=e.document?t(e,!0):function(e){if(!e.document)throw new Error("jQuery requires a window with a document");return t(e)}:t(e)}("undefined"!=typeof window?window:this,function(e,t){"use strict";var n=[],r=e.document,i=Object.getPrototypeOf,o=n.slice,a=n.concat,s=n.push,u=n.indexOf,l={},c=l.toString,f=l.hasOwnProperty,p=f.toString,d=p.call(Object),h={},g=function e(t){return"function"==typeof t&&"number"!=typeof t.nodeType},y=function e(t){return null!=t&&t===t.window},v={type:!0,src:!0,noModule:!0};function m(e,t,n){var i,o=(t=t||r).createElement("script");if(o.text=e,n)for(i in v)n[i]&&(o[i]=n[i]);t.head.appendChild(o).parentNode.removeChild(o)}function x(e){return null==e?e+"":"object"==typeof e||"function"==typeof e?l[c.call(e)]||"object":typeof e}var b="3.3.1",w=function(e,t){return new w.fn.init(e,t)},T=/^[\s\uFEFF\xA0]+|[\s\uFEFF\xA0]+$/g;w.fn=w.prototype={jquery:"3.3.1",constructor:w,length:0,toArray:function(){return o.call(this)},get:function(e){return null==e?o.call(this):e<0?this[e+this.length]:this[e]},pushStack:function(e){var t=w.merge(this.constructor(),e);return t.prevObject=this,t},each:function(e){return w.each(this,e)},map:function(e){return this.pushStack(w.map(this,function(t,n){return e.call(t,n,t)}))},slice:function(){return this.pushStack(o.apply(this,arguments))},first:function(){return this.eq(0)},last:function(){return this.eq(-1)},eq:function(e){var t=this.length,n=+e+(e<0?t:0);return this.pushStack(n>=0&&n0&&t-1 in e)}var E=function(e){var t,n,r,i,o,a,s,u,l,c,f,p,d,h,g,y,v,m,x,b="sizzle"+1*new Date,w=e.document,T=0,C=0,E=ae(),k=ae(),S=ae(),D=function(e,t){return e===t&&(f=!0),0},N={}.hasOwnProperty,A=[],j=A.pop,q=A.push,L=A.push,H=A.slice,O=function(e,t){for(var n=0,r=e.length;n+~]|"+M+")"+M+"*"),z=new RegExp("="+M+"*([^\\]'\"]*?)"+M+"*\\]","g"),X=new RegExp(W),U=new RegExp("^"+R+"$"),V={ID:new RegExp("^#("+R+")"),CLASS:new RegExp("^\\.("+R+")"),TAG:new RegExp("^("+R+"|[*])"),ATTR:new RegExp("^"+I),PSEUDO:new RegExp("^"+W),CHILD:new RegExp("^:(only|first|last|nth|nth-last)-(child|of-type)(?:\\("+M+"*(even|odd|(([+-]|)(\\d*)n|)"+M+"*(?:([+-]|)"+M+"*(\\d+)|))"+M+"*\\)|)","i"),bool:new RegExp("^(?:"+P+")$","i"),needsContext:new RegExp("^"+M+"*[>+~]|:(even|odd|eq|gt|lt|nth|first|last)(?:\\("+M+"*((?:-\\d)?\\d*)"+M+"*\\)|)(?=[^-]|$)","i")},G=/^(?:input|select|textarea|button)$/i,Y=/^h\d$/i,Q=/^[^{]+\{\s*\[native \w/,J=/^(?:#([\w-]+)|(\w+)|\.([\w-]+))$/,K=/[+~]/,Z=new RegExp("\\\\([\\da-f]{1,6}"+M+"?|("+M+")|.)","ig"),ee=function(e,t,n){var r="0x"+t-65536;return r!==r||n?t:r<0?String.fromCharCode(r+65536):String.fromCharCode(r>>10|55296,1023&r|56320)},te=/([\0-\x1f\x7f]|^-?\d)|^-$|[^\0-\x1f\x7f-\uFFFF\w-]/g,ne=function(e,t){return t?"\0"===e?"\ufffd":e.slice(0,-1)+"\\"+e.charCodeAt(e.length-1).toString(16)+" ":"\\"+e},re=function(){p()},ie=me(function(e){return!0===e.disabled&&("form"in e||"label"in e)},{dir:"parentNode",next:"legend"});try{L.apply(A=H.call(w.childNodes),w.childNodes),A[w.childNodes.length].nodeType}catch(e){L={apply:A.length?function(e,t){q.apply(e,H.call(t))}:function(e,t){var n=e.length,r=0;while(e[n++]=t[r++]);e.length=n-1}}}function oe(e,t,r,i){var o,s,l,c,f,h,v,m=t&&t.ownerDocument,T=t?t.nodeType:9;if(r=r||[],"string"!=typeof e||!e||1!==T&&9!==T&&11!==T)return r;if(!i&&((t?t.ownerDocument||t:w)!==d&&p(t),t=t||d,g)){if(11!==T&&(f=J.exec(e)))if(o=f[1]){if(9===T){if(!(l=t.getElementById(o)))return r;if(l.id===o)return r.push(l),r}else if(m&&(l=m.getElementById(o))&&x(t,l)&&l.id===o)return r.push(l),r}else{if(f[2])return L.apply(r,t.getElementsByTagName(e)),r;if((o=f[3])&&n.getElementsByClassName&&t.getElementsByClassName)return L.apply(r,t.getElementsByClassName(o)),r}if(n.qsa&&!S[e+" "]&&(!y||!y.test(e))){if(1!==T)m=t,v=e;else if("object"!==t.nodeName.toLowerCase()){(c=t.getAttribute("id"))?c=c.replace(te,ne):t.setAttribute("id",c=b),s=(h=a(e)).length;while(s--)h[s]="#"+c+" "+ve(h[s]);v=h.join(","),m=K.test(e)&&ge(t.parentNode)||t}if(v)try{return L.apply(r,m.querySelectorAll(v)),r}catch(e){}finally{c===b&&t.removeAttribute("id")}}}return u(e.replace(B,"$1"),t,r,i)}function ae(){var e=[];function t(n,i){return e.push(n+" ")>r.cacheLength&&delete t[e.shift()],t[n+" "]=i}return t}function se(e){return e[b]=!0,e}function ue(e){var t=d.createElement("fieldset");try{return!!e(t)}catch(e){return!1}finally{t.parentNode&&t.parentNode.removeChild(t),t=null}}function le(e,t){var n=e.split("|"),i=n.length;while(i--)r.attrHandle[n[i]]=t}function ce(e,t){var n=t&&e,r=n&&1===e.nodeType&&1===t.nodeType&&e.sourceIndex-t.sourceIndex;if(r)return r;if(n)while(n=n.nextSibling)if(n===t)return-1;return e?1:-1}function fe(e){return function(t){return"input"===t.nodeName.toLowerCase()&&t.type===e}}function pe(e){return function(t){var n=t.nodeName.toLowerCase();return("input"===n||"button"===n)&&t.type===e}}function de(e){return function(t){return"form"in t?t.parentNode&&!1===t.disabled?"label"in t?"label"in t.parentNode?t.parentNode.disabled===e:t.disabled===e:t.isDisabled===e||t.isDisabled!==!e&&ie(t)===e:t.disabled===e:"label"in t&&t.disabled===e}}function he(e){return se(function(t){return t=+t,se(function(n,r){var i,o=e([],n.length,t),a=o.length;while(a--)n[i=o[a]]&&(n[i]=!(r[i]=n[i]))})})}function ge(e){return e&&"undefined"!=typeof e.getElementsByTagName&&e}n=oe.support={},o=oe.isXML=function(e){var t=e&&(e.ownerDocument||e).documentElement;return!!t&&"HTML"!==t.nodeName},p=oe.setDocument=function(e){var t,i,a=e?e.ownerDocument||e:w;return a!==d&&9===a.nodeType&&a.documentElement?(d=a,h=d.documentElement,g=!o(d),w!==d&&(i=d.defaultView)&&i.top!==i&&(i.addEventListener?i.addEventListener("unload",re,!1):i.attachEvent&&i.attachEvent("onunload",re)),n.attributes=ue(function(e){return e.className="i",!e.getAttribute("className")}),n.getElementsByTagName=ue(function(e){return e.appendChild(d.createComment("")),!e.getElementsByTagName("*").length}),n.getElementsByClassName=Q.test(d.getElementsByClassName),n.getById=ue(function(e){return h.appendChild(e).id=b,!d.getElementsByName||!d.getElementsByName(b).length}),n.getById?(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){return e.getAttribute("id")===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n=t.getElementById(e);return n?[n]:[]}}):(r.filter.ID=function(e){var t=e.replace(Z,ee);return function(e){var n="undefined"!=typeof e.getAttributeNode&&e.getAttributeNode("id");return n&&n.value===t}},r.find.ID=function(e,t){if("undefined"!=typeof t.getElementById&&g){var n,r,i,o=t.getElementById(e);if(o){if((n=o.getAttributeNode("id"))&&n.value===e)return[o];i=t.getElementsByName(e),r=0;while(o=i[r++])if((n=o.getAttributeNode("id"))&&n.value===e)return[o]}return[]}}),r.find.TAG=n.getElementsByTagName?function(e,t){return"undefined"!=typeof t.getElementsByTagName?t.getElementsByTagName(e):n.qsa?t.querySelectorAll(e):void 0}:function(e,t){var n,r=[],i=0,o=t.getElementsByTagName(e);if("*"===e){while(n=o[i++])1===n.nodeType&&r.push(n);return r}return o},r.find.CLASS=n.getElementsByClassName&&function(e,t){if("undefined"!=typeof t.getElementsByClassName&&g)return t.getElementsByClassName(e)},v=[],y=[],(n.qsa=Q.test(d.querySelectorAll))&&(ue(function(e){h.appendChild(e).innerHTML="",e.querySelectorAll("[msallowcapture^='']").length&&y.push("[*^$]="+M+"*(?:''|\"\")"),e.querySelectorAll("[selected]").length||y.push("\\["+M+"*(?:value|"+P+")"),e.querySelectorAll("[id~="+b+"-]").length||y.push("~="),e.querySelectorAll(":checked").length||y.push(":checked"),e.querySelectorAll("a#"+b+"+*").length||y.push(".#.+[+~]")}),ue(function(e){e.innerHTML="";var t=d.createElement("input");t.setAttribute("type","hidden"),e.appendChild(t).setAttribute("name","D"),e.querySelectorAll("[name=d]").length&&y.push("name"+M+"*[*^$|!~]?="),2!==e.querySelectorAll(":enabled").length&&y.push(":enabled",":disabled"),h.appendChild(e).disabled=!0,2!==e.querySelectorAll(":disabled").length&&y.push(":enabled",":disabled"),e.querySelectorAll("*,:x"),y.push(",.*:")})),(n.matchesSelector=Q.test(m=h.matches||h.webkitMatchesSelector||h.mozMatchesSelector||h.oMatchesSelector||h.msMatchesSelector))&&ue(function(e){n.disconnectedMatch=m.call(e,"*"),m.call(e,"[s!='']:x"),v.push("!=",W)}),y=y.length&&new RegExp(y.join("|")),v=v.length&&new RegExp(v.join("|")),t=Q.test(h.compareDocumentPosition),x=t||Q.test(h.contains)?function(e,t){var n=9===e.nodeType?e.documentElement:e,r=t&&t.parentNode;return e===r||!(!r||1!==r.nodeType||!(n.contains?n.contains(r):e.compareDocumentPosition&&16&e.compareDocumentPosition(r)))}:function(e,t){if(t)while(t=t.parentNode)if(t===e)return!0;return!1},D=t?function(e,t){if(e===t)return f=!0,0;var r=!e.compareDocumentPosition-!t.compareDocumentPosition;return r||(1&(r=(e.ownerDocument||e)===(t.ownerDocument||t)?e.compareDocumentPosition(t):1)||!n.sortDetached&&t.compareDocumentPosition(e)===r?e===d||e.ownerDocument===w&&x(w,e)?-1:t===d||t.ownerDocument===w&&x(w,t)?1:c?O(c,e)-O(c,t):0:4&r?-1:1)}:function(e,t){if(e===t)return f=!0,0;var n,r=0,i=e.parentNode,o=t.parentNode,a=[e],s=[t];if(!i||!o)return e===d?-1:t===d?1:i?-1:o?1:c?O(c,e)-O(c,t):0;if(i===o)return ce(e,t);n=e;while(n=n.parentNode)a.unshift(n);n=t;while(n=n.parentNode)s.unshift(n);while(a[r]===s[r])r++;return r?ce(a[r],s[r]):a[r]===w?-1:s[r]===w?1:0},d):d},oe.matches=function(e,t){return oe(e,null,null,t)},oe.matchesSelector=function(e,t){if((e.ownerDocument||e)!==d&&p(e),t=t.replace(z,"='$1']"),n.matchesSelector&&g&&!S[t+" "]&&(!v||!v.test(t))&&(!y||!y.test(t)))try{var r=m.call(e,t);if(r||n.disconnectedMatch||e.document&&11!==e.document.nodeType)return r}catch(e){}return oe(t,d,null,[e]).length>0},oe.contains=function(e,t){return(e.ownerDocument||e)!==d&&p(e),x(e,t)},oe.attr=function(e,t){(e.ownerDocument||e)!==d&&p(e);var i=r.attrHandle[t.toLowerCase()],o=i&&N.call(r.attrHandle,t.toLowerCase())?i(e,t,!g):void 0;return void 0!==o?o:n.attributes||!g?e.getAttribute(t):(o=e.getAttributeNode(t))&&o.specified?o.value:null},oe.escape=function(e){return(e+"").replace(te,ne)},oe.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)},oe.uniqueSort=function(e){var t,r=[],i=0,o=0;if(f=!n.detectDuplicates,c=!n.sortStable&&e.slice(0),e.sort(D),f){while(t=e[o++])t===e[o]&&(i=r.push(o));while(i--)e.splice(r[i],1)}return c=null,e},i=oe.getText=function(e){var t,n="",r=0,o=e.nodeType;if(o){if(1===o||9===o||11===o){if("string"==typeof e.textContent)return e.textContent;for(e=e.firstChild;e;e=e.nextSibling)n+=i(e)}else if(3===o||4===o)return e.nodeValue}else while(t=e[r++])n+=i(t);return n},(r=oe.selectors={cacheLength:50,createPseudo:se,match:V,attrHandle:{},find:{},relative:{">":{dir:"parentNode",first:!0}," ":{dir:"parentNode"},"+":{dir:"previousSibling",first:!0},"~":{dir:"previousSibling"}},preFilter:{ATTR:function(e){return e[1]=e[1].replace(Z,ee),e[3]=(e[3]||e[4]||e[5]||"").replace(Z,ee),"~="===e[2]&&(e[3]=" "+e[3]+" "),e.slice(0,4)},CHILD:function(e){return e[1]=e[1].toLowerCase(),"nth"===e[1].slice(0,3)?(e[3]||oe.error(e[0]),e[4]=+(e[4]?e[5]+(e[6]||1):2*("even"===e[3]||"odd"===e[3])),e[5]=+(e[7]+e[8]||"odd"===e[3])):e[3]&&oe.error(e[0]),e},PSEUDO:function(e){var t,n=!e[6]&&e[2];return V.CHILD.test(e[0])?null:(e[3]?e[2]=e[4]||e[5]||"":n&&X.test(n)&&(t=a(n,!0))&&(t=n.indexOf(")",n.length-t)-n.length)&&(e[0]=e[0].slice(0,t),e[2]=n.slice(0,t)),e.slice(0,3))}},filter:{TAG:function(e){var t=e.replace(Z,ee).toLowerCase();return"*"===e?function(){return!0}:function(e){return e.nodeName&&e.nodeName.toLowerCase()===t}},CLASS:function(e){var t=E[e+" "];return t||(t=new RegExp("(^|"+M+")"+e+"("+M+"|$)"))&&E(e,function(e){return t.test("string"==typeof e.className&&e.className||"undefined"!=typeof e.getAttribute&&e.getAttribute("class")||"")})},ATTR:function(e,t,n){return function(r){var i=oe.attr(r,e);return null==i?"!="===t:!t||(i+="","="===t?i===n:"!="===t?i!==n:"^="===t?n&&0===i.indexOf(n):"*="===t?n&&i.indexOf(n)>-1:"$="===t?n&&i.slice(-n.length)===n:"~="===t?(" "+i.replace($," ")+" ").indexOf(n)>-1:"|="===t&&(i===n||i.slice(0,n.length+1)===n+"-"))}},CHILD:function(e,t,n,r,i){var o="nth"!==e.slice(0,3),a="last"!==e.slice(-4),s="of-type"===t;return 1===r&&0===i?function(e){return!!e.parentNode}:function(t,n,u){var l,c,f,p,d,h,g=o!==a?"nextSibling":"previousSibling",y=t.parentNode,v=s&&t.nodeName.toLowerCase(),m=!u&&!s,x=!1;if(y){if(o){while(g){p=t;while(p=p[g])if(s?p.nodeName.toLowerCase()===v:1===p.nodeType)return!1;h=g="only"===e&&!h&&"nextSibling"}return!0}if(h=[a?y.firstChild:y.lastChild],a&&m){x=(d=(l=(c=(f=(p=y)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1])&&l[2],p=d&&y.childNodes[d];while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if(1===p.nodeType&&++x&&p===t){c[e]=[T,d,x];break}}else if(m&&(x=d=(l=(c=(f=(p=t)[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]||[])[0]===T&&l[1]),!1===x)while(p=++d&&p&&p[g]||(x=d=0)||h.pop())if((s?p.nodeName.toLowerCase()===v:1===p.nodeType)&&++x&&(m&&((c=(f=p[b]||(p[b]={}))[p.uniqueID]||(f[p.uniqueID]={}))[e]=[T,x]),p===t))break;return(x-=i)===r||x%r==0&&x/r>=0}}},PSEUDO:function(e,t){var n,i=r.pseudos[e]||r.setFilters[e.toLowerCase()]||oe.error("unsupported pseudo: "+e);return i[b]?i(t):i.length>1?(n=[e,e,"",t],r.setFilters.hasOwnProperty(e.toLowerCase())?se(function(e,n){var r,o=i(e,t),a=o.length;while(a--)e[r=O(e,o[a])]=!(n[r]=o[a])}):function(e){return i(e,0,n)}):i}},pseudos:{not:se(function(e){var t=[],n=[],r=s(e.replace(B,"$1"));return r[b]?se(function(e,t,n,i){var o,a=r(e,null,i,[]),s=e.length;while(s--)(o=a[s])&&(e[s]=!(t[s]=o))}):function(e,i,o){return t[0]=e,r(t,null,o,n),t[0]=null,!n.pop()}}),has:se(function(e){return function(t){return oe(e,t).length>0}}),contains:se(function(e){return e=e.replace(Z,ee),function(t){return(t.textContent||t.innerText||i(t)).indexOf(e)>-1}}),lang:se(function(e){return U.test(e||"")||oe.error("unsupported lang: "+e),e=e.replace(Z,ee).toLowerCase(),function(t){var n;do{if(n=g?t.lang:t.getAttribute("xml:lang")||t.getAttribute("lang"))return(n=n.toLowerCase())===e||0===n.indexOf(e+"-")}while((t=t.parentNode)&&1===t.nodeType);return!1}}),target:function(t){var n=e.location&&e.location.hash;return n&&n.slice(1)===t.id},root:function(e){return e===h},focus:function(e){return e===d.activeElement&&(!d.hasFocus||d.hasFocus())&&!!(e.type||e.href||~e.tabIndex)},enabled:de(!1),disabled:de(!0),checked:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&!!e.checked||"option"===t&&!!e.selected},selected:function(e){return e.parentNode&&e.parentNode.selectedIndex,!0===e.selected},empty:function(e){for(e=e.firstChild;e;e=e.nextSibling)if(e.nodeType<6)return!1;return!0},parent:function(e){return!r.pseudos.empty(e)},header:function(e){return Y.test(e.nodeName)},input:function(e){return G.test(e.nodeName)},button:function(e){var t=e.nodeName.toLowerCase();return"input"===t&&"button"===e.type||"button"===t},text:function(e){var t;return"input"===e.nodeName.toLowerCase()&&"text"===e.type&&(null==(t=e.getAttribute("type"))||"text"===t.toLowerCase())},first:he(function(){return[0]}),last:he(function(e,t){return[t-1]}),eq:he(function(e,t,n){return[n<0?n+t:n]}),even:he(function(e,t){for(var n=0;n=0;)e.push(r);return e}),gt:he(function(e,t,n){for(var r=n<0?n+t:n;++r1?function(t,n,r){var i=e.length;while(i--)if(!e[i](t,n,r))return!1;return!0}:e[0]}function be(e,t,n){for(var r=0,i=t.length;r-1&&(o[l]=!(a[l]=f))}}else v=we(v===a?v.splice(h,v.length):v),i?i(null,a,v,u):L.apply(a,v)})}function Ce(e){for(var t,n,i,o=e.length,a=r.relative[e[0].type],s=a||r.relative[" "],u=a?1:0,c=me(function(e){return e===t},s,!0),f=me(function(e){return O(t,e)>-1},s,!0),p=[function(e,n,r){var i=!a&&(r||n!==l)||((t=n).nodeType?c(e,n,r):f(e,n,r));return t=null,i}];u1&&xe(p),u>1&&ve(e.slice(0,u-1).concat({value:" "===e[u-2].type?"*":""})).replace(B,"$1"),n,u0,i=e.length>0,o=function(o,a,s,u,c){var f,h,y,v=0,m="0",x=o&&[],b=[],w=l,C=o||i&&r.find.TAG("*",c),E=T+=null==w?1:Math.random()||.1,k=C.length;for(c&&(l=a===d||a||c);m!==k&&null!=(f=C[m]);m++){if(i&&f){h=0,a||f.ownerDocument===d||(p(f),s=!g);while(y=e[h++])if(y(f,a||d,s)){u.push(f);break}c&&(T=E)}n&&((f=!y&&f)&&v--,o&&x.push(f))}if(v+=m,n&&m!==v){h=0;while(y=t[h++])y(x,b,a,s);if(o){if(v>0)while(m--)x[m]||b[m]||(b[m]=j.call(u));b=we(b)}L.apply(u,b),c&&!o&&b.length>0&&v+t.length>1&&oe.uniqueSort(u)}return c&&(T=E,l=w),x};return n?se(o):o}return s=oe.compile=function(e,t){var n,r=[],i=[],o=S[e+" "];if(!o){t||(t=a(e)),n=t.length;while(n--)(o=Ce(t[n]))[b]?r.push(o):i.push(o);(o=S(e,Ee(i,r))).selector=e}return o},u=oe.select=function(e,t,n,i){var o,u,l,c,f,p="function"==typeof e&&e,d=!i&&a(e=p.selector||e);if(n=n||[],1===d.length){if((u=d[0]=d[0].slice(0)).length>2&&"ID"===(l=u[0]).type&&9===t.nodeType&&g&&r.relative[u[1].type]){if(!(t=(r.find.ID(l.matches[0].replace(Z,ee),t)||[])[0]))return n;p&&(t=t.parentNode),e=e.slice(u.shift().value.length)}o=V.needsContext.test(e)?0:u.length;while(o--){if(l=u[o],r.relative[c=l.type])break;if((f=r.find[c])&&(i=f(l.matches[0].replace(Z,ee),K.test(u[0].type)&&ge(t.parentNode)||t))){if(u.splice(o,1),!(e=i.length&&ve(u)))return L.apply(n,i),n;break}}}return(p||s(e,d))(i,t,!g,n,!t||K.test(e)&&ge(t.parentNode)||t),n},n.sortStable=b.split("").sort(D).join("")===b,n.detectDuplicates=!!f,p(),n.sortDetached=ue(function(e){return 1&e.compareDocumentPosition(d.createElement("fieldset"))}),ue(function(e){return e.innerHTML="","#"===e.firstChild.getAttribute("href")})||le("type|href|height|width",function(e,t,n){if(!n)return e.getAttribute(t,"type"===t.toLowerCase()?1:2)}),n.attributes&&ue(function(e){return e.innerHTML="",e.firstChild.setAttribute("value",""),""===e.firstChild.getAttribute("value")})||le("value",function(e,t,n){if(!n&&"input"===e.nodeName.toLowerCase())return e.defaultValue}),ue(function(e){return null==e.getAttribute("disabled")})||le(P,function(e,t,n){var r;if(!n)return!0===e[t]?t.toLowerCase():(r=e.getAttributeNode(t))&&r.specified?r.value:null}),oe}(e);w.find=E,w.expr=E.selectors,w.expr[":"]=w.expr.pseudos,w.uniqueSort=w.unique=E.uniqueSort,w.text=E.getText,w.isXMLDoc=E.isXML,w.contains=E.contains,w.escapeSelector=E.escape;var k=function(e,t,n){var r=[],i=void 0!==n;while((e=e[t])&&9!==e.nodeType)if(1===e.nodeType){if(i&&w(e).is(n))break;r.push(e)}return r},S=function(e,t){for(var n=[];e;e=e.nextSibling)1===e.nodeType&&e!==t&&n.push(e);return n},D=w.expr.match.needsContext;function N(e,t){return e.nodeName&&e.nodeName.toLowerCase()===t.toLowerCase()}var A=/^<([a-z][^\/\0>:\x20\t\r\n\f]*)[\x20\t\r\n\f]*\/?>(?:<\/\1>|)$/i;function j(e,t,n){return g(t)?w.grep(e,function(e,r){return!!t.call(e,r,e)!==n}):t.nodeType?w.grep(e,function(e){return e===t!==n}):"string"!=typeof t?w.grep(e,function(e){return u.call(t,e)>-1!==n}):w.filter(t,e,n)}w.filter=function(e,t,n){var r=t[0];return n&&(e=":not("+e+")"),1===t.length&&1===r.nodeType?w.find.matchesSelector(r,e)?[r]:[]:w.find.matches(e,w.grep(t,function(e){return 1===e.nodeType}))},w.fn.extend({find:function(e){var t,n,r=this.length,i=this;if("string"!=typeof e)return this.pushStack(w(e).filter(function(){for(t=0;t1?w.uniqueSort(n):n},filter:function(e){return this.pushStack(j(this,e||[],!1))},not:function(e){return this.pushStack(j(this,e||[],!0))},is:function(e){return!!j(this,"string"==typeof e&&D.test(e)?w(e):e||[],!1).length}});var q,L=/^(?:\s*(<[\w\W]+>)[^>]*|#([\w-]+))$/;(w.fn.init=function(e,t,n){var i,o;if(!e)return this;if(n=n||q,"string"==typeof e){if(!(i="<"===e[0]&&">"===e[e.length-1]&&e.length>=3?[null,e,null]:L.exec(e))||!i[1]&&t)return!t||t.jquery?(t||n).find(e):this.constructor(t).find(e);if(i[1]){if(t=t instanceof w?t[0]:t,w.merge(this,w.parseHTML(i[1],t&&t.nodeType?t.ownerDocument||t:r,!0)),A.test(i[1])&&w.isPlainObject(t))for(i in t)g(this[i])?this[i](t[i]):this.attr(i,t[i]);return this}return(o=r.getElementById(i[2]))&&(this[0]=o,this.length=1),this}return e.nodeType?(this[0]=e,this.length=1,this):g(e)?void 0!==n.ready?n.ready(e):e(w):w.makeArray(e,this)}).prototype=w.fn,q=w(r);var H=/^(?:parents|prev(?:Until|All))/,O={children:!0,contents:!0,next:!0,prev:!0};w.fn.extend({has:function(e){var t=w(e,this),n=t.length;return this.filter(function(){for(var e=0;e-1:1===n.nodeType&&w.find.matchesSelector(n,e))){o.push(n);break}return this.pushStack(o.length>1?w.uniqueSort(o):o)},index:function(e){return e?"string"==typeof e?u.call(w(e),this[0]):u.call(this,e.jquery?e[0]:e):this[0]&&this[0].parentNode?this.first().prevAll().length:-1},add:function(e,t){return this.pushStack(w.uniqueSort(w.merge(this.get(),w(e,t))))},addBack:function(e){return this.add(null==e?this.prevObject:this.prevObject.filter(e))}});function P(e,t){while((e=e[t])&&1!==e.nodeType);return e}w.each({parent:function(e){var t=e.parentNode;return t&&11!==t.nodeType?t:null},parents:function(e){return k(e,"parentNode")},parentsUntil:function(e,t,n){return k(e,"parentNode",n)},next:function(e){return P(e,"nextSibling")},prev:function(e){return P(e,"previousSibling")},nextAll:function(e){return k(e,"nextSibling")},prevAll:function(e){return k(e,"previousSibling")},nextUntil:function(e,t,n){return k(e,"nextSibling",n)},prevUntil:function(e,t,n){return k(e,"previousSibling",n)},siblings:function(e){return S((e.parentNode||{}).firstChild,e)},children:function(e){return S(e.firstChild)},contents:function(e){return N(e,"iframe")?e.contentDocument:(N(e,"template")&&(e=e.content||e),w.merge([],e.childNodes))}},function(e,t){w.fn[e]=function(n,r){var i=w.map(this,t,n);return"Until"!==e.slice(-5)&&(r=n),r&&"string"==typeof r&&(i=w.filter(r,i)),this.length>1&&(O[e]||w.uniqueSort(i),H.test(e)&&i.reverse()),this.pushStack(i)}});var M=/[^\x20\t\r\n\f]+/g;function R(e){var t={};return w.each(e.match(M)||[],function(e,n){t[n]=!0}),t}w.Callbacks=function(e){e="string"==typeof e?R(e):w.extend({},e);var t,n,r,i,o=[],a=[],s=-1,u=function(){for(i=i||e.once,r=t=!0;a.length;s=-1){n=a.shift();while(++s-1)o.splice(n,1),n<=s&&s--}),this},has:function(e){return e?w.inArray(e,o)>-1:o.length>0},empty:function(){return o&&(o=[]),this},disable:function(){return i=a=[],o=n="",this},disabled:function(){return!o},lock:function(){return i=a=[],n||t||(o=n=""),this},locked:function(){return!!i},fireWith:function(e,n){return i||(n=[e,(n=n||[]).slice?n.slice():n],a.push(n),t||u()),this},fire:function(){return l.fireWith(this,arguments),this},fired:function(){return!!r}};return l};function I(e){return e}function W(e){throw e}function $(e,t,n,r){var i;try{e&&g(i=e.promise)?i.call(e).done(t).fail(n):e&&g(i=e.then)?i.call(e,t,n):t.apply(void 0,[e].slice(r))}catch(e){n.apply(void 0,[e])}}w.extend({Deferred:function(t){var n=[["notify","progress",w.Callbacks("memory"),w.Callbacks("memory"),2],["resolve","done",w.Callbacks("once memory"),w.Callbacks("once memory"),0,"resolved"],["reject","fail",w.Callbacks("once memory"),w.Callbacks("once memory"),1,"rejected"]],r="pending",i={state:function(){return r},always:function(){return o.done(arguments).fail(arguments),this},"catch":function(e){return i.then(null,e)},pipe:function(){var e=arguments;return w.Deferred(function(t){w.each(n,function(n,r){var i=g(e[r[4]])&&e[r[4]];o[r[1]](function(){var e=i&&i.apply(this,arguments);e&&g(e.promise)?e.promise().progress(t.notify).done(t.resolve).fail(t.reject):t[r[0]+"With"](this,i?[e]:arguments)})}),e=null}).promise()},then:function(t,r,i){var o=0;function a(t,n,r,i){return function(){var s=this,u=arguments,l=function(){var e,l;if(!(t=o&&(r!==W&&(s=void 0,u=[e]),n.rejectWith(s,u))}};t?c():(w.Deferred.getStackHook&&(c.stackTrace=w.Deferred.getStackHook()),e.setTimeout(c))}}return w.Deferred(function(e){n[0][3].add(a(0,e,g(i)?i:I,e.notifyWith)),n[1][3].add(a(0,e,g(t)?t:I)),n[2][3].add(a(0,e,g(r)?r:W))}).promise()},promise:function(e){return null!=e?w.extend(e,i):i}},o={};return w.each(n,function(e,t){var a=t[2],s=t[5];i[t[1]]=a.add,s&&a.add(function(){r=s},n[3-e][2].disable,n[3-e][3].disable,n[0][2].lock,n[0][3].lock),a.add(t[3].fire),o[t[0]]=function(){return o[t[0]+"With"](this===o?void 0:this,arguments),this},o[t[0]+"With"]=a.fireWith}),i.promise(o),t&&t.call(o,o),o},when:function(e){var t=arguments.length,n=t,r=Array(n),i=o.call(arguments),a=w.Deferred(),s=function(e){return function(n){r[e]=this,i[e]=arguments.length>1?o.call(arguments):n,--t||a.resolveWith(r,i)}};if(t<=1&&($(e,a.done(s(n)).resolve,a.reject,!t),"pending"===a.state()||g(i[n]&&i[n].then)))return a.then();while(n--)$(i[n],s(n),a.reject);return a.promise()}});var B=/^(Eval|Internal|Range|Reference|Syntax|Type|URI)Error$/;w.Deferred.exceptionHook=function(t,n){e.console&&e.console.warn&&t&&B.test(t.name)&&e.console.warn("jQuery.Deferred exception: "+t.message,t.stack,n)},w.readyException=function(t){e.setTimeout(function(){throw t})};var F=w.Deferred();w.fn.ready=function(e){return F.then(e)["catch"](function(e){w.readyException(e)}),this},w.extend({isReady:!1,readyWait:1,ready:function(e){(!0===e?--w.readyWait:w.isReady)||(w.isReady=!0,!0!==e&&--w.readyWait>0||F.resolveWith(r,[w]))}}),w.ready.then=F.then;function _(){r.removeEventListener("DOMContentLoaded",_),e.removeEventListener("load",_),w.ready()}"complete"===r.readyState||"loading"!==r.readyState&&!r.documentElement.doScroll?e.setTimeout(w.ready):(r.addEventListener("DOMContentLoaded",_),e.addEventListener("load",_));var z=function(e,t,n,r,i,o,a){var s=0,u=e.length,l=null==n;if("object"===x(n)){i=!0;for(s in n)z(e,t,s,n[s],!0,o,a)}else if(void 0!==r&&(i=!0,g(r)||(a=!0),l&&(a?(t.call(e,r),t=null):(l=t,t=function(e,t,n){return l.call(w(e),n)})),t))for(;s1,null,!0)},removeData:function(e){return this.each(function(){K.remove(this,e)})}}),w.extend({queue:function(e,t,n){var r;if(e)return t=(t||"fx")+"queue",r=J.get(e,t),n&&(!r||Array.isArray(n)?r=J.access(e,t,w.makeArray(n)):r.push(n)),r||[]},dequeue:function(e,t){t=t||"fx";var n=w.queue(e,t),r=n.length,i=n.shift(),o=w._queueHooks(e,t),a=function(){w.dequeue(e,t)};"inprogress"===i&&(i=n.shift(),r--),i&&("fx"===t&&n.unshift("inprogress"),delete o.stop,i.call(e,a,o)),!r&&o&&o.empty.fire()},_queueHooks:function(e,t){var n=t+"queueHooks";return J.get(e,n)||J.access(e,n,{empty:w.Callbacks("once memory").add(function(){J.remove(e,[t+"queue",n])})})}}),w.fn.extend({queue:function(e,t){var n=2;return"string"!=typeof e&&(t=e,e="fx",n--),arguments.length\x20\t\r\n\f]+)/i,he=/^$|^module$|\/(?:java|ecma)script/i,ge={option:[1,""],thead:[1,"","
"],col:[2,"","
"],tr:[2,"","
"],td:[3,"","
"],_default:[0,"",""]};ge.optgroup=ge.option,ge.tbody=ge.tfoot=ge.colgroup=ge.caption=ge.thead,ge.th=ge.td;function ye(e,t){var n;return n="undefined"!=typeof e.getElementsByTagName?e.getElementsByTagName(t||"*"):"undefined"!=typeof e.querySelectorAll?e.querySelectorAll(t||"*"):[],void 0===t||t&&N(e,t)?w.merge([e],n):n}function ve(e,t){for(var n=0,r=e.length;n-1)i&&i.push(o);else if(l=w.contains(o.ownerDocument,o),a=ye(f.appendChild(o),"script"),l&&ve(a),n){c=0;while(o=a[c++])he.test(o.type||"")&&n.push(o)}return f}!function(){var e=r.createDocumentFragment().appendChild(r.createElement("div")),t=r.createElement("input");t.setAttribute("type","radio"),t.setAttribute("checked","checked"),t.setAttribute("name","t"),e.appendChild(t),h.checkClone=e.cloneNode(!0).cloneNode(!0).lastChild.checked,e.innerHTML="",h.noCloneChecked=!!e.cloneNode(!0).lastChild.defaultValue}();var be=r.documentElement,we=/^key/,Te=/^(?:mouse|pointer|contextmenu|drag|drop)|click/,Ce=/^([^.]*)(?:\.(.+)|)/;function Ee(){return!0}function ke(){return!1}function Se(){try{return r.activeElement}catch(e){}}function De(e,t,n,r,i,o){var a,s;if("object"==typeof t){"string"!=typeof n&&(r=r||n,n=void 0);for(s in t)De(e,s,n,r,t[s],o);return e}if(null==r&&null==i?(i=n,r=n=void 0):null==i&&("string"==typeof n?(i=r,r=void 0):(i=r,r=n,n=void 0)),!1===i)i=ke;else if(!i)return e;return 1===o&&(a=i,(i=function(e){return w().off(e),a.apply(this,arguments)}).guid=a.guid||(a.guid=w.guid++)),e.each(function(){w.event.add(this,t,i,r,n)})}w.event={global:{},add:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.get(e);if(y){n.handler&&(n=(o=n).handler,i=o.selector),i&&w.find.matchesSelector(be,i),n.guid||(n.guid=w.guid++),(u=y.events)||(u=y.events={}),(a=y.handle)||(a=y.handle=function(t){return"undefined"!=typeof w&&w.event.triggered!==t.type?w.event.dispatch.apply(e,arguments):void 0}),l=(t=(t||"").match(M)||[""]).length;while(l--)d=g=(s=Ce.exec(t[l])||[])[1],h=(s[2]||"").split(".").sort(),d&&(f=w.event.special[d]||{},d=(i?f.delegateType:f.bindType)||d,f=w.event.special[d]||{},c=w.extend({type:d,origType:g,data:r,handler:n,guid:n.guid,selector:i,needsContext:i&&w.expr.match.needsContext.test(i),namespace:h.join(".")},o),(p=u[d])||((p=u[d]=[]).delegateCount=0,f.setup&&!1!==f.setup.call(e,r,h,a)||e.addEventListener&&e.addEventListener(d,a)),f.add&&(f.add.call(e,c),c.handler.guid||(c.handler.guid=n.guid)),i?p.splice(p.delegateCount++,0,c):p.push(c),w.event.global[d]=!0)}},remove:function(e,t,n,r,i){var o,a,s,u,l,c,f,p,d,h,g,y=J.hasData(e)&&J.get(e);if(y&&(u=y.events)){l=(t=(t||"").match(M)||[""]).length;while(l--)if(s=Ce.exec(t[l])||[],d=g=s[1],h=(s[2]||"").split(".").sort(),d){f=w.event.special[d]||{},p=u[d=(r?f.delegateType:f.bindType)||d]||[],s=s[2]&&new RegExp("(^|\\.)"+h.join("\\.(?:.*\\.|)")+"(\\.|$)"),a=o=p.length;while(o--)c=p[o],!i&&g!==c.origType||n&&n.guid!==c.guid||s&&!s.test(c.namespace)||r&&r!==c.selector&&("**"!==r||!c.selector)||(p.splice(o,1),c.selector&&p.delegateCount--,f.remove&&f.remove.call(e,c));a&&!p.length&&(f.teardown&&!1!==f.teardown.call(e,h,y.handle)||w.removeEvent(e,d,y.handle),delete u[d])}else for(d in u)w.event.remove(e,d+t[l],n,r,!0);w.isEmptyObject(u)&&J.remove(e,"handle events")}},dispatch:function(e){var t=w.event.fix(e),n,r,i,o,a,s,u=new Array(arguments.length),l=(J.get(this,"events")||{})[t.type]||[],c=w.event.special[t.type]||{};for(u[0]=t,n=1;n=1))for(;l!==this;l=l.parentNode||this)if(1===l.nodeType&&("click"!==e.type||!0!==l.disabled)){for(o=[],a={},n=0;n-1:w.find(i,this,null,[l]).length),a[i]&&o.push(r);o.length&&s.push({elem:l,handlers:o})}return l=this,u\x20\t\r\n\f]*)[^>]*)\/>/gi,Ae=/\s*$/g;function Le(e,t){return N(e,"table")&&N(11!==t.nodeType?t:t.firstChild,"tr")?w(e).children("tbody")[0]||e:e}function He(e){return e.type=(null!==e.getAttribute("type"))+"/"+e.type,e}function Oe(e){return"true/"===(e.type||"").slice(0,5)?e.type=e.type.slice(5):e.removeAttribute("type"),e}function Pe(e,t){var n,r,i,o,a,s,u,l;if(1===t.nodeType){if(J.hasData(e)&&(o=J.access(e),a=J.set(t,o),l=o.events)){delete a.handle,a.events={};for(i in l)for(n=0,r=l[i].length;n1&&"string"==typeof y&&!h.checkClone&&je.test(y))return e.each(function(i){var o=e.eq(i);v&&(t[0]=y.call(this,i,o.html())),Re(o,t,n,r)});if(p&&(i=xe(t,e[0].ownerDocument,!1,e,r),o=i.firstChild,1===i.childNodes.length&&(i=o),o||r)){for(u=(s=w.map(ye(i,"script"),He)).length;f")},clone:function(e,t,n){var r,i,o,a,s=e.cloneNode(!0),u=w.contains(e.ownerDocument,e);if(!(h.noCloneChecked||1!==e.nodeType&&11!==e.nodeType||w.isXMLDoc(e)))for(a=ye(s),r=0,i=(o=ye(e)).length;r0&&ve(a,!u&&ye(e,"script")),s},cleanData:function(e){for(var t,n,r,i=w.event.special,o=0;void 0!==(n=e[o]);o++)if(Y(n)){if(t=n[J.expando]){if(t.events)for(r in t.events)i[r]?w.event.remove(n,r):w.removeEvent(n,r,t.handle);n[J.expando]=void 0}n[K.expando]&&(n[K.expando]=void 0)}}}),w.fn.extend({detach:function(e){return Ie(this,e,!0)},remove:function(e){return Ie(this,e)},text:function(e){return z(this,function(e){return void 0===e?w.text(this):this.empty().each(function(){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||(this.textContent=e)})},null,e,arguments.length)},append:function(){return Re(this,arguments,function(e){1!==this.nodeType&&11!==this.nodeType&&9!==this.nodeType||Le(this,e).appendChild(e)})},prepend:function(){return Re(this,arguments,function(e){if(1===this.nodeType||11===this.nodeType||9===this.nodeType){var t=Le(this,e);t.insertBefore(e,t.firstChild)}})},before:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this)})},after:function(){return Re(this,arguments,function(e){this.parentNode&&this.parentNode.insertBefore(e,this.nextSibling)})},empty:function(){for(var e,t=0;null!=(e=this[t]);t++)1===e.nodeType&&(w.cleanData(ye(e,!1)),e.textContent="");return this},clone:function(e,t){return e=null!=e&&e,t=null==t?e:t,this.map(function(){return w.clone(this,e,t)})},html:function(e){return z(this,function(e){var t=this[0]||{},n=0,r=this.length;if(void 0===e&&1===t.nodeType)return t.innerHTML;if("string"==typeof e&&!Ae.test(e)&&!ge[(de.exec(e)||["",""])[1].toLowerCase()]){e=w.htmlPrefilter(e);try{for(;n=0&&(u+=Math.max(0,Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-o-u-s-.5))),u}function et(e,t,n){var r=$e(e),i=Fe(e,t,r),o="border-box"===w.css(e,"boxSizing",!1,r),a=o;if(We.test(i)){if(!n)return i;i="auto"}return a=a&&(h.boxSizingReliable()||i===e.style[t]),("auto"===i||!parseFloat(i)&&"inline"===w.css(e,"display",!1,r))&&(i=e["offset"+t[0].toUpperCase()+t.slice(1)],a=!0),(i=parseFloat(i)||0)+Ze(e,t,n||(o?"border":"content"),a,r,i)+"px"}w.extend({cssHooks:{opacity:{get:function(e,t){if(t){var n=Fe(e,"opacity");return""===n?"1":n}}}},cssNumber:{animationIterationCount:!0,columnCount:!0,fillOpacity:!0,flexGrow:!0,flexShrink:!0,fontWeight:!0,lineHeight:!0,opacity:!0,order:!0,orphans:!0,widows:!0,zIndex:!0,zoom:!0},cssProps:{},style:function(e,t,n,r){if(e&&3!==e.nodeType&&8!==e.nodeType&&e.style){var i,o,a,s=G(t),u=Xe.test(t),l=e.style;if(u||(t=Je(s)),a=w.cssHooks[t]||w.cssHooks[s],void 0===n)return a&&"get"in a&&void 0!==(i=a.get(e,!1,r))?i:l[t];"string"==(o=typeof n)&&(i=ie.exec(n))&&i[1]&&(n=ue(e,t,i),o="number"),null!=n&&n===n&&("number"===o&&(n+=i&&i[3]||(w.cssNumber[s]?"":"px")),h.clearCloneStyle||""!==n||0!==t.indexOf("background")||(l[t]="inherit"),a&&"set"in a&&void 0===(n=a.set(e,n,r))||(u?l.setProperty(t,n):l[t]=n))}},css:function(e,t,n,r){var i,o,a,s=G(t);return Xe.test(t)||(t=Je(s)),(a=w.cssHooks[t]||w.cssHooks[s])&&"get"in a&&(i=a.get(e,!0,n)),void 0===i&&(i=Fe(e,t,r)),"normal"===i&&t in Ve&&(i=Ve[t]),""===n||n?(o=parseFloat(i),!0===n||isFinite(o)?o||0:i):i}}),w.each(["height","width"],function(e,t){w.cssHooks[t]={get:function(e,n,r){if(n)return!ze.test(w.css(e,"display"))||e.getClientRects().length&&e.getBoundingClientRect().width?et(e,t,r):se(e,Ue,function(){return et(e,t,r)})},set:function(e,n,r){var i,o=$e(e),a="border-box"===w.css(e,"boxSizing",!1,o),s=r&&Ze(e,t,r,a,o);return a&&h.scrollboxSize()===o.position&&(s-=Math.ceil(e["offset"+t[0].toUpperCase()+t.slice(1)]-parseFloat(o[t])-Ze(e,t,"border",!1,o)-.5)),s&&(i=ie.exec(n))&&"px"!==(i[3]||"px")&&(e.style[t]=n,n=w.css(e,t)),Ke(e,n,s)}}}),w.cssHooks.marginLeft=_e(h.reliableMarginLeft,function(e,t){if(t)return(parseFloat(Fe(e,"marginLeft"))||e.getBoundingClientRect().left-se(e,{marginLeft:0},function(){return e.getBoundingClientRect().left}))+"px"}),w.each({margin:"",padding:"",border:"Width"},function(e,t){w.cssHooks[e+t]={expand:function(n){for(var r=0,i={},o="string"==typeof n?n.split(" "):[n];r<4;r++)i[e+oe[r]+t]=o[r]||o[r-2]||o[0];return i}},"margin"!==e&&(w.cssHooks[e+t].set=Ke)}),w.fn.extend({css:function(e,t){return z(this,function(e,t,n){var r,i,o={},a=0;if(Array.isArray(t)){for(r=$e(e),i=t.length;a1)}});function tt(e,t,n,r,i){return new tt.prototype.init(e,t,n,r,i)}w.Tween=tt,tt.prototype={constructor:tt,init:function(e,t,n,r,i,o){this.elem=e,this.prop=n,this.easing=i||w.easing._default,this.options=t,this.start=this.now=this.cur(),this.end=r,this.unit=o||(w.cssNumber[n]?"":"px")},cur:function(){var e=tt.propHooks[this.prop];return e&&e.get?e.get(this):tt.propHooks._default.get(this)},run:function(e){var t,n=tt.propHooks[this.prop];return this.options.duration?this.pos=t=w.easing[this.easing](e,this.options.duration*e,0,1,this.options.duration):this.pos=t=e,this.now=(this.end-this.start)*t+this.start,this.options.step&&this.options.step.call(this.elem,this.now,this),n&&n.set?n.set(this):tt.propHooks._default.set(this),this}},tt.prototype.init.prototype=tt.prototype,tt.propHooks={_default:{get:function(e){var t;return 1!==e.elem.nodeType||null!=e.elem[e.prop]&&null==e.elem.style[e.prop]?e.elem[e.prop]:(t=w.css(e.elem,e.prop,""))&&"auto"!==t?t:0},set:function(e){w.fx.step[e.prop]?w.fx.step[e.prop](e):1!==e.elem.nodeType||null==e.elem.style[w.cssProps[e.prop]]&&!w.cssHooks[e.prop]?e.elem[e.prop]=e.now:w.style(e.elem,e.prop,e.now+e.unit)}}},tt.propHooks.scrollTop=tt.propHooks.scrollLeft={set:function(e){e.elem.nodeType&&e.elem.parentNode&&(e.elem[e.prop]=e.now)}},w.easing={linear:function(e){return e},swing:function(e){return.5-Math.cos(e*Math.PI)/2},_default:"swing"},w.fx=tt.prototype.init,w.fx.step={};var nt,rt,it=/^(?:toggle|show|hide)$/,ot=/queueHooks$/;function at(){rt&&(!1===r.hidden&&e.requestAnimationFrame?e.requestAnimationFrame(at):e.setTimeout(at,w.fx.interval),w.fx.tick())}function st(){return e.setTimeout(function(){nt=void 0}),nt=Date.now()}function ut(e,t){var n,r=0,i={height:e};for(t=t?1:0;r<4;r+=2-t)i["margin"+(n=oe[r])]=i["padding"+n]=e;return t&&(i.opacity=i.width=e),i}function lt(e,t,n){for(var r,i=(pt.tweeners[t]||[]).concat(pt.tweeners["*"]),o=0,a=i.length;o1)},removeAttr:function(e){return this.each(function(){w.removeAttr(this,e)})}}),w.extend({attr:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return"undefined"==typeof e.getAttribute?w.prop(e,t,n):(1===o&&w.isXMLDoc(e)||(i=w.attrHooks[t.toLowerCase()]||(w.expr.match.bool.test(t)?dt:void 0)),void 0!==n?null===n?void w.removeAttr(e,t):i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:(e.setAttribute(t,n+""),n):i&&"get"in i&&null!==(r=i.get(e,t))?r:null==(r=w.find.attr(e,t))?void 0:r)},attrHooks:{type:{set:function(e,t){if(!h.radioValue&&"radio"===t&&N(e,"input")){var n=e.value;return e.setAttribute("type",t),n&&(e.value=n),t}}}},removeAttr:function(e,t){var n,r=0,i=t&&t.match(M);if(i&&1===e.nodeType)while(n=i[r++])e.removeAttribute(n)}}),dt={set:function(e,t,n){return!1===t?w.removeAttr(e,n):e.setAttribute(n,n),n}},w.each(w.expr.match.bool.source.match(/\w+/g),function(e,t){var n=ht[t]||w.find.attr;ht[t]=function(e,t,r){var i,o,a=t.toLowerCase();return r||(o=ht[a],ht[a]=i,i=null!=n(e,t,r)?a:null,ht[a]=o),i}});var gt=/^(?:input|select|textarea|button)$/i,yt=/^(?:a|area)$/i;w.fn.extend({prop:function(e,t){return z(this,w.prop,e,t,arguments.length>1)},removeProp:function(e){return this.each(function(){delete this[w.propFix[e]||e]})}}),w.extend({prop:function(e,t,n){var r,i,o=e.nodeType;if(3!==o&&8!==o&&2!==o)return 1===o&&w.isXMLDoc(e)||(t=w.propFix[t]||t,i=w.propHooks[t]),void 0!==n?i&&"set"in i&&void 0!==(r=i.set(e,n,t))?r:e[t]=n:i&&"get"in i&&null!==(r=i.get(e,t))?r:e[t]},propHooks:{tabIndex:{get:function(e){var t=w.find.attr(e,"tabindex");return t?parseInt(t,10):gt.test(e.nodeName)||yt.test(e.nodeName)&&e.href?0:-1}}},propFix:{"for":"htmlFor","class":"className"}}),h.optSelected||(w.propHooks.selected={get:function(e){var t=e.parentNode;return t&&t.parentNode&&t.parentNode.selectedIndex,null},set:function(e){var t=e.parentNode;t&&(t.selectedIndex,t.parentNode&&t.parentNode.selectedIndex)}}),w.each(["tabIndex","readOnly","maxLength","cellSpacing","cellPadding","rowSpan","colSpan","useMap","frameBorder","contentEditable"],function(){w.propFix[this.toLowerCase()]=this});function vt(e){return(e.match(M)||[]).join(" ")}function mt(e){return e.getAttribute&&e.getAttribute("class")||""}function xt(e){return Array.isArray(e)?e:"string"==typeof e?e.match(M)||[]:[]}w.fn.extend({addClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).addClass(e.call(this,t,mt(this)))});if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])r.indexOf(" "+o+" ")<0&&(r+=o+" ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},removeClass:function(e){var t,n,r,i,o,a,s,u=0;if(g(e))return this.each(function(t){w(this).removeClass(e.call(this,t,mt(this)))});if(!arguments.length)return this.attr("class","");if((t=xt(e)).length)while(n=this[u++])if(i=mt(n),r=1===n.nodeType&&" "+vt(i)+" "){a=0;while(o=t[a++])while(r.indexOf(" "+o+" ")>-1)r=r.replace(" "+o+" "," ");i!==(s=vt(r))&&n.setAttribute("class",s)}return this},toggleClass:function(e,t){var n=typeof e,r="string"===n||Array.isArray(e);return"boolean"==typeof t&&r?t?this.addClass(e):this.removeClass(e):g(e)?this.each(function(n){w(this).toggleClass(e.call(this,n,mt(this),t),t)}):this.each(function(){var t,i,o,a;if(r){i=0,o=w(this),a=xt(e);while(t=a[i++])o.hasClass(t)?o.removeClass(t):o.addClass(t)}else void 0!==e&&"boolean"!==n||((t=mt(this))&&J.set(this,"__className__",t),this.setAttribute&&this.setAttribute("class",t||!1===e?"":J.get(this,"__className__")||""))})},hasClass:function(e){var t,n,r=0;t=" "+e+" ";while(n=this[r++])if(1===n.nodeType&&(" "+vt(mt(n))+" ").indexOf(t)>-1)return!0;return!1}});var bt=/\r/g;w.fn.extend({val:function(e){var t,n,r,i=this[0];{if(arguments.length)return r=g(e),this.each(function(n){var i;1===this.nodeType&&(null==(i=r?e.call(this,n,w(this).val()):e)?i="":"number"==typeof i?i+="":Array.isArray(i)&&(i=w.map(i,function(e){return null==e?"":e+""})),(t=w.valHooks[this.type]||w.valHooks[this.nodeName.toLowerCase()])&&"set"in t&&void 0!==t.set(this,i,"value")||(this.value=i))});if(i)return(t=w.valHooks[i.type]||w.valHooks[i.nodeName.toLowerCase()])&&"get"in t&&void 0!==(n=t.get(i,"value"))?n:"string"==typeof(n=i.value)?n.replace(bt,""):null==n?"":n}}}),w.extend({valHooks:{option:{get:function(e){var t=w.find.attr(e,"value");return null!=t?t:vt(w.text(e))}},select:{get:function(e){var t,n,r,i=e.options,o=e.selectedIndex,a="select-one"===e.type,s=a?null:[],u=a?o+1:i.length;for(r=o<0?u:a?o:0;r-1)&&(n=!0);return n||(e.selectedIndex=-1),o}}}}),w.each(["radio","checkbox"],function(){w.valHooks[this]={set:function(e,t){if(Array.isArray(t))return e.checked=w.inArray(w(e).val(),t)>-1}},h.checkOn||(w.valHooks[this].get=function(e){return null===e.getAttribute("value")?"on":e.value})}),h.focusin="onfocusin"in e;var wt=/^(?:focusinfocus|focusoutblur)$/,Tt=function(e){e.stopPropagation()};w.extend(w.event,{trigger:function(t,n,i,o){var a,s,u,l,c,p,d,h,v=[i||r],m=f.call(t,"type")?t.type:t,x=f.call(t,"namespace")?t.namespace.split("."):[];if(s=h=u=i=i||r,3!==i.nodeType&&8!==i.nodeType&&!wt.test(m+w.event.triggered)&&(m.indexOf(".")>-1&&(m=(x=m.split(".")).shift(),x.sort()),c=m.indexOf(":")<0&&"on"+m,t=t[w.expando]?t:new w.Event(m,"object"==typeof t&&t),t.isTrigger=o?2:3,t.namespace=x.join("."),t.rnamespace=t.namespace?new RegExp("(^|\\.)"+x.join("\\.(?:.*\\.|)")+"(\\.|$)"):null,t.result=void 0,t.target||(t.target=i),n=null==n?[t]:w.makeArray(n,[t]),d=w.event.special[m]||{},o||!d.trigger||!1!==d.trigger.apply(i,n))){if(!o&&!d.noBubble&&!y(i)){for(l=d.delegateType||m,wt.test(l+m)||(s=s.parentNode);s;s=s.parentNode)v.push(s),u=s;u===(i.ownerDocument||r)&&v.push(u.defaultView||u.parentWindow||e)}a=0;while((s=v[a++])&&!t.isPropagationStopped())h=s,t.type=a>1?l:d.bindType||m,(p=(J.get(s,"events")||{})[t.type]&&J.get(s,"handle"))&&p.apply(s,n),(p=c&&s[c])&&p.apply&&Y(s)&&(t.result=p.apply(s,n),!1===t.result&&t.preventDefault());return t.type=m,o||t.isDefaultPrevented()||d._default&&!1!==d._default.apply(v.pop(),n)||!Y(i)||c&&g(i[m])&&!y(i)&&((u=i[c])&&(i[c]=null),w.event.triggered=m,t.isPropagationStopped()&&h.addEventListener(m,Tt),i[m](),t.isPropagationStopped()&&h.removeEventListener(m,Tt),w.event.triggered=void 0,u&&(i[c]=u)),t.result}},simulate:function(e,t,n){var r=w.extend(new w.Event,n,{type:e,isSimulated:!0});w.event.trigger(r,null,t)}}),w.fn.extend({trigger:function(e,t){return this.each(function(){w.event.trigger(e,t,this)})},triggerHandler:function(e,t){var n=this[0];if(n)return w.event.trigger(e,t,n,!0)}}),h.focusin||w.each({focus:"focusin",blur:"focusout"},function(e,t){var n=function(e){w.event.simulate(t,e.target,w.event.fix(e))};w.event.special[t]={setup:function(){var r=this.ownerDocument||this,i=J.access(r,t);i||r.addEventListener(e,n,!0),J.access(r,t,(i||0)+1)},teardown:function(){var r=this.ownerDocument||this,i=J.access(r,t)-1;i?J.access(r,t,i):(r.removeEventListener(e,n,!0),J.remove(r,t))}}});var Ct=e.location,Et=Date.now(),kt=/\?/;w.parseXML=function(t){var n;if(!t||"string"!=typeof t)return null;try{n=(new e.DOMParser).parseFromString(t,"text/xml")}catch(e){n=void 0}return n&&!n.getElementsByTagName("parsererror").length||w.error("Invalid XML: "+t),n};var St=/\[\]$/,Dt=/\r?\n/g,Nt=/^(?:submit|button|image|reset|file)$/i,At=/^(?:input|select|textarea|keygen)/i;function jt(e,t,n,r){var i;if(Array.isArray(t))w.each(t,function(t,i){n||St.test(e)?r(e,i):jt(e+"["+("object"==typeof i&&null!=i?t:"")+"]",i,n,r)});else if(n||"object"!==x(t))r(e,t);else for(i in t)jt(e+"["+i+"]",t[i],n,r)}w.param=function(e,t){var n,r=[],i=function(e,t){var n=g(t)?t():t;r[r.length]=encodeURIComponent(e)+"="+encodeURIComponent(null==n?"":n)};if(Array.isArray(e)||e.jquery&&!w.isPlainObject(e))w.each(e,function(){i(this.name,this.value)});else for(n in e)jt(n,e[n],t,i);return r.join("&")},w.fn.extend({serialize:function(){return w.param(this.serializeArray())},serializeArray:function(){return this.map(function(){var e=w.prop(this,"elements");return e?w.makeArray(e):this}).filter(function(){var e=this.type;return this.name&&!w(this).is(":disabled")&&At.test(this.nodeName)&&!Nt.test(e)&&(this.checked||!pe.test(e))}).map(function(e,t){var n=w(this).val();return null==n?null:Array.isArray(n)?w.map(n,function(e){return{name:t.name,value:e.replace(Dt,"\r\n")}}):{name:t.name,value:n.replace(Dt,"\r\n")}}).get()}});var qt=/%20/g,Lt=/#.*$/,Ht=/([?&])_=[^&]*/,Ot=/^(.*?):[ \t]*([^\r\n]*)$/gm,Pt=/^(?:about|app|app-storage|.+-extension|file|res|widget):$/,Mt=/^(?:GET|HEAD)$/,Rt=/^\/\//,It={},Wt={},$t="*/".concat("*"),Bt=r.createElement("a");Bt.href=Ct.href;function Ft(e){return function(t,n){"string"!=typeof t&&(n=t,t="*");var r,i=0,o=t.toLowerCase().match(M)||[];if(g(n))while(r=o[i++])"+"===r[0]?(r=r.slice(1)||"*",(e[r]=e[r]||[]).unshift(n)):(e[r]=e[r]||[]).push(n)}}function _t(e,t,n,r){var i={},o=e===Wt;function a(s){var u;return i[s]=!0,w.each(e[s]||[],function(e,s){var l=s(t,n,r);return"string"!=typeof l||o||i[l]?o?!(u=l):void 0:(t.dataTypes.unshift(l),a(l),!1)}),u}return a(t.dataTypes[0])||!i["*"]&&a("*")}function zt(e,t){var n,r,i=w.ajaxSettings.flatOptions||{};for(n in t)void 0!==t[n]&&((i[n]?e:r||(r={}))[n]=t[n]);return r&&w.extend(!0,e,r),e}function Xt(e,t,n){var r,i,o,a,s=e.contents,u=e.dataTypes;while("*"===u[0])u.shift(),void 0===r&&(r=e.mimeType||t.getResponseHeader("Content-Type"));if(r)for(i in s)if(s[i]&&s[i].test(r)){u.unshift(i);break}if(u[0]in n)o=u[0];else{for(i in n){if(!u[0]||e.converters[i+" "+u[0]]){o=i;break}a||(a=i)}o=o||a}if(o)return o!==u[0]&&u.unshift(o),n[o]}function Ut(e,t,n,r){var i,o,a,s,u,l={},c=e.dataTypes.slice();if(c[1])for(a in e.converters)l[a.toLowerCase()]=e.converters[a];o=c.shift();while(o)if(e.responseFields[o]&&(n[e.responseFields[o]]=t),!u&&r&&e.dataFilter&&(t=e.dataFilter(t,e.dataType)),u=o,o=c.shift())if("*"===o)o=u;else if("*"!==u&&u!==o){if(!(a=l[u+" "+o]||l["* "+o]))for(i in l)if((s=i.split(" "))[1]===o&&(a=l[u+" "+s[0]]||l["* "+s[0]])){!0===a?a=l[i]:!0!==l[i]&&(o=s[0],c.unshift(s[1]));break}if(!0!==a)if(a&&e["throws"])t=a(t);else try{t=a(t)}catch(e){return{state:"parsererror",error:a?e:"No conversion from "+u+" to "+o}}}return{state:"success",data:t}}w.extend({active:0,lastModified:{},etag:{},ajaxSettings:{url:Ct.href,type:"GET",isLocal:Pt.test(Ct.protocol),global:!0,processData:!0,async:!0,contentType:"application/x-www-form-urlencoded; charset=UTF-8",accepts:{"*":$t,text:"text/plain",html:"text/html",xml:"application/xml, text/xml",json:"application/json, text/javascript"},contents:{xml:/\bxml\b/,html:/\bhtml/,json:/\bjson\b/},responseFields:{xml:"responseXML",text:"responseText",json:"responseJSON"},converters:{"* text":String,"text html":!0,"text json":JSON.parse,"text xml":w.parseXML},flatOptions:{url:!0,context:!0}},ajaxSetup:function(e,t){return t?zt(zt(e,w.ajaxSettings),t):zt(w.ajaxSettings,e)},ajaxPrefilter:Ft(It),ajaxTransport:Ft(Wt),ajax:function(t,n){"object"==typeof t&&(n=t,t=void 0),n=n||{};var i,o,a,s,u,l,c,f,p,d,h=w.ajaxSetup({},n),g=h.context||h,y=h.context&&(g.nodeType||g.jquery)?w(g):w.event,v=w.Deferred(),m=w.Callbacks("once memory"),x=h.statusCode||{},b={},T={},C="canceled",E={readyState:0,getResponseHeader:function(e){var t;if(c){if(!s){s={};while(t=Ot.exec(a))s[t[1].toLowerCase()]=t[2]}t=s[e.toLowerCase()]}return null==t?null:t},getAllResponseHeaders:function(){return c?a:null},setRequestHeader:function(e,t){return null==c&&(e=T[e.toLowerCase()]=T[e.toLowerCase()]||e,b[e]=t),this},overrideMimeType:function(e){return null==c&&(h.mimeType=e),this},statusCode:function(e){var t;if(e)if(c)E.always(e[E.status]);else for(t in e)x[t]=[x[t],e[t]];return this},abort:function(e){var t=e||C;return i&&i.abort(t),k(0,t),this}};if(v.promise(E),h.url=((t||h.url||Ct.href)+"").replace(Rt,Ct.protocol+"//"),h.type=n.method||n.type||h.method||h.type,h.dataTypes=(h.dataType||"*").toLowerCase().match(M)||[""],null==h.crossDomain){l=r.createElement("a");try{l.href=h.url,l.href=l.href,h.crossDomain=Bt.protocol+"//"+Bt.host!=l.protocol+"//"+l.host}catch(e){h.crossDomain=!0}}if(h.data&&h.processData&&"string"!=typeof h.data&&(h.data=w.param(h.data,h.traditional)),_t(It,h,n,E),c)return E;(f=w.event&&h.global)&&0==w.active++&&w.event.trigger("ajaxStart"),h.type=h.type.toUpperCase(),h.hasContent=!Mt.test(h.type),o=h.url.replace(Lt,""),h.hasContent?h.data&&h.processData&&0===(h.contentType||"").indexOf("application/x-www-form-urlencoded")&&(h.data=h.data.replace(qt,"+")):(d=h.url.slice(o.length),h.data&&(h.processData||"string"==typeof h.data)&&(o+=(kt.test(o)?"&":"?")+h.data,delete h.data),!1===h.cache&&(o=o.replace(Ht,"$1"),d=(kt.test(o)?"&":"?")+"_="+Et+++d),h.url=o+d),h.ifModified&&(w.lastModified[o]&&E.setRequestHeader("If-Modified-Since",w.lastModified[o]),w.etag[o]&&E.setRequestHeader("If-None-Match",w.etag[o])),(h.data&&h.hasContent&&!1!==h.contentType||n.contentType)&&E.setRequestHeader("Content-Type",h.contentType),E.setRequestHeader("Accept",h.dataTypes[0]&&h.accepts[h.dataTypes[0]]?h.accepts[h.dataTypes[0]]+("*"!==h.dataTypes[0]?", "+$t+"; q=0.01":""):h.accepts["*"]);for(p in h.headers)E.setRequestHeader(p,h.headers[p]);if(h.beforeSend&&(!1===h.beforeSend.call(g,E,h)||c))return E.abort();if(C="abort",m.add(h.complete),E.done(h.success),E.fail(h.error),i=_t(Wt,h,n,E)){if(E.readyState=1,f&&y.trigger("ajaxSend",[E,h]),c)return E;h.async&&h.timeout>0&&(u=e.setTimeout(function(){E.abort("timeout")},h.timeout));try{c=!1,i.send(b,k)}catch(e){if(c)throw e;k(-1,e)}}else k(-1,"No Transport");function k(t,n,r,s){var l,p,d,b,T,C=n;c||(c=!0,u&&e.clearTimeout(u),i=void 0,a=s||"",E.readyState=t>0?4:0,l=t>=200&&t<300||304===t,r&&(b=Xt(h,E,r)),b=Ut(h,b,E,l),l?(h.ifModified&&((T=E.getResponseHeader("Last-Modified"))&&(w.lastModified[o]=T),(T=E.getResponseHeader("etag"))&&(w.etag[o]=T)),204===t||"HEAD"===h.type?C="nocontent":304===t?C="notmodified":(C=b.state,p=b.data,l=!(d=b.error))):(d=C,!t&&C||(C="error",t<0&&(t=0))),E.status=t,E.statusText=(n||C)+"",l?v.resolveWith(g,[p,C,E]):v.rejectWith(g,[E,C,d]),E.statusCode(x),x=void 0,f&&y.trigger(l?"ajaxSuccess":"ajaxError",[E,h,l?p:d]),m.fireWith(g,[E,C]),f&&(y.trigger("ajaxComplete",[E,h]),--w.active||w.event.trigger("ajaxStop")))}return E},getJSON:function(e,t,n){return w.get(e,t,n,"json")},getScript:function(e,t){return w.get(e,void 0,t,"script")}}),w.each(["get","post"],function(e,t){w[t]=function(e,n,r,i){return g(n)&&(i=i||r,r=n,n=void 0),w.ajax(w.extend({url:e,type:t,dataType:i,data:n,success:r},w.isPlainObject(e)&&e))}}),w._evalUrl=function(e){return w.ajax({url:e,type:"GET",dataType:"script",cache:!0,async:!1,global:!1,"throws":!0})},w.fn.extend({wrapAll:function(e){var t;return this[0]&&(g(e)&&(e=e.call(this[0])),t=w(e,this[0].ownerDocument).eq(0).clone(!0),this[0].parentNode&&t.insertBefore(this[0]),t.map(function(){var e=this;while(e.firstElementChild)e=e.firstElementChild;return e}).append(this)),this},wrapInner:function(e){return g(e)?this.each(function(t){w(this).wrapInner(e.call(this,t))}):this.each(function(){var t=w(this),n=t.contents();n.length?n.wrapAll(e):t.append(e)})},wrap:function(e){var t=g(e);return this.each(function(n){w(this).wrapAll(t?e.call(this,n):e)})},unwrap:function(e){return this.parent(e).not("body").each(function(){w(this).replaceWith(this.childNodes)}),this}}),w.expr.pseudos.hidden=function(e){return!w.expr.pseudos.visible(e)},w.expr.pseudos.visible=function(e){return!!(e.offsetWidth||e.offsetHeight||e.getClientRects().length)},w.ajaxSettings.xhr=function(){try{return new e.XMLHttpRequest}catch(e){}};var Vt={0:200,1223:204},Gt=w.ajaxSettings.xhr();h.cors=!!Gt&&"withCredentials"in Gt,h.ajax=Gt=!!Gt,w.ajaxTransport(function(t){var n,r;if(h.cors||Gt&&!t.crossDomain)return{send:function(i,o){var a,s=t.xhr();if(s.open(t.type,t.url,t.async,t.username,t.password),t.xhrFields)for(a in t.xhrFields)s[a]=t.xhrFields[a];t.mimeType&&s.overrideMimeType&&s.overrideMimeType(t.mimeType),t.crossDomain||i["X-Requested-With"]||(i["X-Requested-With"]="XMLHttpRequest");for(a in i)s.setRequestHeader(a,i[a]);n=function(e){return function(){n&&(n=r=s.onload=s.onerror=s.onabort=s.ontimeout=s.onreadystatechange=null,"abort"===e?s.abort():"error"===e?"number"!=typeof s.status?o(0,"error"):o(s.status,s.statusText):o(Vt[s.status]||s.status,s.statusText,"text"!==(s.responseType||"text")||"string"!=typeof s.responseText?{binary:s.response}:{text:s.responseText},s.getAllResponseHeaders()))}},s.onload=n(),r=s.onerror=s.ontimeout=n("error"),void 0!==s.onabort?s.onabort=r:s.onreadystatechange=function(){4===s.readyState&&e.setTimeout(function(){n&&r()})},n=n("abort");try{s.send(t.hasContent&&t.data||null)}catch(e){if(n)throw e}},abort:function(){n&&n()}}}),w.ajaxPrefilter(function(e){e.crossDomain&&(e.contents.script=!1)}),w.ajaxSetup({accepts:{script:"text/javascript, application/javascript, application/ecmascript, application/x-ecmascript"},contents:{script:/\b(?:java|ecma)script\b/},converters:{"text script":function(e){return w.globalEval(e),e}}}),w.ajaxPrefilter("script",function(e){void 0===e.cache&&(e.cache=!1),e.crossDomain&&(e.type="GET")}),w.ajaxTransport("script",function(e){if(e.crossDomain){var t,n;return{send:function(i,o){t=w(" + - - + diff --git a/mayan/apps/documents/models.py b/mayan/apps/documents/models.py index f9a0ce987a..6ac88b495f 100644 --- a/mayan/apps/documents/models.py +++ b/mayan/apps/documents/models.py @@ -261,6 +261,8 @@ class Document(models.Model): latest_version = self.latest_version if latest_version: return latest_version.get_api_image_url() + else: + return '#' def invalidate_cache(self): for document_version in self.versions.all(): @@ -430,6 +432,8 @@ class DocumentVersion(models.Model): first_page = self.pages.first() if first_page: return first_page.get_api_image_url() + else: + return '#' def get_rendered_string(self, preserve_extension=False): if preserve_extension: diff --git a/mayan/apps/documents/templates/documents/widgets/document_thumbnail.html b/mayan/apps/documents/templates/documents/widgets/document_thumbnail.html index 2feaad7425..afd1f35f12 100644 --- a/mayan/apps/documents/templates/documents/widgets/document_thumbnail.html +++ b/mayan/apps/documents/templates/documents/widgets/document_thumbnail.html @@ -6,7 +6,8 @@ data-caption="{{ instance }} " {% endif %} href="{{ instance.get_api_image_url }}?width={{ size_preview_width }}&height={{ size_preview_height }}" - {% if gallery_name %}rel="{{ gallery_name }}"{% endif %} + data-type="image" + {% if gallery_name %}data-fancybox="{{ gallery_name }}"{% endif %} > {% with 'lazy-load' as image_classes %} {% with 'true' as display_full_width %}