Jcrop-0.9.13/000077500000000000000000000000001236134236200126635ustar00rootroot00000000000000Jcrop-0.9.13/MIT-LICENSE.txt000066400000000000000000000021171236134236200151360ustar00rootroot00000000000000Copyright (c) 2011 Tapmodo Interactive LLC, http://github.com/tapmodo/Jcrop Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Jcrop-0.9.13/README.md000066400000000000000000000043151236134236200141450ustar00rootroot00000000000000Jcrop Image Cropping Plugin =========================== Jcrop is the quick and easy way to add image cropping functionality to your web application. It combines the ease-of-use of a typical jQuery plugin with a powerful cross-platform DHTML cropping engine that is faithful to familiar desktop graphics applications. Cross-platform Compatibility ---------------------------- * Firefox 2+ * Safari 3+ * Opera 9.5+ * Google Chrome 0.2+ * Internet Explorer 6+ Feature Overview ---------------- * Attaches unobtrusively to any image * Supports aspect ratio locking * Supports minSize/maxSize setting * Callbacks for selection done, or while moving * Keyboard support for nudging selection * API features to create interactivity, including animation * Support for CSS styling * Experimental touch-screen support (iOS, Android, etc) Contributors ============ **Special thanks to the following contributors:** * [Bruno Agutoli](mailto:brunotla1@gmail.com) * dhorrigan * Phil-B * jaymecd * all others who have committed their time and effort to help improve Jcrop MIT License =========== **Jcrop is free software under MIT License.** #### Copyright (c) 2008-2014 Tapmodo Interactive LLC,
http://github.com/tapmodo/Jcrop Permission is hereby granted, free of charge, to any person obtaining a copy of this software and associated documentation files (the "Software"), to deal in the Software without restriction, including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, subject to the following conditions: The above copyright notice and this permission notice shall be included in all copies or substantial portions of the Software. THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE. Jcrop-0.9.13/bower.json000066400000000000000000000007171236134236200147010ustar00rootroot00000000000000{ "name": "Jcrop", "version": "0.9.12", "homepage": "https://github.com/tapmodo/Jcrop", "authors": [ "Tapmodo " ], "description": "Image cropping plugin for jQuery", "main": [ "js/jquery.Jcrop.js", "css/jquery.Jcrop.css" ], "keywords": [ "img", "image", "form", "crop", "cropping", "cropper" ], "license": "MIT", "ignore": [ "**/.*", "build", "demos", "node_modules", "bower_components" ] } Jcrop-0.9.13/css/000077500000000000000000000000001236134236200134535ustar00rootroot00000000000000Jcrop-0.9.13/css/Jcrop.gif000066400000000000000000000005111236134236200152140ustar00rootroot00000000000000GIF89a! NETSCAPE2.0! ,  kTLY,! ,.j^[С쥵! ,bbдXi}! ,bzbhX{! , !)kTLY,! ,j^[С쥵! ,`bдXi}! ,`zbhX{;Jcrop-0.9.13/css/jquery.Jcrop.css000066400000000000000000000064131236134236200165640ustar00rootroot00000000000000/* jquery.Jcrop.css v0.9.12 - MIT License */ /* The outer-most container in a typical Jcrop instance If you are having difficulty with formatting related to styles on a parent element, place any fixes here or in a like selector You can also style this element if you want to add a border, etc A better method for styling can be seen below with .jcrop-light (Add a class to the holder and style elements for that extended class) */ .jcrop-holder { direction: ltr; text-align: left; /* IE10 touch compatibility */ -ms-touch-action: none; } /* Selection Border */ .jcrop-vline, .jcrop-hline { background: #ffffff url("Jcrop.gif"); font-size: 0; position: absolute; } .jcrop-vline { height: 100%; width: 1px !important; } .jcrop-vline.right { right: 0; } .jcrop-hline { height: 1px !important; width: 100%; } .jcrop-hline.bottom { bottom: 0; } /* Invisible click targets */ .jcrop-tracker { height: 100%; width: 100%; /* "turn off" link highlight */ -webkit-tap-highlight-color: transparent; /* disable callout, image save panel */ -webkit-touch-callout: none; /* disable cut copy paste */ -webkit-user-select: none; } /* Selection Handles */ .jcrop-handle { background-color: #333333; border: 1px #eeeeee solid; width: 7px; height: 7px; font-size: 1px; } .jcrop-handle.ord-n { left: 50%; margin-left: -4px; margin-top: -4px; top: 0; } .jcrop-handle.ord-s { bottom: 0; left: 50%; margin-bottom: -4px; margin-left: -4px; } .jcrop-handle.ord-e { margin-right: -4px; margin-top: -4px; right: 0; top: 50%; } .jcrop-handle.ord-w { left: 0; margin-left: -4px; margin-top: -4px; top: 50%; } .jcrop-handle.ord-nw { left: 0; margin-left: -4px; margin-top: -4px; top: 0; } .jcrop-handle.ord-ne { margin-right: -4px; margin-top: -4px; right: 0; top: 0; } .jcrop-handle.ord-se { bottom: 0; margin-bottom: -4px; margin-right: -4px; right: 0; } .jcrop-handle.ord-sw { bottom: 0; left: 0; margin-bottom: -4px; margin-left: -4px; } /* Dragbars */ .jcrop-dragbar.ord-n, .jcrop-dragbar.ord-s { height: 7px; width: 100%; } .jcrop-dragbar.ord-e, .jcrop-dragbar.ord-w { height: 100%; width: 7px; } .jcrop-dragbar.ord-n { margin-top: -4px; } .jcrop-dragbar.ord-s { bottom: 0; margin-bottom: -4px; } .jcrop-dragbar.ord-e { margin-right: -4px; right: 0; } .jcrop-dragbar.ord-w { margin-left: -4px; } /* The "jcrop-light" class/extension */ .jcrop-light .jcrop-vline, .jcrop-light .jcrop-hline { background: #ffffff; filter: alpha(opacity=70) !important; opacity: .70!important; } .jcrop-light .jcrop-handle { -moz-border-radius: 3px; -webkit-border-radius: 3px; background-color: #000000; border-color: #ffffff; border-radius: 3px; } /* The "jcrop-dark" class/extension */ .jcrop-dark .jcrop-vline, .jcrop-dark .jcrop-hline { background: #000000; filter: alpha(opacity=70) !important; opacity: 0.7 !important; } .jcrop-dark .jcrop-handle { -moz-border-radius: 3px; -webkit-border-radius: 3px; background-color: #ffffff; border-color: #000000; border-radius: 3px; } /* Simple macro to turn off the antlines */ .solid-line .jcrop-vline, .solid-line .jcrop-hline { background: #ffffff; } /* Fix for twitter bootstrap et al. */ .jcrop-holder img, img.jcrop-preview { max-width: none; } Jcrop-0.9.13/css/jquery.Jcrop.min.css000066400000000000000000000040231236134236200173410ustar00rootroot00000000000000/* jquery.Jcrop.min.css v0.9.12 (build:20140524) */ .jcrop-holder{direction:ltr;text-align:left;-ms-touch-action:none}.jcrop-hline,.jcrop-vline{background:#fff url(Jcrop.gif);font-size:0;position:absolute}.jcrop-vline{height:100%;width:1px!important}.jcrop-vline.right{right:0}.jcrop-hline{height:1px!important;width:100%}.jcrop-hline.bottom{bottom:0}.jcrop-tracker{height:100%;width:100%;-webkit-tap-highlight-color:transparent;-webkit-touch-callout:none;-webkit-user-select:none}.jcrop-handle{background-color:#333;border:1px #eee solid;width:7px;height:7px;font-size:1px}.jcrop-handle.ord-n{left:50%;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-s{bottom:0;left:50%;margin-bottom:-4px;margin-left:-4px}.jcrop-handle.ord-e{margin-right:-4px;margin-top:-4px;right:0;top:50%}.jcrop-handle.ord-w{left:0;margin-left:-4px;margin-top:-4px;top:50%}.jcrop-handle.ord-nw{left:0;margin-left:-4px;margin-top:-4px;top:0}.jcrop-handle.ord-ne{margin-right:-4px;margin-top:-4px;right:0;top:0}.jcrop-handle.ord-se{bottom:0;margin-bottom:-4px;margin-right:-4px;right:0}.jcrop-handle.ord-sw{bottom:0;left:0;margin-bottom:-4px;margin-left:-4px}.jcrop-dragbar.ord-n,.jcrop-dragbar.ord-s{height:7px;width:100%}.jcrop-dragbar.ord-e,.jcrop-dragbar.ord-w{height:100%;width:7px}.jcrop-dragbar.ord-n{margin-top:-4px}.jcrop-dragbar.ord-s{bottom:0;margin-bottom:-4px}.jcrop-dragbar.ord-e{margin-right:-4px;right:0}.jcrop-dragbar.ord-w{margin-left:-4px}.jcrop-light .jcrop-hline,.jcrop-light .jcrop-vline{background:#fff;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-light .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#000;border-color:#fff;border-radius:3px}.jcrop-dark .jcrop-hline,.jcrop-dark .jcrop-vline{background:#000;filter:alpha(opacity=70)!important;opacity:.7!important}.jcrop-dark .jcrop-handle{-moz-border-radius:3px;-webkit-border-radius:3px;background-color:#fff;border-color:#000;border-radius:3px}.solid-line .jcrop-hline,.solid-line .jcrop-vline{background:#fff}.jcrop-holder img,img.jcrop-preview{max-width:none}Jcrop-0.9.13/demos/000077500000000000000000000000001236134236200137725ustar00rootroot00000000000000Jcrop-0.9.13/demos/crop.php000066400000000000000000000055671236134236200154630ustar00rootroot00000000000000 Live Cropping Demo

An example server-side crop script. Hidden form values are set when a selection is made. If you press the Crop Image button, the form will be submitted and a 150x150 thumbnail will be dumped to the browser. Try it!

Jcrop-0.9.13/demos/demo_files/000077500000000000000000000000001236134236200161005ustar00rootroot00000000000000Jcrop-0.9.13/demos/demo_files/demos.css000066400000000000000000000057441236134236200177330ustar00rootroot00000000000000/* Jcrop Demo Site CSS - 2014 Tapmodo Interactive LLC - MIT License Not required to run Jcrop - contains twitter bootstrap code */ /* To build these CSS files you must have LESS and run * $ git submodule init * $ git submodule update * ...to pull in the Twitter bootstrap files */ .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } /* JCROP DEMOS CSS */ li small { color: #f07878; } .inline-labels label { display: inline; } div#interface.span3 fieldset { margin-bottom: 1.5em; } div#interface.span3 fieldset legend { margin-bottom: 2px; padding-bottom: 2px; line-height: 1.2; } .article h1 { color: #333; margin-top: .2em; } .jc-demo { text-align: center; } .jcropper-holder { border: 1px #bbb solid; } .jc-demo-box { text-align: left; margin: 2em auto; background: white; border: 1px #bbb solid; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); -moz-box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); box-shadow: 1px 1px 10px rgba(0, 0, 0, 0.25); padding: 1em 2em 2em; } form { margin: 1.5em 0; } form.coords label { margin-right: 1em; font-weight: bold; color: #900; } form.coords input { width: 3em; } .ui-widget-overlay { opacity: 0.80; filter: alpha(opacity=70); } .jc-dialog { padding-top: 1em; } .ui-dialog p tt { color: yellow; } .jcrop-light .jcrop-selection { -moz-box-shadow: 0px 0px 15px #999; /* Firefox */ -webkit-box-shadow: 0px 0px 15px #999; /* Safari, Chrome */ box-shadow: 0px 0px 15px #999; /* CSS3 */ } .jcrop-dark .jcrop-selection { -moz-box-shadow: 0px 0px 15px #000; /* Firefox */ -webkit-box-shadow: 0px 0px 15px #000; /* Safari, Chrome */ box-shadow: 0px 0px 15px #000; /* CSS3 */ } .jcrop-fancy .jcrop-handle.ord-e { -webkit-border-top-left-radius: 0px; -webkit-border-bottom-left-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-w { -webkit-border-top-right-radius: 0px; -webkit-border-bottom-right-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-nw { -webkit-border-bottom-right-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-ne { -webkit-border-bottom-left-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-sw { -webkit-border-top-right-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-se { -webkit-border-top-left-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-s { -webkit-border-top-left-radius: 0px; -webkit-border-top-right-radius: 0px; } .jcrop-fancy .jcrop-handle.ord-n { -webkit-border-bottom-left-radius: 0px; -webkit-border-bottom-right-radius: 0px; } .description { margin: 16px 0; } .jcrop-droptarget canvas { background-color: #f0f0f0; } Jcrop-0.9.13/demos/demo_files/main.css000066400000000000000000003673611236134236200175560ustar00rootroot00000000000000/* Jcrop Demo Site CSS - 2014 Tapmodo Interactive LLC - MIT License Not required to run Jcrop - contains twitter bootstrap code */ /*! * Bootstrap v2.2.1 * * Copyright 2012 Twitter, Inc * Licensed under the Apache License v2.0 * http://www.apache.org/licenses/LICENSE-2.0 * * Designed and built with all the love in the world @twitter by @mdo and @fat. */ article, aside, details, figcaption, figure, footer, header, hgroup, nav, section { display: block; } audio, canvas, video { display: inline-block; *display: inline; *zoom: 1; } audio:not([controls]) { display: none; } html { font-size: 100%; -webkit-text-size-adjust: 100%; -ms-text-size-adjust: 100%; } a:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } a:hover, a:active { outline: 0; } sub, sup { position: relative; font-size: 75%; line-height: 0; vertical-align: baseline; } sup { top: -0.5em; } sub { bottom: -0.25em; } button, input, select, textarea { margin: 0; font-size: 100%; vertical-align: middle; } button, input { *overflow: visible; line-height: normal; } button::-moz-focus-inner, input::-moz-focus-inner { padding: 0; border: 0; } button, html input[type="button"], input[type="reset"], input[type="submit"] { -webkit-appearance: button; cursor: pointer; } input[type="search"] { -webkit-box-sizing: content-box; -moz-box-sizing: content-box; box-sizing: content-box; -webkit-appearance: textfield; } input[type="search"]::-webkit-search-decoration, input[type="search"]::-webkit-search-cancel-button { -webkit-appearance: none; } textarea { overflow: auto; vertical-align: top; } .clearfix { *zoom: 1; } .clearfix:before, .clearfix:after { display: table; content: ""; line-height: 0; } .clearfix:after { clear: both; } .hide-text { font: 0/0 a; color: transparent; text-shadow: none; background-color: transparent; border: 0; } .input-block-level { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } body { margin: 0; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 14px; line-height: 20px; color: #333333; background-color: #ffffff; } a { color: #0088cc; text-decoration: none; } a:hover, a:focus { color: #005580; text-decoration: underline; } .img-rounded { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .img-polaroid { padding: 4px; background-color: #fff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); -moz-box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); box-shadow: 0 1px 3px rgba(0, 0, 0, 0.1); } .img-circle { -webkit-border-radius: 500px; -moz-border-radius: 500px; border-radius: 500px; } .row { margin-left: -20px; *zoom: 1; } .row:before, .row:after { display: table; content: ""; line-height: 0; } .row:after { clear: both; } [class*="span"] { float: left; min-height: 1px; margin-left: 20px; } .container, .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .span12 { width: 940px; } .span11 { width: 860px; } .span10 { width: 780px; } .span9 { width: 700px; } .span8 { width: 620px; } .span7 { width: 540px; } .span6 { width: 460px; } .span5 { width: 380px; } .span4 { width: 300px; } .span3 { width: 220px; } .span2 { width: 140px; } .span1 { width: 60px; } .offset12 { margin-left: 980px; } .offset11 { margin-left: 900px; } .offset10 { margin-left: 820px; } .offset9 { margin-left: 740px; } .offset8 { margin-left: 660px; } .offset7 { margin-left: 580px; } .offset6 { margin-left: 500px; } .offset5 { margin-left: 420px; } .offset4 { margin-left: 340px; } .offset3 { margin-left: 260px; } .offset2 { margin-left: 180px; } .offset1 { margin-left: 100px; } .row-fluid { width: 100%; *zoom: 1; } .row-fluid:before, .row-fluid:after { display: table; content: ""; line-height: 0; } .row-fluid:after { clear: both; } .row-fluid [class*="span"] { display: block; width: 100%; min-height: 30px; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; float: left; margin-left: 2.12765957%; *margin-left: 2.07446809%; } .row-fluid [class*="span"]:first-child { margin-left: 0; } .row-fluid .controls-row [class*="span"] + [class*="span"] { margin-left: 2.12765957%; } .row-fluid .span12 { width: 100%; *width: 99.94680851%; } .row-fluid .span11 { width: 91.4893617%; *width: 91.43617021%; } .row-fluid .span10 { width: 82.9787234%; *width: 82.92553191%; } .row-fluid .span9 { width: 74.46808511%; *width: 74.41489362%; } .row-fluid .span8 { width: 65.95744681%; *width: 65.90425532%; } .row-fluid .span7 { width: 57.44680851%; *width: 57.39361702%; } .row-fluid .span6 { width: 48.93617021%; *width: 48.88297872%; } .row-fluid .span5 { width: 40.42553191%; *width: 40.37234043%; } .row-fluid .span4 { width: 31.91489362%; *width: 31.86170213%; } .row-fluid .span3 { width: 23.40425532%; *width: 23.35106383%; } .row-fluid .span2 { width: 14.89361702%; *width: 14.84042553%; } .row-fluid .span1 { width: 6.38297872%; *width: 6.32978723%; } .row-fluid .offset12 { margin-left: 104.25531915%; *margin-left: 104.14893617%; } .row-fluid .offset12:first-child { margin-left: 102.12765957%; *margin-left: 102.0212766%; } .row-fluid .offset11 { margin-left: 95.74468085%; *margin-left: 95.63829787%; } .row-fluid .offset11:first-child { margin-left: 93.61702128%; *margin-left: 93.5106383%; } .row-fluid .offset10 { margin-left: 87.23404255%; *margin-left: 87.12765957%; } .row-fluid .offset10:first-child { margin-left: 85.10638298%; *margin-left: 85%; } .row-fluid .offset9 { margin-left: 78.72340426%; *margin-left: 78.61702128%; } .row-fluid .offset9:first-child { margin-left: 76.59574468%; *margin-left: 76.4893617%; } .row-fluid .offset8 { margin-left: 70.21276596%; *margin-left: 70.10638298%; } .row-fluid .offset8:first-child { margin-left: 68.08510638%; *margin-left: 67.9787234%; } .row-fluid .offset7 { margin-left: 61.70212766%; *margin-left: 61.59574468%; } .row-fluid .offset7:first-child { margin-left: 59.57446809%; *margin-left: 59.46808511%; } .row-fluid .offset6 { margin-left: 53.19148936%; *margin-left: 53.08510638%; } .row-fluid .offset6:first-child { margin-left: 51.06382979%; *margin-left: 50.95744681%; } .row-fluid .offset5 { margin-left: 44.68085106%; *margin-left: 44.57446809%; } .row-fluid .offset5:first-child { margin-left: 42.55319149%; *margin-left: 42.44680851%; } .row-fluid .offset4 { margin-left: 36.17021277%; *margin-left: 36.06382979%; } .row-fluid .offset4:first-child { margin-left: 34.04255319%; *margin-left: 33.93617021%; } .row-fluid .offset3 { margin-left: 27.65957447%; *margin-left: 27.55319149%; } .row-fluid .offset3:first-child { margin-left: 25.53191489%; *margin-left: 25.42553191%; } .row-fluid .offset2 { margin-left: 19.14893617%; *margin-left: 19.04255319%; } .row-fluid .offset2:first-child { margin-left: 17.0212766%; *margin-left: 16.91489362%; } .row-fluid .offset1 { margin-left: 10.63829787%; *margin-left: 10.53191489%; } .row-fluid .offset1:first-child { margin-left: 8.5106383%; *margin-left: 8.40425532%; } [class*="span"].hide, .row-fluid [class*="span"].hide { display: none; } [class*="span"].pull-right, .row-fluid [class*="span"].pull-right { float: right; } .container { margin-right: auto; margin-left: auto; *zoom: 1; } .container:before, .container:after { display: table; content: ""; line-height: 0; } .container:after { clear: both; } .container-fluid { padding-right: 20px; padding-left: 20px; *zoom: 1; } .container-fluid:before, .container-fluid:after { display: table; content: ""; line-height: 0; } .container-fluid:after { clear: both; } p { margin: 0 0 10px; } .lead { margin-bottom: 20px; font-size: 21px; font-weight: 200; line-height: 30px; } small { font-size: 85%; } strong { font-weight: bold; } em { font-style: italic; } cite { font-style: normal; } .muted { color: #999999; } a.muted:hover, a.muted:focus { color: #808080; } .text-warning { color: #c09853; } a.text-warning:hover, a.text-warning:focus { color: #a47e3c; } .text-error { color: #b94a48; } a.text-error:hover, a.text-error:focus { color: #953b39; } .text-info { color: #3a87ad; } a.text-info:hover, a.text-info:focus { color: #2d6987; } .text-success { color: #468847; } a.text-success:hover, a.text-success:focus { color: #356635; } .text-left { text-align: left; } .text-right { text-align: right; } .text-center { text-align: center; } h1, h2, h3, h4, h5, h6 { margin: 10px 0; font-family: inherit; font-weight: bold; line-height: 20px; color: inherit; text-rendering: optimizelegibility; } h1 small, h2 small, h3 small, h4 small, h5 small, h6 small { font-weight: normal; line-height: 1; color: #999999; } h1, h2, h3 { line-height: 40px; } h1 { font-size: 38.5px; } h2 { font-size: 31.5px; } h3 { font-size: 24.5px; } h4 { font-size: 17.5px; } h5 { font-size: 14px; } h6 { font-size: 11.9px; } h1 small { font-size: 24.5px; } h2 small { font-size: 17.5px; } h3 small { font-size: 14px; } h4 small { font-size: 14px; } .page-header { padding-bottom: 9px; margin: 20px 0 30px; border-bottom: 1px solid #eeeeee; } ul, ol { padding: 0; margin: 0 0 10px 25px; } ul ul, ul ol, ol ol, ol ul { margin-bottom: 0; } li { line-height: 20px; } ul.unstyled, ol.unstyled { margin-left: 0; list-style: none; } ul.inline, ol.inline { margin-left: 0; list-style: none; } ul.inline > li, ol.inline > li { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; padding-left: 5px; padding-right: 5px; } dl { margin-bottom: 20px; } dt, dd { line-height: 20px; } dt { font-weight: bold; } dd { margin-left: 10px; } .dl-horizontal { *zoom: 1; } .dl-horizontal:before, .dl-horizontal:after { display: table; content: ""; line-height: 0; } .dl-horizontal:after { clear: both; } .dl-horizontal dt { float: left; width: 160px; clear: left; text-align: right; overflow: hidden; text-overflow: ellipsis; white-space: nowrap; } .dl-horizontal dd { margin-left: 180px; } hr { margin: 20px 0; border: 0; border-top: 1px solid #eeeeee; border-bottom: 1px solid #ffffff; } abbr[title], abbr[data-original-title] { cursor: help; border-bottom: 1px dotted #999999; } abbr.initialism { font-size: 90%; text-transform: uppercase; } blockquote { padding: 0 0 0 15px; margin: 0 0 20px; border-left: 5px solid #eeeeee; } blockquote p { margin-bottom: 0; font-size: 17.5px; font-weight: 300; line-height: 1.25; } blockquote small { display: block; line-height: 20px; color: #999999; } blockquote small:before { content: '\2014 \00A0'; } blockquote.pull-right { float: right; padding-right: 15px; padding-left: 0; border-right: 5px solid #eeeeee; border-left: 0; } blockquote.pull-right p, blockquote.pull-right small { text-align: right; } blockquote.pull-right small:before { content: ''; } blockquote.pull-right small:after { content: '\00A0 \2014'; } q:before, q:after, blockquote:before, blockquote:after { content: ""; } address { display: block; margin-bottom: 20px; font-style: normal; line-height: 20px; } code, pre { padding: 0 3px 2px; font-family: Monaco, Menlo, Consolas, "Courier New", monospace; font-size: 12px; color: #333333; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } code { padding: 2px 4px; color: #d14; background-color: #f7f7f9; border: 1px solid #e1e1e8; white-space: nowrap; } pre { display: block; padding: 9.5px; margin: 0 0 10px; font-size: 13px; line-height: 20px; word-break: break-all; word-wrap: break-word; white-space: pre; white-space: pre-wrap; background-color: #f5f5f5; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.15); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } pre.prettyprint { margin-bottom: 20px; } pre code { padding: 0; color: inherit; white-space: pre; white-space: pre-wrap; background-color: transparent; border: 0; } .pre-scrollable { max-height: 340px; overflow-y: scroll; } form { margin: 0 0 20px; } fieldset { padding: 0; margin: 0; border: 0; } legend { display: block; width: 100%; padding: 0; margin-bottom: 20px; font-size: 21px; line-height: 40px; color: #333333; border: 0; border-bottom: 1px solid #e5e5e5; } legend small { font-size: 15px; color: #999999; } label, input, button, select, textarea { font-size: 14px; font-weight: normal; line-height: 20px; } input, button, select, textarea { font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; } label { display: block; margin-bottom: 5px; } select, textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { display: inline-block; height: 20px; padding: 4px 6px; margin-bottom: 10px; font-size: 14px; line-height: 20px; color: #555555; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; vertical-align: middle; } input, textarea, .uneditable-input { width: 206px; } textarea { height: auto; } textarea, input[type="text"], input[type="password"], input[type="datetime"], input[type="datetime-local"], input[type="date"], input[type="month"], input[type="time"], input[type="week"], input[type="number"], input[type="email"], input[type="url"], input[type="search"], input[type="tel"], input[type="color"], .uneditable-input { background-color: #ffffff; border: 1px solid #cccccc; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -webkit-transition: border linear .2s, box-shadow linear .2s; -moz-transition: border linear .2s, box-shadow linear .2s; -o-transition: border linear .2s, box-shadow linear .2s; transition: border linear .2s, box-shadow linear .2s; } textarea:focus, input[type="text"]:focus, input[type="password"]:focus, input[type="datetime"]:focus, input[type="datetime-local"]:focus, input[type="date"]:focus, input[type="month"]:focus, input[type="time"]:focus, input[type="week"]:focus, input[type="number"]:focus, input[type="email"]:focus, input[type="url"]:focus, input[type="search"]:focus, input[type="tel"]:focus, input[type="color"]:focus, .uneditable-input:focus { border-color: rgba(82, 168, 236, 0.8); outline: 0; outline: thin dotted \9; /* IE6-9 */ -webkit-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); -moz-box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); box-shadow: inset 0 1px 1px rgba(0,0,0,.075), 0 0 8px rgba(82,168,236,.6); } input[type="radio"], input[type="checkbox"] { margin: 4px 0 0; *margin-top: 0; /* IE7 */ margin-top: 1px \9; /* IE8-9 */ line-height: normal; } input[type="file"], input[type="image"], input[type="submit"], input[type="reset"], input[type="button"], input[type="radio"], input[type="checkbox"] { width: auto; } select, input[type="file"] { height: 30px; /* In IE7, the height of the select element cannot be changed by height, only font-size */ *margin-top: 4px; /* For IE7, add top margin to align select with labels */ line-height: 30px; } select { width: 220px; border: 1px solid #cccccc; background-color: #ffffff; } select[multiple], select[size] { height: auto; } select:focus, input[type="file"]:focus, input[type="radio"]:focus, input[type="checkbox"]:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .uneditable-input, .uneditable-textarea { color: #999999; background-color: #fcfcfc; border-color: #cccccc; -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.025); cursor: not-allowed; } .uneditable-input { overflow: hidden; white-space: nowrap; } .uneditable-textarea { width: auto; height: auto; } input:-moz-placeholder, textarea:-moz-placeholder { color: #999999; } input:-ms-input-placeholder, textarea:-ms-input-placeholder { color: #999999; } input::-webkit-input-placeholder, textarea::-webkit-input-placeholder { color: #999999; } .radio, .checkbox { min-height: 20px; padding-left: 20px; } .radio input[type="radio"], .checkbox input[type="checkbox"] { float: left; margin-left: -20px; } .controls > .radio:first-child, .controls > .checkbox:first-child { padding-top: 5px; } .radio.inline, .checkbox.inline { display: inline-block; padding-top: 5px; margin-bottom: 0; vertical-align: middle; } .radio.inline + .radio.inline, .checkbox.inline + .checkbox.inline { margin-left: 10px; } .input-mini { width: 60px; } .input-small { width: 90px; } .input-medium { width: 150px; } .input-large { width: 210px; } .input-xlarge { width: 270px; } .input-xxlarge { width: 530px; } input[class*="span"], select[class*="span"], textarea[class*="span"], .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"] { float: none; margin-left: 0; } .input-append input[class*="span"], .input-append .uneditable-input[class*="span"], .input-prepend input[class*="span"], .input-prepend .uneditable-input[class*="span"], .row-fluid input[class*="span"], .row-fluid select[class*="span"], .row-fluid textarea[class*="span"], .row-fluid .uneditable-input[class*="span"], .row-fluid .input-prepend [class*="span"], .row-fluid .input-append [class*="span"] { display: inline-block; } input, textarea, .uneditable-input { margin-left: 0; } .controls-row [class*="span"] + [class*="span"] { margin-left: 20px; } input.span12, textarea.span12, .uneditable-input.span12 { width: 926px; } input.span11, textarea.span11, .uneditable-input.span11 { width: 846px; } input.span10, textarea.span10, .uneditable-input.span10 { width: 766px; } input.span9, textarea.span9, .uneditable-input.span9 { width: 686px; } input.span8, textarea.span8, .uneditable-input.span8 { width: 606px; } input.span7, textarea.span7, .uneditable-input.span7 { width: 526px; } input.span6, textarea.span6, .uneditable-input.span6 { width: 446px; } input.span5, textarea.span5, .uneditable-input.span5 { width: 366px; } input.span4, textarea.span4, .uneditable-input.span4 { width: 286px; } input.span3, textarea.span3, .uneditable-input.span3 { width: 206px; } input.span2, textarea.span2, .uneditable-input.span2 { width: 126px; } input.span1, textarea.span1, .uneditable-input.span1 { width: 46px; } .controls-row { *zoom: 1; } .controls-row:before, .controls-row:after { display: table; content: ""; line-height: 0; } .controls-row:after { clear: both; } .controls-row [class*="span"], .row-fluid .controls-row [class*="span"] { float: left; } .controls-row .checkbox[class*="span"], .controls-row .radio[class*="span"] { padding-top: 5px; } input[disabled], select[disabled], textarea[disabled], input[readonly], select[readonly], textarea[readonly] { cursor: not-allowed; background-color: #eeeeee; } input[type="radio"][disabled], input[type="checkbox"][disabled], input[type="radio"][readonly], input[type="checkbox"][readonly] { background-color: transparent; } .control-group.warning .control-label, .control-group.warning .help-block, .control-group.warning .help-inline { color: #c09853; } .control-group.warning .checkbox, .control-group.warning .radio, .control-group.warning input, .control-group.warning select, .control-group.warning textarea { color: #c09853; } .control-group.warning input, .control-group.warning select, .control-group.warning textarea { border-color: #c09853; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.warning input:focus, .control-group.warning select:focus, .control-group.warning textarea:focus { border-color: #a47e3c; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #dbc59e; } .control-group.warning .input-prepend .add-on, .control-group.warning .input-append .add-on { color: #c09853; background-color: #fcf8e3; border-color: #c09853; } .control-group.error .control-label, .control-group.error .help-block, .control-group.error .help-inline { color: #b94a48; } .control-group.error .checkbox, .control-group.error .radio, .control-group.error input, .control-group.error select, .control-group.error textarea { color: #b94a48; } .control-group.error input, .control-group.error select, .control-group.error textarea { border-color: #b94a48; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.error input:focus, .control-group.error select:focus, .control-group.error textarea:focus { border-color: #953b39; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #d59392; } .control-group.error .input-prepend .add-on, .control-group.error .input-append .add-on { color: #b94a48; background-color: #f2dede; border-color: #b94a48; } .control-group.success .control-label, .control-group.success .help-block, .control-group.success .help-inline { color: #468847; } .control-group.success .checkbox, .control-group.success .radio, .control-group.success input, .control-group.success select, .control-group.success textarea { color: #468847; } .control-group.success input, .control-group.success select, .control-group.success textarea { border-color: #468847; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.success input:focus, .control-group.success select:focus, .control-group.success textarea:focus { border-color: #356635; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7aba7b; } .control-group.success .input-prepend .add-on, .control-group.success .input-append .add-on { color: #468847; background-color: #dff0d8; border-color: #468847; } .control-group.info .control-label, .control-group.info .help-block, .control-group.info .help-inline { color: #3a87ad; } .control-group.info .checkbox, .control-group.info .radio, .control-group.info input, .control-group.info select, .control-group.info textarea { color: #3a87ad; } .control-group.info input, .control-group.info select, .control-group.info textarea { border-color: #3a87ad; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075); } .control-group.info input:focus, .control-group.info select:focus, .control-group.info textarea:focus { border-color: #2d6987; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.075), 0 0 6px #7ab5d3; } .control-group.info .input-prepend .add-on, .control-group.info .input-append .add-on { color: #3a87ad; background-color: #d9edf7; border-color: #3a87ad; } input:focus:invalid, textarea:focus:invalid, select:focus:invalid { color: #b94a48; border-color: #ee5f5b; } input:focus:invalid:focus, textarea:focus:invalid:focus, select:focus:invalid:focus { border-color: #e9322d; -webkit-box-shadow: 0 0 6px #f8b9b7; -moz-box-shadow: 0 0 6px #f8b9b7; box-shadow: 0 0 6px #f8b9b7; } .form-actions { padding: 19px 20px 20px; margin-top: 20px; margin-bottom: 20px; background-color: #f5f5f5; border-top: 1px solid #e5e5e5; *zoom: 1; } .form-actions:before, .form-actions:after { display: table; content: ""; line-height: 0; } .form-actions:after { clear: both; } .help-block, .help-inline { color: #595959; } .help-block { display: block; margin-bottom: 10px; } .help-inline { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; vertical-align: middle; padding-left: 5px; } .input-append, .input-prepend { display: inline-block; margin-bottom: 10px; vertical-align: middle; font-size: 0; white-space: nowrap; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input, .input-append .dropdown-menu, .input-prepend .dropdown-menu, .input-append .popover, .input-prepend .popover { font-size: 14px; } .input-append input, .input-prepend input, .input-append select, .input-prepend select, .input-append .uneditable-input, .input-prepend .uneditable-input { position: relative; margin-bottom: 0; *margin-left: 0; vertical-align: top; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append input:focus, .input-prepend input:focus, .input-append select:focus, .input-prepend select:focus, .input-append .uneditable-input:focus, .input-prepend .uneditable-input:focus { z-index: 2; } .input-append .add-on, .input-prepend .add-on { display: inline-block; width: auto; height: 20px; min-width: 16px; padding: 4px 5px; font-size: 14px; font-weight: normal; line-height: 20px; text-align: center; text-shadow: 0 1px 0 #ffffff; background-color: #eeeeee; border: 1px solid #ccc; } .input-append .add-on, .input-prepend .add-on, .input-append .btn, .input-prepend .btn, .input-append .btn-group > .dropdown-toggle, .input-prepend .btn-group > .dropdown-toggle { vertical-align: top; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-append .active, .input-prepend .active { background-color: #a9dba9; border-color: #46a546; } .input-prepend .add-on, .input-prepend .btn { margin-right: -1px; } .input-prepend .add-on:first-child, .input-prepend .btn:first-child { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input, .input-append select, .input-append .uneditable-input { -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-append input + .btn-group .btn:last-child, .input-append select + .btn-group .btn:last-child, .input-append .uneditable-input + .btn-group .btn:last-child { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-append .add-on, .input-append .btn, .input-append .btn-group { margin-left: -1px; } .input-append .add-on:last-child, .input-append .btn:last-child, .input-append .btn-group:last-child > .dropdown-toggle { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append input, .input-prepend.input-append select, .input-prepend.input-append .uneditable-input { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .input-prepend.input-append input + .btn-group .btn, .input-prepend.input-append select + .btn-group .btn, .input-prepend.input-append .uneditable-input + .btn-group .btn { -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .add-on:first-child, .input-prepend.input-append .btn:first-child { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .input-prepend.input-append .add-on:last-child, .input-prepend.input-append .btn:last-child { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .input-prepend.input-append .btn-group:first-child { margin-left: 0; } input.search-query { padding-right: 14px; padding-right: 4px \9; padding-left: 14px; padding-left: 4px \9; /* IE7-8 doesn't have border-radius, so don't indent the padding */ margin-bottom: 0; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } /* Allow for input prepend/append in search forms */ .form-search .input-append .search-query, .form-search .input-prepend .search-query { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .form-search .input-append .search-query { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search .input-append .btn { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .search-query { -webkit-border-radius: 0 14px 14px 0; -moz-border-radius: 0 14px 14px 0; border-radius: 0 14px 14px 0; } .form-search .input-prepend .btn { -webkit-border-radius: 14px 0 0 14px; -moz-border-radius: 14px 0 0 14px; border-radius: 14px 0 0 14px; } .form-search input, .form-inline input, .form-horizontal input, .form-search textarea, .form-inline textarea, .form-horizontal textarea, .form-search select, .form-inline select, .form-horizontal select, .form-search .help-inline, .form-inline .help-inline, .form-horizontal .help-inline, .form-search .uneditable-input, .form-inline .uneditable-input, .form-horizontal .uneditable-input, .form-search .input-prepend, .form-inline .input-prepend, .form-horizontal .input-prepend, .form-search .input-append, .form-inline .input-append, .form-horizontal .input-append { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; margin-bottom: 0; vertical-align: middle; } .form-search .hide, .form-inline .hide, .form-horizontal .hide { display: none; } .form-search label, .form-inline label, .form-search .btn-group, .form-inline .btn-group { display: inline-block; } .form-search .input-append, .form-inline .input-append, .form-search .input-prepend, .form-inline .input-prepend { margin-bottom: 0; } .form-search .radio, .form-search .checkbox, .form-inline .radio, .form-inline .checkbox { padding-left: 0; margin-bottom: 0; vertical-align: middle; } .form-search .radio input[type="radio"], .form-search .checkbox input[type="checkbox"], .form-inline .radio input[type="radio"], .form-inline .checkbox input[type="checkbox"] { float: left; margin-right: 3px; margin-left: 0; } .control-group { margin-bottom: 10px; } legend + .control-group { margin-top: 20px; -webkit-margin-top-collapse: separate; } .form-horizontal .control-group { margin-bottom: 20px; *zoom: 1; } .form-horizontal .control-group:before, .form-horizontal .control-group:after { display: table; content: ""; line-height: 0; } .form-horizontal .control-group:after { clear: both; } .form-horizontal .control-label { float: left; width: 160px; padding-top: 5px; text-align: right; } .form-horizontal .controls { *display: inline-block; *padding-left: 20px; margin-left: 180px; *margin-left: 0; } .form-horizontal .controls:first-child { *padding-left: 180px; } .form-horizontal .help-block { margin-bottom: 0; } .form-horizontal input + .help-block, .form-horizontal select + .help-block, .form-horizontal textarea + .help-block, .form-horizontal .uneditable-input + .help-block, .form-horizontal .input-prepend + .help-block, .form-horizontal .input-append + .help-block { margin-top: 10px; } .form-horizontal .form-actions { padding-left: 180px; } table { max-width: 100%; background-color: transparent; border-collapse: collapse; border-spacing: 0; } .table { width: 100%; margin-bottom: 20px; } .table th, .table td { padding: 8px; line-height: 20px; text-align: left; vertical-align: top; border-top: 1px solid #dddddd; } .table th { font-weight: bold; } .table thead th { vertical-align: bottom; } .table caption + thead tr:first-child th, .table caption + thead tr:first-child td, .table colgroup + thead tr:first-child th, .table colgroup + thead tr:first-child td, .table thead:first-child tr:first-child th, .table thead:first-child tr:first-child td { border-top: 0; } .table tbody + tbody { border-top: 2px solid #dddddd; } .table .table { background-color: #ffffff; } .table-condensed th, .table-condensed td { padding: 4px 5px; } .table-bordered { border: 1px solid #dddddd; border-collapse: separate; *border-collapse: collapse; border-left: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .table-bordered th, .table-bordered td { border-left: 1px solid #dddddd; } .table-bordered caption + thead tr:first-child th, .table-bordered caption + tbody tr:first-child th, .table-bordered caption + tbody tr:first-child td, .table-bordered colgroup + thead tr:first-child th, .table-bordered colgroup + tbody tr:first-child th, .table-bordered colgroup + tbody tr:first-child td, .table-bordered thead:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child th, .table-bordered tbody:first-child tr:first-child td { border-top: 0; } .table-bordered thead:first-child tr:first-child > th:first-child, .table-bordered tbody:first-child tr:first-child > td:first-child, .table-bordered tbody:first-child tr:first-child > th:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered thead:first-child tr:first-child > th:last-child, .table-bordered tbody:first-child tr:first-child > td:last-child, .table-bordered tbody:first-child tr:first-child > th:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:first-child, .table-bordered tbody:last-child tr:last-child > td:first-child, .table-bordered tbody:last-child tr:last-child > th:first-child, .table-bordered tfoot:last-child tr:last-child > td:first-child, .table-bordered tfoot:last-child tr:last-child > th:first-child { -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .table-bordered thead:last-child tr:last-child > th:last-child, .table-bordered tbody:last-child tr:last-child > td:last-child, .table-bordered tbody:last-child tr:last-child > th:last-child, .table-bordered tfoot:last-child tr:last-child > td:last-child, .table-bordered tfoot:last-child tr:last-child > th:last-child { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .table-bordered tfoot + tbody:last-child tr:last-child td:first-child { -webkit-border-bottom-left-radius: 0; -moz-border-radius-bottomleft: 0; border-bottom-left-radius: 0; } .table-bordered tfoot + tbody:last-child tr:last-child td:last-child { -webkit-border-bottom-right-radius: 0; -moz-border-radius-bottomright: 0; border-bottom-right-radius: 0; } .table-bordered caption + thead tr:first-child th:first-child, .table-bordered caption + tbody tr:first-child td:first-child, .table-bordered colgroup + thead tr:first-child th:first-child, .table-bordered colgroup + tbody tr:first-child td:first-child { -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .table-bordered caption + thead tr:first-child th:last-child, .table-bordered caption + tbody tr:first-child td:last-child, .table-bordered colgroup + thead tr:first-child th:last-child, .table-bordered colgroup + tbody tr:first-child td:last-child { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; } .table-striped tbody > tr:nth-child(odd) > td, .table-striped tbody > tr:nth-child(odd) > th { background-color: #f9f9f9; } .table-hover tbody tr:hover > td, .table-hover tbody tr:hover > th { background-color: #f5f5f5; } table td[class*="span"], table th[class*="span"], .row-fluid table td[class*="span"], .row-fluid table th[class*="span"] { display: table-cell; float: none; margin-left: 0; } .table td.span1, .table th.span1 { float: none; width: 44px; margin-left: 0; } .table td.span2, .table th.span2 { float: none; width: 124px; margin-left: 0; } .table td.span3, .table th.span3 { float: none; width: 204px; margin-left: 0; } .table td.span4, .table th.span4 { float: none; width: 284px; margin-left: 0; } .table td.span5, .table th.span5 { float: none; width: 364px; margin-left: 0; } .table td.span6, .table th.span6 { float: none; width: 444px; margin-left: 0; } .table td.span7, .table th.span7 { float: none; width: 524px; margin-left: 0; } .table td.span8, .table th.span8 { float: none; width: 604px; margin-left: 0; } .table td.span9, .table th.span9 { float: none; width: 684px; margin-left: 0; } .table td.span10, .table th.span10 { float: none; width: 764px; margin-left: 0; } .table td.span11, .table th.span11 { float: none; width: 844px; margin-left: 0; } .table td.span12, .table th.span12 { float: none; width: 924px; margin-left: 0; } .table tbody tr.success > td { background-color: #dff0d8; } .table tbody tr.error > td { background-color: #f2dede; } .table tbody tr.warning > td { background-color: #fcf8e3; } .table tbody tr.info > td { background-color: #d9edf7; } .table-hover tbody tr.success:hover > td { background-color: #d0e9c6; } .table-hover tbody tr.error:hover > td { background-color: #ebcccc; } .table-hover tbody tr.warning:hover > td { background-color: #faf2cc; } .table-hover tbody tr.info:hover > td { background-color: #c4e3f3; } [class^="icon-"], [class*=" icon-"] { display: inline-block; width: 14px; height: 14px; *margin-right: .3em; line-height: 14px; vertical-align: text-top; background-image: url("../img/glyphicons-halflings.png"); background-position: 14px 14px; background-repeat: no-repeat; margin-top: 1px; } /* White icons with optional class, or on hover/focus/active states of certain elements */ .icon-white, .nav-pills > .active > a > [class^="icon-"], .nav-pills > .active > a > [class*=" icon-"], .nav-list > .active > a > [class^="icon-"], .nav-list > .active > a > [class*=" icon-"], .navbar-inverse .nav > .active > a > [class^="icon-"], .navbar-inverse .nav > .active > a > [class*=" icon-"], .dropdown-menu > li > a:hover > [class^="icon-"], .dropdown-menu > li > a:focus > [class^="icon-"], .dropdown-menu > li > a:hover > [class*=" icon-"], .dropdown-menu > li > a:focus > [class*=" icon-"], .dropdown-menu > .active > a > [class^="icon-"], .dropdown-menu > .active > a > [class*=" icon-"], .dropdown-submenu:hover > a > [class^="icon-"], .dropdown-submenu:focus > a > [class^="icon-"], .dropdown-submenu:hover > a > [class*=" icon-"], .dropdown-submenu:focus > a > [class*=" icon-"] { background-image: url("../img/glyphicons-halflings-white.png"); } .icon-glass { background-position: 0 0; } .icon-music { background-position: -24px 0; } .icon-search { background-position: -48px 0; } .icon-envelope { background-position: -72px 0; } .icon-heart { background-position: -96px 0; } .icon-star { background-position: -120px 0; } .icon-star-empty { background-position: -144px 0; } .icon-user { background-position: -168px 0; } .icon-film { background-position: -192px 0; } .icon-th-large { background-position: -216px 0; } .icon-th { background-position: -240px 0; } .icon-th-list { background-position: -264px 0; } .icon-ok { background-position: -288px 0; } .icon-remove { background-position: -312px 0; } .icon-zoom-in { background-position: -336px 0; } .icon-zoom-out { background-position: -360px 0; } .icon-off { background-position: -384px 0; } .icon-signal { background-position: -408px 0; } .icon-cog { background-position: -432px 0; } .icon-trash { background-position: -456px 0; } .icon-home { background-position: 0 -24px; } .icon-file { background-position: -24px -24px; } .icon-time { background-position: -48px -24px; } .icon-road { background-position: -72px -24px; } .icon-download-alt { background-position: -96px -24px; } .icon-download { background-position: -120px -24px; } .icon-upload { background-position: -144px -24px; } .icon-inbox { background-position: -168px -24px; } .icon-play-circle { background-position: -192px -24px; } .icon-repeat { background-position: -216px -24px; } .icon-refresh { background-position: -240px -24px; } .icon-list-alt { background-position: -264px -24px; } .icon-lock { background-position: -287px -24px; } .icon-flag { background-position: -312px -24px; } .icon-headphones { background-position: -336px -24px; } .icon-volume-off { background-position: -360px -24px; } .icon-volume-down { background-position: -384px -24px; } .icon-volume-up { background-position: -408px -24px; } .icon-qrcode { background-position: -432px -24px; } .icon-barcode { background-position: -456px -24px; } .icon-tag { background-position: 0 -48px; } .icon-tags { background-position: -25px -48px; } .icon-book { background-position: -48px -48px; } .icon-bookmark { background-position: -72px -48px; } .icon-print { background-position: -96px -48px; } .icon-camera { background-position: -120px -48px; } .icon-font { background-position: -144px -48px; } .icon-bold { background-position: -167px -48px; } .icon-italic { background-position: -192px -48px; } .icon-text-height { background-position: -216px -48px; } .icon-text-width { background-position: -240px -48px; } .icon-align-left { background-position: -264px -48px; } .icon-align-center { background-position: -288px -48px; } .icon-align-right { background-position: -312px -48px; } .icon-align-justify { background-position: -336px -48px; } .icon-list { background-position: -360px -48px; } .icon-indent-left { background-position: -384px -48px; } .icon-indent-right { background-position: -408px -48px; } .icon-facetime-video { background-position: -432px -48px; } .icon-picture { background-position: -456px -48px; } .icon-pencil { background-position: 0 -72px; } .icon-map-marker { background-position: -24px -72px; } .icon-adjust { background-position: -48px -72px; } .icon-tint { background-position: -72px -72px; } .icon-edit { background-position: -96px -72px; } .icon-share { background-position: -120px -72px; } .icon-check { background-position: -144px -72px; } .icon-move { background-position: -168px -72px; } .icon-step-backward { background-position: -192px -72px; } .icon-fast-backward { background-position: -216px -72px; } .icon-backward { background-position: -240px -72px; } .icon-play { background-position: -264px -72px; } .icon-pause { background-position: -288px -72px; } .icon-stop { background-position: -312px -72px; } .icon-forward { background-position: -336px -72px; } .icon-fast-forward { background-position: -360px -72px; } .icon-step-forward { background-position: -384px -72px; } .icon-eject { background-position: -408px -72px; } .icon-chevron-left { background-position: -432px -72px; } .icon-chevron-right { background-position: -456px -72px; } .icon-plus-sign { background-position: 0 -96px; } .icon-minus-sign { background-position: -24px -96px; } .icon-remove-sign { background-position: -48px -96px; } .icon-ok-sign { background-position: -72px -96px; } .icon-question-sign { background-position: -96px -96px; } .icon-info-sign { background-position: -120px -96px; } .icon-screenshot { background-position: -144px -96px; } .icon-remove-circle { background-position: -168px -96px; } .icon-ok-circle { background-position: -192px -96px; } .icon-ban-circle { background-position: -216px -96px; } .icon-arrow-left { background-position: -240px -96px; } .icon-arrow-right { background-position: -264px -96px; } .icon-arrow-up { background-position: -289px -96px; } .icon-arrow-down { background-position: -312px -96px; } .icon-share-alt { background-position: -336px -96px; } .icon-resize-full { background-position: -360px -96px; } .icon-resize-small { background-position: -384px -96px; } .icon-plus { background-position: -408px -96px; } .icon-minus { background-position: -433px -96px; } .icon-asterisk { background-position: -456px -96px; } .icon-exclamation-sign { background-position: 0 -120px; } .icon-gift { background-position: -24px -120px; } .icon-leaf { background-position: -48px -120px; } .icon-fire { background-position: -72px -120px; } .icon-eye-open { background-position: -96px -120px; } .icon-eye-close { background-position: -120px -120px; } .icon-warning-sign { background-position: -144px -120px; } .icon-plane { background-position: -168px -120px; } .icon-calendar { background-position: -192px -120px; } .icon-random { background-position: -216px -120px; width: 16px; } .icon-comment { background-position: -240px -120px; } .icon-magnet { background-position: -264px -120px; } .icon-chevron-up { background-position: -288px -120px; } .icon-chevron-down { background-position: -313px -119px; } .icon-retweet { background-position: -336px -120px; } .icon-shopping-cart { background-position: -360px -120px; } .icon-folder-close { background-position: -384px -120px; width: 16px; } .icon-folder-open { background-position: -408px -120px; width: 16px; } .icon-resize-vertical { background-position: -432px -119px; } .icon-resize-horizontal { background-position: -456px -118px; } .icon-hdd { background-position: 0 -144px; } .icon-bullhorn { background-position: -24px -144px; } .icon-bell { background-position: -48px -144px; } .icon-certificate { background-position: -72px -144px; } .icon-thumbs-up { background-position: -96px -144px; } .icon-thumbs-down { background-position: -120px -144px; } .icon-hand-right { background-position: -144px -144px; } .icon-hand-left { background-position: -168px -144px; } .icon-hand-up { background-position: -192px -144px; } .icon-hand-down { background-position: -216px -144px; } .icon-circle-arrow-right { background-position: -240px -144px; } .icon-circle-arrow-left { background-position: -264px -144px; } .icon-circle-arrow-up { background-position: -288px -144px; } .icon-circle-arrow-down { background-position: -312px -144px; } .icon-globe { background-position: -336px -144px; } .icon-wrench { background-position: -360px -144px; } .icon-tasks { background-position: -384px -144px; } .icon-filter { background-position: -408px -144px; } .icon-briefcase { background-position: -432px -144px; } .icon-fullscreen { background-position: -456px -144px; } .dropup, .dropdown { position: relative; } .dropdown-toggle { *margin-bottom: -3px; } .dropdown-toggle:active, .open .dropdown-toggle { outline: 0; } .caret { display: inline-block; width: 0; height: 0; vertical-align: top; border-top: 4px solid #000000; border-right: 4px solid transparent; border-left: 4px solid transparent; content: ""; } .dropdown .caret { margin-top: 8px; margin-left: 2px; } .dropdown-menu { position: absolute; top: 100%; left: 0; z-index: 1000; display: none; float: left; min-width: 160px; padding: 5px 0; margin: 2px 0 0; list-style: none; background-color: #ffffff; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); *border-right-width: 2px; *border-bottom-width: 2px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; } .dropdown-menu.pull-right { right: 0; left: auto; } .dropdown-menu .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .dropdown-menu > li > a { display: block; padding: 3px 20px; clear: both; font-weight: normal; line-height: 20px; color: #333333; white-space: nowrap; } .dropdown-menu > li > a:hover, .dropdown-menu > li > a:focus, .dropdown-submenu:hover > a, .dropdown-submenu:focus > a { text-decoration: none; color: #ffffff; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .active > a, .dropdown-menu > .active > a:hover, .dropdown-menu > .active > a:focus { color: #333333; text-decoration: none; outline: 0; background-color: #0081c2; background-image: -moz-linear-gradient(top, #0088cc, #0077b3); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0077b3)); background-image: -webkit-linear-gradient(top, #0088cc, #0077b3); background-image: -o-linear-gradient(top, #0088cc, #0077b3); background-image: linear-gradient(to bottom, #0088cc, #0077b3); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0077b3', GradientType=0); } .dropdown-menu > .disabled > a, .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { color: #999999; } .dropdown-menu > .disabled > a:hover, .dropdown-menu > .disabled > a:focus { text-decoration: none; background-color: transparent; background-image: none; filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); cursor: default; } .open { *z-index: 1000; } .open > .dropdown-menu { display: block; } .dropdown-backdrop { position: fixed; left: 0; right: 0; bottom: 0; top: 0; z-index: 990; } .pull-right > .dropdown-menu { right: 0; left: auto; } .dropup .caret, .navbar-fixed-bottom .dropdown .caret { border-top: 0; border-bottom: 4px solid #000000; content: ""; } .dropup .dropdown-menu, .navbar-fixed-bottom .dropdown .dropdown-menu { top: auto; bottom: 100%; margin-bottom: 1px; } .dropdown-submenu { position: relative; } .dropdown-submenu > .dropdown-menu { top: 0; left: 100%; margin-top: -6px; margin-left: -1px; -webkit-border-radius: 0 6px 6px 6px; -moz-border-radius: 0 6px 6px 6px; border-radius: 0 6px 6px 6px; } .dropdown-submenu:hover > .dropdown-menu { display: block; } .dropup .dropdown-submenu > .dropdown-menu { top: auto; bottom: 0; margin-top: 0; margin-bottom: -2px; -webkit-border-radius: 5px 5px 5px 0; -moz-border-radius: 5px 5px 5px 0; border-radius: 5px 5px 5px 0; } .dropdown-submenu > a:after { display: block; content: " "; float: right; width: 0; height: 0; border-color: transparent; border-style: solid; border-width: 5px 0 5px 5px; border-left-color: #cccccc; margin-top: 5px; margin-right: -10px; } .dropdown-submenu:hover > a:after { border-left-color: #ffffff; } .dropdown-submenu.pull-left { float: none; } .dropdown-submenu.pull-left > .dropdown-menu { left: -100%; margin-left: 10px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .dropdown .dropdown-menu .nav-header { padding-left: 20px; padding-right: 20px; } .typeahead { z-index: 1051; margin-top: 2px; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .well { min-height: 20px; padding: 19px; margin-bottom: 20px; background-color: #f5f5f5; border: 1px solid #e3e3e3; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); -moz-box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); box-shadow: inset 0 1px 1px rgba(0, 0, 0, 0.05); } .well blockquote { border-color: #ddd; border-color: rgba(0, 0, 0, 0.15); } .well-large { padding: 24px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .well-small { padding: 9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .fade { opacity: 0; -webkit-transition: opacity 0.15s linear; -moz-transition: opacity 0.15s linear; -o-transition: opacity 0.15s linear; transition: opacity 0.15s linear; } .fade.in { opacity: 1; } .collapse { position: relative; height: 0; overflow: hidden; -webkit-transition: height 0.35s ease; -moz-transition: height 0.35s ease; -o-transition: height 0.35s ease; transition: height 0.35s ease; } .collapse.in { height: auto; } .close { float: right; font-size: 20px; font-weight: bold; line-height: 20px; color: #000000; text-shadow: 0 1px 0 #ffffff; opacity: 0.2; filter: alpha(opacity=20); } .close:hover, .close:focus { color: #000000; text-decoration: none; cursor: pointer; opacity: 0.4; filter: alpha(opacity=40); } button.close { padding: 0; cursor: pointer; background: transparent; border: 0; -webkit-appearance: none; } .btn { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; padding: 4px 12px; margin-bottom: 0; font-size: 14px; line-height: 20px; text-align: center; vertical-align: middle; cursor: pointer; color: #333333; text-shadow: 0 1px 1px rgba(255, 255, 255, 0.75); background-color: #f5f5f5; background-image: -moz-linear-gradient(top, #ffffff, #e6e6e6); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#e6e6e6)); background-image: -webkit-linear-gradient(top, #ffffff, #e6e6e6); background-image: -o-linear-gradient(top, #ffffff, #e6e6e6); background-image: linear-gradient(to bottom, #ffffff, #e6e6e6); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#ffe6e6e6', GradientType=0); border-color: #e6e6e6 #e6e6e6 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #e6e6e6; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); border: 1px solid #bbbbbb; *border: 0; border-bottom-color: #a2a2a2; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; *margin-left: .3em; -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); } .btn:hover, .btn:focus, .btn:active, .btn.active, .btn.disabled, .btn[disabled] { color: #333333; background-color: #e6e6e6; *background-color: #d9d9d9; } .btn:active, .btn.active { background-color: #cccccc \9; } .btn:first-child { *margin-left: 0; } .btn:hover, .btn:focus { color: #333333; text-decoration: none; background-position: 0 -15px; -webkit-transition: background-position 0.1s linear; -moz-transition: background-position 0.1s linear; -o-transition: background-position 0.1s linear; transition: background-position 0.1s linear; } .btn:focus { outline: thin dotted #333; outline: 5px auto -webkit-focus-ring-color; outline-offset: -2px; } .btn.active, .btn:active { background-image: none; outline: 0; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn.disabled, .btn[disabled] { cursor: default; background-image: none; opacity: 0.65; filter: alpha(opacity=65); -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-large { padding: 11px 19px; font-size: 17.5px; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .btn-large [class^="icon-"], .btn-large [class*=" icon-"] { margin-top: 4px; } .btn-small { padding: 2px 10px; font-size: 11.9px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-small [class^="icon-"], .btn-small [class*=" icon-"] { margin-top: 0; } .btn-mini [class^="icon-"], .btn-mini [class*=" icon-"] { margin-top: -1px; } .btn-mini { padding: 1px 6px; font-size: 10.5px; -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .btn-block { display: block; width: 100%; padding-left: 0; padding-right: 0; -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; } .btn-block + .btn-block { margin-top: 5px; } input[type="submit"].btn-block, input[type="reset"].btn-block, input[type="button"].btn-block { width: 100%; } .btn-primary.active, .btn-warning.active, .btn-danger.active, .btn-success.active, .btn-info.active, .btn-inverse.active { color: rgba(255, 255, 255, 0.75); } .btn-primary { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #006dcc; background-image: -moz-linear-gradient(top, #0088cc, #0044cc); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#0088cc), to(#0044cc)); background-image: -webkit-linear-gradient(top, #0088cc, #0044cc); background-image: -o-linear-gradient(top, #0088cc, #0044cc); background-image: linear-gradient(to bottom, #0088cc, #0044cc); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff0088cc', endColorstr='#ff0044cc', GradientType=0); border-color: #0044cc #0044cc #002a80; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #0044cc; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-primary:hover, .btn-primary:focus, .btn-primary:active, .btn-primary.active, .btn-primary.disabled, .btn-primary[disabled] { color: #ffffff; background-color: #0044cc; *background-color: #003bb3; } .btn-primary:active, .btn-primary.active { background-color: #003399 \9; } .btn-warning { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #faa732; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); border-color: #f89406 #f89406 #ad6704; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #f89406; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-warning:hover, .btn-warning:focus, .btn-warning:active, .btn-warning.active, .btn-warning.disabled, .btn-warning[disabled] { color: #ffffff; background-color: #f89406; *background-color: #df8505; } .btn-warning:active, .btn-warning.active { background-color: #c67605 \9; } .btn-danger { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #da4f49; background-image: -moz-linear-gradient(top, #ee5f5b, #bd362f); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#bd362f)); background-image: -webkit-linear-gradient(top, #ee5f5b, #bd362f); background-image: -o-linear-gradient(top, #ee5f5b, #bd362f); background-image: linear-gradient(to bottom, #ee5f5b, #bd362f); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffbd362f', GradientType=0); border-color: #bd362f #bd362f #802420; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #bd362f; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-danger:hover, .btn-danger:focus, .btn-danger:active, .btn-danger.active, .btn-danger.disabled, .btn-danger[disabled] { color: #ffffff; background-color: #bd362f; *background-color: #a9302a; } .btn-danger:active, .btn-danger.active { background-color: #942a25 \9; } .btn-success { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #5bb75b; background-image: -moz-linear-gradient(top, #62c462, #51a351); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#51a351)); background-image: -webkit-linear-gradient(top, #62c462, #51a351); background-image: -o-linear-gradient(top, #62c462, #51a351); background-image: linear-gradient(to bottom, #62c462, #51a351); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff51a351', GradientType=0); border-color: #51a351 #51a351 #387038; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #51a351; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-success:hover, .btn-success:focus, .btn-success:active, .btn-success.active, .btn-success.disabled, .btn-success[disabled] { color: #ffffff; background-color: #51a351; *background-color: #499249; } .btn-success:active, .btn-success.active { background-color: #408140 \9; } .btn-info { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #49afcd; background-image: -moz-linear-gradient(top, #5bc0de, #2f96b4); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#2f96b4)); background-image: -webkit-linear-gradient(top, #5bc0de, #2f96b4); background-image: -o-linear-gradient(top, #5bc0de, #2f96b4); background-image: linear-gradient(to bottom, #5bc0de, #2f96b4); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff2f96b4', GradientType=0); border-color: #2f96b4 #2f96b4 #1f6377; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #2f96b4; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-info:hover, .btn-info:focus, .btn-info:active, .btn-info.active, .btn-info.disabled, .btn-info[disabled] { color: #ffffff; background-color: #2f96b4; *background-color: #2a85a0; } .btn-info:active, .btn-info.active { background-color: #24748c \9; } .btn-inverse { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #363636; background-image: -moz-linear-gradient(top, #444444, #222222); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#444444), to(#222222)); background-image: -webkit-linear-gradient(top, #444444, #222222); background-image: -o-linear-gradient(top, #444444, #222222); background-image: linear-gradient(to bottom, #444444, #222222); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff444444', endColorstr='#ff222222', GradientType=0); border-color: #222222 #222222 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #222222; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .btn-inverse:hover, .btn-inverse:focus, .btn-inverse:active, .btn-inverse.active, .btn-inverse.disabled, .btn-inverse[disabled] { color: #ffffff; background-color: #222222; *background-color: #151515; } .btn-inverse:active, .btn-inverse.active { background-color: #080808 \9; } button.btn, input[type="submit"].btn { *padding-top: 3px; *padding-bottom: 3px; } button.btn::-moz-focus-inner, input[type="submit"].btn::-moz-focus-inner { padding: 0; border: 0; } button.btn.btn-large, input[type="submit"].btn.btn-large { *padding-top: 7px; *padding-bottom: 7px; } button.btn.btn-small, input[type="submit"].btn.btn-small { *padding-top: 3px; *padding-bottom: 3px; } button.btn.btn-mini, input[type="submit"].btn.btn-mini { *padding-top: 1px; *padding-bottom: 1px; } .btn-link, .btn-link:active, .btn-link[disabled] { background-color: transparent; background-image: none; -webkit-box-shadow: none; -moz-box-shadow: none; box-shadow: none; } .btn-link { border-color: transparent; cursor: pointer; color: #0088cc; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-link:hover, .btn-link:focus { color: #005580; text-decoration: underline; background-color: transparent; } .btn-link[disabled]:hover, .btn-link[disabled]:focus { color: #333333; text-decoration: none; } .btn-group { position: relative; display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; font-size: 0; vertical-align: middle; white-space: nowrap; *margin-left: .3em; } .btn-group:first-child { *margin-left: 0; } .btn-group + .btn-group { margin-left: 5px; } .btn-toolbar { font-size: 0; margin-top: 10px; margin-bottom: 10px; } .btn-toolbar > .btn + .btn, .btn-toolbar > .btn-group + .btn, .btn-toolbar > .btn + .btn-group { margin-left: 5px; } .btn-group > .btn { position: relative; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group > .btn + .btn { margin-left: -1px; } .btn-group > .btn, .btn-group > .dropdown-menu, .btn-group > .popover { font-size: 14px; } .btn-group > .btn-mini { font-size: 10.5px; } .btn-group > .btn-small { font-size: 11.9px; } .btn-group > .btn-large { font-size: 17.5px; } .btn-group > .btn:first-child { margin-left: 0; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .btn-group > .btn:last-child, .btn-group > .dropdown-toggle { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .btn-group > .btn.large:first-child { margin-left: 0; -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .btn-group > .btn.large:last-child, .btn-group > .large.dropdown-toggle { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .btn-group > .btn:hover, .btn-group > .btn:focus, .btn-group > .btn:active, .btn-group > .btn.active { z-index: 2; } .btn-group .dropdown-toggle:active, .btn-group.open .dropdown-toggle { outline: 0; } .btn-group > .btn + .dropdown-toggle { padding-left: 8px; padding-right: 8px; -webkit-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 1px 0 0 rgba(255,255,255,.125), inset 0 1px 0 rgba(255,255,255,.2), 0 1px 2px rgba(0,0,0,.05); *padding-top: 5px; *padding-bottom: 5px; } .btn-group > .btn-mini + .dropdown-toggle { padding-left: 5px; padding-right: 5px; *padding-top: 2px; *padding-bottom: 2px; } .btn-group > .btn-small + .dropdown-toggle { *padding-top: 5px; *padding-bottom: 4px; } .btn-group > .btn-large + .dropdown-toggle { padding-left: 12px; padding-right: 12px; *padding-top: 7px; *padding-bottom: 7px; } .btn-group.open .dropdown-toggle { background-image: none; -webkit-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); -moz-box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); box-shadow: inset 0 2px 4px rgba(0,0,0,.15), 0 1px 2px rgba(0,0,0,.05); } .btn-group.open .btn.dropdown-toggle { background-color: #e6e6e6; } .btn-group.open .btn-primary.dropdown-toggle { background-color: #0044cc; } .btn-group.open .btn-warning.dropdown-toggle { background-color: #f89406; } .btn-group.open .btn-danger.dropdown-toggle { background-color: #bd362f; } .btn-group.open .btn-success.dropdown-toggle { background-color: #51a351; } .btn-group.open .btn-info.dropdown-toggle { background-color: #2f96b4; } .btn-group.open .btn-inverse.dropdown-toggle { background-color: #222222; } .btn .caret { margin-top: 8px; margin-left: 0; } .btn-large .caret { margin-top: 6px; } .btn-large .caret { border-left-width: 5px; border-right-width: 5px; border-top-width: 5px; } .btn-mini .caret, .btn-small .caret { margin-top: 8px; } .dropup .btn-large .caret { border-bottom-width: 5px; } .btn-primary .caret, .btn-warning .caret, .btn-danger .caret, .btn-info .caret, .btn-success .caret, .btn-inverse .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .btn-group-vertical { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; } .btn-group-vertical > .btn { display: block; float: none; max-width: 100%; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .btn-group-vertical > .btn + .btn { margin-left: 0; margin-top: -1px; } .btn-group-vertical > .btn:first-child { -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .btn-group-vertical > .btn:last-child { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .btn-group-vertical > .btn-large:first-child { -webkit-border-radius: 6px 6px 0 0; -moz-border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0; } .btn-group-vertical > .btn-large:last-child { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .alert { padding: 8px 35px 8px 14px; margin-bottom: 20px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); background-color: #fcf8e3; border: 1px solid #fbeed5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .alert, .alert h4 { color: #c09853; } .alert h4 { margin: 0; } .alert .close { position: relative; top: -2px; right: -21px; line-height: 20px; } .alert-success { background-color: #dff0d8; border-color: #d6e9c6; color: #468847; } .alert-success h4 { color: #468847; } .alert-danger, .alert-error { background-color: #f2dede; border-color: #eed3d7; color: #b94a48; } .alert-danger h4, .alert-error h4 { color: #b94a48; } .alert-info { background-color: #d9edf7; border-color: #bce8f1; color: #3a87ad; } .alert-info h4 { color: #3a87ad; } .alert-block { padding-top: 14px; padding-bottom: 14px; } .alert-block > p, .alert-block > ul { margin-bottom: 0; } .alert-block p + p { margin-top: 5px; } .nav { margin-left: 0; margin-bottom: 20px; list-style: none; } .nav > li > a { display: block; } .nav > li > a:hover, .nav > li > a:focus { text-decoration: none; background-color: #eeeeee; } .nav > li > a > img { max-width: none; } .nav > .pull-right { float: right; } .nav-header { display: block; padding: 3px 15px; font-size: 11px; font-weight: bold; line-height: 20px; color: #999999; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); text-transform: uppercase; } .nav li + .nav-header { margin-top: 9px; } .nav-list { padding-left: 15px; padding-right: 15px; margin-bottom: 0; } .nav-list > li > a, .nav-list .nav-header { margin-left: -15px; margin-right: -15px; text-shadow: 0 1px 0 rgba(255, 255, 255, 0.5); } .nav-list > li > a { padding: 3px 15px; } .nav-list > .active > a, .nav-list > .active > a:hover, .nav-list > .active > a:focus { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.2); background-color: #0088cc; } .nav-list [class^="icon-"], .nav-list [class*=" icon-"] { margin-right: 2px; } .nav-list .divider { *width: 100%; height: 1px; margin: 9px 1px; *margin: -5px 0 5px; overflow: hidden; background-color: #e5e5e5; border-bottom: 1px solid #ffffff; } .nav-tabs, .nav-pills { *zoom: 1; } .nav-tabs:before, .nav-pills:before, .nav-tabs:after, .nav-pills:after { display: table; content: ""; line-height: 0; } .nav-tabs:after, .nav-pills:after { clear: both; } .nav-tabs > li, .nav-pills > li { float: left; } .nav-tabs > li > a, .nav-pills > li > a { padding-right: 12px; padding-left: 12px; margin-right: 2px; line-height: 14px; } .nav-tabs { border-bottom: 1px solid #ddd; } .nav-tabs > li { margin-bottom: -1px; } .nav-tabs > li > a { padding-top: 8px; padding-bottom: 8px; line-height: 20px; border: 1px solid transparent; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .nav-tabs > li > a:hover, .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #dddddd; } .nav-tabs > .active > a, .nav-tabs > .active > a:hover, .nav-tabs > .active > a:focus { color: #555555; background-color: #ffffff; border: 1px solid #ddd; border-bottom-color: transparent; cursor: default; } .nav-pills > li > a { padding-top: 8px; padding-bottom: 8px; margin-top: 2px; margin-bottom: 2px; -webkit-border-radius: 5px; -moz-border-radius: 5px; border-radius: 5px; } .nav-pills > .active > a, .nav-pills > .active > a:hover, .nav-pills > .active > a:focus { color: #ffffff; background-color: #0088cc; } .nav-stacked > li { float: none; } .nav-stacked > li > a { margin-right: 0; } .nav-tabs.nav-stacked { border-bottom: 0; } .nav-tabs.nav-stacked > li > a { border: 1px solid #ddd; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .nav-tabs.nav-stacked > li:first-child > a { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; } .nav-tabs.nav-stacked > li:last-child > a { -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .nav-tabs.nav-stacked > li > a:hover, .nav-tabs.nav-stacked > li > a:focus { border-color: #ddd; z-index: 2; } .nav-pills.nav-stacked > li > a { margin-bottom: 3px; } .nav-pills.nav-stacked > li:last-child > a { margin-bottom: 1px; } .nav-tabs .dropdown-menu { -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; } .nav-pills .dropdown-menu { -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .nav .dropdown-toggle .caret { border-top-color: #0088cc; border-bottom-color: #0088cc; margin-top: 6px; } .nav .dropdown-toggle:hover .caret, .nav .dropdown-toggle:focus .caret { border-top-color: #005580; border-bottom-color: #005580; } /* move down carets for tabs */ .nav-tabs .dropdown-toggle .caret { margin-top: 8px; } .nav .active .dropdown-toggle .caret { border-top-color: #fff; border-bottom-color: #fff; } .nav-tabs .active .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .nav > .dropdown.active > a:hover, .nav > .dropdown.active > a:focus { cursor: pointer; } .nav-tabs .open .dropdown-toggle, .nav-pills .open .dropdown-toggle, .nav > li.dropdown.open.active > a:hover, .nav > li.dropdown.open.active > a:focus { color: #ffffff; background-color: #999999; border-color: #999999; } .nav li.dropdown.open .caret, .nav li.dropdown.open.active .caret, .nav li.dropdown.open a:hover .caret, .nav li.dropdown.open a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; opacity: 1; filter: alpha(opacity=100); } .tabs-stacked .open > a:hover, .tabs-stacked .open > a:focus { border-color: #999999; } .tabbable { *zoom: 1; } .tabbable:before, .tabbable:after { display: table; content: ""; line-height: 0; } .tabbable:after { clear: both; } .tab-content { overflow: auto; } .tabs-below > .nav-tabs, .tabs-right > .nav-tabs, .tabs-left > .nav-tabs { border-bottom: 0; } .tab-content > .tab-pane, .pill-content > .pill-pane { display: none; } .tab-content > .active, .pill-content > .active { display: block; } .tabs-below > .nav-tabs { border-top: 1px solid #ddd; } .tabs-below > .nav-tabs > li { margin-top: -1px; margin-bottom: 0; } .tabs-below > .nav-tabs > li > a { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; } .tabs-below > .nav-tabs > li > a:hover, .tabs-below > .nav-tabs > li > a:focus { border-bottom-color: transparent; border-top-color: #ddd; } .tabs-below > .nav-tabs > .active > a, .tabs-below > .nav-tabs > .active > a:hover, .tabs-below > .nav-tabs > .active > a:focus { border-color: transparent #ddd #ddd #ddd; } .tabs-left > .nav-tabs > li, .tabs-right > .nav-tabs > li { float: none; } .tabs-left > .nav-tabs > li > a, .tabs-right > .nav-tabs > li > a { min-width: 74px; margin-right: 0; margin-bottom: 3px; } .tabs-left > .nav-tabs { float: left; margin-right: 19px; border-right: 1px solid #ddd; } .tabs-left > .nav-tabs > li > a { margin-right: -1px; -webkit-border-radius: 4px 0 0 4px; -moz-border-radius: 4px 0 0 4px; border-radius: 4px 0 0 4px; } .tabs-left > .nav-tabs > li > a:hover, .tabs-left > .nav-tabs > li > a:focus { border-color: #eeeeee #dddddd #eeeeee #eeeeee; } .tabs-left > .nav-tabs .active > a, .tabs-left > .nav-tabs .active > a:hover, .tabs-left > .nav-tabs .active > a:focus { border-color: #ddd transparent #ddd #ddd; *border-right-color: #ffffff; } .tabs-right > .nav-tabs { float: right; margin-left: 19px; border-left: 1px solid #ddd; } .tabs-right > .nav-tabs > li > a { margin-left: -1px; -webkit-border-radius: 0 4px 4px 0; -moz-border-radius: 0 4px 4px 0; border-radius: 0 4px 4px 0; } .tabs-right > .nav-tabs > li > a:hover, .tabs-right > .nav-tabs > li > a:focus { border-color: #eeeeee #eeeeee #eeeeee #dddddd; } .tabs-right > .nav-tabs .active > a, .tabs-right > .nav-tabs .active > a:hover, .tabs-right > .nav-tabs .active > a:focus { border-color: #ddd #ddd #ddd transparent; *border-left-color: #ffffff; } .nav > .disabled > a { color: #999999; } .nav > .disabled > a:hover, .nav > .disabled > a:focus { text-decoration: none; background-color: transparent; cursor: default; } .navbar { overflow: visible; margin-bottom: 20px; *position: relative; *z-index: 2; } .navbar-inner { min-height: 40px; padding-left: 20px; padding-right: 20px; background-color: #fafafa; background-image: -moz-linear-gradient(top, #ffffff, #f2f2f2); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ffffff), to(#f2f2f2)); background-image: -webkit-linear-gradient(top, #ffffff, #f2f2f2); background-image: -o-linear-gradient(top, #ffffff, #f2f2f2); background-image: linear-gradient(to bottom, #ffffff, #f2f2f2); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffffffff', endColorstr='#fff2f2f2', GradientType=0); border: 1px solid #d4d4d4; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); -moz-box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); box-shadow: 0 1px 4px rgba(0, 0, 0, 0.065); *zoom: 1; } .navbar-inner:before, .navbar-inner:after { display: table; content: ""; line-height: 0; } .navbar-inner:after { clear: both; } .navbar .container { width: auto; } .nav-collapse.collapse { height: auto; overflow: visible; } .navbar .brand { float: left; display: block; padding: 10px 20px 10px; margin-left: -20px; font-size: 20px; font-weight: 200; color: #777777; text-shadow: 0 1px 0 #ffffff; } .navbar .brand:hover, .navbar .brand:focus { text-decoration: none; } .navbar-text { margin-bottom: 0; line-height: 40px; color: #777777; } .navbar-link { color: #777777; } .navbar-link:hover, .navbar-link:focus { color: #333333; } .navbar .divider-vertical { height: 40px; margin: 0 9px; border-left: 1px solid #f2f2f2; border-right: 1px solid #ffffff; } .navbar .btn, .navbar .btn-group { margin-top: 5px; } .navbar .btn-group .btn, .navbar .input-prepend .btn, .navbar .input-append .btn, .navbar .input-prepend .btn-group, .navbar .input-append .btn-group { margin-top: 0; } .navbar-form { margin-bottom: 0; *zoom: 1; } .navbar-form:before, .navbar-form:after { display: table; content: ""; line-height: 0; } .navbar-form:after { clear: both; } .navbar-form input, .navbar-form select, .navbar-form .radio, .navbar-form .checkbox { margin-top: 5px; } .navbar-form input, .navbar-form select, .navbar-form .btn { display: inline-block; margin-bottom: 0; } .navbar-form input[type="image"], .navbar-form input[type="checkbox"], .navbar-form input[type="radio"] { margin-top: 3px; } .navbar-form .input-append, .navbar-form .input-prepend { margin-top: 5px; white-space: nowrap; } .navbar-form .input-append input, .navbar-form .input-prepend input { margin-top: 0; } .navbar-search { position: relative; float: left; margin-top: 5px; margin-bottom: 0; } .navbar-search .search-query { margin-bottom: 0; padding: 4px 14px; font-family: "Helvetica Neue", Helvetica, Arial, sans-serif; font-size: 13px; font-weight: normal; line-height: 1; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .navbar-static-top { position: static; margin-bottom: 0; } .navbar-static-top .navbar-inner { -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-fixed-top, .navbar-fixed-bottom { position: fixed; right: 0; left: 0; z-index: 1030; margin-bottom: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { border-width: 0 0 1px; } .navbar-fixed-bottom .navbar-inner { border-width: 1px 0 0; } .navbar-fixed-top .navbar-inner, .navbar-fixed-bottom .navbar-inner { padding-left: 0; padding-right: 0; -webkit-border-radius: 0; -moz-border-radius: 0; border-radius: 0; } .navbar-static-top .container, .navbar-fixed-top .container, .navbar-fixed-bottom .container { width: 940px; } .navbar-fixed-top { top: 0; } .navbar-fixed-top .navbar-inner, .navbar-static-top .navbar-inner { -webkit-box-shadow: 0 1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 1px 10px rgba(0,0,0,.1); box-shadow: 0 1px 10px rgba(0,0,0,.1); } .navbar-fixed-bottom { bottom: 0; } .navbar-fixed-bottom .navbar-inner { -webkit-box-shadow: 0 -1px 10px rgba(0,0,0,.1); -moz-box-shadow: 0 -1px 10px rgba(0,0,0,.1); box-shadow: 0 -1px 10px rgba(0,0,0,.1); } .navbar .nav { position: relative; left: 0; display: block; float: left; margin: 0 10px 0 0; } .navbar .nav.pull-right { float: right; margin-right: 0; } .navbar .nav > li { float: left; } .navbar .nav > li > a { float: none; padding: 10px 15px 10px; color: #777777; text-decoration: none; text-shadow: 0 1px 0 #ffffff; } .navbar .nav .dropdown-toggle .caret { margin-top: 8px; } .navbar .nav > li > a:focus, .navbar .nav > li > a:hover { background-color: transparent; color: #333333; text-decoration: none; } .navbar .nav > .active > a, .navbar .nav > .active > a:hover, .navbar .nav > .active > a:focus { color: #555555; text-decoration: none; background-color: #e5e5e5; -webkit-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); -moz-box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); box-shadow: inset 0 3px 8px rgba(0, 0, 0, 0.125); } .navbar .btn-navbar { display: none; float: right; padding: 7px 10px; margin-left: 5px; margin-right: 5px; color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #ededed; background-image: -moz-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f2f2f2), to(#e5e5e5)); background-image: -webkit-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: -o-linear-gradient(top, #f2f2f2, #e5e5e5); background-image: linear-gradient(to bottom, #f2f2f2, #e5e5e5); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff2f2f2', endColorstr='#ffe5e5e5', GradientType=0); border-color: #e5e5e5 #e5e5e5 #bfbfbf; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #e5e5e5; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); -webkit-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); -moz-box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); box-shadow: inset 0 1px 0 rgba(255,255,255,.1), 0 1px 0 rgba(255,255,255,.075); } .navbar .btn-navbar:hover, .navbar .btn-navbar:focus, .navbar .btn-navbar:active, .navbar .btn-navbar.active, .navbar .btn-navbar.disabled, .navbar .btn-navbar[disabled] { color: #ffffff; background-color: #e5e5e5; *background-color: #d9d9d9; } .navbar .btn-navbar:active, .navbar .btn-navbar.active { background-color: #cccccc \9; } .navbar .btn-navbar .icon-bar { display: block; width: 18px; height: 2px; background-color: #f5f5f5; -webkit-border-radius: 1px; -moz-border-radius: 1px; border-radius: 1px; -webkit-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); -moz-box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); box-shadow: 0 1px 0 rgba(0, 0, 0, 0.25); } .btn-navbar .icon-bar + .icon-bar { margin-top: 3px; } .navbar .nav > li > .dropdown-menu:before { content: ''; display: inline-block; border-left: 7px solid transparent; border-right: 7px solid transparent; border-bottom: 7px solid #ccc; border-bottom-color: rgba(0, 0, 0, 0.2); position: absolute; top: -7px; left: 9px; } .navbar .nav > li > .dropdown-menu:after { content: ''; display: inline-block; border-left: 6px solid transparent; border-right: 6px solid transparent; border-bottom: 6px solid #ffffff; position: absolute; top: -6px; left: 10px; } .navbar-fixed-bottom .nav > li > .dropdown-menu:before { border-top: 7px solid #ccc; border-top-color: rgba(0, 0, 0, 0.2); border-bottom: 0; bottom: -7px; top: auto; } .navbar-fixed-bottom .nav > li > .dropdown-menu:after { border-top: 6px solid #ffffff; border-bottom: 0; bottom: -6px; top: auto; } .navbar .nav li.dropdown > a:hover .caret, .navbar .nav li.dropdown > a:focus .caret { border-top-color: #333333; border-bottom-color: #333333; } .navbar .nav li.dropdown.open > .dropdown-toggle, .navbar .nav li.dropdown.active > .dropdown-toggle, .navbar .nav li.dropdown.open.active > .dropdown-toggle { background-color: #e5e5e5; color: #555555; } .navbar .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #777777; border-bottom-color: #777777; } .navbar .nav li.dropdown.open > .dropdown-toggle .caret, .navbar .nav li.dropdown.active > .dropdown-toggle .caret, .navbar .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #555555; border-bottom-color: #555555; } .navbar .pull-right > li > .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right { left: auto; right: 0; } .navbar .pull-right > li > .dropdown-menu:before, .navbar .nav > li > .dropdown-menu.pull-right:before { left: auto; right: 12px; } .navbar .pull-right > li > .dropdown-menu:after, .navbar .nav > li > .dropdown-menu.pull-right:after { left: auto; right: 13px; } .navbar .pull-right > li > .dropdown-menu .dropdown-menu, .navbar .nav > li > .dropdown-menu.pull-right .dropdown-menu { left: auto; right: 100%; margin-left: 0; margin-right: -1px; -webkit-border-radius: 6px 0 6px 6px; -moz-border-radius: 6px 0 6px 6px; border-radius: 6px 0 6px 6px; } .navbar-inverse .navbar-inner { background-color: #1b1b1b; background-image: -moz-linear-gradient(top, #222222, #111111); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#222222), to(#111111)); background-image: -webkit-linear-gradient(top, #222222, #111111); background-image: -o-linear-gradient(top, #222222, #111111); background-image: linear-gradient(to bottom, #222222, #111111); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff222222', endColorstr='#ff111111', GradientType=0); border-color: #252525; } .navbar-inverse .brand, .navbar-inverse .nav > li > a { color: #999999; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); } .navbar-inverse .brand:hover, .navbar-inverse .nav > li > a:hover, .navbar-inverse .brand:focus, .navbar-inverse .nav > li > a:focus { color: #ffffff; } .navbar-inverse .brand { color: #999999; } .navbar-inverse .navbar-text { color: #999999; } .navbar-inverse .nav > li > a:focus, .navbar-inverse .nav > li > a:hover { background-color: transparent; color: #ffffff; } .navbar-inverse .nav .active > a, .navbar-inverse .nav .active > a:hover, .navbar-inverse .nav .active > a:focus { color: #ffffff; background-color: #111111; } .navbar-inverse .navbar-link { color: #999999; } .navbar-inverse .navbar-link:hover, .navbar-inverse .navbar-link:focus { color: #ffffff; } .navbar-inverse .divider-vertical { border-left-color: #111111; border-right-color: #222222; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle { background-color: #111111; color: #ffffff; } .navbar-inverse .nav li.dropdown > a:hover .caret, .navbar-inverse .nav li.dropdown > a:focus .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .nav li.dropdown > .dropdown-toggle .caret { border-top-color: #999999; border-bottom-color: #999999; } .navbar-inverse .nav li.dropdown.open > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.active > .dropdown-toggle .caret, .navbar-inverse .nav li.dropdown.open.active > .dropdown-toggle .caret { border-top-color: #ffffff; border-bottom-color: #ffffff; } .navbar-inverse .navbar-search .search-query { color: #ffffff; background-color: #515151; border-color: #111111; -webkit-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -moz-box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); box-shadow: inset 0 1px 2px rgba(0,0,0,.1), 0 1px 0 rgba(255,255,255,.15); -webkit-transition: none; -moz-transition: none; -o-transition: none; transition: none; } .navbar-inverse .navbar-search .search-query:-moz-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:-ms-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query::-webkit-input-placeholder { color: #cccccc; } .navbar-inverse .navbar-search .search-query:focus, .navbar-inverse .navbar-search .search-query.focused { padding: 5px 15px; color: #333333; text-shadow: 0 1px 0 #ffffff; background-color: #ffffff; border: 0; -webkit-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); -moz-box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); box-shadow: 0 0 3px rgba(0, 0, 0, 0.15); outline: 0; } .navbar-inverse .btn-navbar { color: #ffffff; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e0e0e; background-image: -moz-linear-gradient(top, #151515, #040404); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#151515), to(#040404)); background-image: -webkit-linear-gradient(top, #151515, #040404); background-image: -o-linear-gradient(top, #151515, #040404); background-image: linear-gradient(to bottom, #151515, #040404); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff151515', endColorstr='#ff040404', GradientType=0); border-color: #040404 #040404 #000000; border-color: rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.1) rgba(0, 0, 0, 0.25); *background-color: #040404; /* Darken IE7 buttons by default so they stand out more given they won't have borders */ filter: progid:DXImageTransform.Microsoft.gradient(enabled = false); } .navbar-inverse .btn-navbar:hover, .navbar-inverse .btn-navbar:focus, .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active, .navbar-inverse .btn-navbar.disabled, .navbar-inverse .btn-navbar[disabled] { color: #ffffff; background-color: #040404; *background-color: #000000; } .navbar-inverse .btn-navbar:active, .navbar-inverse .btn-navbar.active { background-color: #000000 \9; } .breadcrumb { padding: 8px 15px; margin: 0 0 20px; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .breadcrumb > li { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; text-shadow: 0 1px 0 #ffffff; } .breadcrumb > li > .divider { padding: 0 5px; color: #ccc; } .breadcrumb > .active { color: #999999; } .pagination { margin: 20px 0; } .pagination ul { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; margin-left: 0; margin-bottom: 0; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; -webkit-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); -moz-box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); box-shadow: 0 1px 2px rgba(0, 0, 0, 0.05); } .pagination ul > li { display: inline; } .pagination ul > li > a, .pagination ul > li > span { float: left; padding: 4px 12px; line-height: 20px; text-decoration: none; background-color: #ffffff; border: 1px solid #dddddd; border-left-width: 0; } .pagination ul > li > a:hover, .pagination ul > li > a:focus, .pagination ul > .active > a, .pagination ul > .active > span { background-color: #f5f5f5; } .pagination ul > .active > a, .pagination ul > .active > span { color: #999999; cursor: default; } .pagination ul > .disabled > span, .pagination ul > .disabled > a, .pagination ul > .disabled > a:hover, .pagination ul > .disabled > a:focus { color: #999999; background-color: transparent; cursor: default; } .pagination ul > li:first-child > a, .pagination ul > li:first-child > span { border-left-width: 1px; -webkit-border-top-left-radius: 4px; -moz-border-radius-topleft: 4px; border-top-left-radius: 4px; -webkit-border-bottom-left-radius: 4px; -moz-border-radius-bottomleft: 4px; border-bottom-left-radius: 4px; } .pagination ul > li:last-child > a, .pagination ul > li:last-child > span { -webkit-border-top-right-radius: 4px; -moz-border-radius-topright: 4px; border-top-right-radius: 4px; -webkit-border-bottom-right-radius: 4px; -moz-border-radius-bottomright: 4px; border-bottom-right-radius: 4px; } .pagination-centered { text-align: center; } .pagination-right { text-align: right; } .pagination-large ul > li > a, .pagination-large ul > li > span { padding: 11px 19px; font-size: 17.5px; } .pagination-large ul > li:first-child > a, .pagination-large ul > li:first-child > span { -webkit-border-top-left-radius: 6px; -moz-border-radius-topleft: 6px; border-top-left-radius: 6px; -webkit-border-bottom-left-radius: 6px; -moz-border-radius-bottomleft: 6px; border-bottom-left-radius: 6px; } .pagination-large ul > li:last-child > a, .pagination-large ul > li:last-child > span { -webkit-border-top-right-radius: 6px; -moz-border-radius-topright: 6px; border-top-right-radius: 6px; -webkit-border-bottom-right-radius: 6px; -moz-border-radius-bottomright: 6px; border-bottom-right-radius: 6px; } .pagination-mini ul > li:first-child > a, .pagination-small ul > li:first-child > a, .pagination-mini ul > li:first-child > span, .pagination-small ul > li:first-child > span { -webkit-border-top-left-radius: 3px; -moz-border-radius-topleft: 3px; border-top-left-radius: 3px; -webkit-border-bottom-left-radius: 3px; -moz-border-radius-bottomleft: 3px; border-bottom-left-radius: 3px; } .pagination-mini ul > li:last-child > a, .pagination-small ul > li:last-child > a, .pagination-mini ul > li:last-child > span, .pagination-small ul > li:last-child > span { -webkit-border-top-right-radius: 3px; -moz-border-radius-topright: 3px; border-top-right-radius: 3px; -webkit-border-bottom-right-radius: 3px; -moz-border-radius-bottomright: 3px; border-bottom-right-radius: 3px; } .pagination-small ul > li > a, .pagination-small ul > li > span { padding: 2px 10px; font-size: 11.9px; } .pagination-mini ul > li > a, .pagination-mini ul > li > span { padding: 1px 6px; font-size: 10.5px; } .pager { margin: 20px 0; list-style: none; text-align: center; *zoom: 1; } .pager:before, .pager:after { display: table; content: ""; line-height: 0; } .pager:after { clear: both; } .pager li { display: inline; } .pager li > a, .pager li > span { display: inline-block; padding: 5px 14px; background-color: #fff; border: 1px solid #ddd; -webkit-border-radius: 15px; -moz-border-radius: 15px; border-radius: 15px; } .pager li > a:hover, .pager li > a:focus { text-decoration: none; background-color: #f5f5f5; } .pager .next > a, .pager .next > span { float: right; } .pager .previous > a, .pager .previous > span { float: left; } .pager .disabled > a, .pager .disabled > a:hover, .pager .disabled > a:focus, .pager .disabled > span { color: #999999; background-color: #fff; cursor: default; } .modal-backdrop { position: fixed; top: 0; right: 0; bottom: 0; left: 0; z-index: 1040; background-color: #000000; } .modal-backdrop.fade { opacity: 0; } .modal-backdrop, .modal-backdrop.fade.in { opacity: 0.8; filter: alpha(opacity=80); } .modal { position: fixed; top: 10%; left: 50%; z-index: 1050; width: 560px; margin-left: -280px; background-color: #ffffff; border: 1px solid #999; border: 1px solid rgba(0, 0, 0, 0.3); *border: 1px solid #999; /* IE6-7 */ -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -moz-box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); box-shadow: 0 3px 7px rgba(0, 0, 0, 0.3); -webkit-background-clip: padding-box; -moz-background-clip: padding-box; background-clip: padding-box; outline: none; } .modal.fade { -webkit-transition: opacity .3s linear, top .3s ease-out; -moz-transition: opacity .3s linear, top .3s ease-out; -o-transition: opacity .3s linear, top .3s ease-out; transition: opacity .3s linear, top .3s ease-out; top: -25%; } .modal.fade.in { top: 10%; } .modal-header { padding: 9px 15px; border-bottom: 1px solid #eee; } .modal-header .close { margin-top: 2px; } .modal-header h3 { margin: 0; line-height: 30px; } .modal-body { position: relative; overflow-y: auto; max-height: 400px; padding: 15px; } .modal-form { margin-bottom: 0; } .modal-footer { padding: 14px 15px 15px; margin-bottom: 0; text-align: right; background-color: #f5f5f5; border-top: 1px solid #ddd; -webkit-border-radius: 0 0 6px 6px; -moz-border-radius: 0 0 6px 6px; border-radius: 0 0 6px 6px; -webkit-box-shadow: inset 0 1px 0 #ffffff; -moz-box-shadow: inset 0 1px 0 #ffffff; box-shadow: inset 0 1px 0 #ffffff; *zoom: 1; } .modal-footer:before, .modal-footer:after { display: table; content: ""; line-height: 0; } .modal-footer:after { clear: both; } .modal-footer .btn + .btn { margin-left: 5px; margin-bottom: 0; } .modal-footer .btn-group .btn + .btn { margin-left: -1px; } .modal-footer .btn-block + .btn-block { margin-left: 0; } .tooltip { position: absolute; z-index: 1030; display: block; visibility: visible; font-size: 11px; line-height: 1.4; opacity: 0; filter: alpha(opacity=0); } .tooltip.in { opacity: 0.8; filter: alpha(opacity=80); } .tooltip.top { margin-top: -3px; padding: 5px 0; } .tooltip.right { margin-left: 3px; padding: 0 5px; } .tooltip.bottom { margin-top: 3px; padding: 5px 0; } .tooltip.left { margin-left: -3px; padding: 0 5px; } .tooltip-inner { max-width: 200px; padding: 8px; color: #ffffff; text-align: center; text-decoration: none; background-color: #000000; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .tooltip-arrow { position: absolute; width: 0; height: 0; border-color: transparent; border-style: solid; } .tooltip.top .tooltip-arrow { bottom: 0; left: 50%; margin-left: -5px; border-width: 5px 5px 0; border-top-color: #000000; } .tooltip.right .tooltip-arrow { top: 50%; left: 0; margin-top: -5px; border-width: 5px 5px 5px 0; border-right-color: #000000; } .tooltip.left .tooltip-arrow { top: 50%; right: 0; margin-top: -5px; border-width: 5px 0 5px 5px; border-left-color: #000000; } .tooltip.bottom .tooltip-arrow { top: 0; left: 50%; margin-left: -5px; border-width: 0 5px 5px; border-bottom-color: #000000; } .popover { position: absolute; top: 0; left: 0; z-index: 1010; display: none; max-width: 276px; padding: 1px; text-align: left; background-color: #ffffff; -webkit-background-clip: padding-box; -moz-background-clip: padding; background-clip: padding-box; border: 1px solid #ccc; border: 1px solid rgba(0, 0, 0, 0.2); -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; -webkit-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); -moz-box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); box-shadow: 0 5px 10px rgba(0, 0, 0, 0.2); white-space: normal; } .popover.top { margin-top: -10px; } .popover.right { margin-left: 10px; } .popover.bottom { margin-top: 10px; } .popover.left { margin-left: -10px; } .popover-title { margin: 0; padding: 8px 14px; font-size: 14px; font-weight: normal; line-height: 18px; background-color: #f7f7f7; border-bottom: 1px solid #ebebeb; -webkit-border-radius: 5px 5px 0 0; -moz-border-radius: 5px 5px 0 0; border-radius: 5px 5px 0 0; } .popover-title:empty { display: none; } .popover-content { padding: 9px 14px; } .popover .arrow, .popover .arrow:after { position: absolute; display: block; width: 0; height: 0; border-color: transparent; border-style: solid; } .popover .arrow { border-width: 11px; } .popover .arrow:after { border-width: 10px; content: ""; } .popover.top .arrow { left: 50%; margin-left: -11px; border-bottom-width: 0; border-top-color: #999; border-top-color: rgba(0, 0, 0, 0.25); bottom: -11px; } .popover.top .arrow:after { bottom: 1px; margin-left: -10px; border-bottom-width: 0; border-top-color: #ffffff; } .popover.right .arrow { top: 50%; left: -11px; margin-top: -11px; border-left-width: 0; border-right-color: #999; border-right-color: rgba(0, 0, 0, 0.25); } .popover.right .arrow:after { left: 1px; bottom: -10px; border-left-width: 0; border-right-color: #ffffff; } .popover.bottom .arrow { left: 50%; margin-left: -11px; border-top-width: 0; border-bottom-color: #999; border-bottom-color: rgba(0, 0, 0, 0.25); top: -11px; } .popover.bottom .arrow:after { top: 1px; margin-left: -10px; border-top-width: 0; border-bottom-color: #ffffff; } .popover.left .arrow { top: 50%; right: -11px; margin-top: -11px; border-right-width: 0; border-left-color: #999; border-left-color: rgba(0, 0, 0, 0.25); } .popover.left .arrow:after { right: 1px; border-right-width: 0; border-left-color: #ffffff; bottom: -10px; } .media, .media-body { overflow: hidden; *overflow: visible; zoom: 1; } .media, .media .media { margin-top: 15px; } .media:first-child { margin-top: 0; } .media-object { display: block; } .media-heading { margin: 0 0 5px; } .media > .pull-left { margin-right: 10px; } .media > .pull-right { margin-left: 10px; } .media-list { margin-left: 0; list-style: none; } .label, .badge { display: inline-block; padding: 2px 4px; font-size: 11.844px; font-weight: bold; line-height: 14px; color: #ffffff; vertical-align: baseline; white-space: nowrap; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #999999; } .label { -webkit-border-radius: 3px; -moz-border-radius: 3px; border-radius: 3px; } .badge { padding-left: 9px; padding-right: 9px; -webkit-border-radius: 9px; -moz-border-radius: 9px; border-radius: 9px; } .label:empty, .badge:empty { display: none; } a.label:hover, a.label:focus, a.badge:hover, a.badge:focus { color: #ffffff; text-decoration: none; cursor: pointer; } .label-important, .badge-important { background-color: #b94a48; } .label-important[href], .badge-important[href] { background-color: #953b39; } .label-warning, .badge-warning { background-color: #f89406; } .label-warning[href], .badge-warning[href] { background-color: #c67605; } .label-success, .badge-success { background-color: #468847; } .label-success[href], .badge-success[href] { background-color: #356635; } .label-info, .badge-info { background-color: #3a87ad; } .label-info[href], .badge-info[href] { background-color: #2d6987; } .label-inverse, .badge-inverse { background-color: #333333; } .label-inverse[href], .badge-inverse[href] { background-color: #1a1a1a; } .btn .label, .btn .badge { position: relative; top: -1px; } .btn-mini .label, .btn-mini .badge { top: 0; } @-webkit-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-moz-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-ms-keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } @-o-keyframes progress-bar-stripes { from { background-position: 0 0; } to { background-position: 40px 0; } } @keyframes progress-bar-stripes { from { background-position: 40px 0; } to { background-position: 0 0; } } .progress { overflow: hidden; height: 20px; margin-bottom: 20px; background-color: #f7f7f7; background-image: -moz-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#f9f9f9)); background-image: -webkit-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: -o-linear-gradient(top, #f5f5f5, #f9f9f9); background-image: linear-gradient(to bottom, #f5f5f5, #f9f9f9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#fff9f9f9', GradientType=0); -webkit-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -moz-box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); box-shadow: inset 0 1px 2px rgba(0, 0, 0, 0.1); -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .progress .bar { width: 0%; height: 100%; color: #ffffff; float: left; font-size: 12px; text-align: center; text-shadow: 0 -1px 0 rgba(0, 0, 0, 0.25); background-color: #0e90d2; background-image: -moz-linear-gradient(top, #149bdf, #0480be); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#149bdf), to(#0480be)); background-image: -webkit-linear-gradient(top, #149bdf, #0480be); background-image: -o-linear-gradient(top, #149bdf, #0480be); background-image: linear-gradient(to bottom, #149bdf, #0480be); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff149bdf', endColorstr='#ff0480be', GradientType=0); -webkit-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -moz-box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); box-shadow: inset 0 -1px 0 rgba(0, 0, 0, 0.15); -webkit-box-sizing: border-box; -moz-box-sizing: border-box; box-sizing: border-box; -webkit-transition: width 0.6s ease; -moz-transition: width 0.6s ease; -o-transition: width 0.6s ease; transition: width 0.6s ease; } .progress .bar + .bar { -webkit-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); -moz-box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); box-shadow: inset 1px 0 0 rgba(0,0,0,.15), inset 0 -1px 0 rgba(0,0,0,.15); } .progress-striped .bar { background-color: #149bdf; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); -webkit-background-size: 40px 40px; -moz-background-size: 40px 40px; -o-background-size: 40px 40px; background-size: 40px 40px; } .progress.active .bar { -webkit-animation: progress-bar-stripes 2s linear infinite; -moz-animation: progress-bar-stripes 2s linear infinite; -ms-animation: progress-bar-stripes 2s linear infinite; -o-animation: progress-bar-stripes 2s linear infinite; animation: progress-bar-stripes 2s linear infinite; } .progress-danger .bar, .progress .bar-danger { background-color: #dd514c; background-image: -moz-linear-gradient(top, #ee5f5b, #c43c35); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#ee5f5b), to(#c43c35)); background-image: -webkit-linear-gradient(top, #ee5f5b, #c43c35); background-image: -o-linear-gradient(top, #ee5f5b, #c43c35); background-image: linear-gradient(to bottom, #ee5f5b, #c43c35); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ffee5f5b', endColorstr='#ffc43c35', GradientType=0); } .progress-danger.progress-striped .bar, .progress-striped .bar-danger { background-color: #ee5f5b; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-success .bar, .progress .bar-success { background-color: #5eb95e; background-image: -moz-linear-gradient(top, #62c462, #57a957); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#62c462), to(#57a957)); background-image: -webkit-linear-gradient(top, #62c462, #57a957); background-image: -o-linear-gradient(top, #62c462, #57a957); background-image: linear-gradient(to bottom, #62c462, #57a957); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff62c462', endColorstr='#ff57a957', GradientType=0); } .progress-success.progress-striped .bar, .progress-striped .bar-success { background-color: #62c462; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-info .bar, .progress .bar-info { background-color: #4bb1cf; background-image: -moz-linear-gradient(top, #5bc0de, #339bb9); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#5bc0de), to(#339bb9)); background-image: -webkit-linear-gradient(top, #5bc0de, #339bb9); background-image: -o-linear-gradient(top, #5bc0de, #339bb9); background-image: linear-gradient(to bottom, #5bc0de, #339bb9); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#ff5bc0de', endColorstr='#ff339bb9', GradientType=0); } .progress-info.progress-striped .bar, .progress-striped .bar-info { background-color: #5bc0de; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .progress-warning .bar, .progress .bar-warning { background-color: #faa732; background-image: -moz-linear-gradient(top, #fbb450, #f89406); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#fbb450), to(#f89406)); background-image: -webkit-linear-gradient(top, #fbb450, #f89406); background-image: -o-linear-gradient(top, #fbb450, #f89406); background-image: linear-gradient(to bottom, #fbb450, #f89406); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fffbb450', endColorstr='#fff89406', GradientType=0); } .progress-warning.progress-striped .bar, .progress-striped .bar-warning { background-color: #fbb450; background-image: -webkit-gradient(linear, 0 100%, 100% 0, color-stop(0.25, rgba(255, 255, 255, 0.15)), color-stop(0.25, transparent), color-stop(0.5, transparent), color-stop(0.5, rgba(255, 255, 255, 0.15)), color-stop(0.75, rgba(255, 255, 255, 0.15)), color-stop(0.75, transparent), to(transparent)); background-image: -webkit-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -moz-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: -o-linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); background-image: linear-gradient(45deg, rgba(255, 255, 255, 0.15) 25%, transparent 25%, transparent 50%, rgba(255, 255, 255, 0.15) 50%, rgba(255, 255, 255, 0.15) 75%, transparent 75%, transparent); } .accordion { margin-bottom: 20px; } .accordion-group { margin-bottom: 2px; border: 1px solid #e5e5e5; -webkit-border-radius: 4px; -moz-border-radius: 4px; border-radius: 4px; } .accordion-heading { border-bottom: 0; } .accordion-heading .accordion-toggle { display: block; padding: 8px 15px; } .accordion-toggle { cursor: pointer; } .accordion-inner { padding: 9px 15px; border-top: 1px solid #e5e5e5; } .carousel { position: relative; margin-bottom: 20px; line-height: 1; } .carousel-inner { overflow: hidden; width: 100%; position: relative; } .carousel-inner > .item { display: none; position: relative; -webkit-transition: 0.6s ease-in-out left; -moz-transition: 0.6s ease-in-out left; -o-transition: 0.6s ease-in-out left; transition: 0.6s ease-in-out left; } .carousel-inner > .item > img, .carousel-inner > .item > a > img { display: block; line-height: 1; } .carousel-inner > .active, .carousel-inner > .next, .carousel-inner > .prev { display: block; } .carousel-inner > .active { left: 0; } .carousel-inner > .next, .carousel-inner > .prev { position: absolute; top: 0; width: 100%; } .carousel-inner > .next { left: 100%; } .carousel-inner > .prev { left: -100%; } .carousel-inner > .next.left, .carousel-inner > .prev.right { left: 0; } .carousel-inner > .active.left { left: -100%; } .carousel-inner > .active.right { left: 100%; } .carousel-control { position: absolute; top: 40%; left: 15px; width: 40px; height: 40px; margin-top: -20px; font-size: 60px; font-weight: 100; line-height: 30px; color: #ffffff; text-align: center; background: #222222; border: 3px solid #ffffff; -webkit-border-radius: 23px; -moz-border-radius: 23px; border-radius: 23px; opacity: 0.5; filter: alpha(opacity=50); } .carousel-control.right { left: auto; right: 15px; } .carousel-control:hover, .carousel-control:focus { color: #ffffff; text-decoration: none; opacity: 0.9; filter: alpha(opacity=90); } .carousel-indicators { position: absolute; top: 15px; right: 15px; z-index: 5; margin: 0; list-style: none; } .carousel-indicators li { display: block; float: left; width: 10px; height: 10px; margin-left: 5px; text-indent: -999px; background-color: #ccc; background-color: rgba(255, 255, 255, 0.25); border-radius: 5px; } .carousel-indicators .active { background-color: #fff; } .carousel-caption { position: absolute; left: 0; right: 0; bottom: 0; padding: 15px; background: #333333; background: rgba(0, 0, 0, 0.75); } .carousel-caption h4, .carousel-caption p { color: #ffffff; line-height: 20px; } .carousel-caption h4 { margin: 0 0 5px; } .carousel-caption p { margin-bottom: 0; } .hero-unit { padding: 60px; margin-bottom: 30px; font-size: 18px; font-weight: 200; line-height: 30px; color: inherit; background-color: #eeeeee; -webkit-border-radius: 6px; -moz-border-radius: 6px; border-radius: 6px; } .hero-unit h1 { margin-bottom: 0; font-size: 60px; line-height: 1; color: inherit; letter-spacing: -1px; } .hero-unit li { line-height: 30px; } .pull-right { float: right; } .pull-left { float: left; } .hide { display: none; } .show { display: block; } .invisible { visibility: hidden; } .affix { position: fixed; } .tapmodo-logo { display: block; width: 103px; height: 21px; background-repeat: no-repeat; background-image: url(data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAAGcAAAAVCAYAAABbq/AzAAAAGXRFWHRTb2Z0d2FyZQBBZG9iZSBJbWFnZVJlYWR5ccllPAAABUNJREFUeNrsWX9oU1cUvn0pkUDlSaDSEcgoRAqFN1IqhY79IRuFDUFRFEHp6LBYMhRBURREQSYbW5UOpaIoSkVpURDEYZlMWhiWDQNloigWgsFCoFCQBQphj3nu+C4cD/e+NCOTsnjgI+/d3nvfuef3uW0aHh5WjLJAHO8zhMdq+dRGCAhJwoR6T+OEDJ5vEb6rZXEzfjsIo4RPLXMWCPcJhwnzEXvlsIem1++V8w/1EtJ4fl7rYg+a/cOhGE2thJ2YE0Ts5bPnsIEV0kKI1WMjD5udg7VHURJKsjFzgbCFjcUxNmph9HPCdcIjhm9gBFLZ5u85zHlJ+BuGkrPw0o/vXkA02Eu4hz3GEHa1Ed7E2G+Y4zrvt4QpzL1LOERIRHjJE8KfhL8Iv2CPKOoknAUfj8BXv/ljE+Uc/bElCGcMwrOFtTOEvOUDaQjNRWuY4i8RdjvmFQhdbG61fTVdJAyx9+sOA1Is3PqW8a8J59l7N4TrO/j8DL9cMVMsV9voBmEXe9/jMF4FeX/hQdvaChf1ABjVRcBRCGstNtXMjBA2WQ6cF/mogrEZKF6JuKvnXiXcYX9rj1Cc+c5lwu/igN1VFFixhN6KmLNJeP2YUExZ8Dkq1h9higkRia5ZvmMoA1nGxPkM9REOeHD1UbhVAAv6CJXFLDxJh4lXhP2W8KM3XQ+GDJUw9rFgUM/5inASBy4B/OAuOkYYhNUuijBpI20UHxA2i/EfCKtEFZoSXtDJlKjPsFp4aJ9QHs/XWm77CF+Ks8nwm2Ce+CF45TLsb2aTslDQSXwghFd1RiT+WimHOO5y/6hEGjIrniP0sJzn8piSsHrFwpErx6bE3Bk8X4ORGj5T2CMmeMgvs+UwNE0osnLb5MC0J5iMI/H2Whg1tPgvFaOVfJopZh4HWVjm+iQzjgwbn69ztfVaCLGFhSJlCXWhMIC2Gr/R4XgueyKxmY/Ngimbl/xaxbKNUrUFXGHekBXzdyHElJfpOdpoXhCeMUVp77hdZ+XMMJ70+R/CY+6J3Flk75Ps+TjOPs56HEmTIoz+DFmN8DkeXElWZ2WLpSg0lnOODxaFkHWJOMAsLy8UOIUDtIsEH5V3Mswyl5CD6u05OjKcYO8B+EoxIxwSa06x3NqGs++I+MYDUQz1QVYJpoNTHqx3VihHWbQ+bWGK00+Ep5akXGHWNijCYgmCmINBbLV4sqEfkQsv4raiC3nAFXIX2W/oGFeO/HMGletji1DXQxactPw2iPPrCLMdZbGyhO+tKBxklXsVBVmhCXdr2rq/RxWhD7IOVdAY3PwyFlXr/GNI1AEEnnck3jSEUxbNbDmif5K9yLukTETEsN2UVEQLUY0SCNVvRYEmcfG5kighYrDscf731LyCeVuqEkZrpawI30pUqXFL2V0PSrIQGqgabvm9BjLEoujTOkTFtEO9fbGbEq2Ebynpux0hMMWKgxzmJcBDzNKb+eLqKN5oyjE3CVoJGyEs16XnNibk3Wz9TlZR9eF3AD1cDIrw8W6rOj9hPPDeJoAiB5DX9XVST7NqPGpFxWe8w0eFGCLkpDCnAAWZCkwXOgdFExrDmk6su2EpgAri1iBEldqG314UW3tRfCWByUZUTrWYz3PPhCiXFbP8aXZ3llHufyW42o4BKOMpK6MVqsIHjRbWbDcZvN/qgPUXWF7IsKusUPSCxltMKJpECAzgZWnWXqQtyishvJoK9D7WhRhvWcml9H9VNfks9PjwkhDPrayfCSDYWUvVZd7bEbJaWJjLQnlFppwA+/gi7LWK5tTcG2rFzb8RYADOuFkIlIcpJwAAAABJRU5ErkJggg==); overflow: hidden; text-indent: -99em; } .tapmodo-footer { font-size: 10px; color: #aaa; line-height: 1.1; border-top: 1px #eee solid; padding: 22px 0 16px; margin-top: 3.5em; } .tapmodo-footer .segment { float: left; margin-right: 1.5em; } .tapmodo-footer .segment a { color: #999; text-decoration: underline; } .tapmodo-footer .segment a:hover { color: #888; text-decoration: none; } .page-header { margin-top: 4px; padding-bottom: 0; margin-left: -12px; margin-right: -12px; } .page-header .breadcrumb { font-size: 11px; padding: 5px 12px; margin: 0; list-style: none; background-color: #f5f5f5; -webkit-border-radius: 4px 4px 0 0; -moz-border-radius: 4px 4px 0 0; border-radius: 4px 4px 0 0; } .page-header .breadcrumb li { display: inline-block; *display: inline; /* IE7 inline-block hack */ *zoom: 1; text-shadow: 0 1px 0 #ffffff; } .page-header .breadcrumb .divider { padding: 0 5px; color: #ccc; } .page-header .breadcrumb .active { color: #999999; } .page-header h1 { -webkit-border-radius: 0 0 4px 4px; -moz-border-radius: 0 0 4px 4px; border-radius: 0 0 4px 4px; background-color: #f8f8f8; background-color: #f9f9f9; background-image: -moz-linear-gradient(top, #f5f5f5, #ffffff); background-image: -webkit-gradient(linear, 0 0, 0 100%, from(#f5f5f5), to(#ffffff)); background-image: -webkit-linear-gradient(top, #f5f5f5, #ffffff); background-image: -o-linear-gradient(top, #f5f5f5, #ffffff); background-image: linear-gradient(to bottom, #f5f5f5, #ffffff); background-repeat: repeat-x; filter: progid:DXImageTransform.Microsoft.gradient(startColorstr='#fff5f5f5', endColorstr='#ffffffff', GradientType=0); margin: 0; padding: 10px 12px; } .modal-body { max-height: 60%; } Jcrop-0.9.13/demos/demo_files/pool.jpg000066400000000000000000000576331236134236200175710ustar00rootroot00000000000000ExifII*Ducky2+http://ns.adobe.com/xap/1.0/ Adobed         #"""#''''''''''     !! !!''''''''''r"!1AQaq"2BR#3brC$DS4csT5!Q1AaqR"B2br3C ?qd?6s{pn]zW:]Oy;NhY>6G^.=srMSwK[U+ܿ${#mD@Hd;gy1>23EDǙg rYwH+Ͻؑ:`i> -r>>-}i`Mjz43YRĚ,=I[OشA3?Ex4 JطrlLL4@]M϶.-ı1r7+@YnM |ȡ]F5řk/\g~lUKnmӍ"uD8ڱ۶LZ%|nyQy߷ڏ<]=JBR/]iZy/wg-hVEr I4L9JnHԚJ䦂ZJU\ *mEqZ$*26橹I)GqSH⨒,BuNP[RB+  V@n(XTB@ @#eLJ.!>HXbRܖ)}h Jh1!F&%XtB9+WK3 F-I,7 XWj$bDVĨ QS3un9dw Huͱ8}OvӲhx7rC}S<{2Qln#rI@8+vX6lc.FF!uhK1q~Px%`e0Γr%}knsT:bř'i<I6Db+W#n.hW ہ!Z!nB ]k,v\2NVk*1"آ҈ǑV"V@L'*"4 O` ௤8$ FM!M _HpSTˣ5T6(Wh?L傚 # `HPjUFdLoH)Z1(S =(eh$(ÂnQD0ulL `E4rLO-NG@Az(SBTT"ԄNlTFcS(Csf$Hr`wxu]{55[#+$^,N~J%`0B.5̗S 1/Vp$'TV##&#p8(;$$/lNHrLF(i<8BB?z@eb ͡TI"樅6LR2q nFWI Ǧ\+gF:F(bdTV-sL ZeUAj2|TNI&'IlZtV"I3LZ jf^%A `+$d躝6Z)MBL8)uli Y3AAe=DH'$KؒѥFYfN +s!t EVJ 3*Gw=&6"6qLYHIюEl2 " ,F`*2H:,>ZHDGt^c!IUG$'PH- 4dpuZx@ AT$ HV@  >*iG 4T+ҭ tIE^ ^4F^LJp> NӵQ.`ɧZܓg41%bȄSQ lx+pZ8b sn& P˩p> XFlΒN>ς0k̊EYYpn˒`fPܶbYߚtnUB ɍCgopE4͠In ɜ-$$@"/CE : Y]Bmiƾ >'G"%DDc%mtɗLZ8O!&QM?-(I@5[26 bOQA M(.bT{y st~Lӂ)\Hh |*qT@jGJAFBj(0B*c "+\SpA"*!$K(( #bEN2RPM o"8jj pUn%&3EË 8ܵ#)MO?)r;cLYɶhq% qfi~SGpn:DDZ%j.Bj|ps|&CAt D NfG .'Y+7I "IrP\ `RH.3!p>ق21,Q%RCdBԪ z+sD%J}0JIVLRd$&$2d( ueЗ( 1!VVI jB@(b!S J( FPS" ^j?(W[pP7*brCL"$X-(S5<J H5T#"@ LbU3 ^ T!CL `Ʈ( \޷yRITUA`][ ;E7䅁44@n6^ < VCn%y_!aiqe-QXLMhH˫Vh1I 6шT蝁N\iUf!X|ۖ, 58Qۈ ^)BKQr,0>3ۓ D(ld9Z1̤iE:]vQ%/. iQHnF& 1AbF $C+DD$PQg>e ソ@ b%*Fc%A5<ti*ZAB+ F-\ zT[?!`E'}k!Cbq05|)oF!lJ`K bv$i|m͊O%:AQ>KfT{k+OI'>#T&[&BmV{}M+̸rF`ĘKP_a)69ڣe3,PJ'L֘dnnG>*}mǾwFn=a^i31m#s̵bVس.Vy#uk2G $H<"['CXϩlJelV^+lptrU3xiza\*3J.C%s*fT``5v`ib0R[٥JKufcQ,KV#D>4=$h0&z:npK"8Ɗ\c pR6ܕH+bDY!6A43ۓAD,ڸf1gji#*3d9LIdpZ@PLbI%.TbFX$]XRք(XfpCT'3&2Xce%7$Y"6rJT%fXgb7f}Y|S+sryypaf5Xnvo3J4.6ƙރ!-gvRɜ 6h Jϊ+Wugu5 8j|E:}CNj-MIUX%Iw7&c+mN`{~|5[9$"XJz숓>yU[סHII~ \AU)_ri\Ѭąr関OsKW~VC$Џ\bh (j@jAY6Q~9ٝM<*k L9$#ddަ1 -R.9>QSn_ c~+`:'!;gݍ i4<.W\ ȉGLmC:Zg($0P@G(:'wV\UJ%H m6`r¢2|:eF/N~A?Qj#$.ZbT 0% ȫ"[|RH&وӑ(Mˆ'M$&RjnŢN⁙_\q 0,{`Heo2Dji.I1͸$c'-9%!GeLirp`1 kB h>ZSGv&6$8D) J:;{؆DPDirǻon(gp~A.H8b/ટ(ne0BjvH\n绉yB?'t}pZ쥜 GsE;\ 8EpZ/ўign8 Bw icR=1:n|I7{J0q:HVZɶ} DbdB @ Цjd;敍:"{yHZN.-Z %h*듁]j}O06~U=?`kgj #Y Lzz̉Ētz3[x`mZ-e"r.PvHI>+T^ihë\ G.:YqGW"pvjs˃*"5I55LˊӦrbF*;BQ."b`aˈ.!cQG};x(OP&bH'h]`Xqwwۛ{P+Қ8nHD p1GTC/iu?!4`öЈBR0D`H*-):d_G)\ 0> lK,MRZ2RS2oj_er"?!V=r$ͱ8H#"v&_-_nxـQ Y8>`\K!wc<"HhDF(mz:p8D`A% `jc+ Xc?rr"`+d [^mƀs٪y jb$ms h)FEt#!6ȪmP+W̆8ͱgFy->d*h$ڈP Z-i8\|fĔ'`Hco 2QEpW3-'SE* F%wRWLq@|Tf"m9v$ tlNut xN%KǽDZj^YG;Ƿەzpv"3|sve;+zt||5S>KmzrV2G9a-ݰ׶>(<%w[}F`=ݻ5B~W.(%a@ (] qqpAmH#0CV!l, ~[EȪAS8{omfDs3{7ѢFB{t sEfXt,< +xERdtjn;p?i2n.7&S⣣\W\8sh HJDb:ۂ_[nMǦ91:p7`bC2Õ4m5.3eFq )%=tvc<akvKik%)H#Tq~+ E\\EhVA +cXĀʹI႐1mbmS6d6O1qɎIL"BK6?;v%jR}&!xN@ x'Frt@ @Ib"+WI\L"2R8N8H  DNƠ?TFSDDC_51 eHs>X}IAj6&2Էi H4jܹjߙو3] N:#5EY? e&Ʈ.|HE1@41v$^cfʏ_^yH|́Ȭ7 }ͳs$U^޷[W$4ȸ.(̅m] <@lMSe5D"ז02oxviLtل$t$BfzOĂ"I#Y)Kwu@Bg+lj*шy~ .MY^NC3䴹 !6S\V@,|qKy@H"8@mIvnJTI.e@$vf|]Y4(6QH@j%D?4Iߛ*i j PfHxEP8%HƧH _J"mɞTNJf>aY $#ZbȵO$-8sDF(f#c suܽ[M ?.{l볷٤pW.VfRD5O6=o 6m&@ݔD9`.UB1.<gR8[r N:a9eWo\zbg&Y.\=ЋIq9K<6kUpLaOhwe۹&d པep;p_ A1n2v&}2^݋7~,nN^PH樂em;A8H!فa PzOI_ّb\j^(Qk#Wю*&2 :g0B(DvENEr&DTZ"&?PlK#ы0 FkRW5M?Ps&@lFfDR ';ni.Bk΢VE˥s+ilƇߥ 3@5jAcRx.GVP@D@YdA T3ub$@F!-: !wD@&P b_: s#ݽpDƃWJA#QrRA/\MmHx%\BQ2ƓtJ&/`K7 P^G3v0":-F//ƵМt<ԀjAA8sL1͉c:x6)`̸ 9%vFQfS@3wH955 z`1nBP:\0ټ-LH$Tzc9ك\1 HG3vqj*؝A@8D4y"\P ,R^ BVȒR yLPB$ѝ5:E-#hhHPFi[kiu( w H$rb Y4h2QصKr j NOhG19QyU Ée6)8s@ 7nH$A.J-nXg\ kReHqMH*8#A#$@"ZFeNLItt jrIS-&FC]ܸi<wt[A,nnCDqp\p1!H#Hh1$a8GHŹpuA f,>I6$ʣry E ݷnbF7 4 9*7 bTi.-l= 4a1-.弡yljvw~kdaNjmZ'pIFߛD[ǰmv܈jᕸo}va#Z«n=K cWmi|x;nedBdZ҄d͢T}5^wnPt[#hSȺ뱸qf[kw˴6Z.Ah%^7qo7'l2ƁB&-nMn$en7CNĥ(t4Xvw`eԬ,^28$4qLi3$:i]Rw.Zbvo8?sҗ6rGXB޽[j5l,v-ܶpc;2 iAK]3n܌Hr&[⌏'ݥl7bO0M uϕtwT\4 |W!R 9%N}@-2v!> L6`:F/J5h&#S:8gP$4',XQd]MNkbvWi~IoHVo8}J5uM<戁ƳP `љ'gz1HJ\P+!T$$r f-) ~ " ,$c!pQbwLc IhM~+-1$beO(%hP;GI/\dNsn(y+ %H9?3 )4Aj鰵@5ŐN \` u90􇪒S˃PR PNۑhBM!WPRг4`Ň\4Y)Lʼn~ Ž/`鈩od'n1$!,BACN'!fRKC@~؀Lj,rCf2^ GD+?iy#Td.OT K[~kUDq S(gkg6ö4rDgq`Ust&23`AfDD`3*cjA9oYfMps[dTPrtf#DoH&W4n0|ZR." Hw@t:b5q}Sr LȔha"z\$\h/EqQ`s9̤D|"َBB2223 = ~h"-i}tw< L cJ3@4a)j>(1r1K~O ǃ,7. GKi3lAԔ#~xH މ*-[,25rn%$p,JO8 ZVb6ᬌ2Ŷe#NH?5!6oI9KSaB~ Wʌ޴AhPP+]6WFȍXV\?ٱ]kXw;1 E᳹cmJpϞ[Opw;]ퟸ}.FMB'd x;lvL=KstDEkᏊ#l;mԵgy2u^@o=?B֭_kp-@CDA譶S[e]O;o܄za܉"uSw g1DIFR #)JqUpUk3U \c,Wn/Y_n[]QFw@ _$RS&bp.%!ƹl JZϙܣ\q2@N#Lǚ0 Guga+Nb+yB摤p<9*0x>\2A@ HqHX'*Ǟ+{sf#2u縻-չԌA!.-y&## DA A0h'[Q-ێ\0eG[yvF?೮b]9#,2(/@5 7;-ڳf9qkW"5?Ւ~tuG]ŏ\Q]O'4yGQ$DjdgT(t@#LQHQ+&Ȑ(-CI.ዻ$f1JSÒm[?UL"#]EB!d!\, eRS@FHFr+^h 1rRX!j݈8d1mD2%*Xq&`ջ$M5jr!bFu -1.L8GDҬʭIb-yvO7-߉$,inl0<@xc B-1jTeR:;܅ށbB'[ skTct7N4޸?oX&ٓL!%Jpj?\&.N tdDYQ 2*7v|N#*{~ډCsrz Y"*0lN~ oX'#Ѽk׶B/ o60VEmn#[ȱr}wԈQ@{_}[{ 5*oiݫKXbu[q>vǨlݏ9QyOs-pd n$t]{sw-[ ݸ]yR`G vѽgnNV=;u0!Ջ>|nh}>B$K]uySU}ӻZ6#(kۘ"NuC7ڥٍ۱=ţjgvpn>.ײmt߱=Ԣ`)Dj3S*2H{;7ԔrRy7se|9>~m~p4!t/+{ULa|vNFF3 ٽ!ۭ[;InnJc 0_4 ‘{og[^$@NvUFSk]B;7P=.289+; t.x/aV`gIğ2=oEp3P*b@vn0yE'ckt[ÂL9]/$GڒhCN>^9Fs%y+I׍Ep>*&Ci[49D\3&:E Ż^j N9~ p1Ij-F "/x'CVfRvtCB C"x{{UZ c+̀.,1;V@.1)6 Iܗ8mnݸHryvsk;{ڶCBB;[cHmC89 sEo*չ-k(K%lFJ=H3e{ ;+6X< XjB{{`__UѪ/_7*p/sٵ:*b9~œr])GզK>y{̷vvou_$i^5BxI/G;a-]ӷupތ7CFV}wwu~!5iHɷ;D;i‹RSeE;kw|$&$6߶7oԭ_Tjp\G6*/^[҆dڶӈAaTE2g@ Ow{,\:r<2\_AZp4p92v'ۙUv4Ț t~u<&r~" K;4]j쩦H}GB:33/D۶Gi쯀zLS]/#-xSm1%ul\vzf-;hG-MM'憋d6Wv}'N%cgvHWco'2iD~Us:O=2^ Z:/@6vmM]L Ԃ@||ݱkcL;.70u#&5 z3^4QƱp:[ïi Hvw$j(YpDcN/e9m/K1DD6w2 XT> ҅HβzFd% kv# c0ܸ5@lGeݸ:cn4E̓ۄt2B 0!)ޱ{U86vbqr_붵J7RH+Ň :Ieݸ۹. *Eˍ bxq!xFf`Mt{|c TW}6r%nt +~m6;Չi/Ê;uF "U:r=0˻a;x-=_ElxmQ8] N| Yk:uN& śFk !b܈&SC|GڶnpoOm{i{nҳlISJw__RCɞFnI>N%s\';~q^/dZ0&_BոڄmADD}FTېY .DSIupJ*<8ܶeSKڗnWyt;gm%!v^D"mMkt#/o.vHe}"Y,(XX E~ kcMr86tt@Y-Cф`̛<0"7"bR"PL"ٔޔ"jb͇j^U`]H8u)G3uyTX eF~@ } A"6[帴1)z|]mE "VN;'* x,AN|V '%Y s7?'d\n~O[ܜ ~6!oqni8oyԍDv$h|R㸹 PFV^ Ѩq\sj25XO{;=zp8F9>4=;mv@F?CY/GK{c&ZOJ'" ;ۉlc&2*1^*ޖh[ukn^'7=gxف":^ZK"9/{rͭyXeUOw [یg9B7 dGg>ݣ+: !b LthFmȊSdۈf#lf.S" rYbrN*a"RT~X"W}ǃ~NK:6} @…Oox KɚqܮHZ(ckBedیLA#رnVŨI.vk ,"ݶE\[?+ HԲgᲅ|gM?Y2RvKjDIȬahj> 쭂A=C?E?̇,ZcLKy$1ݠӪG!8O&buȁ>Q7$ B`LLS J>zACүlҒ'4o7G&T/5+,NVE윫n]خ#x$vh  褬u9{$ {SOD#2e>rOeGpx3d /"(㜊׎A a'ME7C4CcldKo͔ OPلpds @,ҋ۱J7ݚ|Ir^|kBBBqbIigp+;sR[&tܺdcL6&?rC rnaCnjr;Q_';jD%&%q;fymdmBdƔvۦfl?VͮusMbb&D`QG}mgqi.3AӺ^~+ܝk;kwnڵj1"$h`Oyx/sa/Ϭ^cD!ŎLaԷ_iZpwI3ĕu0ҿ7"WMfO/؏/c?q?E*+?؟c}Q߰ %"]b__K8-Rr>U Jp Upvbx `{FWekذjRhk5TVضh͹@b8hzDj1oœc>*e}` k|jc-éEMc}Rz1wr5G&15mX X @+k#GILSmLI,O%P#0Eݑ?< '%ϊ ǂSP)*BU[w-Yf ̤)è}UQ[(-#FK2G#-1TFイ.)R K(BRr #+,ji!0$ 4<YG%zqpTVWA7`uj-aR jr+QԲt82RX5hi}_IJ,~%C)02 RT?"-@H.\$iU(D1RFLI嗐CFؑ%~HcLDL#c ңb߫(@ н~)l(@pN7[riڃVTx&۵><,ٺIOT$[YH4lBd4H95`U3!Fa]bY9+vU;p8pN$B/drqJ E0q$.8%Eks9OFf0洜5V Nʁ$/m>0\n~-PURш"gf2|822$1hB-xwj)ĢwOo^@킳sC*b ̤|ˊ|.JP!D%Hݸa*FG0 I8di2qT-I2`KFTNRf9Hۼk#T}jd_ !t? >$!,(1 Fw~J_PVn^#"if4r`R Y CKB.jz1#4/ ny) .1l+⠿Ǔs8%IC"feD>jWX.Z]YlQuAzx#0KRh(h ',h zaBSo-&GY#4?_8 *Kw=ŽLXJB5bjKȒ7c"4OOy9iy,*K/pvH|J1%O Y~XJRZMkq踵vbn8DsP8.0},xcUϲ4$ 1DȒ fUlnͿW O͋e(rLS<Ncb"V\Ϣ/U1ǃ:t:4ı%.绻 ?7r^^:R( c@EW^ce@+'_$_N?b3F]AH@y@ })Ȃ߸}S%o%}}۷Z}[r:~ۑ~2KH/`T(\bkTU|lkQ7t*G"eS?ڃQ8jm+>Hyf9,=b5@NeP=P[{y?bk *H mϢ̘BϋitKXpSrow>?W20J|gv@Ji8=wET^ElNgӿA$'j(,;^!j#" ?5eETQ@\pU (\K>XbĨ<2-"1?z_TQi\Vǚ,Q_'QE@<1CwLrE a,2j(!ck > (mqwp\cZ/]5矯 sQE Bp8TQ ^S#E 菂d>%2cJ(^T~*(&_Qᒊ# QE9H|> ( d! |PO3\J sbm 9⢊,?Jcrop-0.9.13/demos/demo_files/sago.jpg000066400000000000000000000447131236134236200175440ustar00rootroot00000000000000JFIFHHExifMM*C   !(!0*21/*.-4;K@48G9-.BYBGNPTUT3?]c\RbKSTQC''Q6.6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQZ! ~ :3ȡP{Ca&g,1s\)Ѯz-SdJs)r)PZ UQ~Mՙjbާ] d38y1ϖy٫$w=m*zMJz(C@e9s×^nynyt:WV,1|w̤΍ 5OR =fQ9wSX`Rk~]8r}y6U5Ѷ:]m<=7K2TS-1g8mcAB=-o!ΟL=sGXsʰsgYB2ʦ6gq6^z|;D>+7S*2tsM5uae=9OO1QϮM%I,Y! &4Elff#yBqvy1%[)ꦋ:9&Y.ɦ'<{qyiϛ5Z*6N}3r|q@KUiYۚvӍĦ%U4S() |qreӚZ 9LzEBnbǦ(*VVYBM+C%(IMӬi4M7f]9ZXJ9·61Է:ZS 'yMY-AC* iMj f&^\zNZĚd1 D.R3LߏH&:N'2@ҘT"M ;S:yMy{fQViSGRaZʊG-6S A&%@͖<SJ16#nR 1i|A]fi#4 gSidշ#A2A"J:rBd2)stmZ-)Ӽ6mXrE`%bYFjԆ)˔6xjӷx=a&L& n uþ5r] 6+0ȳ,̚YN99c9 jMXTE"GAMVDףkEM6ץfC([R38RS)Q;2Dt]2SEdB`&PUjյMv7Z{+Y琬ȩgYQ$*i$."'w.205"Q(H鲺v.tUu/ut<*D(3A"[zl%[eyI(*j-M17kVRW{Dy#NY*+,cjIe Nߛ~ilhZ)J΂֚^mim'"UJY5JԒ&i۫2#TA[TJh:YGnhT `WhҤ8'dN2L P-;yk-o (0H TJUP]UyoIdc$9mQQaa;3EEk(Co.nX]p%7izs9N2WistO0Et^4ʰshCNC 缗|D7βZ*;v7su\'Tʴ/M֖*Fqҕ(dXhS)h!ϾB|[5dI)!3UkV4[֩VXFt"w @ *办ߟ>AMUSSIt9b:ut4Í\ޖU1E14"P]E2'~7O+?O!jjd*tPƔ1 U:u.7Íݭ)m%f,# vIJ"J4 N ;5 Xu8mK g(i><յcLTeX!AY@IYD7UELU|[]r,u|EXz<٭T_ZۺlʲS6FAIΊ#T:{^}:(r]:\9&jZrkMLs: SjEAR͕VFltּ\ܗl2RYZѩe]N%5-^xtEec5[H1$)no{(*ˣش: Ui37Xt0ܽ93ss.j:1&t6T/O? sO;nDk`st4tn*:1ˎVVLKD" pSbǣ.]A3qzZٷ 7MQTgFɧKYMVfps:Y11kwYMhDSp`UtPG\P iISY WOYtڅkqya*ޮ}/ ;loEI@ d2[ sI**S;f[6|ϰ w=ioi:"uH 䠛f:>t@.^ޕ*Xa89JrkJZms/.(l&}y{sfsƉ`&nC s y1vkJ)gH5Kmz3mkZ<Ϭfm2л1Ӯu?\ R2 B#`2ZǮJK+ƩڪU#)I:ߣ.׭rM]V %oۍ99-:`SduMCsXc(.sTLDڊSP+mk' !0@"1A2BP[$Q^W"(+E&(^(OzQEڽ,#!1?V(=YfC/ ) ) V,-W1r/jLILR/sBl,ZYd@PE$ffDv/jc$1BcFh~A3HPe3GeC}(Z/Ud6IHE[)`b$9D^C5ЙeC^!hV2L=rbD12*L|R>) ZYeYebeR2B2c$$;"1ifEZ2-beD#"GJ+Rϐ~FG&JRb2AK{$KTB.XZC7EJ"rd&:^2OY N\R&w_>2c$,I$*ޖ,fg"}˙ٖ7g Z"KgcZɵKx&y$IĬT,FQFeɔ}K>C33"dC֊+vdRl_+jDg(9w~Qe^dגG,kehorD]NDO Xĉ1Isl 9(p*-ǥ ,Od O#"BWC(rQEu^\ ZV~ibz-_Dt_=bQ+J8E8FH͙ȹ^Q[J! c[kol%EkZ3FMes؄] uQZ[Ї2Ѣ8CpzQE8bbEiZQB[ GZYz5z^r82-&QHS,OrۉEiEm} td:,яeG4.(ִд{K>,"EP_MzIJ(Yoס1zz>Bt!hekrޏtԖrOh[>''=w1c]PdՍrJGԴdeYz,>(LĢQF%V&Yeّe_K/Ro̙o/J([r,c%ԺQn L,Q]+nE_c} ޜEnEeԺ?Kq8ZwmlDz[_&Ye`|g|r>$FIşMim#ϴE)3U\6JCzQ[RҊ(əb8(pFYe8 GE8cBZ.2OdJ>1ʡ4"C,V/KבMM2 8e)u6I{Q#^1„-=^1*&2(2d!"Q(81B.^L-̌K"4N$IDLcDzzZ5LZ)![H$IS\"!Z_UF|CiBbcc$=Cز2"&mOLOzQECF&"  0@!1PA?ڳ{Ҋܺ tWQ 5e{- R,OJ=+Zqx!P4TYzKZ((K5-ֆr Teࡏ[r)İL%,T[=E/$3%%GpwpHB/+X cT-=/4.Y^lx(}%BEkR]4+R5$ 01!@A"Qqa?w,pnpz-ܽ([z-_p[qEj^ĸ.9 5Ep F(Jrhb0\N/T(r~>Gr$< 5Fr*hkL\d% jclXy$y=ʹklv"eǣuP5 u6%cg (hX!n΢ٞ % F>=Tc^9E 3CBՙ+( > Dc0ebV'(VdEv!Qяb/lbرHxō^c] bT_g1 VNhpQ{^[ uF^{tvx(P9*bz_ 1=2V bBPZQ{=J_  +uXpet=#{(EF=GW*hWkًEY|rF.Ec{!p(/q3ll{_"+k>U՗YYYeи^Ċ(?!_!._`\\~8k >Y\:-\\tcEy\hC,L|I|}E|()b5U1,kPraV&%1! `0@P"2p?8ⓒ'!U)R:Oc'gڈB:[ÂyRy#]q*ݜbݵĶq>;5HQ_UTc}FiQltBBIZS!Q:! K^DA:,h&X'OFs{؃H$M`&0#! 1AQa0q@?! 'E<16Yw(33><-$b_qC}bC<'. σ|^SGy#B=C~(P!>m|:6[bxay-Cc'&X$I4[_az 'tu_d)lC\oe!|H"ۯ_$#!|,plg'a#2:'lxz/pAe  JNkoU[cӍK5x;5!0t `mX=ORaG_zDs+l$dpG.ݧw VSk|YdZΖ8}LS fe0F/~9 ~oho/1cTzl_![gYY!O)w8  DF6&LV`v._^זrA]Xo'.9f]%.t^ [ϫޠzyG÷!2S#[4x|_}&mŏ͇0G/6cpeww]} Bh@F';qh۲Bt?7IS%?'ߧlI-d{R,HaY]Z>X{]ľxi̋`/Bton~7[G }6MVb{,{geegN zYӫcnAé==ZK>G/ٱz;nRۯ,2/Ly' A$wp>| &!#ӄKOEa~L< _V,8dήrK8eL,]O&vZug=JK'$='Ҿc qNal{"Y'9e2q"f#$Ē:l"_6ro`o_ՖqB8, ᜎ1,Y%I9xRùe l >T߂hZnP>!不եՇ $ooe,Lpe$<2GS`ugl=Zzi~kY~Ye<3p$IoRL [BՖVV&8leazOr#"cYeY$<mĎ<>fl _V663#K}䈎$H$>;1[Ml[osmm~-u/qji8,&GQu##fc&x<||4oq@tm {Yvb#YdA"9,,Cm%K_6k9؄b"88m,σ\-$,պ_~/c݅9ɗq! lDDxLya<3Dx>I]=jq5~llllAfkY |ð rĶ^YeSz@Wϛo5mKH@l3 1(aag)eoz;_ڵccm˷>zoHaaĈ ve+e7K>em8 HB#!Dr1oA|,Ĉ1Y?v,رYȐ ]B860wz #1? Cm-`PCZXR4s?8|zl e|/"1j6|:0~6[X0b2OkՃ O<Ag+1"q 6)u+xlEݣ0s7Bs&oYgA" R.[1iuaevRX}0$ 3YpdpGG+VYeC՜#s$C=aGYg౴.&{wi ffj]q^3AH3tCIHE`ΙOPg-`C-g2;2 @K{zdjTY=E8, r?r Yeɰ|Dj줶 )JVZ{g8lP]ۯa,XSԇ'HyXXl ?XuD"ukHۭ I)kry:Y=5AIaOd* f!&lImN#͎?sn =Y JRҷ<嗝&m,b9FJ*uJg 4A(E /Xg#gX>Clwr?s%$m6nQnqF C/b;f8\]J,&wZB9Z5/7A µ0w4wx~|޴colυ_ewnOo,ș?r$T}&`š@&n[aQsE,->l#cjW.>`C7惜~DHh-*U1p&l==*ݘ.Kl1u}-KQ*caxNHrd[Lunjy[8]>,AS|+?vsþ5%"imΧK97^qYN!*v*o U~H-;v6ά"o=)S2nVI:}c AW;ͬ]Lo! l.<|O8p}"[w کbkKww]G Ku*X/R"-FOK^ϪGT(c /XPa?$ZqON湲h(J]-B[|jP_=7e5 Ǣx?6xfpoeLI8XPmtVuG&k̄rI0(g >!˞. Z!CUEbԚ؆R7ܡʩiL D3bfe@TAƿXl6`(sU`YMdzt%@P7B Ekܵa@P:tⶍ#'J  !1AQ0aq?` 9p`7#0aBgkD[o~_-0Z\BuoKj&x[!o=J}-/Zq8W=[-c[A.~>% kt_wڜ EO]BvmcEv.Fj<Ʈ}e>Z mVq' KV&իVZPgH> X|5:ըǐ-KdPwwv`έd-eog.Z"-Zppޡ7˸7taikƤpf: `XYիV1D`paKCl-cl8ƭEDOɈ3ZowEuhZQ8kg-ڵ`ۈÇ;Km?wKLmZC;C&D틭CjpF7-c˂~ն}ZXpcvሌ"h hZd0̅CɈ$gr2;Ҥ(C "8FW'7ݢuZ8.w;D>G -)2wfիV9K#  `@<`)I#+$/ڲ!Gk] ,[z Zhmk0LWfoB yî0pR˴>[F'&pg{[.̿N9jHf4hӸ?d InLv᷸a⻔:_?02dI= Cdx QA;D4/!Y?ÎǙy&!_ !1 AQaq0?C58?b083r7Aq8\L|yZp}e8>7j L a$AV,nHaP. BnpF։$}$DF\| Xmp +RI`e1N'X;%ɵ  8vF 6tsze^rcD(b0` ][%G-; >w{ps IV; _#s v$6LjpD-ZP`m\%2hq:ZmD!pn18jg.CvQCm}%^@чq34+Kz{(I疠ke٣ ``a$dX;uщo}-piEpSfyd#دR'#dng?G :[hb#-H[6^%{H si8h˫l_ jQZdj56[WxM_+Vn3-۷3Lĵmg˖cOL|07!m̵[6Z-ODvl!ޒd;Ds[5{ymks솈q'dxq4 컋d7F?? Pagv 6enNVaj{ɹF 0Ol7-7o^a7ɻ -H@B#/ɋfC_vݼwDQժ P$Ajmn[;72|n{$:` $0z5ݻOjpʗa$իVH.լ j" 8V\MQ7"nfx#g"g#qim2hj _"ˑ? qlVI Xˁj0ǢЁ=n5n\,B 3 3CBйrhyέ|82jk'4b2FޤipM8ݚ:#.9G kXL_k`㱏&69oo pّI 6 5:p: #{CZ[.C>G{Zk6SHdb1t߲2s~ߎIilm0Q=.ߣ 3I{QlF^[|1w&F ryzC:~$`!#gɻZn5nL>-MQxrbk u$:CX0D{xG0DpLVKwJQZ!Ե#,&ym[Ư0GnC5 1G0Gp>8l1Ʌ"woL83 8&M )[1e,?h:`臈y |=Clx#C/,f<@𲔲,xoLJxgDxdx|x<ᏘhI#e,A8E!ɔ,X ^TǐPo> LG#sHd;6 LSŷ|x o%G6?IH<RṗQ )X ςx,=. n_1>Gy?#yw{L6]lv{m>cn(k0O1~}pxt-z],Ex| oywf7o7*lJ=@$nKnj5X}ˤvx"1D[-eB j8!8ǔm AY'݀ݶ6}RD981-nx DOyYov焲dޢRW ,\7uo24 .{r']٬ugP{[,6DCqqg,ǛWr6r,,>"YdYd_ed6̨ v`pꯑP:#GPyEQGr(PyAIuoY:Ap(`IYȇ~8G!m,~+l8q+uoI @%+X$6K>/f{h߾3q|Ne=<9g|%.[eX T.loH^ĺbA_\;1l} 8'I~d'070÷˘A͐x.={~m]Ixmy<38!ZwxSAom?yJ''2gFN8m}χmK/~-@d[G.ZZ׵ śW|˳i>0@;?#js33qܗy0ήFҩ{g/xP{=]b6f9qZKožBp Ha.,7̏-,<ūc2Ќ헠G3܊$ W2a|+[!̉_0^Y,V߇|DAzJp߻IP>_ 1蹂8I,_6/jxyv|th'%ǀ=.6Gy8}ݰ.{^c#$|1J?"ѡh8l"xكs/H3j,7f \7ԯ'%18VHSp3g>X1pվ N5_W_Kz Z{՗M*Ul=N%ixmxca<#HB06\-}bxN Oxs;*Õx.egv50KmCqd`Us7B .?,'k5B%|Q6SzC#ȁ~2GNg9oaP  }֞:Kr8M/vmd`uׄg$sYb繄<WHȄxH;2k,v=fKz:+>zcsdNW1~--%Z ̙<mr%NfC|OaŔ #6<ӯy~9{Iw>3/;{'EYF}G}/;ܛçLeψ.sc\Lviç%ͱvGa5_W ɴ3M >c5O|#8sSD y, >ctޱl7k9G!xr\w/`Q1='nw R=]0G e\R<xR׹~p #|˵1YX;b?e`87?{? !ϫ>W/u|i &1!Yͯ_HxϨ+q.?(al<7z$X_4WybG>Y{ h忀v[6/g1KYnG,$Ζ=,LL9H6FeGƾ)ms/k]\CR1r 7ؽھ3H\Ɵ!eG_7X||}l3gK;&Ly?7)r#~ws?{[xRnI>eϏ=3 ]7^OS |9>n.e(,Fˇ>$aS oY}|RA/k%դN=IGm+_om%7 we%/!g \n/ã=1/C6g(nev8Č&?K,8d0c=xۿ-^ԜnN boFL<qZٱipdN$NpZ}[p[  )~ 7e[YSL^aHc7&g>v6>7g9`XWpׄ%zr}@~9"Է3(m?!"Y]Y,Y/f"f8-:w,og졓k|DJ#є7/"y&aᄰNKry'F,`% nǦA%I{e8' iZ}\XF!@?QN'/}H]tw"DwuuHx O|fbЍ=/ʘa+v仟k~Kpv'vY>.7Mǟ0ɋ1#tYY76ͼ.1D8-'%!r,"s)m!1z_}7MA'ur ;m: 6w7Ib]q<IJg,aB #oӦ4{^Cy}C9%}BsQդZA G`\O2smY̸ۛZH&Orٌz'_""- |xE ܷ_Azm#+Fti  82\Y;\!'v >RdvsplɰP67㛰첄9@4,m"?-'pH~ R AZ'PR9x:d#-ZOْ'].k ߃o8Xz^@wv!N=̜%6SHm[<LjqwO bq|A~#]zՆ׶ ,\pJScfilnKZ q/W NFF49ZƎy|m>eĜQ?Rg $;"d. NH:^-'.XC}CNxJcrop-0.9.13/demos/demo_files/sagomod.jpg000066400000000000000000000375731236134236200202520ustar00rootroot00000000000000JFIFHHExifMM*C   !(!0*21/*.-4;K@48G9-.BYBGNPTUT3?]c\RbKSTQC''Q6.6QQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQQZ! Xhl 00DDb~~j)Lf)@&͵ ) `# s&L35[('#4$׹юc ``0gg>b3&7Ժ*0 &&;7:,҆k). `0e&L%vZ1dc$!ss[)rj:.`fFf<&dfL5`@ :7.B 8)(l` RgqfFd۠:(32 ;FI0D9-֊INLZtip(9A=n!A9mei2 Dy)ϐQƻ=M*vilA.&\HA&#&^S 1"ԭsa8R{A0 %ehtt:aRS(=.<܉fϸBID z޳dp𜘅Bذ *NBPhPX<9v:/BA$Le35-ˡcO|L 48hL9 `L*Ϊ2l)'B0c$7;l+eρ(D0;} [r,O?/Ϝ#/dtzuzb4<&$ tmQˡjOr&mElqz~P3Uufi8$$P3L *v̻5NixogO@ۜ̀D!EhDceXц 3nvr/t ጆY@  +c2hʓ !1d"aEPV@АVcCDc!QQũdtA4L HH@0tkA`1|4ّhhTcfLK԰HY%@"X"P22,a2̔&)% 2AzV4*'2A@6 Ϊ (8B9$46:hiX;BBJ@_IX3 .$"aAr8Eff+9$2,A&9& gP@6N|hme3>c30CFCr#^0@ &3MbU"9$H֌3t4lll:hk7Hv6YP(HLsJ  1/SLcZ6P1 $H '\0 rʢ+S~z٫L )29hLRBcaF +Cڍ,ҍDȂA1ك%jR&n!  l4ՓGUkl" eXA'rQ"dmp@6iãm 6J('23#R(py*! 5Ф /9x A$Ȩ 45^CJ8h20s]9. /$0zP**u6ϙP=M7҅&\2Bz1hTBx"M7ϖe2ʹ,10 @eLD::c)3cL6cZ<Uvnhƈ9@!T]4&lRt^ѮV|"%em-IArs0:.6<01ѦtBBMMu4ˣNSKqr0H0l$78(C^22'tkvpQmer083Bc UbCØ@ .:QCZI@ (* 3¨}'@v6\'DH]f,_4Lt[J`lоc4hmdggF^tI8&ϐ`sH' D@ ` 5:5:6.nc^sG>,_Qbbc`(2ة>f.Xٍy\FH,꣟Ra$6 aT:pbR+c}dMybܮҴ4e3rG- #8 Lt6 vifY 9{M'v[1=}N ؿ<&S *Ld`6:,3$3!k)r_ZIØ H`ʢ719 4fށtQy"PQ{tqc@C` @eMJrcfZ ^ߩX }c8c a&R (K.e[&C}K(z) !01@"2A#PccֈQEc(,g_hQ#D!qd7 #1MҊc( EqlcP0J+c"MɱB,,R!AHLc/ЕGQ\U66YeYbf3?N( %,vXS&em_$"3hǐR"^+p^Ùy Vn%.2?FYR4(,'/BDȴbhcc,,Od|R#By,mͬQe3}2\)ʑ,Ce#$~dYgmE,SlbA`d)Y"eY-)n%:22!(h3g7LX#HڐVAHRr"HyRF]"lI|28R'ܴޝ2E3p%qdgKE&&NVe{cp˖5?&&9R7K#Hys!1%0'Rh?Gn72\l^d^Ȅv=hbw ͤgᐽ$ϓ7Ȅcʑ,͎CҊE[(踛n/^=/UJ uieJy&8r"79#cHSӣ,5´pCX,O7$Eˢ%$'ݢVmHyR(賲GGG^Ҍ}b,2erN?-ֹͣ!$â]ꊡ(z-_._ZhXOJGlQGEq((Ҍ=Kb V]mH܋zB((J\E ( Xdh:GlgzFLԈ(BFDۦͺm6$m6sDXY(zG`Z7zQgeIR::::q ޔQFҊ#K cx(&ҊGiq$,7YD7ʎ-4EZд(Ģ(hheC昞%F+Ҋ(N,]dAPPLEhGE>.=+D/C1 ЈEkLgggekЈ$x!~Hdߡ "$tY6hߵm(Ed~/L>ٵY~/D-+D/!h72cSjQ좊+M11Hݪ EXne=KՋcE~,(QZؘbebCysCx_L\Da8T::,VBe&8 qLLLDXz,Fo!qd&I c.M3dѰ$!1112"BBcdJC-ie2$$EKhYM CVW&&Y|R"DJC,Ҋ(+6XNHY#J wvVB DJDJC#V 1nb6Ş8J"<-iEh$$%JCc^)Ц͉(EY,IBrO %ԏn*(B "X97N%{hVdhDΙL4pȲqemue.)B\%"S%1ȿ7RbMZf(Fd2ƙh%r%1oc\(FҚ!ĆhHCHHEIqazҸ-'2s9XQcenH<\ G o,d|!'jL@IukYtBCdÐlTHI% 'D7 Ƀ$|"G뺴 I$c$|aJ|>Ť %$B7!kc0ro~W/}&!1A Q0aq@?!c&NXc!ՁDB |17 [ ُ +NjehD&la"^ ľKdkXáo t}x //cB)Cl~0ؾiPA/1 ^|{"!bc9_&4F+"<)pchB1YerK!yl~>f <٪/v5 ,\$c4wJxBXVkoǑo1~ %%p4Pk ±KGj:„CBq dUHAr1D1bM!RSWbr9 Lh9Q⏡ ؓ x UL1gr.=Q:l [NJV, C,1^[)s$)8(̊Z2)S8yGh1m#4`azH=N412,Ҕc <(wĈ,_v)Q휡& !+Vo.[k[=,)px[(EF LK K6_C 32I9gO@Q |9h}Bd=a\ la +br}%2==G*)eL VΘ| #4xdBxI!{r<._ȢYu#=!PrB?0{R"}@cEh![Do%Xj$_>4I$hbe$I=ć`j"_evB俳M}x2sz8@=a{ GSּvѰ,pOX$B݋S[e! {Q2_D߲;~4oHOD<]p;r4+,EJ{ }D%X&R"Ubbxl0Ə?El10.@$؛/|'8Xߊ,lmyxm +Dpo?E5z?/ѣC9)WhHbmi*5r"|vF]].ƛX94p7OIBs*4n752#cϳZ(Wh6Kk6 O&f4c%SX&7\[[^P!@pFĔOI>͵V a0'elסHOc kBx3v>p49F05'H/EOB4()4cbVVR<=ƼSA!OXxLB& BM dehm<]n#|xUtmY<yXV!%JT\G$ 8l7hhQlCcEJ){x#B6N2} 5F!c~BB˜|bA`cE y>IȣBX5Ivuv:6ЏEלCK/z4h'  )_/'Gp/LFDxYvЊul,ߡK~"fga_a_#-BB,O'P"ȃY8bM F 屉 XwCXbgdEؾ*?)| QmQ !,XBhAq쌟2B=S*HL^LAD0Iӌ|Liݑ{///^ L,LIb6 &|8!<#m4>-8 }o˙7JSD $6)J6v ri=tjD97jѲ7p V F(c٥)r/Q5mtOl"58VIBa=xo4Vlcchm~zUƜ*_I#>·BٲP[ņXpY*Yc &Q}Uc>?Q\a ų'T"]ۣȝԏG%/.&GCa !E lehg xpA +ddeBx@iW΍ L aa1Mk i"O (Py6z/ȈGDthhea!(+b%A,X (b޸ hqAD1ns(H' vM !aA! \[ [Sux+6VVRHoXhܡR[8Vފ֐}X4A"IJ~E2tZ^R:BEK>`5١e#rZ4}M h X)pP؄! DVr} pדLWų4la:DQ+MpA["b \b,Oab)RcP'@pCy!i1@8 B *!$"9 *"#GpX$9_9F F3}߂^Ӥ\4&i0Ax[-_+!1S،;$tS g-jR~K_tr{|'Wd |84$(/ ”'}q§xNuXۍhGG,5?Du#l9.μz b Ė H]b䖙a ā!˔1Ύ?Q OÞ`ۇDG1r/G>g}&n%X$B H&+ c(?y,YK[+ɲt8ih5\GhLa$BX \!n0{ ^ D& ;haq gG\4,c-Aoj! kL-oW(’ cƼP`YrGxݢy!SZ:Q6\1 i٠"c^(٫H[BAJ? LfGA#ШchLLu݅vęF9J L#!CT]rqxB oGSЅБdbw}B'|aPr$6 Ceʬ#6!ZLHrk: ,^MȘ1B6'\ 1:($CF(%5N)lw,P HHH@ HHL̈HHȀLHL@D L̈HLD @Ȟ@HDĄLL@  L@ LL H @HH H@@HD@Ȁ L ȄHĈ̄@HLDH@Ȍ ĀH  HL@DȌĄD@H L@Ą@ @LHL DȈ @HD@DHH̄LȌ HH D DHDH̄HLD@D@D Ā̈H DLDDH@D@LHL DH̀̈@L HĽȌ̄D HHL LȞ @LHLDHĄLHDH L̈D@LL@@̄@Ȍ@DDHH LHHLLHL H DD   @Ȅ@DLH@LȞDH @H HH̄LD DLD@@HL@ @LȀDHD DHH @HL DD@HĈHDL@Ą@ D@DD D@@LH D@  HL HLLHH@HH L @@L@DHL@HH@ LHH DDH@@@HH@H@̄D@Ȍ̀ HL?m?m(!1AQaq @0?铈AfC9AͧhOVDOx$%9qq:>ܳ6Ie0y_[OYbqp.qtwK ȏ!'7[6dKc[8EahG jd?99Տ۾#dţqqV,]`臋6Y#&W-盚䗉Ix=N'GfqnVYm.R<>n_.hO7EOv s!\b<|A<"#1HL.`eclv,ƶፎf.c,G6=B_[V|{I DNIlۉ&X, ,egf5 ;˧9o7]"?Xl:/SGtw23I$.gbVM.>?!7"MOrvy($j%ǁku|djWSX'wOcr-z!@ "Yxpԑ'!a 2#\Lkpiy#w)_L ۱ih ovassQݚ`?Ȓ}ظDGQNo/!HnpS^f yIRlň0{\e2/38 5/Iq5nHlA9XvX['UN A\Iص?h܏?^G-׹5\"Đ/%i9$njи ! aO vǁeֵY`/ gL\!l/8ßq6w쯲}dA," o >؃c3 ~Cdz4P0<9e\~v/^Raj?kȾ!%Lt]{ۯg>q$;9[e1r `1ِF%>֌v$Ķ.h˅m텢q-&܃" 0qQXĦ؏3,}%e:Ȓ473||"ur빹 8`/IlE+GbB`y@<~I=g lL%|x8qqGO9Ya*%A$Sb)vancyw?alZ?఍  u6[X_ |?a~ijH/m;O?2W>zI:OP?F}}gۉ7S3,8L41gd0qLdPϞ)0 zN;p;@H%.*-Ȫ#=0_ϗ)u\ @yQ!ᬗ7|c}S??k>LJ}‘=w_gp$VYdB8>R a6e&:vdWo_68'߳iH#oԲOckgK\gM7Y,poI>7h}_Y j9Uq}tz;j.iz?'OPeAB uq^%~Dq;lh1݆Y\ۆPK @l_jj`s=O|G^ip5N3_mr\X8sE_8c'5קl`s8۱ܓ셍g~do#ߩ\~ t;y 6!<U7Ȳ{mO9Ksf d !q䍾#a[[ȂNep8>3W"c lA:oc_'7 tom 7ظ何:$~-ڮnGr-xp, +!sd)Cf:d^qO 0.`> Sxexb2[Td qD"?/]o'L'Ύb'PRxYR5*f'\Lz>;B2W& <|A9Tx|a[Xqu~8M.7lzf`YalNkxc'9q,$#VSǒa&@N+GNw#-$BdQbex{,q&˵";\2tpr7>#?سYHڟ2[Pw2vlj7Qe [9kY}0wd'|C/QςÄFs+0k^< d$1%=\v dUeOf'6X6n<#֋x$xLm+O&,Ib8;oc>_|?տ ޘ(u3O~fA5aLwɌƜ|L#>#;Y bW-%O(orOQj{F1倶N[B,MO.^I6Gl8p<ǃ#e)x1g>j>-g׀dspxgY^d 1OML+c>%_Qx˛c\ua2FN}E,!8696omw}ʼnwK ;7d7-Θ b}br`u.\α 7[_aX!`/%:%!OCݯœlmK_'}HMp0pw 2v pjNXb7Q㑛if#pl-7q"_a֯j> !Bl?-zo^4:N"I!)k?uBeDzw~l6sweT~njy<\xu(b*; ~$~q޲ <G=̼0 ܀ݓta̐sNO83%qOpGI._K,AVpKv\ .&/6klY$ >R-[.[/Fdv^2ٶ!iݣXal_oyvMa^+͗.#.KaZCrdB}zs0d\2Ϩo4ܖ޿>=Xz#GnN}}λagH2I'IC(c7.n?\~e0enai͌ײ}#_#)q=vDC)C]@y4DTknQ rSx&Z'|y" ϑKt {ml,R'_sOEV1/ӎ@zst8m/g' Nh\'Ah(|!%dwm2y[O3q'.3>ItX8_ sBm.K!e$#, -O%غ`e!nW8%1) Yz>|n<mf|5Ѹ_ < mlAnXdϦBP~B3fkYxǁq>28lI\J`?M8zmظ.;tp/Z!+A$` 3gr cǹNkΗ5gFsv]k6sM2BC7,0BV'鍎0/?b&@|g|'`/eׅفbE 8?!2fo_"!ȇĹ|DKvImŸtP<Heɗ)ݜmϡxvFSͲY!ᶴP_y{Ԏ2wixnLr|6.㬒ew9g-X9 ~D=$rh'N'D8Y`쿕y%.E.w1]ϷGv 󜻞Ykq"~sLCl0?7pY'Zba { mS#y ,r7i#DF0{l`vJcrop-0.9.13/demos/demo_files/sagomod.png000066400000000000000000002311101236134236200202350ustar00rootroot00000000000000PNG  IHDRZSy pHYs  tIME%'= IDATx̽]Y%f_#2ɪڑ'.Za!@jW;̨?U$3#kAVdUI&3#1;vG@3@`D00D DDCl|W!~_6k`` ~ jUkUjժLMտfVԪiZK)k)Z*( 25%I /,$LLLخs\n ⺫Zx_Wj@Eηfjf? ׀$IR\1FHĈemoB WԝffFCTVZKK)TL5[D"liuYRJ j?_$6~s)S*50P5SP dj  HZҺ,#.4" !?[D!Q|%RnnL=Ukp0̬F6jT~iEUk.z.LL$ERJL"&v8D"9f0׸jVUk-w:YUKsZZD%qf5g8L"K;#sxFFA~|0#{^кS$)Y< :vڠHSnGjFauT0pgL%-%H䟶 _<] XZj (]#ӂ(:6`+iR$\/5HoS;[+[/Frޡͦ  N󯏈ׅp@Cd`AK:aAUSa9ךZ-*2@f]׆L)U!LOUlo֪ռЃVƇrVRB=:oe] 32V3@@Db!{5ϞC +q$)Ñ?IHvDuVqHkW\ M)Qz,n93u%""C!a4zZ67e͍FRjU<p 5eS7Mmv'cI'&( _(g@m 5>vݽ.~ 1~T[{6UuhQ~ijjZ2@ ID$ -ZA=5?T[ó#U .Z^bk MyHD*QDRba<刃!?M/~?7"ǎ)7mm8چo+{p* 4TNOFY$%-)-)%ISԡc4xLu gzmƪW͕6ȃi(08%Yzq: I+MjS)co1I`}>t[*Z8uu>;!ذKzwE01 'f! \&p[j ^N'mx1*ΛnEc߃Dz~D8 $Nvd]xsH $&&%pسx{GW -&b#9xњZp#MUGd ."GZ=D,dK"qDC@tYܦZG4Z+Viօ4qè̋3'990}v82k%F7<)//kt:1<=Х6 !B+)׽_JrUā'iAz 8 z89{83I!:n#_:i"t)9*E6=|idu/3'fq@ oLhaEs;-L!F݇BC 7DqbJjxpp[16ع{6FlBkCCXdFjSD݅(0g.j~l~S[h]BM6/ DT8A-('I"`i ƁA1s zN>_>8_1$4^2$FI/:"+{>#qT5:%*G^?<`6u}ϱLjt, [Y8 pY}l` fTPNhwo!%f/o鈮a+ oR8pĦ\2h&m-{ sM$PGodpYJGmWkVIEvfk ׅ!$j]luHUkՕ?6)uux q?[B@$w:54t@D"GxTcAiՂҼ,- ?;u8C;k\a fhrVkCUMVh_GG X4c\: BjbhFT:ejCjeDR(JotC^д#E%iA5ꟙ#%'t* |>Z$Ԫm|ڋB |Td$ӡQ QMjuz}6q+X0^G>L:ZǾg E F7Z=Q{TW,GA!9Wm<DYA~}ttqNɹiy"l(0 DI!ZзGW -0ap[Rgz[]ǦM k{b^m;mХ}";p:9M#jULCwNHxk@3&OJHPNEbxbaVGKn MzP(uTBx3eYדߛP2Mҥ+v(| M馦7l9 vУ(o)ÃqnaÐ' i4)d- {wl_t‘H~fb c@>4TI,v>.n3H/2GX45_F+jN8 %U *g Đ=c>hGxH]Z#wt!Z.e@w=\KeGc@:}}DzM[Z$yCOXp#܌lMKFh]3 hf[fC ̲iZ sةc{ʴ=ރau(bE#R>q"M8ZPFShe-% &Z@׌B;$j#{]V$ ek $q",$'~ $kTx c4or#|6ù[ St>ZA5ڇJeYt~XH+#Vvṿ!]`'ViQ1r0f2qCvt'2LiIyF+C"nadxl$F4GSTAHDkϙ!a'$>%-zZ%{д>b? n{XsN'@aߧIb& =N)-KZDYDHAtc 0ɃpfylW?w@!cc;<6~4R,D3ND9zsbMA^m}e8:n&!HJv:Sv^a jVGAh4KY@Ӹ^K I tN{p0)yi&N~ C95_2i^3a2E'El ^%6[<N5BxE n}8dK͓ Zz ,7骬Fa!0Gj1n?7/JCCʌ*|M'IB43YU+3Iмj-\efZAy#6qp-ۺ.)IbDBD4@7`áðZeZ4'k4uTT+uٶӺ.]xcM͎ wLC­8 ޟ$ &B9"kݛ&M'lj3 $Ye]m]Ahlˆ)a h5V=ER ڋ@RZu]#1[RChw=?룖t+-,}IgD1Zj~Uq4QZA yP˺mۖu /2s2C`V}5kguhТ5F"N ĻX[A#%1 C3???ޜV6/^D4§ 8v]!T{7y%﵆[ -T'By*1\i: ,(ܦVZL02 i%e?&Y[ϴB Ɣ"1t>o۲|h$7fn4%g"s L^E zy9<ㄟt|qC6(k b>?Kι%Rj\igȈ@D`$>B$,RJK[lѺ)CN-6E4FFtV!"sJ˺nĤˉc5$S{k=8a$mS ?x˶`kDF5*wx>rsCinjź":Su;=uYD:.(lnxGڊ.&̭du@lDݼFWu{n}:Ц3$ޔ&DTkƑ9}>-Z K5hVM^bdbIKZ%eVYҒgPqZhC/`K)^JxN  W naܻ}XzZuYDZyx+?tTS%MZ:-vfKj-B\e#4-%uq9&xD1rf% DD|!u9W_*; ]4T[ [KzwK($6@IL]j*kuQvms媕HxZ@lj[E}XEPZú%FZzT-t IDATK.}$wj-ĝIZדӥQ޽[sxёLUIM't/i{-䯰w Yośaslk"~sh0=e-k.Uw^j lc}Œш-'n PȭaM&k%n RvАF Q]`}DqݹM?\3IfȿfKɧ% \u]EbѴq(aH%4%}^޿}4 ^[^@2t|ZˁyYҲeq1cjVԪ%zK%*5&u(x>%Ug8!FRZ;[|h7q|ˁj1!0Zd]/i8fq7S{_TR4FԈԔӺ.˚(]k)'5J?0L222 rbIb3!$%.8黐ƃ>RJr$ @`U1Ķ 䴞NmYut+$UJUGNlk.G\ &ݝް]VU5_ 2 }tȦM^̷oòlK.?8 l&ޝe\]q),> 2YǏ0z=ZԜ|<ۧ=~7ȝ؊Bk?aV,N~KbBВK) DIXqۅfҠ~iޫ/q36DtvjrzxxZ$V~:G:\Z"/e/&"2a"xӺydO Yɧʗxa?F$*U$SJieCk.'*uX HDȌ,C2!P+zE('] `.(CDcpzխȗ}Zo6N95IM(E[c1.yjvFuQ+KZK*mن)Rߠ"ƨ[}uZ KJ--1lʗg|f5!e]/{4~Ow=,pB=uZ>_qVNYh8E6V^.RLo9 _-,Kjx/~KȆeo0"ֿjr0SSD$3Df3#d5^N燇ӺcCdtâ9_j)AN,B$m!a\J1Q rs:=zu>.՞-M죐eyjRRs[= _qcLLB۶$ ~eu45 XcJH'DGq*g ,tI$IZx L=vuaCb10U\|1#;BLɿ -צ CJ|:) vTNGJJD \"0#i=\J~:j&5Ӂk 6r)ylû%_8XC[7>Ҳ۶*;64ZyyRWS,K$qro"LUo:aA14K<!ĆfTK}z\sΥ*KjjHVUՎ+((jfիmM'}?z.b/jگO~懧}ϥRU Q:t\cd"3\0q5>dZj}/G߱ 49Q[m[Wao⼗ͦ~,h-)3zy^}D/tBL8΍m+-C~R,pR6 56ۧ"Kk᪵FsN])˺l۲A-Uv5Rs͐9|"Jdla!"@=RfXhlB|FgđX|ZXaD,^Dj(, b_97z]NQ1HCZdޱ7x;`DΫqf(_OIR%\6Scx[|i/=[1؊1"T`˘'srGe=[}R-TmjZ.#:! `HKfe]Nܝ0qM !,Y,z 9lfVe{x||{DmSB>5^!.wo߼uϾ+4YeYEjLDی1jӘNGGDwD@b@( H^p1-miK[kd9=<<<ZSW4|ͥZEmx=_aSBf1sGr:N@<4MTVDT Z dEz/}zq) kJ.+3`X#P;<`UPIEY׾ѻrԢ,i]-8S՚-W>դY$vZ ʵxMTK5j(ZKQD%$ ЧK-Cm7w2@ٝnsrED40ZJn*)mN4)IZmYuYA/OB\Kۄ198_,X3adP_\xYOyff%wljט'LNb[QO,Kij]s>Y,3 {Z/.K勩7J 6U7?_o'߽"qD_qQKy^߽޾^8kI[ǐ¡ͭ47`+|>$LEK+j)hֲ}ՀxI,8^n4fx8$YN7WSNZ5~xnW5Af%f0hHٯ0Cps5z>uk0OR/eB'  z34gt PФ BlJ@FODb`ZI{vjtq&!yDtW/ZOMNZr.kN- 1q~S/>tܭ6<=[iYb-VN!{u ؐw`QeI"+/iyEDNݟנCtGf!["#D"B:$&ضi`m10F8[Xէtb)ŧZjG ݓhc_{6ZkYURZ:B\*:xxC26M֒oʞYhh id ,RK,!/[zS,cјi-緹@QEdCdjȂ,&pcoV#VI:aIRlj=<2Tﴤ5{iXk:p76';Ԍƭy˿#Ba"2Zzs58y<؏UA?`쥎&b:aokɵVهneܫ,l&DIHpym*@5S-=\ru bx_v0ۋ7:l m(-$ccj_KRO"/I3 #45$enbjϗ sx f8 &jJ?$\,jfVeYOiYU˼…õ*"=稜dh8iHsEl. KˆQ4fC@Xr: qbbjCfjh ,Ey,ʹdV /ddFƮ2QZg, U>z૳ݚͺ͟u`oLJknIʭCmV;@"4ɶΏ["fh<,~Yy/@: K3¬MU%%2u i+ǧOl 9J";][WGrVV77N)KJ,$;bL}/qj3Չt==?9^Ho-cs\u(ЬT j;%zHm_O /^uQd!yE  NPKuzpYbӒt:,M2JT@mGQS׬Z}:AcBE@5!Yۮ?Ȓhݘ H jH ISc+lP[>KχAu^7fE_c<|4\ ΫC^ꄆc`}Nf,+[ngZs>P r4H$Q•L{5YmCk3!1@ZnDv MD!/9fس"1\5k :ЪNu絚Cj @&,Գ?Dc~Sh|<oͻKދ%bޛCn[~YRZ,˚/$m<u߯OvJgw/Q= 2RJZ@k"7PkZ-X<"f`hp&=ӆ)7os#qL .sclIU46 !vw':dHzZ Np8άNU%%P]Ӷ5Pca{B+jċKZIR.HɈr`qdIn'A`QGV^  ]Eov1ӖV +!W99hz O ]ey0JD0wx X7l "⟨@))kMW<#wNB=sJCF]<ܡ>p>?_==_䪆cYE B@ޯE/vϬ[}>"/Շ>Y_Oo|Mzu 0@] UNںS{5F|=\r%Iډ%yV$@~yJT3T@"-{4`Aa9!5&`׎6oh;5S{ 5x8:ⱙ & ė;ﲉY5`1qBx-Cj\ؼ//䪕kZr>???_.=k&D5bIaJ""/ ѝ1F SB-v.}vyT?l?TR `F=`x_#fV!*Kivա[6?{!"ZtU$&UJ@^Eξmlc<'sda8ƦWC+u<Ҁ5uJ[iT-]LE7pSKM NED$2=O;8&ʧo~߿}z\{w䘵Ⱥu=mKs_Ԭi{n.T ݻc SwP ' :oZAkpbc[gPO6m.$J:1/ꜶA{GSmPax K <ׁ+5"q\?.˺ ZvxFZs?IZm=_=.˲ c}Jیm2z}n.ؙC e&0 ͊ r ,Vրپ̪bsê.cuWߡ Hq\Yv_=x)w7beq"Բyw!y ne[OWq*vS-{2k$V SZ9-iQ4+8U#}qG]D}-ّ)@<ꉎ, w(:<1`u_:/5\~BGF?jUk~y~zkN`Opii;MyN뚄6_+khr0ݛ<=UC ciXyМ Ɩ ܇zbe+ha5XMz?bc؞o`;Dj:^:Mw ;x{~p^NܑuBAT˲/k0Ud`O|~|uZ8#hi8&#U-eKVN]7ı5zqxTjJɥķrmnPjLmAӒcɖ8o7InP cERz ƍ9YKk{d~ӥ=Tپ{*H$Hs>#$m;m^zzǃXԋzs=WUI,( zl-^5L)&7\5dUafON5`1 TGOBbcsrOLȿAr \X|Zh]/eK)#4p^s!}^p߶N۲H"-#wg6ӘZ߿ȈDQOaQ5=GY Q6RjLM:O:e}T7%E֭k(ߘ7Dw%`m&B3\=po Cx ZXEӪyMfnM#[UtҒu[5FCNxnK Zr5W3h[1CKKZ=.^1^Y5YCK5,|Y6Kl0X{ } IDATkbdkD ܴn۲&!5*[W8Qw$b{G~}/z!u;oDr3h iiYk9ᆙ)7kU˲,lJyGfc ݲP)fSbhzV"u >|/Ӄ=&r(opNej Z[XTs' hqchN7Ya݇l/Oo|gzNҲni;>0mA@ LuLt×_xWEGMɩ׾1>& _"f4_Tۊ{vVq`6/m=n,$^iK /ТZ/1Eh<- c8AC=Gt1ۺ[7|!H5C$=( Q)tFCum;oW{- !zW?M M̱;nC5ZӁk]<{49>J8åo_EsגR?b&'?)Eh{)L9OJ` |j->oП֑N"̺.vZOkZ|=u`lk+.Zy;ڷ|\}mȮ4u?tEk0f?%ZȫDPw0[cv+Q$p o+#ψfRj|^w}eծR5 pz4B9 ?(ǖ8c#b׵681&gc u۶y O>~uCz]3 Fɔ8 {){M3еQsnZL]mgg<ߪli>1OgtÒ,zzx'Ӣa/VC?>̲Yt3&5K[J߫+KǁLp;mt~hݎFOZot3Nժק˞wYoj!q;W }[DVq>TU 8R%s :p缫;y8տx__s)oσm9iy&w;13cebX j~bK??}Owy/e{R˺kZzvpbX& Xtt#B`ϥw[!ӉpcOi7m ڌDGji؉#h^D咩X."zzx7+Q|CiZ]Vu/ 9ɇcĸV$3@wG2.]ִK- @6P&Ҳ.ۺ˶R|aӰ0 +Fl#sWUZjź; !㠛7A8)y@'ŐS>;?I~ǵ"K0ؤ5*e}x~gk6-ws3_nhd^|prhGnŽf؟C9 kdKsݛ˾׶{Ȳua&eqmP-U3 /;Ihr}9?ӂv4ai,frփԫY?D$4M^2vW# S:=ۇ '(: FE֫C㎧i`mT*H}t[~Bao`1$^ϫl)ʢRA;:ڳM꓀)-,벦AY{]iUIL=ʹ}+K-&S.4yP8K=pAZL8S>՛X8D,ëoYSXOhkh#+#+hb׹jϿ}ωQ?_H="?NHΠiƖ*, VZKU2Itc.|&Гvᔶ%-iIu.+\r66X6V {^ ajQFj04B*\ |{tgs6C✲)Y =Z».mQt~|94 &tLPBVDyo+U|h۳fUu[<,뺞k? m-oiIcA`E1#"LN9'6Pպ2oHDTIW\cԜٱ+\ld5sdd7K4oÆ-e6C8 4m˖5^s2s}^U -xt!x8BjL$<<$F`jZA\]뜳wZsΈcDČ2ѽuٹwZsň1|y/>(bLA=PgT9m۲|=qY|S |[5+P5foW纮÷ſ8q?_C9! ke ϑ0͎b!p\(4 fZRYnϿwVO10jw0|+crewq)jŊ >_TÕ Lr;}gLzQ_kG,|>?+ަf&TI^[*j: m5;Avǐ`#q>_Χe6w*_EƐg{AlYu0IoƑB E c |y|t[n)`"l?o\ @hj.%0VPJs Ze)J!daORtMyKQ OH`oe39Uֳƌ./NJw'|5QWGgI{Ff(zNsxӻ!l[aP~_B͐i>] AbfB+c6lQw#{PQ)Es/--!@KIM]%mE!wy]mJOφ?gᜁ_皠0 ƥhغC% a'9Ke>*NqI<_.nG0(Iy0_ ѹ,',yùhcq:1Ѻ; S#{m}:a_"|\f.J~/;Q|\U4O1NT;OϨܹRKєr~|mdmAUsbP  t~̥hIV`ORK2_gYDow9m=RiGCŠu6 4<ŎAR=gS iskv7q"y,뺮Hyƣ@Se$q9cs+X+iI.u#YR#FJ6S j3`[H`dnAҴ\44Ox+*},W_M9y#օיmn8Nݦ,+FF a;:4'A=TRK˜fڗ5io)e0Kћ$ -c-/V[:xCdSSV*9ޢYHaya s'a&ͦ;٦6<\ZJ9} BaZ(hkh~7|LXyfx '|zxz2O~O[gg=Dc9Xj+O{x 7DLly:OsZҶ|*81E3w̬hZuJQ˹ kϟ=T:Gi P8u /t"00_.seE!4cŽ$PkqZ ";4_ Y|q|:"MH$C;czErmv~z~䢥'AKɎoCAMrO\W@1o?]|'|{o6<GsҲ|>/VTg< ^[G1sOiIiQe6rKnc(؞7Q0x ; pCѿ1HHtinm>zqY]eu" !J 1iSde}$,-{vj""1rMxz>vpBuyĝY}bkK%ry^s~*ϧs ՠ}"riga7?񷟖uh0|*S_jQhd||ݖ&ՒK=zG8{&Z;; ˽vAT_>fc~irH+ټh}d>+{Fy/1.^nO?eP7"P']f D2T-n)-c\?VctjfF`=A :n)gHcoX;o5^Nw vy f0ͧE~0wHmp%MDQrɵG1Vy2ZٕD"D9)tyxM2͏X<^fڮLARښ?ws.vN12dK4aַ>=U>H1.IEmjLn%6${]-Ty SОղF-b 6fp G4"8dw,#3B>>8 Đ;R۲lkNk4L-o 90ex>߽́\ Kx?㧥p,VgLU[9$3C"sRV:STӣſ]bOh[lHrJ) coP+нQlwmZ; /i ͻ@KZ;BR5{hDdAi\/3 v=bbק^KkuM)ܽn= PʖE$\r.ӻwgޖgOeQʶ)06]ee tjz>O˲=ZT3f-V5H<ϧ'Bl۶_AUsѲ]X+*W]iʛ&t9G+nt!;Nd=K<|(m $ske;tNKNn[ʹdVk(̖֚5A 0̧Yv-P LOnQ"CلĐotD1a3ˤE>3xP!!dž@}|:?/牰Ե䔑$TcՈgsZ(P#v ٻj~q  ='э(TR>tnm #2A9_Pp& 7Zۺli+)RRI%R/ʎжeMΛ*(`8MH%4=;E~|80my)qsS#`PߙАCO9'wKL-gd IDAT[T 8/.KdhӖRJjlmG=K",Wӆp`&\ۓ|wQfGKCx4txJ_;L, @!I~g1/pd9ՓJ)4Y/r$aԔsv:8_#~|+o~Bd(o~z^I34S(7<TfK)T ɃԬy_ESN~]A>&I㥁tOt ȾDCd(i[FtaMzM&Z 0]?YmMa{90+פ)%ki.h ʶmOO|yMKtyLA5mHbf$ΑJ^m+A~ߛQUK޶O?$X.Fi|%7W=IatVU. 5Fֽ9*֋~pG KƛݺH!qSI$!tGͽ{!1t-3Оvxb7TG+唳: -̑%[eɆL @)N&Q|~x8XMu{ A@9]"궞 p_C)h:m Åvxd-cоk a !2#jƜSp#\%fli/۴? | ͑{y)9PT6;*;a,SҔm+@Ky,>a> mYR.OX7 3*m^J6ors:]쉺ڒif@̶^$@B)} !>\.sRϗ y<={lk^m˲,ECxNtX##n6:b@ ')!067>]>/˲DRo2՚?Zw}6oLQY /uA8 ʍ/ac@KluM]x,uo[/~GZV\VKE `#ob." GKMTbb`4 ̶n8I@6vv~f"5x99Ǘe ơM=710ZrIӎaPbVԸC%K 9qopU1?iI쭹T_s31K&HiYRU,HF!|/J)gyW5ZX:9Nf uYmս⁏ox7#RP͹ e8NQΖ*8@,䫾)rڮ%e7,UbJ"Bq?CUǚ 8SYq.9rl8X@F7ypStbOb JY0SnkJi eO)ZQ/ʹr1s#?FowԞr+uVYBg}!d fnRWwg U!G]5(AlF}/ wi|`H<)@~yy^- .ߣhWbc!J8_}aB0jʞS8:x[>nݶr.zꧭ,X,m }NOe[RCϗ_nuYoכla>_NYHXJ)!qb]1nI ׾uV{xغz`dA&\%Wٔ=9zO)l_U2}@  qх1H wQ{1 pZa!1ӷK*Y͡^ix׿nT؅LTcѱ-#QL=(J@;ZYiJQ˧_|vU DdyRQ (R|JJkZe+@4d8MJLy6C] zRAyۖ9rYRYѴБvduxܘwNn !`]k_!qDTY]s,Oo)B%+i#6DS=__D(7ԙV!Q-E _SI\ȨB}hj0 #ҌʥF9Vؒsʛ_u=gc1O,00G0d@bB)N%<ݣ B))M)%UUUnnPA>`a (\q x< kEOoD֋X |y삽Xw'($ϺnWLrZֺïjCZ(5.,% E7bݻ{|BcT^C"K(a bi[Rn4-m+@$•YCf$DDohι&fh:z}.u7ŒkjWb^;)$@OρYzRϋQA?Qj8υJge[gj.=:%L>651rk,9U+6d&vH?Ea#lj<=}x)gCpl KVr  {{YU *(ӐZ#yJ{8h " ZBE-mt^c+taYHDЯ?MB"HXojV6)#3uPnء8˻/^8 Փ'zQӒRq;պ^C2[ܬ)9hM.JA?|/+m->eيss$iKU Yr)x @)i[%9YDLآCpqcU@)a,82{FxKuk3]uJUwqq];@Xǥ;ƺ@m m={x14pk?L5K~N6;^E _PM;^ɝ &j#9}x|~os1@ quYZ˾ $jZ(&^Yfly˩PyJofG19sxZ3RJ-HZ5jۧ~X~Rm%s|_[~fc!(UhB:6G%] _? rgS3앺q~uW|ndS0͑mYƇ ¤EVWT3Y)ꢗ3(fXO5-CM<;:' o)sbYtC3!m}{hsְpLcG?6k9k =NIJ|F_+@qzz(L(8 %9{C1%>x~T8)r[R l!D,V%;D׀\sJJYeA_1't!vOj5bBU+Voo>%mԬ mU> ~_#f8yŵV5*NE9h >ga^H'mW7R}mQd=sݕ{ofve+j@Đ5g"A"LBD,DweL%-粯999}F;`].k͞UiV>¶]+@s=e`ӡNPfx" qovW:wU  O'9 ƧԡQjܯĭXάeפѤx=m,<jBȚwΏƢ mcOd6i5M 6m!%v st7E)`$Fns 1YCǼ*kDbjd{ e7nmvXnZޮ{n@}4<=2ڇ`N6?Q ?{P%OJVGŬr]>`BVT=LM0veu "BS*fHnOwOxIp{FkaUXTs;XBb:TO=J# HH:!wy5*ZG;jQs4ܿo?`-HC{؋gK-6sW5!hkdhͯF,> Fk::MrHvxuQMhr IǺϭ5dv( 3k[wھ)b."R WFJfa8_LP4'׼1g+5q$cU? Pj|֠''D7jL!rܩkbs:2sԔP0i)c$ta R"!p@ۻ`K);]+ih-WT,@HP-93ElkiVDf+V$b'~KZXFa_|ʴيօ_@˶>,Iߐc{+V5cGl#Z|lЩlM_i4(o\a5CLXo;ǧyfԋoѯp@* OvvdSx&jk-xQdAE[4ʉLd߳[4Pg;{QW2跄>t!2}c臚Z]?jmeH.W7>KVh7d}@_ۆ<ޅ~ɨ2b,{3B:L``$wIG)Ng!>uXYO*z8V_܂f- h%*=* D^ #̤dUH;+b[=Z 2@)%3+IָCu+^zh?>`(s(wCK唊f 2m!=êaP{KI4ϑ%6QXI0tpKFK.Vw`z*η -MgRy.-iRbF'fQWeԡc*!)!m*%kSIҵ4 H_\r*e=\r梦@jozkb*J[Jc:^CU)[=t:ϑ݁vk@-1 RZΪ7X 㗗 g]ogU!N'NitldjPgaׯ!+m^ {xȣhrw/5S(u[E+D0)A+?Әdsd-ŀI"vkjH5'~NlRT @93@R(O8ێvFRdb_k4n^4ouVO}8 65{Cpn1O80RrL;E',i-BHhiZJ攈}[׹MkKU `=󏖾bAf=c#ix[&8฾4Umv& h ,?-šLUٽ[+wcNnѷWb7m݊ԧA)FSΪ[ZӇ²Cl==jgRYoC1LA~cV)ϞwWa~Sz: 1<* `Ӗ uZKh*<*8AZ[6 v]IB|:Α!_oZa{e_~V );,-1 g۸@Kʩ$0}͹n 9woӨKоGAyu+4XiT\ aIBy,psrWQJ.MVS~N:U &",,~fpidžvBe"ޚph;z|BҚp}48AlJ.%LScxc;g 9+5dauB`DPu.T'-VIۚ=<_#!敯U{.hݔ-=mIH1_:{./A hZ.z  bfTO >Y'4[q,РCDكs\+[BQ1h_8yH)"Si+1g>MJ-kʹNLտSMFb PqVh7h #\6UDhZ FTLJ z^_hg=Bk'}m]1 ""q%άC, sHx HTm.ނʨ[ww$S })5W }}mJ}oP.w}%!LA4/˚cQd1i>_γX,˖r@S;gTWY;0 py(5&w g=lJ̓LJ up@ow-úBA#id ].]B8~1Ns "iCiL6Kk_*^V*'A#?GX| L ֊Hu~55oRiVZ gk! *9w/WrǡV_p|u?\հOXKpShz#|5=zG6(CQGm\ZfDj.(6.cM[7mqJi͹]ܘokqj,B]EHB+2?J/}&Zve]'j2owc`3Fr!dS\:$UMs{+TD3a5`XVZ)|jMW!}T2G.@u9rڶ5k"A$fS5.X46=ľyϭs,uZr&`TphY&J ޚ؁3(#m(23 (!Lt>Mu҃ԬX)U"!&)GaOmR/5qDL-JP! wUiҖ*ѣq>Χ)@.)l3STWiM͕F90Z[n>ⵔjp%wnF$a7⽭Q~F蚚|0ql4GżacSBYdr{3:̡&- umLư KiZ])ꭤiOU{:K9oi[׬ ]{̠ف@֖U6LXGD$}J#b^s1DS"3䴦u˩+!NS&@hZURDždﭖB\lcۆ]x Eg,K-mvggP8n'k&W-8q!B]O~wf\@>NժAlQxDf7"UkQiGRPsZ67WcJ^}ASWȠ,m>,B\zNnY @K.X![zOB_MM,oi[RUq6lЮ}ޭ-e9wC~jCl;z@fcBFS`=Scύi8;poQ۫+#IW(|% eIɧV{]t%!p}Ue+̭QJI۲n[*@U'Z=33G9͗%yr1!yliyy>8y<>\.y&4r-k),[J݇*UC)|s.U 1`6ҝzmf,;9ۋH}-yl!Н[KH̾=9F&&0(-t a?O0~jJkZJQݵ$6;wK'#TTc~ǽSirN9K6%V]HS5NԃyM2SʒB R4xRC0(h%m[NZ7"u/CE)!z?c+ M}4z 30M4 L]7 bõ|wXaO9:}~=X&]IQWgN}2VoR?Pr7jk08R=ϧ#լ薖ۺA,129T)m9Dm_]Cbzt )G D_|}A)kZ^BTȁg\1SӪjq?p⫵hiU#ۯ^_^uR@-8{Ң88s`(EJGS7mY%%ד8.OO.Rۧ/%Rʺm˚m>Oz+6y*TfY o3of4 s) "qΗ,tз՟y\n&V ߑ+ת!I?4k vKjVJZu|c(&У)`k 9!\(@:}iW-R DfqO]bmٶm[i2`ؗvnm+P?I 8u~fqI4Iix(<*G 4;Az] D{A7Q -in⥧=[8f'i[C]$Yrgfw̪6_Zp j jI a$BI.wINwWeF/]1ΰ;*31}&@h4M)&*&f)R4˧ϟ^w~_KcܨП8d#ޛ3r"zԺUP'&CK'ݶxBOVr&m[]NƦ`Oz 85`O` IK##&ߒhZQLi"\m]}=gÝ@Omc,|9^C?*}7t.ۄ}"-qS 1M˼/V o륈QaQlź$~if%V ޔJ_}s){9Qk2t ld6sPYjUKJ4i/O/s@henubS9&bHGf&k$6u5~D*+whbj>HޅeSZCTIgF}NbpYw./dY>&]]9ίKNu8s;loUL,>y8-ӧz}uThC&ʚwo7283d=8~ͱ.`踚T>ˏ:5`NnZ2ǰ,eezFa`X$!0^G vL0)h[FN?;:/?Zmuv1k~兀=хޣP6N[% WdF6\BLt\.KJKmd!-yئ6ʆ- _E'Z=An2u|j{VgmL O5y4-+B4iL(E80zS8 Us[{ژkqPc5@kyol5Ch?DB,c)S˻њt^+EU!ۡCȂ┦y/<}_qNrȌ(|`R|VcIgU_vad1a*'X)MeIjI:͟]%wZ9qz\ $$J1>m&& $ @: )Z!Ie#@^[,E+H0O {udž@JA*:嫵 9e9gcxX{^NϗDO " ' @,)-OiYWl`g[;:j VNF4тg\et[B5{R-2haP4l!|aa]3K+Ո,p\J~R{ }SK4qd?Dݗ:MDqeNS)18Nv! e)xYі!*J!NZءvo[Β'ڔ ]*ɻ%L)2I>HXƓSeԛRӜ#bgdΪ 㵚h!FC w-y̓{2Gn^q\ ږ&]EiZe^e]t&{D>0jW^fO>a8}EjofGfû%.RBl:SGPqފnֲ}V($ثIҕGa1:)6vqa3L;NDW)Pt &zyIy}ƓK“z8PmQ{I%ov^*I4UX5hƠ4rO//Jv.e?pl9g@ι^.WT#۠{'j>p?d hJŌպiv WyGsK dBOo;tڹ{G/l:nWn !if2M|-c-42nnأ%KN^eۆip911&Z m^B#kԶ,Oe^*7ܑ=Z{ QJrٶvon!SmLIY$mQQࢻAY mAUYkU)D78c Dגs.;3}#8>:\ugDžX;mҥ$"eBcH%]\>z]? xTݩvy2Hj.y{޷MbWk@7le4ITGdu[ݢڻlbLLI)RJ1 [d~<|bןW5G>(0g{eiX- bP(JXyHS<:3Ǣ IDATRmaǹSt;*Z2ID̵tݞT~1㔗ڢqFHzY=|pgšT)6AcNkVy6z=V6A[W& 9}?0 =Cm)"#l.4CzD"oiЏֈӱLpƸJ^d<[$V7hJbB^,|S6;أE[Xdg6$9ZF.xJ=Y8 Sm{1T)F:*j7$緿O?:PZ1%QEVJė4hql'tmy,6> >nn?1 Wa#8@!ޯ"eЫmٌf~^j9K"\R숗2URrmoi˶m[se4d: A}S1B>)Qn#{tf2Qd Izy} ᓚhs؞]f dA%9%ǖ=NZ i.Vo{Υ4{,~^l3V z (C88"(&喴p>)2r[K SH@x@D:D> ̏Nh42Z ό{1')]fي Ā+")b} 8Ħ RX*Ւs^yoxav<:Vx9lFh+̻iJZ۾n{އt`4Bcƞ(a|:CCC#5έf'̓ͫ5L X-{l"6fA<ޔ_y xƆZk]o3F웘Gy1K͵@8F(TsX ?D91-,2j|!F:Vm [JxtQ@AZ%qps."R.(!psX1490'a7Eu00qzklm ?8 S sSRZ;89̾Ҝ0=i=Ƨ"7\7:~8\ #ShS?pnAve@&%d}Zoi XACA4~a>-c+4@N9"Ժ۾)V=~~*yՋZ?iJvIhRcT;9hjd{ ADA.! 1f``!"De"O!! k eUjVaDZsiX bH$\FH˲,/<'h9+5Y&=[;e72ҴE=YVzgDZe3B1ȈyH> #Pi%0Avlxr>/QNMrJ՚˶m+* 12]AC4>ņD9")8ș+dVsX&/A;=#/-GJ<\g,m?h|݀@fOEYÛX_yN1 )@Ct6} 64EGćCAu&bG\vrΥhOΪin^,4E )Lyl;W"NZ\R^mk6h:Y68f43+-'o?NYϸCH(Oh(|R`o/)3)iYzHIcmE*a{ܞ>cf޷][يe46=gJ[֬>{ )<kĂ4]ĉY#y|,) [?`V̰a&DoGҭ#JÑ%<" iYH)$@:=2a81>("iar#}fjtu.s+Tl%WNrƤO5֪fwrsv7WYt Zm{)$:JMmL8Wm)GrhLo?& wQr!"yS A$Kz9;$k<~kՇ ~=]|:kXt'_P?: ۊT禠-53pswyrYR^]:j7dw 6cq|ntE:1^H>5U G"/$!qF) U8WI ӟ(96u;W%j[m 4fflV_@૽Re/=!k=Sn)!̗ח˒}ۺscUhRTuDZx8A'oE;j'?q?|&t$ NJ'y_CHZrfU{iqx3Dm_~  F}hXnMbJR~x$jl1T zC5iw색4)ԼYœov[ʅx @ă ?|gR?ԉn K~{DH1/H^ba\"b_v!|<)C|nIElMӵ zgNMBv ^Uy:f``g8&2^piA%uPq[g2)b%o9I?"5ޡlh aD 6?M'@!hGȍ! iUM5b14rYDMNí sG' ` [׷;%V IߙOӆt$KU 698-[=y-4 HӲ\zh|Kr$Nv*OƠs:Q-G?TCCyPgFE E|1 1Ɛ=H)4O rGHԻ6H/kx MMk(Zj+h8Ga\%uG "%I)J-_ Hi"b+z߶H "&ZhԈg'H y;[.D3q}$Mx,"'(=XZbR $(:8;,b$:CFAlp2_< `5sK)(MJ xfj <.  gV܎BB.9eomtd_^lAco܀?$C,D;A}TFcj4}S 40nܶ1O j=1ѷD fZn_߮%_"[J\/vH3ߍ$F4om8~TЖr_oWI6PrDHՄP{=;ZI#KihrRHJBJ?&kkI=ӼLǮ,u8qn$ZjvOYX=XOPH3A^h~ve4˭tQF!4Bojk_ FIhoG|?G;'~㡣]~4B&Ӯs9hO]f+Oc"c(QM8ܷ7H<1im 4}\9 %=ZM(2ೞclns1L70H( 4/K{)~g(E뵎Y")s'o^O\Cg8_i:ԦǕ(?LIYTc(aL:.19F"Mn[ȴ?/"?|4xj{rX*a*Yp_| {140qIӴ$:ӂd^/HHi, 5"H ĩxN7"OXyQcj/:GplWB)"aH!yAyn e =Fi<}fG 8pKeۧt[fS@HS<;䟎_Ӝz}sUC" b/7- >mM 񺛟_ 4D@!PY*$2DdAV%~ڡ)_}ʩC3]}}{ ^zaJqF;;ʰ\^cxKگQ!rY"B/m DT H̽bzin>aGq`D(̕PgmЊ.(B (4w@i^Ħʏ7 ܁ߤÇ{x31ÐSVk-/oou\hgLX..է4)u4頔a zЌ&X zs/z0N )]>~|*z *"`}}uԉܰy9ژ78uBA ("  h&Dէ?(8{pd?tgc8|feVm[ۺ ޱ]d`r [CRmٺ;xHa,{zkRF*t8]ŧ#\:?q(Bz @Gj$!*țt:&F P³5Ľw|8-'ී؞Zv]祉'}wBS͛?e]q@y1\cq,֮6{֝ND钠_.mWotqgo<5;x=ݪɠȵqK1BqTE?_٬\NƑ@~p{|;cΗaJSU߿|}}sVD1)hΝ<F2' 0*)X&%Jy/V?| ﷷg CzmP 0Yhvr|vbo$Z]90VߦDߴ `-4r܄e$Fȸ}lǺuᐋ!<ʵԜR-ZNޟ~6=JAzuoœ6f佺/X|yy@od[n𠣱0~4߮;q]R)׳ orlH)@͑ ȶ.>./Рuސjoi<՘XZRk)%_ou[G=êȈ )H]EUpFgK!///*=u2;MF,C@I:d -z%b⤱џ^^?}Z"B}5F*AϱYg"wCpF !am-@qe@$o:uX55x蛏9pqiJq<mE246ǛVv*UT-q=UʼRF46wGփjֺ˾RjXh?ҙ=D9FxPr$J>0ϗڿϛ M cߪSԧ!#GrBA0jFwts(i~\dq1X(Ұ_oC'pSs"yll)9gnvm[}u(KtǨ9/*;&ao]P3ٿ B}˵))B?7"nW mo40|Ï>DOʍ iԺvZ'=h'NMdH|J7T\<>q"D[FgGFvPISOKه l8oIolV>.,h{okb[m﹔}v!~vDin~=3m.wEm|Bx?M V;"xǪ^hW'c7U?:ݨ5vvka")(F{8{Xg~櫴JrUgSi ANsin[.՜fc9`@T3 Vsk!X”w[?8,޿׭QRk5.V{J,GӞ6Nj\ AJύ2ĕ%9[븄=1ϼ;E?ּ ZkhABfR{Qg\0c *Ěmd5q Gg~oÔ.Њ#WyǮ=U58LJ6ܿ1( 6ZT{%+ =c C | NT!)|V͸P1ˍnqHg UlBH!FK)f)~"@HA#b+v~Wmx -[-Xz#}V#o69̴凯ab@[0Eߡ%xh?:ׅiuyn~@)(BS^:l(̱/=O`P҃ <#X.9$g5–E˘O1+\?Y\k#2VHcx ujzݶRm[[S ˡA@U #r,Bmbtß NOZk ϒ Y O|s *??!/bd, IDATQaH8dl}ڭ'X٤Ph&9o@t? J7 Ggs^[akl_o?jш"oirR`& =f YHoB,Ot]YliR1xjRgMU?jU O3{uRvR\\2uEjdDH)B 1DL<.ˋ ! Բ"1 =٠/4VS{l,7{.o{5)*8mtFU/%&|<!N]^#/{_Έ3{O "!6<=XΖ̀j|*2И[`kcg0ZA˧7?Oxyֽ?ǣN۳wzrN+t'.bg^Fs٦ 6j]c,kL_ŴSzbPsD#B!8#®x%zp+;гY:kɡ^yD0F ͓˔ZCFv %ĕF1~c1lu/#yM}㝊QK+'7WӇ̲B/%H(4M1V Wj1q=EMY`Զ~屖V~9,M1kk.mxⱡ@́ak|Ҽ|oA! b jGEv0/Oj-ז|IP֞4)rYSGU"7=)ccJ!D^3Zm#PL (K;E&]y-Jת}.m[xVPu8qgN"5&`A? ؉ˤqY q??\5h]|b:|f,S{oݑJ{kɆP*|&ށ ,fVKH"F&Ѐ!lr<"1.h#PͯQh)J1i40ya#GmC93m>O3A\! Ʉ-"6 A;,ꩵ2sb^wLm>=Uqd~sPc9OoAB^-2[SYH x;G+<m۷mriFVR?iea=(NJM{/)/ݏ;!@k˗uJ\=#?7 а~i D34d_w{rEBNEw䘋Z)ӟE%J24@#ƹ?b#ul3uW!i%3>rz!HY,r)k!fN|*ApNWnOƮGp]K?~(803Ly"ǿrҚ⏘Ƈ$f&0%,NIibi޷5۾a!4p>nIb@,{EzArS[ 떣ޘ$(4rؼ#=eZBӼ,˴Hc6Fx r޽?vouG~Uch-5WCxq( 'jnzΎ:[$.TMnWQ}{&*`zL}ʾ~yV8-XahC JӴ,˲L_"bo~o[:uʧH||4)0\cUYT*޶}u`)#"{.6,5kqdT !R`= Iě񳧠h>O2k4AxHho~\r{J1!bKP{AǟOg"" zZ̷CFokWZ_?}~}K>Ih<|_cj[o5m-[Xz:ZP)z˹T8E֓>ŐJAuU0oup]7yǺTS w0yPj.y}[m}/4?AjcrhN H(]~Y?܊vt Vx}Uh|x<@%+(")^K\ݷ붯}sicK[;5X>5c'CA5Ȉ?#xR9)hGeA&pq/ˬړ*]LSs^?Nj9b!rhO~::-SHFf觶d~8\9"SpICUk)ۖz/9h5BjODD`Q%Jѕ 8MSHo?}-‹w%/ ӶDXL-.\(mD1ZR߶=ںJk)!LJFg)Tgm4#?Z9c8M@uISxyPk-ly]u9FyM.!p&7! t(9,Kx)Ba*k#e[Tsr|8ّgzfڍJ[z_u8@Gy۞bhRjlaNĆvC[El4So>ۮ_DZZ,0WX yYZٯ4Kk+.y5V5A,#jjoNlRSN%1,ֱʢ!,,)8JgzBa-o;˅'qJ;>Fu{,&ub}l^iJsvyCkD4yp >'s:撍aċ0ѡߋp`HYC(;cH YT[Q0o۾\a?R=P˞Z1'tπ|.|07?L}1qY)o}/udJ0bߐ&>vD1EUNC Ed%Q!ɝs޶~[oR$dmjǓ_Ѱc~Υ7\ cJfg[HTV4*wZK}ݷs̹ZZաq|sxwGLAQJjSWټ?Ja\)]R[?%C[80ѠV C,{!ߨzmZ,Av ZYYj)zk+VGZɥԮu9 ӽ@ ű]m{1r-Si,؎|HRb}m8f3 bAWNTX$YDg=h6[]ruҀRf˒RzkD˚461vtz/ysşΈ7`kC"34)e֭IQsX6=tH_Ј*& `V8h=, Mz}z@<,%Xe9kHBH}eȟjr+bR+N18Ǭ;Fu)YKm%.U.9j QOڃvͷ]!}Vy4PlAh<2)ň=|>k v'кAŃ4J1))L=jKgiN|Q$N]ok.Z+( d3! #r`8e{KlF0΁*Xn}*e.1@ CkCrO 2Y!Phg cnIVDtэ Z CeҔ(IvAv<a=sFFO⠂ qT$cjnmFyb03m[coRs CE ,4 a*}I -rv&KkYdbe2[ܚ"bĀ^=^DԴ6fnINGYMʽG aV !N17cȑ< |L]}CBf;^Jco&=Zv]kΝ#w^!HC:΢Tn.%w>BjA*I6l}stSKgZU}-׸Sp1ԿqBPF΍`%yoy&_w^a֋hsde^RyƉjAlt\vJ2aЕ6zjWljU>#-D|QK=vCd5_@H1DWQH!0Ŕ"< ˞,S)){v}s >m5sU"jCtĆ*o~J! ōŔdRK1".4RʾrXsʹthg !*L+v(-&lv_p}lyxۙRLiJyqjb(8Mi 12E34%?*d3TƗ2U0Y4:w֯}yERJGSDPk{ 1E&33-WJl._t Rn>"[CɢOvVU,m]ei쁡޽'YtfI+"#$&n Z nEdBHӴS߮ZrOO\Ñ!d`|)NӼLS !yJ6q05҈Fj۶e4yϿr3PH1\=w4O!B{ PJSB=QF܇_iVa7l%r2VkE;C*˰lGCy etaDt&q0HD+nzej"xv/4Ey(m&6~_/D䴚랷眷{yOVo} {)Ԋ KbEfd8/cHi@<@b:F"]nPTZJ)ۺoyY4{MLo=Bx?9нv@qlT*U-, ))@Y}͹( H*20h i^aїyу}Hhl\:0)&_}\:4)%R! !#1w!ǂ(Sr9I Bx:.NlQnu]eJ%~7htئ/;氖Zjy\k+Lt^B8ۃU*+8: ȍWEr" I&OXz۔:Go}5iZ+'& &i ݧZy}r4~/?ܑRzt1S גk"GEi5N QPݬkSk6֐EZm8#a IDATY9A lȵSy)ZTRKiՄA΁!)CG=Or …<)M] `]SuS*9ۭW 4ɖW×uo@a*^+Q9#)U?*p/a2qܮֲ!)voBpeAWT-3蒸F"F5M^d rR Φ( mCHӜ`^R@ AC9r)[E\bP'#(' iR}t8ruk8O)a92aBFF 'o3Nb6]VMij_'R`쪈04 ?Lg#tlTW:~m=B.V:3aNn0LVB5APQR1u^oT捧 c;h PU5:<`)Nt\.˲,zRcfH!ʩ};42O{w^@PkiiZ9bkADbVwJ )9I) L.iddl۶հRbQÜN&M#?Yы؟DXx$ez%g[?*mRX)&h:Ŀjnuq`p*RZFudf*{6L5%C\ERp;ci;(8M)׫a}GMXը -Ӵ,9#4\n_ơ|<[l bBHlk5Ҳ\5﵅%A5s< iaԝʔg8Kc $".cdl27yIVXqLڎ[wDŃ8/Sp3N_2_xBvCo05$69gYɲ6RLӼ\^.<3A-4<ـ$Jdpyoz]s=e4\!yNj)´,K |[ؤ=3B,5yԲ:,8V[-ŸJZ)O?7pW 846|8T9bGd1:j^m/'d`ƾ┦eVqJfԩT [ʺ=o[2Sooן y5q΁8A>BK}HVOxm3Nτ9T ּ۾뺯[9=-z{ZP s6u)?;0>x̐@9)FŷfVzu@OD?dvn2Y,`B8=xۻ,uVGvXt+{)~z|1$Kw-=L/K׀Dj Z,G3(_fp4aC| Ʃ8D+15N;]Bc䮁:w?"j(Ṃ"Jo]mo@6&EA@jw<-z-!Ce81?]g Ny{_o^D~퟽ qz)ⲤHp4NDv H{=mMٰ}}Jy+(.lg:&3k9eYET߳d1ƃo"펒簱)=n#cXE}X@H,~$7 18iy 4򠃚b#)T.k/] 1!^Wet!ƼfЊ/uʐIfqܱN*yֲ#ٻYޱeVr^ݶx,z}o!DZb dlMҀDcm G 0"3F|P{+=vs"*jwŇq4ы,X(,^u6A-mTJEzoa`R)V(A8,MD nL*@_S,Zspg:Vz;yJ3A/-E-#NzQݦ@$}<ɉ=L\ u.0n%eZ+,"e߾-e k;>gE4jw$9DpBA=`wyy3WܓÞ%9b=xPr7Ӈr!jjbQʊp7WQ~n:нc&kGE)kXy;(uVzPB6~dmYn:z: ]2I""Lk^?/h 2Qi[&V?쩿cf$hk1/wf> F.ꆜ8+ 9]Af ; ]7tkQdirf+JJ뺆X {BԲ[uγ2sKk"Ctc ߺ81ܺ QMruI8xgq,t%?pj鼛mUu/t:-BL SD@)Hb;v5 Z]v+:FhmldGkwI7g}EܼR ;ŕj}MMkJkSns^n.mD޵)X8k16nqku3Vl)ۊB_MCBtJ?{Y^~4;o+Wa6Ӷ8_pমԺB"tYC!E͍@CQMCX`vj X5UJkGmo o`ثٸQZA}Y2 _;rPB:2ڸq>au"7&w`5UD;P~Ks8̦ 6DFoL J)j[MKm3T380qlf$ێb\UU@+PC74e[$g/m}nsCX(&~B̈1Q߅\)|C^?g՝nui04M4Jku ЏQ9SD)cjUR_Fn{R򩲵骉NebV{mDU v)`)cZ:R9kE I'1ly ,C ΪX)2*ZbJ|ͮCeJͩ_OV6G][k5 q lf}B[7]%u1l cg̲8Õ٧,دeR~z&cin,fl]&گ߁6mڠ{}t[( ec`jW7'kEH#ik$)VK6հ) "l!|`艤uiF6yg4伮u)a!t sѾ:؏6Ot҂q8e(<XT1byxAa_z:sJ!TsOP0Dy7ZmOR,&PVLk<'Wq&U,%e9quk*+ý^jۥj"mi*vuCѰ]SV`׏Vmoݖ afʚ@br"bJy|=`;ekmRu!N-[FYuI+W.KE?]fEU^uINU#gԤ\gTu]הa{m}=ljBoR cWLgLzw5"C5vI9Ǐ!"f3rϯ Çyk!zK %UA}$X)r 1:* H~eF 0AMj`:IKkwTVk4vmi=ھ%2zM4s+i !\,.>6FݿH6PF XۅrpSN×13fXNViqc )h dѪ=~|yz&ƃFϿ{|fզ,BzjXN6~^ukkt1Yu jLEBFXuݦ2>|2û} {ńS]mj#Z2j $է29βJۭ8*}'fm =1|9v#* )f4x7JH3&xk=ϲ0-܇ntoZ*ҭvio-(&N.wS!˺9億ح?{޺R'򈟙‡ưvYStosTկUϭܯ*"KVCIH=l |j+vzKW.( lR Dnk-Y8OrJ1XxA[D*Ï?gOk͚z[mUeKˏbe[ǭ.oau`)ŋؠ$򤚧fnjv XM&T}CDI *=dl>sUw6MWoCer| PúdRWѺ31^m&ٓZJɫraRFՈMQ\K `y}Gg<`ļ%1BȨQ@is3v-Ķ?,u|A6Z("ԂX~UrHBƕ/6eFAoB}ۀpD -h)M)>MZM2{7CEnc&3eFL!.LJwZ1aҵ FL"IWvyQ*;gC 1\P|-䬑1QO`bA!묳FA)וĺC*Ȥr/TAM3tkǖ`#s!,벬!P;vP}$#G$V' \?a%}Mn^ lrgR)f5@]E댱\QPYQ\A(Z-S*)K)R@?~7;b a9\p8pxF._/batb-z1ڣ&-+=\)[I&dYfћǡZ(as0FEO$2k<BPy7ky=|!l+*ZlE.FQ,uudE*U03Vf!̞X퍷zc8I=\^r_c ހKF{뜫 0WP1cx tţ[ "Z,䝓𱴆jpukȀ`qF"z9[(s\ߞcBam;0%L)&;[˘cƄ8cU1/I?Ly'r{nnߵ"fmi#av5.˲S*Sw~`6sWj&B-5TIrjXZJߟވ&-WY>JҶD Z_9,q›nH Yb WXghJΟ/?ŅrያaV 4).h;?_%^witZR0/D;q`z;'3.N+e+qm;!T6[Ӕ)$SœrgI䬉}^1UJO ,њD+ٻrx-S;_m0j{kP uC)([ٵ^n6W9 {*6Zku^K$PC*xahSpAw)Ou ;UӌS]}(=Z* :`Hي!\r9Ŝ3+{FsM59整$^(J9#2SJܔUzM1s[}"4Gb?cUfةsjuVв{@ )1 1yGZM(h{r=凥?29fRHr<kwG5epy4i9cQ@s08眩[CGV?Y<*um4ɻG)c 뺆bY)V ]c{lBWm @m-Hf"Uj\ H݄ߕ5η6Fmݯ$XU)3/3"|cy8JkOVϳGg[C2,酾KK;& )xvʴ>ɑXR2r dJmYG?۲&51jԇBϯ2Y$1~ъ[czç{,(%S9|ч)S: ǔh2#~{حg[-搕b\]װ5r J+v`Pa3b*r/R4IZD-vĢc]Z0dw=ݞҌpK0嘣^홵S廵XUJ˹B`wqp+Bd]`xh+K!L~W J}чOO'g5kźa!q;}^=e{ez U5)ŔvKшJcAKCWl6y{mx+„Rs΅@+J.#^na_m un6F*PÆ-nc .qW%ݱnYJVFs,| xZ IDAT ۼa2f:yk Tp^C&JU0si#ot~]Qq>޾5q qfY%ǘ~pͶk[Ϯz+p:/ xU<쇄סB`GW=P%I,"21CQRHJw`]׷/ԩb-fGT2yhאSwhMBv+Cr:ђէ @AJ-9Ƅ@vrק#~/ƈ`5 4L)gu1eMُC~}.*-n(S~Cy|u^k=lP/h<9"*1º.KXc[!"*-+a .$rz뭳pdR eDզQ&D/*L.7_OH"[ eL)e-I{zO%KZ N)5m"JJsR*ƻaѳpj愔՘5BοţF(O!65 ?}Dkg5`N!~|]U7~VяJiWXDXtM֬0~kA :7x5Y=lCB’D̞BAU͵zߜius,It5o[qm.hJp.)STlĊ:{fk7^Bm(bLgiKq`ٴ"Ur9~hT0\F/G^"҇ϋ@7h]9g,Ӂ)gĢҺigF>?(#5ZΚ|>_%TF@wyXRC_[D&<;cd\v 3 YƄIc6 ^N=o⻥ ׭eq{j%BUFrq#ԕ{) cW:`FSK 5`B,qy[E[m}H O)^ˇ΀1-?>c2: c\P(U@ vP#5t^f̸ Yk3)bNǐ 3.QHu .3k6r)^ˢiMM[귄w˼uXԝ0m89yQn>*N 7k^ܥ#VF_Ƶ_gx9i7J69c/^+Y0Iz IkڨV; >r,tor֯Tjm:7(PZXxEH$n=' `etczد-UW! 2F+l5V{0hYDRc>3Byg6F(U4e\C\3ï~}H)<_˚=qP03؏@Hh (c|Ň7@,*r.B.Z>%?.Vuq$ԥдGsrPLQpaIi9BȫXGNQϪAgQUMӕCb綳Z)RS qJE,Fkl~9}d}:t)9giTeAvGk4pTjϿ״sWVgD RT򎂴S+X,Q~q;FNq kӡoN>D0/wzJf8˷LYy'z.+ dʾ땶Q ҺUĘq<((.tty_ŗk kLltqOa0C\הDVqLcB~N.їތQ]Sz}j0k~2/wu7gnEn1F=Qqȓdc=lШ~5Ab (c(k 0 |(3 k{|<*i K?${I?tzϘr a]!ȳ9C#Ihes8L7.zYXɘ1fxe4h`!,%I/̺r~/./x~lѡ )Pu喿kZ׮-ܕ.*JUn=Rr-aCN3|ql BL/˺&*9oE;L0(diqj> =l2s4"a.)kQ'i8My>L8:py6\@i69?iv (sDR"R9IAOԕ涣u?[Pqn}Օ!-mczx/ӪJGJqיRrju\xbJH#6zs!&8<(yVAQn<k}b޺fܒko(|,kLIF;u [x?·p70˲5Edd8X+uܤ o~(. S?~v4F?X7=ϗ5HBbRf(A'\ ✋kZo9}f fĔz#&^Ly#8<__ B˺rYVf䋿QVmD̃2!\q3 y)0Kȹ4t懰ɱst{g}2c1._r`4ϣJ[?g&)e!!aԘn<}`\nَunYuIM{SISmtZw[MMc-;iVE^S)ZJi8?œ3@4g.MKFiP*^02FZ?O#@J kS؄fo3okr\x(^ixzӧ[[SZ?~^4 q΋~9+kDZ2p޼&!vF:GfHl>ӐTA4Th$F9Ѧ)gq,gU4Púe]cʜwjxHIoV#c4P9Q!͛Kms~aznrΚ~.Uc1uYeYh8PVWohati )u]^_=y.[JqY5Xkh ج5.6 UUA ҸUDϪ'ɦS]e Y[5Z@)._KT)3s{ OV[Rh[t"Qֺ y>uNd)&Tki1׷©{.7>Ҹq>>~zbA3-k/9ƇQP ~85 ֨'4}Swm{.-ImOv,)7uyRWE?3 rW Rji1ŔSJl+@^ZelZiОޓtDAqaG-ˋsαJK˲1Dv?a;+ixMq9/y|[͛)ݏs~Ī@'KsY__эLJS EJb)&^]Zݶ^[7flQx:Uvm![ʭnKʘpڥpV{#njXVECJ>HkE*+y;YuX3`,hcF0 vnbiFZZ0ϗe]ߩPg]I՛x8{V".ʷPj|Q@ۂ`ä,ZDȂ#(S󌕛=Z5swNAԖӁ1aΘjUgv#Ǣl9g1"da!DmaOFLDv%QV@DndWOGu6~dE0NEwVRJAڌu0&\݀ 3~ĺay>,6Z)N!? v8NK@0 (9e]֘$AB27'pyַ mwIv kKgvD/)W:{h{5PUƕe4;쫮!YT:6g* AKClLT d[NB~[0M4α!lt9P(wlΊqo;|Vs7DzRq>O4 pȘRz|8l5FU,9zJAX-ݹǗ= xy/nnꎔP ~^Xuo%t% Ѭ)iRE̒N*Yi3K_ Ɍ**v~8͇ag!t 졎xs^ΗkD\hC8cp8=<>~tΛӢ 1_4>|yy^8^C))",.P{Mn_G}Wi V%ӓ{IDAT? [̓ RWإlmqcu"|h"[ndY3)5Ӈf*a48NV,o|jhqr벜/KXC'pM@HU(U]vi ay>O<G.\>z?tx8Σ\Η8a]5!,^S.ՖZܘ>bSt5 $6[$0~Sv2~7iC\hV3"gXa ͗1_h}j«2liұU>jPPX0MD*2Xf)9L2,یP;ٺDͣp/0YSZj4c$lu^1X3Dײ 1~=xim*g wVW`t,}j*#_& IF<܍1wQq͟ػ$veߢky`D^U f?݈9]dwUjx5d )o[$5+5^apz8rSMTiXS)mHŪ23wpqt<8òad))'Y緅X) r;,j;neޠToR'dKQB0YK2n|5KvlN49͆s-ȱ"4' 98N0K5cwRʎ\c,qM!T+R:~n̊qnq^+Xqa0㲮%(M95ŐRL݃Eȭv OOխI}NpGܸERA]T.9`0Vɨ Rp" #`mX84sU uu/$3v>5bIT xىU6QyMniNH<<U0׷%fY򸆸$1Sl¨ni)0Zk)q}{(6-KRY~ %JRE/@G ̔^RsL}ŔYz,*5vU Gr}X'47[8~p:/Z\,`dc kXuYא"i%vW>~3F)ep8N<~Z-yIR\/2F yY5bQR=f(}̺Vum$*^}#G*פD0j/W;$ 6ǚ8%͇[~a,S侤LU,@! yCr eou(f;#aaYo1Fi -12,SL9an9a-vy{J+242mh t1qtr .˚ THRV*> ܗm#2^W؊HuIouergFw7.-RJG{l)cI522Ǚ t(p]dA(\%"q;BT {|>5ƐSȺ{L;Э,׿8?>|Ħ#SCk9s8aZ>?9bsJ1ĄdȖt0ћn޶RM(;z[?g^m׻a۶yNno kثRr,ZUhgn S1a.o6%%2+1sQ p0aqf~x`l@U0S1pӅoY26N۬uvz},(ϖΎp:0b@<՘s ˟ǣ%rY5&hqD-4=H[W7-Q{ -:& wѸ:D^+{Ȧ%QF?QmaxhcV(eE::[HgI^s!LE}%b8~1$*;T!˰1RV .T-f n0qS5AZqx?>QSXòCdOڵUD(0O3`ʎƶ|oζ[?y:FIMw5x0nȗ@%Fո y,c3t]cscm 4 XBR?n(bBB1eY2rY>)xmu~0| Z2"rY׸urjhf]xG|xxq6~c4!wSZ_1 \%EYI-tjܵ^לCoCEÛvq!XTh9cm^zҶ,yYP9Hw40lbBP֏iחs88 ~ifOHs!KsLI. Jks*/˕ڛy1뺆!gDC+q@$~Lxlu@gX Rxn?M(|L9m$;B*G])V== iYmZ֝( y{B4QY3b x૥|JPo\m~GP{baCL8h )h?͇Qu&Ęb!Tdm+ds+TN,ϰ <<?>|)l~_ǏӔS=׈)ND؆J 휁U~(.Q5S]+jeJh$WW⩪omUxӾ)2o.P6Z]"6rr bEQN9s\0P`W9 6qiؙ<CyYeYcF V2XɘHks&*}thRFsx8L|CkPpIn8,qRaY_ϯokbjJ ^?MW˽NtǺ[U\Q/fw *谧R{ 5# rG)٠.2y-"QF);AQV)j}k:klݧoX)bFDP.S0SJ]Tֺqf(ODJ\q:uFEP p r~<Nq=D3&|֏01-cO(kYR (7}Wn-a&Szނtͺ Еw=;bcƩ:KtyuR0WPhZ.el5{12YNEC` P+Rn[̢HZQ )~#ا9h80F>d?yIENDB`Jcrop-0.9.13/demos/non-image.html000066400000000000000000000040741236134236200165370ustar00rootroot00000000000000 Non-image Cropping | Jcrop Demo

This is an example of attaching Jcrop to a target that is not an image. You are now cropping a paragraph tag.

Attaching Jcrop to a non-image element.
This is mostly useful to implement other interfaces, such as canvas or over an arbitrary div.

Jcrop-0.9.13/demos/styling.html000066400000000000000000000063041236134236200163540ustar00rootroot00000000000000 CSS Styling Example | Jcrop Demo
[Jcrop Example]
Manipulate classes

Example styling tricks. Click the buttons above to change the appearance of Jcrop in real-time.

Jcrop-0.9.13/demos/tutorial1.html000066400000000000000000000031221236134236200166020ustar00rootroot00000000000000 Hello World | Jcrop Demo
[Jcrop Example]

This example demonstrates the default behavior of Jcrop.
Since no event handlers have been attached it only performs the cropping behavior.

Jcrop-0.9.13/demos/tutorial2.html000066400000000000000000000062461236134236200166150ustar00rootroot00000000000000 Basic Handler | Jcrop Demo
[Jcrop Example]

An example with a basic event handler. Here we've tied several form values together with a simple event handler invocation. The result is that the form values are updated in real-time as the selection is changed using Jcrop's onChange handler.

That's how easily Jcrop can be integrated into a traditional web form!

Jcrop-0.9.13/demos/tutorial3.html000066400000000000000000000077121236134236200166150ustar00rootroot00000000000000 Aspect Ratio with Preview Pane | Jcrop Demo
[Jcrop Example]
Preview

An example implementing a preview pane. Obviously the most visual demo, the preview pane is accomplished entirely outside of Jcrop with a simple jQuery-flavored callback. This type of interface could be useful for creating a thumbnail or avatar. The onChange event handler is used to update the view in the preview pane.

Jcrop-0.9.13/demos/tutorial4.html000066400000000000000000000140551236134236200166140ustar00rootroot00000000000000 Animations + Transitions | Jcrop Demo
Jcrop Image

Animation/Transitions. Demonstration of animateTo API method and transitions for bgColor and bgOpacity options. Color fading requires inclusion of John Resig's jQuery Color Animations plugin. If it is not included, colors will not fade.

Jcrop-0.9.13/demos/tutorial5.html000066400000000000000000000206131236134236200166120ustar00rootroot00000000000000 API Demo | Jcrop Demo
[Jcrop Example]
Option Toggles
Change Image
Jcrop-0.9.13/index.html000066400000000000000000000045071236134236200146660ustar00rootroot00000000000000 Jcrop: the jQuery Image Cropping Plugin
Jcrop is the image cropping plugin for jQuery.
You've successfully unpacked Jcrop.

Static Demos

Live Demo

Jcrop Links

Jcrop-0.9.13/js/000077500000000000000000000000001236134236200132775ustar00rootroot00000000000000Jcrop-0.9.13/js/jquery.Jcrop.js000066400000000000000000001226661236134236200162450ustar00rootroot00000000000000/** * jquery.Jcrop.js v0.9.12 * jQuery Image Cropping Plugin - released under MIT License * Author: Kelly Hallman * http://github.com/tapmodo/Jcrop * Copyright (c) 2008-2013 Tapmodo Interactive LLC {{{ * * Permission is hereby granted, free of charge, to any person * obtaining a copy of this software and associated documentation * files (the "Software"), to deal in the Software without * restriction, including without limitation the rights to use, * copy, modify, merge, publish, distribute, sublicense, and/or sell * copies of the Software, and to permit persons to whom the * Software is furnished to do so, subject to the following * conditions: * * The above copyright notice and this permission notice shall be * included in all copies or substantial portions of the Software. * * THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, * EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES * OF MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND * NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT * HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, * WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING * FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR * OTHER DEALINGS IN THE SOFTWARE. * * }}} */ (function ($) { $.Jcrop = function (obj, opt) { var options = $.extend({}, $.Jcrop.defaults), docOffset, _ua = navigator.userAgent.toLowerCase(), is_msie = /msie/.test(_ua), ie6mode = /msie [1-6]\./.test(_ua); // Internal Methods {{{ function px(n) { return Math.round(n) + 'px'; } function cssClass(cl) { return options.baseClass + '-' + cl; } function supportsColorFade() { return $.fx.step.hasOwnProperty('backgroundColor'); } function getPos(obj) //{{{ { var pos = $(obj).offset(); return [pos.left, pos.top]; } //}}} function mouseAbs(e) //{{{ { return [(e.pageX - docOffset[0]), (e.pageY - docOffset[1])]; } //}}} function setOptions(opt) //{{{ { if (typeof(opt) !== 'object') opt = {}; options = $.extend(options, opt); $.each(['onChange','onSelect','onRelease','onDblClick'],function(i,e) { if (typeof(options[e]) !== 'function') options[e] = function () {}; }); } //}}} function startDragMode(mode, pos, touch) //{{{ { docOffset = getPos($img); Tracker.setCursor(mode === 'move' ? mode : mode + '-resize'); if (mode === 'move') { return Tracker.activateHandlers(createMover(pos), doneSelect, touch); } var fc = Coords.getFixed(); var opp = oppLockCorner(mode); var opc = Coords.getCorner(oppLockCorner(opp)); Coords.setPressed(Coords.getCorner(opp)); Coords.setCurrent(opc); Tracker.activateHandlers(dragmodeHandler(mode, fc), doneSelect, touch); } //}}} function dragmodeHandler(mode, f) //{{{ { return function (pos) { if (!options.aspectRatio) { switch (mode) { case 'e': pos[1] = f.y2; break; case 'w': pos[1] = f.y2; break; case 'n': pos[0] = f.x2; break; case 's': pos[0] = f.x2; break; } } else { switch (mode) { case 'e': pos[1] = f.y + 1; break; case 'w': pos[1] = f.y + 1; break; case 'n': pos[0] = f.x + 1; break; case 's': pos[0] = f.x + 1; break; } } Coords.setCurrent(pos); Selection.update(); }; } //}}} function createMover(pos) //{{{ { var lloc = pos; KeyManager.watchKeys(); return function (pos) { Coords.moveOffset([pos[0] - lloc[0], pos[1] - lloc[1]]); lloc = pos; Selection.update(); }; } //}}} function oppLockCorner(ord) //{{{ { switch (ord) { case 'n': return 'sw'; case 's': return 'nw'; case 'e': return 'nw'; case 'w': return 'ne'; case 'ne': return 'sw'; case 'nw': return 'se'; case 'se': return 'nw'; case 'sw': return 'ne'; } } //}}} function createDragger(ord) //{{{ { return function (e) { if (options.disabled) { return false; } if ((ord === 'move') && !options.allowMove) { return false; } // Fix position of crop area when dragged the very first time. // Necessary when crop image is in a hidden element when page is loaded. docOffset = getPos($img); btndown = true; startDragMode(ord, mouseAbs(e)); e.stopPropagation(); e.preventDefault(); return false; }; } //}}} function presize($obj, w, h) //{{{ { var nw = $obj.width(), nh = $obj.height(); if ((nw > w) && w > 0) { nw = w; nh = (w / $obj.width()) * $obj.height(); } if ((nh > h) && h > 0) { nh = h; nw = (h / $obj.height()) * $obj.width(); } xscale = $obj.width() / nw; yscale = $obj.height() / nh; $obj.width(nw).height(nh); } //}}} function unscale(c) //{{{ { return { x: c.x * xscale, y: c.y * yscale, x2: c.x2 * xscale, y2: c.y2 * yscale, w: c.w * xscale, h: c.h * yscale }; } //}}} function doneSelect(pos) //{{{ { var c = Coords.getFixed(); if ((c.w > options.minSelect[0]) && (c.h > options.minSelect[1])) { Selection.enableHandles(); Selection.done(); } else { Selection.release(); } Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); } //}}} function newSelection(e) //{{{ { if (options.disabled) { return; } if (!options.allowSelect) { return; } btndown = true; docOffset = getPos($img); Selection.disableHandles(); Tracker.setCursor('crosshair'); var pos = mouseAbs(e); Coords.setPressed(pos); Selection.update(); Tracker.activateHandlers(selectDrag, doneSelect, e.type.substring(0,5)==='touch'); KeyManager.watchKeys(); e.stopPropagation(); e.preventDefault(); return false; } //}}} function selectDrag(pos) //{{{ { Coords.setCurrent(pos); Selection.update(); } //}}} function newTracker() //{{{ { var trk = $('
').addClass(cssClass('tracker')); if (is_msie) { trk.css({ opacity: 0, backgroundColor: 'white' }); } return trk; } //}}} // }}} // Initialization {{{ // Sanitize some options {{{ if (typeof(obj) !== 'object') { obj = $(obj)[0]; } if (typeof(opt) !== 'object') { opt = {}; } // }}} setOptions(opt); // Initialize some jQuery objects {{{ // The values are SET on the image(s) for the interface // If the original image has any of these set, they will be reset // However, if you destroy() the Jcrop instance the original image's // character in the DOM will be as you left it. var img_css = { border: 'none', visibility: 'visible', margin: 0, padding: 0, position: 'absolute', top: 0, left: 0 }; var $origimg = $(obj), img_mode = true; if (obj.tagName == 'IMG') { // Fix size of crop image. // Necessary when crop image is within a hidden element when page is loaded. if ($origimg[0].width != 0 && $origimg[0].height != 0) { // Obtain dimensions from contained img element. $origimg.width($origimg[0].width); $origimg.height($origimg[0].height); } else { // Obtain dimensions from temporary image in case the original is not loaded yet (e.g. IE 7.0). var tempImage = new Image(); tempImage.src = $origimg[0].src; $origimg.width(tempImage.width); $origimg.height(tempImage.height); } var $img = $origimg.clone().removeAttr('id').css(img_css).show(); $img.width($origimg.width()); $img.height($origimg.height()); $origimg.after($img).hide(); } else { $img = $origimg.css(img_css).show(); img_mode = false; if (options.shade === null) { options.shade = true; } } presize($img, options.boxWidth, options.boxHeight); var boundx = $img.width(), boundy = $img.height(), $div = $('
').width(boundx).height(boundy).addClass(cssClass('holder')).css({ position: 'relative', backgroundColor: options.bgColor }).insertAfter($origimg).append($img); if (options.addClass) { $div.addClass(options.addClass); } var $img2 = $('
'), $img_holder = $('
') .width('100%').height('100%').css({ zIndex: 310, position: 'absolute', overflow: 'hidden' }), $hdl_holder = $('
') .width('100%').height('100%').css('zIndex', 320), $sel = $('
') .css({ position: 'absolute', zIndex: 600 }).dblclick(function(){ var c = Coords.getFixed(); options.onDblClick.call(api,c); }).insertBefore($img).append($img_holder, $hdl_holder); if (img_mode) { $img2 = $('') .attr('src', $img.attr('src')).css(img_css).width(boundx).height(boundy), $img_holder.append($img2); } if (ie6mode) { $sel.css({ overflowY: 'hidden' }); } var bound = options.boundary; var $trk = newTracker().width(boundx + (bound * 2)).height(boundy + (bound * 2)).css({ position: 'absolute', top: px(-bound), left: px(-bound), zIndex: 290 }).mousedown(newSelection); /* }}} */ // Set more variables {{{ var bgcolor = options.bgColor, bgopacity = options.bgOpacity, xlimit, ylimit, xmin, ymin, xscale, yscale, enabled = true, btndown, animating, shift_down; docOffset = getPos($img); // }}} // }}} // Internal Modules {{{ // Touch Module {{{ var Touch = (function () { // Touch support detection function adapted (under MIT License) // from code by Jeffrey Sambells - http://github.com/iamamused/ function hasTouchSupport() { var support = {}, events = ['touchstart', 'touchmove', 'touchend'], el = document.createElement('div'), i; try { for(i=0; i x1 + ox) { ox -= ox + x1; } if (0 > y1 + oy) { oy -= oy + y1; } if (boundy < y2 + oy) { oy += boundy - (y2 + oy); } if (boundx < x2 + ox) { ox += boundx - (x2 + ox); } x1 += ox; x2 += ox; y1 += oy; y2 += oy; } //}}} function getCorner(ord) //{{{ { var c = getFixed(); switch (ord) { case 'ne': return [c.x2, c.y]; case 'nw': return [c.x, c.y]; case 'se': return [c.x2, c.y2]; case 'sw': return [c.x, c.y2]; } } //}}} function getFixed() //{{{ { if (!options.aspectRatio) { return getRect(); } // This function could use some optimization I think... var aspect = options.aspectRatio, min_x = options.minSize[0] / xscale, //min_y = options.minSize[1]/yscale, max_x = options.maxSize[0] / xscale, max_y = options.maxSize[1] / yscale, rw = x2 - x1, rh = y2 - y1, rwa = Math.abs(rw), rha = Math.abs(rh), real_ratio = rwa / rha, xx, yy, w, h; if (max_x === 0) { max_x = boundx * 10; } if (max_y === 0) { max_y = boundy * 10; } if (real_ratio < aspect) { yy = y2; w = rha * aspect; xx = rw < 0 ? x1 - w : w + x1; if (xx < 0) { xx = 0; h = Math.abs((xx - x1) / aspect); yy = rh < 0 ? y1 - h : h + y1; } else if (xx > boundx) { xx = boundx; h = Math.abs((xx - x1) / aspect); yy = rh < 0 ? y1 - h : h + y1; } } else { xx = x2; h = rwa / aspect; yy = rh < 0 ? y1 - h : y1 + h; if (yy < 0) { yy = 0; w = Math.abs((yy - y1) * aspect); xx = rw < 0 ? x1 - w : w + x1; } else if (yy > boundy) { yy = boundy; w = Math.abs(yy - y1) * aspect; xx = rw < 0 ? x1 - w : w + x1; } } // Magic %-) if (xx > x1) { // right side if (xx - x1 < min_x) { xx = x1 + min_x; } else if (xx - x1 > max_x) { xx = x1 + max_x; } if (yy > y1) { yy = y1 + (xx - x1) / aspect; } else { yy = y1 - (xx - x1) / aspect; } } else if (xx < x1) { // left side if (x1 - xx < min_x) { xx = x1 - min_x; } else if (x1 - xx > max_x) { xx = x1 - max_x; } if (yy > y1) { yy = y1 + (x1 - xx) / aspect; } else { yy = y1 - (x1 - xx) / aspect; } } if (xx < 0) { x1 -= xx; xx = 0; } else if (xx > boundx) { x1 -= xx - boundx; xx = boundx; } if (yy < 0) { y1 -= yy; yy = 0; } else if (yy > boundy) { y1 -= yy - boundy; yy = boundy; } return makeObj(flipCoords(x1, y1, xx, yy)); } //}}} function rebound(p) //{{{ { if (p[0] < 0) p[0] = 0; if (p[1] < 0) p[1] = 0; if (p[0] > boundx) p[0] = boundx; if (p[1] > boundy) p[1] = boundy; return [Math.round(p[0]), Math.round(p[1])]; } //}}} function flipCoords(x1, y1, x2, y2) //{{{ { var xa = x1, xb = x2, ya = y1, yb = y2; if (x2 < x1) { xa = x2; xb = x1; } if (y2 < y1) { ya = y2; yb = y1; } return [xa, ya, xb, yb]; } //}}} function getRect() //{{{ { var xsize = x2 - x1, ysize = y2 - y1, delta; if (xlimit && (Math.abs(xsize) > xlimit)) { x2 = (xsize > 0) ? (x1 + xlimit) : (x1 - xlimit); } if (ylimit && (Math.abs(ysize) > ylimit)) { y2 = (ysize > 0) ? (y1 + ylimit) : (y1 - ylimit); } if (ymin / yscale && (Math.abs(ysize) < ymin / yscale)) { y2 = (ysize > 0) ? (y1 + ymin / yscale) : (y1 - ymin / yscale); } if (xmin / xscale && (Math.abs(xsize) < xmin / xscale)) { x2 = (xsize > 0) ? (x1 + xmin / xscale) : (x1 - xmin / xscale); } if (x1 < 0) { x2 -= x1; x1 -= x1; } if (y1 < 0) { y2 -= y1; y1 -= y1; } if (x2 < 0) { x1 -= x2; x2 -= x2; } if (y2 < 0) { y1 -= y2; y2 -= y2; } if (x2 > boundx) { delta = x2 - boundx; x1 -= delta; x2 -= delta; } if (y2 > boundy) { delta = y2 - boundy; y1 -= delta; y2 -= delta; } if (x1 > boundx) { delta = x1 - boundy; y2 -= delta; y1 -= delta; } if (y1 > boundy) { delta = y1 - boundy; y2 -= delta; y1 -= delta; } return makeObj(flipCoords(x1, y1, x2, y2)); } //}}} function makeObj(a) //{{{ { return { x: a[0], y: a[1], x2: a[2], y2: a[3], w: a[2] - a[0], h: a[3] - a[1] }; } //}}} return { flipCoords: flipCoords, setPressed: setPressed, setCurrent: setCurrent, getOffset: getOffset, moveOffset: moveOffset, getCorner: getCorner, getFixed: getFixed }; }()); //}}} // Shade Module {{{ var Shade = (function() { var enabled = false, holder = $('
').css({ position: 'absolute', zIndex: 240, opacity: 0 }), shades = { top: createShade(), left: createShade().height(boundy), right: createShade().height(boundy), bottom: createShade() }; function resizeShades(w,h) { shades.left.css({ height: px(h) }); shades.right.css({ height: px(h) }); } function updateAuto() { return updateShade(Coords.getFixed()); } function updateShade(c) { shades.top.css({ left: px(c.x), width: px(c.w), height: px(c.y) }); shades.bottom.css({ top: px(c.y2), left: px(c.x), width: px(c.w), height: px(boundy-c.y2) }); shades.right.css({ left: px(c.x2), width: px(boundx-c.x2) }); shades.left.css({ width: px(c.x) }); } function createShade() { return $('
').css({ position: 'absolute', backgroundColor: options.shadeColor||options.bgColor }).appendTo(holder); } function enableShade() { if (!enabled) { enabled = true; holder.insertBefore($img); updateAuto(); Selection.setBgOpacity(1,0,1); $img2.hide(); setBgColor(options.shadeColor||options.bgColor,1); if (Selection.isAwake()) { setOpacity(options.bgOpacity,1); } else setOpacity(1,1); } } function setBgColor(color,now) { colorChangeMacro(getShades(),color,now); } function disableShade() { if (enabled) { holder.remove(); $img2.show(); enabled = false; if (Selection.isAwake()) { Selection.setBgOpacity(options.bgOpacity,1,1); } else { Selection.setBgOpacity(1,1,1); Selection.disableHandles(); } colorChangeMacro($div,0,1); } } function setOpacity(opacity,now) { if (enabled) { if (options.bgFade && !now) { holder.animate({ opacity: 1-opacity },{ queue: false, duration: options.fadeTime }); } else holder.css({opacity:1-opacity}); } } function refreshAll() { options.shade ? enableShade() : disableShade(); if (Selection.isAwake()) setOpacity(options.bgOpacity); } function getShades() { return holder.children(); } return { update: updateAuto, updateRaw: updateShade, getShades: getShades, setBgColor: setBgColor, enable: enableShade, disable: disableShade, resize: resizeShades, refresh: refreshAll, opacity: setOpacity }; }()); // }}} // Selection Module {{{ var Selection = (function () { var awake, hdep = 370, borders = {}, handle = {}, dragbar = {}, seehandles = false; // Private Methods function insertBorder(type) //{{{ { var jq = $('
').css({ position: 'absolute', opacity: options.borderOpacity }).addClass(cssClass(type)); $img_holder.append(jq); return jq; } //}}} function dragDiv(ord, zi) //{{{ { var jq = $('
').mousedown(createDragger(ord)).css({ cursor: ord + '-resize', position: 'absolute', zIndex: zi }).addClass('ord-'+ord); if (Touch.support) { jq.bind('touchstart.jcrop', Touch.createDragger(ord)); } $hdl_holder.append(jq); return jq; } //}}} function insertHandle(ord) //{{{ { var hs = options.handleSize, div = dragDiv(ord, hdep++).css({ opacity: options.handleOpacity }).addClass(cssClass('handle')); if (hs) { div.width(hs).height(hs); } return div; } //}}} function insertDragbar(ord) //{{{ { return dragDiv(ord, hdep++).addClass('jcrop-dragbar'); } //}}} function createDragbars(li) //{{{ { var i; for (i = 0; i < li.length; i++) { dragbar[li[i]] = insertDragbar(li[i]); } } //}}} function createBorders(li) //{{{ { var cl,i; for (i = 0; i < li.length; i++) { switch(li[i]){ case'n': cl='hline'; break; case's': cl='hline bottom'; break; case'e': cl='vline right'; break; case'w': cl='vline'; break; } borders[li[i]] = insertBorder(cl); } } //}}} function createHandles(li) //{{{ { var i; for (i = 0; i < li.length; i++) { handle[li[i]] = insertHandle(li[i]); } } //}}} function moveto(x, y) //{{{ { if (!options.shade) { $img2.css({ top: px(-y), left: px(-x) }); } $sel.css({ top: px(y), left: px(x) }); } //}}} function resize(w, h) //{{{ { $sel.width(Math.round(w)).height(Math.round(h)); } //}}} function refresh() //{{{ { var c = Coords.getFixed(); Coords.setPressed([c.x, c.y]); Coords.setCurrent([c.x2, c.y2]); updateVisible(); } //}}} // Internal Methods function updateVisible(select) //{{{ { if (awake) { return update(select); } } //}}} function update(select) //{{{ { var c = Coords.getFixed(); resize(c.w, c.h); moveto(c.x, c.y); if (options.shade) Shade.updateRaw(c); awake || show(); if (select) { options.onSelect.call(api, unscale(c)); } else { options.onChange.call(api, unscale(c)); } } //}}} function setBgOpacity(opacity,force,now) //{{{ { if (!awake && !force) return; if (options.bgFade && !now) { $img.animate({ opacity: opacity },{ queue: false, duration: options.fadeTime }); } else { $img.css('opacity', opacity); } } //}}} function show() //{{{ { $sel.show(); if (options.shade) Shade.opacity(bgopacity); else setBgOpacity(bgopacity,true); awake = true; } //}}} function release() //{{{ { disableHandles(); $sel.hide(); if (options.shade) Shade.opacity(1); else setBgOpacity(1); awake = false; options.onRelease.call(api); } //}}} function showHandles() //{{{ { if (seehandles) { $hdl_holder.show(); } } //}}} function enableHandles() //{{{ { seehandles = true; if (options.allowResize) { $hdl_holder.show(); return true; } } //}}} function disableHandles() //{{{ { seehandles = false; $hdl_holder.hide(); } //}}} function animMode(v) //{{{ { if (v) { animating = true; disableHandles(); } else { animating = false; enableHandles(); } } //}}} function done() //{{{ { animMode(false); refresh(); } //}}} // Insert draggable elements {{{ // Insert border divs for outline if (options.dragEdges && $.isArray(options.createDragbars)) createDragbars(options.createDragbars); if ($.isArray(options.createHandles)) createHandles(options.createHandles); if (options.drawBorders && $.isArray(options.createBorders)) createBorders(options.createBorders); //}}} // This is a hack for iOS5 to support drag/move touch functionality $(document).bind('touchstart.jcrop-ios',function(e) { if ($(e.currentTarget).hasClass('jcrop-tracker')) e.stopPropagation(); }); var $track = newTracker().mousedown(createDragger('move')).css({ cursor: 'move', position: 'absolute', zIndex: 360 }); if (Touch.support) { $track.bind('touchstart.jcrop', Touch.createDragger('move')); } $img_holder.append($track); disableHandles(); return { updateVisible: updateVisible, update: update, release: release, refresh: refresh, isAwake: function () { return awake; }, setCursor: function (cursor) { $track.css('cursor', cursor); }, enableHandles: enableHandles, enableOnly: function () { seehandles = true; }, showHandles: showHandles, disableHandles: disableHandles, animMode: animMode, setBgOpacity: setBgOpacity, done: done }; }()); //}}} // Tracker Module {{{ var Tracker = (function () { var onMove = function () {}, onDone = function () {}, trackDoc = options.trackDocument; function toFront(touch) //{{{ { $trk.css({ zIndex: 450 }); if (touch) $(document) .bind('touchmove.jcrop', trackTouchMove) .bind('touchend.jcrop', trackTouchEnd); else if (trackDoc) $(document) .bind('mousemove.jcrop',trackMove) .bind('mouseup.jcrop',trackUp); } //}}} function toBack() //{{{ { $trk.css({ zIndex: 290 }); $(document).unbind('.jcrop'); } //}}} function trackMove(e) //{{{ { onMove(mouseAbs(e)); return false; } //}}} function trackUp(e) //{{{ { e.preventDefault(); e.stopPropagation(); if (btndown) { btndown = false; onDone(mouseAbs(e)); if (Selection.isAwake()) { options.onSelect.call(api, unscale(Coords.getFixed())); } toBack(); onMove = function () {}; onDone = function () {}; } return false; } //}}} function activateHandlers(move, done, touch) //{{{ { btndown = true; onMove = move; onDone = done; toFront(touch); return false; } //}}} function trackTouchMove(e) //{{{ { onMove(mouseAbs(Touch.cfilter(e))); return false; } //}}} function trackTouchEnd(e) //{{{ { return trackUp(Touch.cfilter(e)); } //}}} function setCursor(t) //{{{ { $trk.css('cursor', t); } //}}} if (!trackDoc) { $trk.mousemove(trackMove).mouseup(trackUp).mouseout(trackUp); } $img.before($trk); return { activateHandlers: activateHandlers, setCursor: setCursor }; }()); //}}} // KeyManager Module {{{ var KeyManager = (function () { var $keymgr = $('').css({ position: 'fixed', left: '-120px', width: '12px' }).addClass('jcrop-keymgr'), $keywrap = $('
').css({ position: 'absolute', overflow: 'hidden' }).append($keymgr); function watchKeys() //{{{ { if (options.keySupport) { $keymgr.show(); $keymgr.focus(); } } //}}} function onBlur(e) //{{{ { $keymgr.hide(); } //}}} function doNudge(e, x, y) //{{{ { if (options.allowMove) { Coords.moveOffset([x, y]); Selection.updateVisible(true); } e.preventDefault(); e.stopPropagation(); } //}}} function parseKey(e) //{{{ { if (e.ctrlKey || e.metaKey) { return true; } shift_down = e.shiftKey ? true : false; var nudge = shift_down ? 10 : 1; switch (e.keyCode) { case 37: doNudge(e, -nudge, 0); break; case 39: doNudge(e, nudge, 0); break; case 38: doNudge(e, 0, -nudge); break; case 40: doNudge(e, 0, nudge); break; case 27: if (options.allowSelect) Selection.release(); break; case 9: return true; } return false; } //}}} if (options.keySupport) { $keymgr.keydown(parseKey).blur(onBlur); if (ie6mode || !options.fixedSupport) { $keymgr.css({ position: 'absolute', left: '-20px' }); $keywrap.append($keymgr).insertBefore($img); } else { $keymgr.insertBefore($img); } } return { watchKeys: watchKeys }; }()); //}}} // }}} // API methods {{{ function setClass(cname) //{{{ { $div.removeClass().addClass(cssClass('holder')).addClass(cname); } //}}} function animateTo(a, callback) //{{{ { var x1 = a[0] / xscale, y1 = a[1] / yscale, x2 = a[2] / xscale, y2 = a[3] / yscale; if (animating) { return; } var animto = Coords.flipCoords(x1, y1, x2, y2), c = Coords.getFixed(), initcr = [c.x, c.y, c.x2, c.y2], animat = initcr, interv = options.animationDelay, ix1 = animto[0] - initcr[0], iy1 = animto[1] - initcr[1], ix2 = animto[2] - initcr[2], iy2 = animto[3] - initcr[3], pcent = 0, velocity = options.swingSpeed; x1 = animat[0]; y1 = animat[1]; x2 = animat[2]; y2 = animat[3]; Selection.animMode(true); var anim_timer; function queueAnimator() { window.setTimeout(animator, interv); } var animator = (function () { return function () { pcent += (100 - pcent) / velocity; animat[0] = Math.round(x1 + ((pcent / 100) * ix1)); animat[1] = Math.round(y1 + ((pcent / 100) * iy1)); animat[2] = Math.round(x2 + ((pcent / 100) * ix2)); animat[3] = Math.round(y2 + ((pcent / 100) * iy2)); if (pcent >= 99.8) { pcent = 100; } if (pcent < 100) { setSelectRaw(animat); queueAnimator(); } else { Selection.done(); Selection.animMode(false); if (typeof(callback) === 'function') { callback.call(api); } } }; }()); queueAnimator(); } //}}} function setSelect(rect) //{{{ { setSelectRaw([rect[0] / xscale, rect[1] / yscale, rect[2] / xscale, rect[3] / yscale]); options.onSelect.call(api, unscale(Coords.getFixed())); Selection.enableHandles(); } //}}} function setSelectRaw(l) //{{{ { Coords.setPressed([l[0], l[1]]); Coords.setCurrent([l[2], l[3]]); Selection.update(); } //}}} function tellSelect() //{{{ { return unscale(Coords.getFixed()); } //}}} function tellScaled() //{{{ { return Coords.getFixed(); } //}}} function setOptionsNew(opt) //{{{ { setOptions(opt); interfaceUpdate(); } //}}} function disableCrop() //{{{ { options.disabled = true; Selection.disableHandles(); Selection.setCursor('default'); Tracker.setCursor('default'); } //}}} function enableCrop() //{{{ { options.disabled = false; interfaceUpdate(); } //}}} function cancelCrop() //{{{ { Selection.done(); Tracker.activateHandlers(null, null); } //}}} function destroy() //{{{ { $div.remove(); $origimg.show(); $origimg.css('visibility','visible'); $(obj).removeData('Jcrop'); } //}}} function setImage(src, callback) //{{{ { Selection.release(); disableCrop(); var img = new Image(); img.onload = function () { var iw = img.width; var ih = img.height; var bw = options.boxWidth; var bh = options.boxHeight; $img.width(iw).height(ih); $img.attr('src', src); $img2.attr('src', src); presize($img, bw, bh); boundx = $img.width(); boundy = $img.height(); $img2.width(boundx).height(boundy); $trk.width(boundx + (bound * 2)).height(boundy + (bound * 2)); $div.width(boundx).height(boundy); Shade.resize(boundx,boundy); enableCrop(); if (typeof(callback) === 'function') { callback.call(api); } }; img.src = src; } //}}} function colorChangeMacro($obj,color,now) { var mycolor = color || options.bgColor; if (options.bgFade && supportsColorFade() && options.fadeTime && !now) { $obj.animate({ backgroundColor: mycolor }, { queue: false, duration: options.fadeTime }); } else { $obj.css('backgroundColor', mycolor); } } function interfaceUpdate(alt) //{{{ // This method tweaks the interface based on options object. // Called when options are changed and at end of initialization. { if (options.allowResize) { if (alt) { Selection.enableOnly(); } else { Selection.enableHandles(); } } else { Selection.disableHandles(); } Tracker.setCursor(options.allowSelect ? 'crosshair' : 'default'); Selection.setCursor(options.allowMove ? 'move' : 'default'); if (options.hasOwnProperty('trueSize')) { xscale = options.trueSize[0] / boundx; yscale = options.trueSize[1] / boundy; } if (options.hasOwnProperty('setSelect')) { setSelect(options.setSelect); Selection.done(); delete(options.setSelect); } Shade.refresh(); if (options.bgColor != bgcolor) { colorChangeMacro( options.shade? Shade.getShades(): $div, options.shade? (options.shadeColor || options.bgColor): options.bgColor ); bgcolor = options.bgColor; } if (bgopacity != options.bgOpacity) { bgopacity = options.bgOpacity; if (options.shade) Shade.refresh(); else Selection.setBgOpacity(bgopacity); } xlimit = options.maxSize[0] || 0; ylimit = options.maxSize[1] || 0; xmin = options.minSize[0] || 0; ymin = options.minSize[1] || 0; if (options.hasOwnProperty('outerImage')) { $img.attr('src', options.outerImage); delete(options.outerImage); } Selection.refresh(); } //}}} //}}} if (Touch.support) $trk.bind('touchstart.jcrop', Touch.newSelection); $hdl_holder.hide(); interfaceUpdate(true); var api = { setImage: setImage, animateTo: animateTo, setSelect: setSelect, setOptions: setOptionsNew, tellSelect: tellSelect, tellScaled: tellScaled, setClass: setClass, disable: disableCrop, enable: enableCrop, cancel: cancelCrop, release: Selection.release, destroy: destroy, focus: KeyManager.watchKeys, getBounds: function () { return [boundx * xscale, boundy * yscale]; }, getWidgetSize: function () { return [boundx, boundy]; }, getScaleFactor: function () { return [xscale, yscale]; }, getOptions: function() { // careful: internal values are returned return options; }, ui: { holder: $div, selection: $sel } }; if (is_msie) $div.bind('selectstart', function () { return false; }); $origimg.data('Jcrop', api); return api; }; $.fn.Jcrop = function (options, callback) //{{{ { var api; // Iterate over each object, attach Jcrop this.each(function () { // If we've already attached to this object if ($(this).data('Jcrop')) { // The API can be requested this way (undocumented) if (options === 'api') return $(this).data('Jcrop'); // Otherwise, we just reset the options... else $(this).data('Jcrop').setOptions(options); } // If we haven't been attached, preload and attach else { if (this.tagName == 'IMG') $.Jcrop.Loader(this,function(){ $(this).css({display:'block',visibility:'hidden'}); api = $.Jcrop(this, options); if ($.isFunction(callback)) callback.call(api); }); else { $(this).css({display:'block',visibility:'hidden'}); api = $.Jcrop(this, options); if ($.isFunction(callback)) callback.call(api); } } }); // Return "this" so the object is chainable (jQuery-style) return this; }; //}}} // $.Jcrop.Loader - basic image loader {{{ $.Jcrop.Loader = function(imgobj,success,error){ var $img = $(imgobj), img = $img[0]; function completeCheck(){ if (img.complete) { $img.unbind('.jcloader'); if ($.isFunction(success)) success.call(img); } else window.setTimeout(completeCheck,50); } $img .bind('load.jcloader',completeCheck) .bind('error.jcloader',function(e){ $img.unbind('.jcloader'); if ($.isFunction(error)) error.call(img); }); if (img.complete && $.isFunction(success)){ $img.unbind('.jcloader'); success.call(img); } }; //}}} // Global Defaults {{{ $.Jcrop.defaults = { // Basic Settings allowSelect: true, allowMove: true, allowResize: true, trackDocument: true, // Styling Options baseClass: 'jcrop', addClass: null, bgColor: 'black', bgOpacity: 0.6, bgFade: false, borderOpacity: 0.4, handleOpacity: 0.5, handleSize: null, aspectRatio: 0, keySupport: true, createHandles: ['n','s','e','w','nw','ne','se','sw'], createDragbars: ['n','s','e','w'], createBorders: ['n','s','e','w'], drawBorders: true, dragEdges: true, fixedSupport: true, touchSupport: null, shade: null, boxWidth: 0, boxHeight: 0, boundary: 2, fadeTime: 400, animationDelay: 20, swingSpeed: 3, minSelect: [0, 0], maxSize: [0, 0], minSize: [0, 0], // Callbacks / Event Handlers onChange: function () {}, onSelect: function () {}, onDblClick: function () {}, onRelease: function () {} }; // }}} }(jQuery)); Jcrop-0.9.13/js/jquery.Jcrop.min.js000066400000000000000000000540671236134236200170260ustar00rootroot00000000000000/** * jquery.Jcrop.min.js v0.9.12 (build:20140524) * jQuery Image Cropping Plugin - released under MIT License * Copyright (c) 2008-2013 Tapmodo Interactive LLC * https://github.com/tapmodo/Jcrop */ !function($){$.Jcrop=function(obj,opt){function px(n){return Math.round(n)+"px"}function cssClass(cl){return options.baseClass+"-"+cl}function supportsColorFade(){return $.fx.step.hasOwnProperty("backgroundColor")}function getPos(obj){var pos=$(obj).offset();return[pos.left,pos.top]}function mouseAbs(e){return[e.pageX-docOffset[0],e.pageY-docOffset[1]]}function setOptions(opt){"object"!=typeof opt&&(opt={}),options=$.extend(options,opt),$.each(["onChange","onSelect","onRelease","onDblClick"],function(i,e){"function"!=typeof options[e]&&(options[e]=function(){})})}function startDragMode(mode,pos,touch){if(docOffset=getPos($img),Tracker.setCursor("move"===mode?mode:mode+"-resize"),"move"===mode)return Tracker.activateHandlers(createMover(pos),doneSelect,touch);var fc=Coords.getFixed(),opp=oppLockCorner(mode),opc=Coords.getCorner(oppLockCorner(opp));Coords.setPressed(Coords.getCorner(opp)),Coords.setCurrent(opc),Tracker.activateHandlers(dragmodeHandler(mode,fc),doneSelect,touch)}function dragmodeHandler(mode,f){return function(pos){if(options.aspectRatio)switch(mode){case"e":pos[1]=f.y+1;break;case"w":pos[1]=f.y+1;break;case"n":pos[0]=f.x+1;break;case"s":pos[0]=f.x+1}else switch(mode){case"e":pos[1]=f.y2;break;case"w":pos[1]=f.y2;break;case"n":pos[0]=f.x2;break;case"s":pos[0]=f.x2}Coords.setCurrent(pos),Selection.update()}}function createMover(pos){var lloc=pos;return KeyManager.watchKeys(),function(pos){Coords.moveOffset([pos[0]-lloc[0],pos[1]-lloc[1]]),lloc=pos,Selection.update()}}function oppLockCorner(ord){switch(ord){case"n":return"sw";case"s":return"nw";case"e":return"nw";case"w":return"ne";case"ne":return"sw";case"nw":return"se";case"se":return"nw";case"sw":return"ne"}}function createDragger(ord){return function(e){return options.disabled?!1:"move"!==ord||options.allowMove?(docOffset=getPos($img),btndown=!0,startDragMode(ord,mouseAbs(e)),e.stopPropagation(),e.preventDefault(),!1):!1}}function presize($obj,w,h){var nw=$obj.width(),nh=$obj.height();nw>w&&w>0&&(nw=w,nh=w/$obj.width()*$obj.height()),nh>h&&h>0&&(nh=h,nw=h/$obj.height()*$obj.width()),xscale=$obj.width()/nw,yscale=$obj.height()/nh,$obj.width(nw).height(nh)}function unscale(c){return{x:c.x*xscale,y:c.y*yscale,x2:c.x2*xscale,y2:c.y2*yscale,w:c.w*xscale,h:c.h*yscale}}function doneSelect(){var c=Coords.getFixed();c.w>options.minSelect[0]&&c.h>options.minSelect[1]?(Selection.enableHandles(),Selection.done()):Selection.release(),Tracker.setCursor(options.allowSelect?"crosshair":"default")}function newSelection(e){if(!options.disabled&&options.allowSelect){btndown=!0,docOffset=getPos($img),Selection.disableHandles(),Tracker.setCursor("crosshair");var pos=mouseAbs(e);return Coords.setPressed(pos),Selection.update(),Tracker.activateHandlers(selectDrag,doneSelect,"touch"===e.type.substring(0,5)),KeyManager.watchKeys(),e.stopPropagation(),e.preventDefault(),!1}}function selectDrag(pos){Coords.setCurrent(pos),Selection.update()}function newTracker(){var trk=$("
").addClass(cssClass("tracker"));return is_msie&&trk.css({opacity:0,backgroundColor:"white"}),trk}function setClass(cname){$div.removeClass().addClass(cssClass("holder")).addClass(cname)}function animateTo(a,callback){function queueAnimator(){window.setTimeout(animator,interv)}var x1=a[0]/xscale,y1=a[1]/yscale,x2=a[2]/xscale,y2=a[3]/yscale;if(!animating){var animto=Coords.flipCoords(x1,y1,x2,y2),c=Coords.getFixed(),initcr=[c.x,c.y,c.x2,c.y2],animat=initcr,interv=options.animationDelay,ix1=animto[0]-initcr[0],iy1=animto[1]-initcr[1],ix2=animto[2]-initcr[2],iy2=animto[3]-initcr[3],pcent=0,velocity=options.swingSpeed;x1=animat[0],y1=animat[1],x2=animat[2],y2=animat[3],Selection.animMode(!0);var animator=function(){return function(){pcent+=(100-pcent)/velocity,animat[0]=Math.round(x1+pcent/100*ix1),animat[1]=Math.round(y1+pcent/100*iy1),animat[2]=Math.round(x2+pcent/100*ix2),animat[3]=Math.round(y2+pcent/100*iy2),pcent>=99.8&&(pcent=100),100>pcent?(setSelectRaw(animat),queueAnimator()):(Selection.done(),Selection.animMode(!1),"function"==typeof callback&&callback.call(api))}}();queueAnimator()}}function setSelect(rect){setSelectRaw([rect[0]/xscale,rect[1]/yscale,rect[2]/xscale,rect[3]/yscale]),options.onSelect.call(api,unscale(Coords.getFixed())),Selection.enableHandles()}function setSelectRaw(l){Coords.setPressed([l[0],l[1]]),Coords.setCurrent([l[2],l[3]]),Selection.update()}function tellSelect(){return unscale(Coords.getFixed())}function tellScaled(){return Coords.getFixed()}function setOptionsNew(opt){setOptions(opt),interfaceUpdate()}function disableCrop(){options.disabled=!0,Selection.disableHandles(),Selection.setCursor("default"),Tracker.setCursor("default")}function enableCrop(){options.disabled=!1,interfaceUpdate()}function cancelCrop(){Selection.done(),Tracker.activateHandlers(null,null)}function destroy(){$div.remove(),$origimg.show(),$origimg.css("visibility","visible"),$(obj).removeData("Jcrop")}function setImage(src,callback){Selection.release(),disableCrop();var img=new Image;img.onload=function(){var iw=img.width,ih=img.height,bw=options.boxWidth,bh=options.boxHeight;$img.width(iw).height(ih),$img.attr("src",src),$img2.attr("src",src),presize($img,bw,bh),boundx=$img.width(),boundy=$img.height(),$img2.width(boundx).height(boundy),$trk.width(boundx+2*bound).height(boundy+2*bound),$div.width(boundx).height(boundy),Shade.resize(boundx,boundy),enableCrop(),"function"==typeof callback&&callback.call(api)},img.src=src}function colorChangeMacro($obj,color,now){var mycolor=color||options.bgColor;options.bgFade&&supportsColorFade()&&options.fadeTime&&!now?$obj.animate({backgroundColor:mycolor},{queue:!1,duration:options.fadeTime}):$obj.css("backgroundColor",mycolor)}function interfaceUpdate(alt){options.allowResize?alt?Selection.enableOnly():Selection.enableHandles():Selection.disableHandles(),Tracker.setCursor(options.allowSelect?"crosshair":"default"),Selection.setCursor(options.allowMove?"move":"default"),options.hasOwnProperty("trueSize")&&(xscale=options.trueSize[0]/boundx,yscale=options.trueSize[1]/boundy),options.hasOwnProperty("setSelect")&&(setSelect(options.setSelect),Selection.done(),delete options.setSelect),Shade.refresh(),options.bgColor!=bgcolor&&(colorChangeMacro(options.shade?Shade.getShades():$div,options.shade?options.shadeColor||options.bgColor:options.bgColor),bgcolor=options.bgColor),bgopacity!=options.bgOpacity&&(bgopacity=options.bgOpacity,options.shade?Shade.refresh():Selection.setBgOpacity(bgopacity)),xlimit=options.maxSize[0]||0,ylimit=options.maxSize[1]||0,xmin=options.minSize[0]||0,ymin=options.minSize[1]||0,options.hasOwnProperty("outerImage")&&($img.attr("src",options.outerImage),delete options.outerImage),Selection.refresh()}var docOffset,options=$.extend({},$.Jcrop.defaults),_ua=navigator.userAgent.toLowerCase(),is_msie=/msie/.test(_ua),ie6mode=/msie [1-6]\./.test(_ua);"object"!=typeof obj&&(obj=$(obj)[0]),"object"!=typeof opt&&(opt={}),setOptions(opt);var img_css={border:"none",visibility:"visible",margin:0,padding:0,position:"absolute",top:0,left:0},$origimg=$(obj),img_mode=!0;if("IMG"==obj.tagName){if(0!=$origimg[0].width&&0!=$origimg[0].height)$origimg.width($origimg[0].width),$origimg.height($origimg[0].height);else{var tempImage=new Image;tempImage.src=$origimg[0].src,$origimg.width(tempImage.width),$origimg.height(tempImage.height)}var $img=$origimg.clone().removeAttr("id").css(img_css).show();$img.width($origimg.width()),$img.height($origimg.height()),$origimg.after($img).hide()}else $img=$origimg.css(img_css).show(),img_mode=!1,null===options.shade&&(options.shade=!0);presize($img,options.boxWidth,options.boxHeight);var boundx=$img.width(),boundy=$img.height(),$div=$("
").width(boundx).height(boundy).addClass(cssClass("holder")).css({position:"relative",backgroundColor:options.bgColor}).insertAfter($origimg).append($img);options.addClass&&$div.addClass(options.addClass);var $img2=$("
"),$img_holder=$("
").width("100%").height("100%").css({zIndex:310,position:"absolute",overflow:"hidden"}),$hdl_holder=$("
").width("100%").height("100%").css("zIndex",320),$sel=$("
").css({position:"absolute",zIndex:600}).dblclick(function(){var c=Coords.getFixed();options.onDblClick.call(api,c)}).insertBefore($img).append($img_holder,$hdl_holder);img_mode&&($img2=$("").attr("src",$img.attr("src")).css(img_css).width(boundx).height(boundy),$img_holder.append($img2)),ie6mode&&$sel.css({overflowY:"hidden"});var xlimit,ylimit,xmin,ymin,xscale,yscale,btndown,animating,shift_down,bound=options.boundary,$trk=newTracker().width(boundx+2*bound).height(boundy+2*bound).css({position:"absolute",top:px(-bound),left:px(-bound),zIndex:290}).mousedown(newSelection),bgcolor=options.bgColor,bgopacity=options.bgOpacity;docOffset=getPos($img);var Touch=function(){function hasTouchSupport(){var i,support={},events=["touchstart","touchmove","touchend"],el=document.createElement("div");try{for(i=0;ix1+ox&&(ox-=ox+x1),0>y1+oy&&(oy-=oy+y1),y2+oy>boundy&&(oy+=boundy-(y2+oy)),x2+ox>boundx&&(ox+=boundx-(x2+ox)),x1+=ox,x2+=ox,y1+=oy,y2+=oy}function getCorner(ord){var c=getFixed();switch(ord){case"ne":return[c.x2,c.y];case"nw":return[c.x,c.y];case"se":return[c.x2,c.y2];case"sw":return[c.x,c.y2]}}function getFixed(){if(!options.aspectRatio)return getRect();var xx,yy,w,h,aspect=options.aspectRatio,min_x=options.minSize[0]/xscale,max_x=options.maxSize[0]/xscale,max_y=options.maxSize[1]/yscale,rw=x2-x1,rh=y2-y1,rwa=Math.abs(rw),rha=Math.abs(rh),real_ratio=rwa/rha;return 0===max_x&&(max_x=10*boundx),0===max_y&&(max_y=10*boundy),aspect>real_ratio?(yy=y2,w=rha*aspect,xx=0>rw?x1-w:w+x1,0>xx?(xx=0,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1):xx>boundx&&(xx=boundx,h=Math.abs((xx-x1)/aspect),yy=0>rh?y1-h:h+y1)):(xx=x2,h=rwa/aspect,yy=0>rh?y1-h:y1+h,0>yy?(yy=0,w=Math.abs((yy-y1)*aspect),xx=0>rw?x1-w:w+x1):yy>boundy&&(yy=boundy,w=Math.abs(yy-y1)*aspect,xx=0>rw?x1-w:w+x1)),xx>x1?(min_x>xx-x1?xx=x1+min_x:xx-x1>max_x&&(xx=x1+max_x),yy=yy>y1?y1+(xx-x1)/aspect:y1-(xx-x1)/aspect):x1>xx&&(min_x>x1-xx?xx=x1-min_x:x1-xx>max_x&&(xx=x1-max_x),yy=yy>y1?y1+(x1-xx)/aspect:y1-(x1-xx)/aspect),0>xx?(x1-=xx,xx=0):xx>boundx&&(x1-=xx-boundx,xx=boundx),0>yy?(y1-=yy,yy=0):yy>boundy&&(y1-=yy-boundy,yy=boundy),makeObj(flipCoords(x1,y1,xx,yy))}function rebound(p){return p[0]<0&&(p[0]=0),p[1]<0&&(p[1]=0),p[0]>boundx&&(p[0]=boundx),p[1]>boundy&&(p[1]=boundy),[Math.round(p[0]),Math.round(p[1])]}function flipCoords(x1,y1,x2,y2){var xa=x1,xb=x2,ya=y1,yb=y2;return x1>x2&&(xa=x2,xb=x1),y1>y2&&(ya=y2,yb=y1),[xa,ya,xb,yb]}function getRect(){var delta,xsize=x2-x1,ysize=y2-y1;return xlimit&&Math.abs(xsize)>xlimit&&(x2=xsize>0?x1+xlimit:x1-xlimit),ylimit&&Math.abs(ysize)>ylimit&&(y2=ysize>0?y1+ylimit:y1-ylimit),ymin/yscale&&Math.abs(ysize)0?y1+ymin/yscale:y1-ymin/yscale),xmin/xscale&&Math.abs(xsize)0?x1+xmin/xscale:x1-xmin/xscale),0>x1&&(x2-=x1,x1-=x1),0>y1&&(y2-=y1,y1-=y1),0>x2&&(x1-=x2,x2-=x2),0>y2&&(y1-=y2,y2-=y2),x2>boundx&&(delta=x2-boundx,x1-=delta,x2-=delta),y2>boundy&&(delta=y2-boundy,y1-=delta,y2-=delta),x1>boundx&&(delta=x1-boundy,y2-=delta,y1-=delta),y1>boundy&&(delta=y1-boundy,y2-=delta,y1-=delta),makeObj(flipCoords(x1,y1,x2,y2))}function makeObj(a){return{x:a[0],y:a[1],x2:a[2],y2:a[3],w:a[2]-a[0],h:a[3]-a[1]}}var ox,oy,x1=0,y1=0,x2=0,y2=0;return{flipCoords:flipCoords,setPressed:setPressed,setCurrent:setCurrent,getOffset:getOffset,moveOffset:moveOffset,getCorner:getCorner,getFixed:getFixed}}(),Shade=function(){function resizeShades(w,h){shades.left.css({height:px(h)}),shades.right.css({height:px(h)})}function updateAuto(){return updateShade(Coords.getFixed())}function updateShade(c){shades.top.css({left:px(c.x),width:px(c.w),height:px(c.y)}),shades.bottom.css({top:px(c.y2),left:px(c.x),width:px(c.w),height:px(boundy-c.y2)}),shades.right.css({left:px(c.x2),width:px(boundx-c.x2)}),shades.left.css({width:px(c.x)})}function createShade(){return $("
").css({position:"absolute",backgroundColor:options.shadeColor||options.bgColor}).appendTo(holder)}function enableShade(){enabled||(enabled=!0,holder.insertBefore($img),updateAuto(),Selection.setBgOpacity(1,0,1),$img2.hide(),setBgColor(options.shadeColor||options.bgColor,1),Selection.isAwake()?setOpacity(options.bgOpacity,1):setOpacity(1,1))}function setBgColor(color,now){colorChangeMacro(getShades(),color,now)}function disableShade(){enabled&&(holder.remove(),$img2.show(),enabled=!1,Selection.isAwake()?Selection.setBgOpacity(options.bgOpacity,1,1):(Selection.setBgOpacity(1,1,1),Selection.disableHandles()),colorChangeMacro($div,0,1))}function setOpacity(opacity,now){enabled&&(options.bgFade&&!now?holder.animate({opacity:1-opacity},{queue:!1,duration:options.fadeTime}):holder.css({opacity:1-opacity}))}function refreshAll(){options.shade?enableShade():disableShade(),Selection.isAwake()&&setOpacity(options.bgOpacity)}function getShades(){return holder.children()}var enabled=!1,holder=$("
").css({position:"absolute",zIndex:240,opacity:0}),shades={top:createShade(),left:createShade().height(boundy),right:createShade().height(boundy),bottom:createShade()};return{update:updateAuto,updateRaw:updateShade,getShades:getShades,setBgColor:setBgColor,enable:enableShade,disable:disableShade,resize:resizeShades,refresh:refreshAll,opacity:setOpacity}}(),Selection=function(){function insertBorder(type){var jq=$("
").css({position:"absolute",opacity:options.borderOpacity}).addClass(cssClass(type));return $img_holder.append(jq),jq}function dragDiv(ord,zi){var jq=$("
").mousedown(createDragger(ord)).css({cursor:ord+"-resize",position:"absolute",zIndex:zi}).addClass("ord-"+ord);return Touch.support&&jq.bind("touchstart.jcrop",Touch.createDragger(ord)),$hdl_holder.append(jq),jq}function insertHandle(ord){var hs=options.handleSize,div=dragDiv(ord,hdep++).css({opacity:options.handleOpacity}).addClass(cssClass("handle"));return hs&&div.width(hs).height(hs),div}function insertDragbar(ord){return dragDiv(ord,hdep++).addClass("jcrop-dragbar")}function createDragbars(li){var i;for(i=0;i').css({position:"fixed",left:"-120px",width:"12px"}).addClass("jcrop-keymgr"),$keywrap=$("
").css({position:"absolute",overflow:"hidden"}).append($keymgr);return options.keySupport&&($keymgr.keydown(parseKey).blur(onBlur),ie6mode||!options.fixedSupport?($keymgr.css({position:"absolute",left:"-20px"}),$keywrap.append($keymgr).insertBefore($img)):$keymgr.insertBefore($img)),{watchKeys:watchKeys}}();Touch.support&&$trk.bind("touchstart.jcrop",Touch.newSelection),$hdl_holder.hide(),interfaceUpdate(!0);var api={setImage:setImage,animateTo:animateTo,setSelect:setSelect,setOptions:setOptionsNew,tellSelect:tellSelect,tellScaled:tellScaled,setClass:setClass,disable:disableCrop,enable:enableCrop,cancel:cancelCrop,release:Selection.release,destroy:destroy,focus:KeyManager.watchKeys,getBounds:function(){return[boundx*xscale,boundy*yscale]},getWidgetSize:function(){return[boundx,boundy]},getScaleFactor:function(){return[xscale,yscale]},getOptions:function(){return options},ui:{holder:$div,selection:$sel}};return is_msie&&$div.bind("selectstart",function(){return!1}),$origimg.data("Jcrop",api),api},$.fn.Jcrop=function(options,callback){var api;return this.each(function(){if($(this).data("Jcrop")){if("api"===options)return $(this).data("Jcrop");$(this).data("Jcrop").setOptions(options)}else"IMG"==this.tagName?$.Jcrop.Loader(this,function(){$(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api)}):($(this).css({display:"block",visibility:"hidden"}),api=$.Jcrop(this,options),$.isFunction(callback)&&callback.call(api))}),this},$.Jcrop.Loader=function(imgobj,success,error){function completeCheck(){img.complete?($img.unbind(".jcloader"),$.isFunction(success)&&success.call(img)):window.setTimeout(completeCheck,50)}var $img=$(imgobj),img=$img[0];$img.bind("load.jcloader",completeCheck).bind("error.jcloader",function(){$img.unbind(".jcloader"),$.isFunction(error)&&error.call(img)}),img.complete&&$.isFunction(success)&&($img.unbind(".jcloader"),success.call(img))},$.Jcrop.defaults={allowSelect:!0,allowMove:!0,allowResize:!0,trackDocument:!0,baseClass:"jcrop",addClass:null,bgColor:"black",bgOpacity:.6,bgFade:!1,borderOpacity:.4,handleOpacity:.5,handleSize:null,aspectRatio:0,keySupport:!0,createHandles:["n","s","e","w","nw","ne","se","sw"],createDragbars:["n","s","e","w"],createBorders:["n","s","e","w"],drawBorders:!0,dragEdges:!0,fixedSupport:!0,touchSupport:null,shade:null,boxWidth:0,boxHeight:0,boundary:2,fadeTime:400,animationDelay:20,swingSpeed:3,minSelect:[0,0],maxSize:[0,0],minSize:[0,0],onChange:function(){},onSelect:function(){},onDblClick:function(){},onRelease:function(){}}}(jQuery);Jcrop-0.9.13/js/jquery.color.js000066400000000000000000000374161236134236200163040ustar00rootroot00000000000000/*! * jQuery Color Animations v2.0pre * http://jquery.org/ * * Copyright 2011 John Resig * Dual licensed under the MIT or GPL Version 2 licenses. * http://jquery.org/license */ (function( jQuery, undefined ){ var stepHooks = "backgroundColor borderBottomColor borderLeftColor borderRightColor borderTopColor color outlineColor".split(" "), // plusequals test for += 100 -= 100 rplusequals = /^([\-+])=\s*(\d+\.?\d*)/, // a set of RE's that can match strings and generate color tuples. stringParsers = [{ re: /rgba?\(\s*(\d{1,3})\s*,\s*(\d{1,3})\s*,\s*(\d{1,3})\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ execResult[ 1 ], execResult[ 2 ], execResult[ 3 ], execResult[ 4 ] ]; } }, { re: /rgba?\(\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, parse: function( execResult ) { return [ 2.55 * execResult[1], 2.55 * execResult[2], 2.55 * execResult[3], execResult[ 4 ] ]; } }, { re: /#([a-fA-F0-9]{2})([a-fA-F0-9]{2})([a-fA-F0-9]{2})/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ], 16 ), parseInt( execResult[ 2 ], 16 ), parseInt( execResult[ 3 ], 16 ) ]; } }, { re: /#([a-fA-F0-9])([a-fA-F0-9])([a-fA-F0-9])/, parse: function( execResult ) { return [ parseInt( execResult[ 1 ] + execResult[ 1 ], 16 ), parseInt( execResult[ 2 ] + execResult[ 2 ], 16 ), parseInt( execResult[ 3 ] + execResult[ 3 ], 16 ) ]; } }, { re: /hsla?\(\s*(\d+(?:\.\d+)?)\s*,\s*(\d+(?:\.\d+)?)\%\s*,\s*(\d+(?:\.\d+)?)\%\s*(?:,\s*(\d+(?:\.\d+)?)\s*)?\)/, space: "hsla", parse: function( execResult ) { return [ execResult[1], execResult[2] / 100, execResult[3] / 100, execResult[4] ]; } }], // jQuery.Color( ) color = jQuery.Color = function( color, green, blue, alpha ) { return new jQuery.Color.fn.parse( color, green, blue, alpha ); }, spaces = { rgba: { cache: "_rgba", props: { red: { idx: 0, type: "byte", empty: true }, green: { idx: 1, type: "byte", empty: true }, blue: { idx: 2, type: "byte", empty: true }, alpha: { idx: 3, type: "percent", def: 1 } } }, hsla: { cache: "_hsla", props: { hue: { idx: 0, type: "degrees", empty: true }, saturation: { idx: 1, type: "percent", empty: true }, lightness: { idx: 2, type: "percent", empty: true } } } }, propTypes = { "byte": { floor: true, min: 0, max: 255 }, "percent": { min: 0, max: 1 }, "degrees": { mod: 360, floor: true } }, rgbaspace = spaces.rgba.props, support = color.support = {}, // colors = jQuery.Color.names colors, // local aliases of functions called often each = jQuery.each; spaces.hsla.props.alpha = rgbaspace.alpha; function clamp( value, prop, alwaysAllowEmpty ) { var type = propTypes[ prop.type ] || {}, allowEmpty = prop.empty || alwaysAllowEmpty; if ( allowEmpty && value == null ) { return null; } if ( prop.def && value == null ) { return prop.def; } if ( type.floor ) { value = ~~value; } else { value = parseFloat( value ); } if ( value == null || isNaN( value ) ) { return prop.def; } if ( type.mod ) { value = value % type.mod; // -10 -> 350 return value < 0 ? type.mod + value : value; } // for now all property types without mod have min and max return type.min > value ? type.min : type.max < value ? type.max : value; } function stringParse( string ) { var inst = color(), rgba = inst._rgba = []; string = string.toLowerCase(); each( stringParsers, function( i, parser ) { var match = parser.re.exec( string ), values = match && parser.parse( match ), parsed, spaceName = parser.space || "rgba", cache = spaces[ spaceName ].cache; if ( values ) { parsed = inst[ spaceName ]( values ); // if this was an rgba parse the assignment might happen twice // oh well.... inst[ cache ] = parsed[ cache ]; rgba = inst._rgba = parsed._rgba; // exit each( stringParsers ) here because we matched return false; } }); // Found a stringParser that handled it if ( rgba.length !== 0 ) { // if this came from a parsed string, force "transparent" when alpha is 0 // chrome, (and maybe others) return "transparent" as rgba(0,0,0,0) if ( Math.max.apply( Math, rgba ) === 0 ) { jQuery.extend( rgba, colors.transparent ); } return inst; } // named colors / default - filter back through parse function if ( string = colors[ string ] ) { return string; } } color.fn = color.prototype = { constructor: color, parse: function( red, green, blue, alpha ) { if ( red === undefined ) { this._rgba = [ null, null, null, null ]; return this; } if ( red instanceof jQuery || red.nodeType ) { red = red instanceof jQuery ? red.css( green ) : jQuery( red ).css( green ); green = undefined; } var inst = this, type = jQuery.type( red ), rgba = this._rgba = [], source; // more than 1 argument specified - assume ( red, green, blue, alpha ) if ( green !== undefined ) { red = [ red, green, blue, alpha ]; type = "array"; } if ( type === "string" ) { return this.parse( stringParse( red ) || colors._default ); } if ( type === "array" ) { each( rgbaspace, function( key, prop ) { rgba[ prop.idx ] = clamp( red[ prop.idx ], prop ); }); return this; } if ( type === "object" ) { if ( red instanceof color ) { each( spaces, function( spaceName, space ) { if ( red[ space.cache ] ) { inst[ space.cache ] = red[ space.cache ].slice(); } }); } else { each( spaces, function( spaceName, space ) { each( space.props, function( key, prop ) { var cache = space.cache; // if the cache doesn't exist, and we know how to convert if ( !inst[ cache ] && space.to ) { // if the value was null, we don't need to copy it // if the key was alpha, we don't need to copy it either if ( red[ key ] == null || key === "alpha") { return; } inst[ cache ] = space.to( inst._rgba ); } // this is the only case where we allow nulls for ALL properties. // call clamp with alwaysAllowEmpty inst[ cache ][ prop.idx ] = clamp( red[ key ], prop, true ); }); }); } return this; } }, is: function( compare ) { var is = color( compare ), same = true, myself = this; each( spaces, function( _, space ) { var isCache = is[ space.cache ], localCache; if (isCache) { localCache = myself[ space.cache ] || space.to && space.to( myself._rgba ) || []; each( space.props, function( _, prop ) { if ( isCache[ prop.idx ] != null ) { same = ( isCache[ prop.idx ] === localCache[ prop.idx ] ); return same; } }); } return same; }); return same; }, _space: function() { var used = [], inst = this; each( spaces, function( spaceName, space ) { if ( inst[ space.cache ] ) { used.push( spaceName ); } }); return used.pop(); }, transition: function( other, distance ) { var end = color( other ), spaceName = end._space(), space = spaces[ spaceName ], start = this[ space.cache ] || space.to( this._rgba ), result = start.slice(); end = end[ space.cache ]; each( space.props, function( key, prop ) { var index = prop.idx, startValue = start[ index ], endValue = end[ index ], type = propTypes[ prop.type ] || {}; // if null, don't override start value if ( endValue === null ) { return; } // if null - use end if ( startValue === null ) { result[ index ] = endValue; } else { if ( type.mod ) { if ( endValue - startValue > type.mod / 2 ) { startValue += type.mod; } else if ( startValue - endValue > type.mod / 2 ) { startValue -= type.mod; } } result[ prop.idx ] = clamp( ( endValue - startValue ) * distance + startValue, prop ); } }); return this[ spaceName ]( result ); }, blend: function( opaque ) { // if we are already opaque - return ourself if ( this._rgba[ 3 ] === 1 ) { return this; } var rgb = this._rgba.slice(), a = rgb.pop(), blend = color( opaque )._rgba; return color( jQuery.map( rgb, function( v, i ) { return ( 1 - a ) * blend[ i ] + a * v; })); }, toRgbaString: function() { var prefix = "rgba(", rgba = jQuery.map( this._rgba, function( v, i ) { return v == null ? ( i > 2 ? 1 : 0 ) : v; }); if ( rgba[ 3 ] === 1 ) { rgba.pop(); prefix = "rgb("; } return prefix + rgba.join(",") + ")"; }, toHslaString: function() { var prefix = "hsla(", hsla = jQuery.map( this.hsla(), function( v, i ) { if ( v == null ) { v = i > 2 ? 1 : 0; } // catch 1 and 2 if ( i && i < 3 ) { v = Math.round( v * 100 ) + "%"; } return v; }); if ( hsla[ 3 ] === 1 ) { hsla.pop(); prefix = "hsl("; } return prefix + hsla.join(",") + ")"; }, toHexString: function( includeAlpha ) { var rgba = this._rgba.slice(), alpha = rgba.pop(); if ( includeAlpha ) { rgba.push( ~~( alpha * 255 ) ); } return "#" + jQuery.map( rgba, function( v, i ) { // default to 0 when nulls exist v = ( v || 0 ).toString( 16 ); return v.length === 1 ? "0" + v : v; }).join(""); }, toString: function() { return this._rgba[ 3 ] === 0 ? "transparent" : this.toRgbaString(); } }; color.fn.parse.prototype = color.fn; // hsla conversions adapted from: // http://www.google.com/codesearch/p#OAMlx_jo-ck/src/third_party/WebKit/Source/WebCore/inspector/front-end/Color.js&d=7&l=193 function hue2rgb( p, q, h ) { h = ( h + 1 ) % 1; if ( h * 6 < 1 ) { return p + (q - p) * 6 * h; } if ( h * 2 < 1) { return q; } if ( h * 3 < 2 ) { return p + (q - p) * ((2/3) - h) * 6; } return p; } spaces.hsla.to = function ( rgba ) { if ( rgba[ 0 ] == null || rgba[ 1 ] == null || rgba[ 2 ] == null ) { return [ null, null, null, rgba[ 3 ] ]; } var r = rgba[ 0 ] / 255, g = rgba[ 1 ] / 255, b = rgba[ 2 ] / 255, a = rgba[ 3 ], max = Math.max( r, g, b ), min = Math.min( r, g, b ), diff = max - min, add = max + min, l = add * 0.5, h, s; if ( min === max ) { h = 0; } else if ( r === max ) { h = ( 60 * ( g - b ) / diff ) + 360; } else if ( g === max ) { h = ( 60 * ( b - r ) / diff ) + 120; } else { h = ( 60 * ( r - g ) / diff ) + 240; } if ( l === 0 || l === 1 ) { s = l; } else if ( l <= 0.5 ) { s = diff / add; } else { s = diff / ( 2 - add ); } return [ Math.round(h) % 360, s, l, a == null ? 1 : a ]; }; spaces.hsla.from = function ( hsla ) { if ( hsla[ 0 ] == null || hsla[ 1 ] == null || hsla[ 2 ] == null ) { return [ null, null, null, hsla[ 3 ] ]; } var h = hsla[ 0 ] / 360, s = hsla[ 1 ], l = hsla[ 2 ], a = hsla[ 3 ], q = l <= 0.5 ? l * ( 1 + s ) : l + s - l * s, p = 2 * l - q, r, g, b; return [ Math.round( hue2rgb( p, q, h + ( 1 / 3 ) ) * 255 ), Math.round( hue2rgb( p, q, h ) * 255 ), Math.round( hue2rgb( p, q, h - ( 1 / 3 ) ) * 255 ), a ]; }; each( spaces, function( spaceName, space ) { var props = space.props, cache = space.cache, to = space.to, from = space.from; // makes rgba() and hsla() color.fn[ spaceName ] = function( value ) { // generate a cache for this space if it doesn't exist if ( to && !this[ cache ] ) { this[ cache ] = to( this._rgba ); } if ( value === undefined ) { return this[ cache ].slice(); } var type = jQuery.type( value ), arr = ( type === "array" || type === "object" ) ? value : arguments, local = this[ cache ].slice(), ret; each( props, function( key, prop ) { var val = arr[ type === "object" ? key : prop.idx ]; if ( val == null ) { val = local[ prop.idx ]; } local[ prop.idx ] = clamp( val, prop ); }); if ( from ) { ret = color( from( local ) ); ret[ cache ] = local; return ret; } else { return color( local ); } }; // makes red() green() blue() alpha() hue() saturation() lightness() each( props, function( key, prop ) { // alpha is included in more than one space if ( color.fn[ key ] ) { return; } color.fn[ key ] = function( value ) { var vtype = jQuery.type( value ), fn = ( key === 'alpha' ? ( this._hsla ? 'hsla' : 'rgba' ) : spaceName ), local = this[ fn ](), cur = local[ prop.idx ], match; if ( vtype === "undefined" ) { return cur; } if ( vtype === "function" ) { value = value.call( this, cur ); vtype = jQuery.type( value ); } if ( value == null && prop.empty ) { return this; } if ( vtype === "string" ) { match = rplusequals.exec( value ); if ( match ) { value = cur + parseFloat( match[ 2 ] ) * ( match[ 1 ] === "+" ? 1 : -1 ); } } local[ prop.idx ] = value; return this[ fn ]( local ); }; }); }); // add .fx.step functions each( stepHooks, function( i, hook ) { jQuery.cssHooks[ hook ] = { set: function( elem, value ) { var parsed, backgroundColor, curElem; if ( jQuery.type( value ) !== 'string' || ( parsed = stringParse( value ) ) ) { value = color( parsed || value ); if ( !support.rgba && value._rgba[ 3 ] !== 1 ) { curElem = hook === "backgroundColor" ? elem.parentNode : elem; do { backgroundColor = jQuery.curCSS( curElem, "backgroundColor" ); } while ( ( backgroundColor === "" || backgroundColor === "transparent" ) && ( curElem = curElem.parentNode ) && curElem.style ); value = value.blend( backgroundColor && backgroundColor !== "transparent" ? backgroundColor : "_default" ); } value = value.toRgbaString(); } elem.style[ hook ] = value; } }; jQuery.fx.step[ hook ] = function( fx ) { if ( !fx.colorInit ) { fx.start = color( fx.elem, hook ); fx.end = color( fx.end ); fx.colorInit = true; } jQuery.cssHooks[ hook ].set( fx.elem, fx.start.transition( fx.end, fx.pos ) ); }; }); // detect rgba support jQuery(function() { var div = document.createElement( "div" ), div_style = div.style; div_style.cssText = "background-color:rgba(1,1,1,.5)"; support.rgba = div_style.backgroundColor.indexOf( "rgba" ) > -1; }); // Some named colors to work with // From Interface by Stefan Petre // http://interface.eyecon.ro/ colors = jQuery.Color.names = { aqua: "#00ffff", azure: "#f0ffff", beige: "#f5f5dc", black: "#000000", blue: "#0000ff", brown: "#a52a2a", cyan: "#00ffff", darkblue: "#00008b", darkcyan: "#008b8b", darkgrey: "#a9a9a9", darkgreen: "#006400", darkkhaki: "#bdb76b", darkmagenta: "#8b008b", darkolivegreen: "#556b2f", darkorange: "#ff8c00", darkorchid: "#9932cc", darkred: "#8b0000", darksalmon: "#e9967a", darkviolet: "#9400d3", fuchsia: "#ff00ff", gold: "#ffd700", green: "#008000", indigo: "#4b0082", khaki: "#f0e68c", lightblue: "#add8e6", lightcyan: "#e0ffff", lightgreen: "#90ee90", lightgrey: "#d3d3d3", lightpink: "#ffb6c1", lightyellow: "#ffffe0", lime: "#00ff00", magenta: "#ff00ff", maroon: "#800000", navy: "#000080", olive: "#808000", orange: "#ffa500", pink: "#ffc0cb", purple: "#800080", violet: "#800080", red: "#ff0000", silver: "#c0c0c0", white: "#ffffff", yellow: "#ffff00", transparent: [ null, null, null, 0 ], _default: "#ffffff" }; })( jQuery );